[Pkg-ceph-commits] [ceph] 01/03: Imported Upstream version 0.94.1

James Downing Page jamespage at moszumanska.debian.org
Mon Jun 15 08:03:39 UTC 2015


This is an automated email from the git hooks/post-receive script.

jamespage pushed a commit to branch experimental
in repository ceph.

commit a630557a9ca3241dbcc7e58447ada5026072cf7a
Author: James Page <james.page at ubuntu.com>
Date:   Tue Jun 9 17:36:08 2015 +0100

    Imported Upstream version 0.94.1
---
 AUTHORS                                            |    5 +
 COPYING                                            |    2 +-
 ChangeLog                                          |  184 +-
 Makefile.in                                        |    1 +
 ceph.spec                                          |    6 +-
 ceph.spec.in                                       |    4 +-
 configure                                          |  476 +-
 configure.ac                                       |  131 +-
 debian/changelog                                   |   12 +
 debian/control                                     |    3 +-
 debian/copyright                                   |    4 +-
 debian/rules                                       |    6 -
 install-deps.sh                                    |    4 +-
 man/Makefile-client.am                             |   39 +
 man/Makefile-server.am                             |   26 +
 man/Makefile.am                                    |   41 +-
 man/Makefile.in                                    |   97 +-
 man/ceph.8                                         |  543 +-
 man/rbd.8                                          |   61 +-
 src/.git_version                                   |    4 +-
 src/Makefile-client.am                             |  111 +
 src/Makefile-env.am                                |    3 +-
 src/{Makefile.am => Makefile-rocksdb.am}           |  436 +-
 src/Makefile-server.am                             |   69 +
 src/Makefile.am                                    |  535 +-
 src/Makefile.in                                    | 7735 ++++++++++++--------
 src/brag/Makefile.am                               |    3 +-
 src/ceph-create-keys                               |    4 +
 src/civetweb/include/civetweb_conf.h               |    6 +
 src/client/Client.cc                               |    2 +-
 src/client/Client.h                                |    1 +
 src/client/Makefile.am                             |    2 +
 src/cls/Makefile-client.am                         |   76 +
 src/cls/{Makefile.am => Makefile-server.am}        |   80 +-
 src/cls/Makefile.am                                |  141 +-
 src/cls/rbd/cls_rbd.cc                             |   51 +-
 src/cls/rbd/cls_rbd_client.cc                      |    5 +-
 src/cls/rbd/cls_rbd_client.h                       |    2 +-
 src/common/LogClient.cc                            |   22 +-
 src/common/LogEntry.h                              |    6 +-
 src/common/Makefile.am                             |    6 +-
 src/common/config_opts.h                           |    6 +-
 src/crush/CrushTester.cc                           |   16 +-
 src/crush/CrushTester.h                            |    3 +-
 src/crush/CrushWrapper.cc                          |    3 +-
 src/crush/crush.c                                  |   13 +
 src/crush/grammar.h                                |    6 +-
 src/crush/mapper.c                                 |   48 +-
 src/erasure-code/shec/ErasureCodeShec.h            |    6 +-
 src/include/Makefile.am                            |   32 +-
 src/include/ceph_features.h                        |    2 -
 src/include/util.h                                 |   34 +
 src/include/xlist.h                                |    3 +
 src/init-radosgw                                   |    6 -
 src/init-radosgw.sysv                              |    6 -
 src/java/Makefile.am                               |    8 +-
 src/java/Makefile.in                               |   56 +-
 src/key_value_store/Makefile.am                    |    5 +
 src/librados/Makefile.am                           |    6 +
 src/libradosstriper/Makefile.am                    |    8 +
 src/librbd/AioCompletion.cc                        |   12 +-
 src/librbd/AioCompletion.h                         |   18 +-
 src/librbd/AioRequest.cc                           |  121 +-
 src/librbd/AioRequest.h                            |   13 +-
 src/librbd/AsyncFlattenRequest.cc                  |    5 +-
 src/librbd/AsyncOperation.cc                       |    2 +-
 src/librbd/AsyncRequest.h                          |    5 +-
 src/librbd/AsyncResizeRequest.cc                   |  164 +-
 src/librbd/AsyncResizeRequest.h                    |   75 +-
 src/librbd/AsyncTrimRequest.cc                     |   19 +-
 src/librbd/CopyupRequest.cc                        |   21 +-
 src/librbd/ImageCtx.cc                             |   99 +-
 src/librbd/ImageCtx.h                              |    8 +-
 src/librbd/ImageWatcher.cc                         |    3 +-
 src/librbd/Makefile.am                             |    8 +
 src/librbd/ObjectMap.cc                            |   31 +-
 src/librbd/internal.cc                             |  280 +-
 src/librbd/internal.h                              |    4 +-
 src/mds/Makefile.am                                |    6 +-
 src/mon/LogMonitor.cc                              |   10 +-
 src/mon/LogMonitor.h                               |   11 +-
 src/mon/Makefile.am                                |    5 +
 src/mon/MonCap.cc                                  |   11 +-
 src/mon/Monitor.cc                                 |    3 +-
 src/mon/OSDMonitor.cc                              |   22 +-
 src/mon/PGMap.cc                                   |   66 +-
 src/mon/PGMap.h                                    |   20 +-
 src/mon/PGMonitor.cc                               |   40 +-
 src/mon/mon_types.h                                |   17 +
 src/msg/xio/XioConnection.h                        |    2 +-
 src/msg/xio/XioMessenger.cc                        |    7 +-
 src/msg/xio/XioMessenger.h                         |    4 +-
 src/msg/xio/XioPortal.h                            |   11 +-
 src/ocf/Makefile.in                                |    1 +
 src/os/DBObjectMap.cc                              |   12 +-
 src/os/Makefile.am                                 |    4 +
 src/os/MemStore.cc                                 |    1 +
 src/osd/ECBackend.cc                               |    8 +-
 src/osd/ECTransaction.cc                           |   18 +-
 src/osd/Makefile.am                                |   11 +-
 src/osd/OSD.h                                      |   27 +-
 src/osd/OSDMap.cc                                  |   10 +-
 src/osd/PG.cc                                      |   76 +-
 src/osd/PG.h                                       |   38 -
 src/osd/PGBackend.cc                               |    6 +-
 src/osd/PGLog.cc                                   |   42 +-
 src/osd/PGLog.h                                    |   26 +-
 src/osd/ReplicatedBackend.cc                       | 1623 ++++
 src/osd/ReplicatedPG.cc                            | 1889 +----
 src/osd/ReplicatedPG.h                             |   48 +-
 src/osd/osd_types.cc                               |   30 +
 src/osd/osd_types.h                                |    4 +
 src/osdc/Objecter.cc                               |   39 +-
 src/osdc/Objecter.h                                |    7 +
 src/pybind/ceph_argparse.py                        |    6 +-
 src/rbd.cc                                         |  144 +-
 src/rbd_replay/Makefile.am                         |    8 +
 src/rgw/Makefile.am                                |   28 +-
 src/rgw/rgw_admin.cc                               |    2 +-
 src/rgw/rgw_cache.cc                               |   52 +
 src/rgw/rgw_cache.h                                |   31 +-
 src/rgw/rgw_main.cc                                |   38 +-
 src/rgw/rgw_op.cc                                  |   22 +-
 src/rgw/rgw_op.h                                   |    1 +
 src/rgw/rgw_rados.cc                               |  162 +-
 src/rgw/rgw_rados.h                                |   38 +-
 src/rgw/rgw_rest_s3.cc                             |   16 +-
 src/rgw/rgw_user.cc                                |    6 +-
 src/rgw/rgw_user.h                                 |    2 +-
 src/test/Makefile-client.am                        |  515 ++
 src/test/Makefile-server.am                        |  234 +
 src/test/Makefile.am                               |  724 +-
 src/test/centos-6/ceph.spec.in                     |    4 +-
 src/test/centos-6/install-deps.sh                  |    4 +-
 src/test/centos-7/ceph.spec.in                     |    4 +-
 src/test/centos-7/install-deps.sh                  |    4 +-
 src/test/cli/crushtool/straw2.t                    |    4 +
 src/test/cli/crushtool/straw2.txt                  |   43 +
 src/test/cli/rbd/help.t                            |    2 +
 src/test/cls_rbd/test_cls_rbd.cc                   |    8 +-
 .../{ubuntu-12.04 => debian-jessie}/Dockerfile.in  |    4 +-
 .../test/debian-jessie/install-deps.sh             |    4 +-
 src/test/encoding/types.h                          |    6 +
 src/test/erasure-code/Makefile.am                  |    6 +
 src/test/erasure-code/TestErasureCodeShec.cc       |    6 +-
 src/test/librados/aio.cc                           |   47 +
 src/test/librados/tier.cc                          |   45 +
 src/test/librbd/test_internal.cc                   |   42 +
 src/test/messenger/Makefile.am                     |    4 +-
 src/test/mon/osd-erasure-code-profile.sh           |   34 +
 src/test/msgr/test_async_driver.cc                 |    4 +-
 src/test/osd/TestPGLog.cc                          |  111 +
 src/test/ubuntu-12.04/Dockerfile.in                |    2 +-
 src/test/ubuntu-12.04/install-deps.sh              |    4 +-
 src/test/ubuntu-14.04/install-deps.sh              |    4 +-
 src/tools/Makefile-client.am                       |   34 +
 src/tools/Makefile-server.am                       |   52 +
 src/tools/Makefile.am                              |   69 +-
 src/tools/ceph_objectstore_tool.cc                 |   34 +-
 src/tools/crushtool.cc                             |    1 -
 src/tracing/Makefile.in                            |    1 +
 161 files changed, 10891 insertions(+), 7980 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 5ebba43..8b63bf1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -49,6 +49,7 @@ Bjørnar Ness <bjornar.ness at gmail.com>
 Blaine Gardner <blaine.gardner at hp.com>
 Boris Ranto <branto at redhat.com>
 Brandon Seibel <brandon at seibelnet.ca>
+branto1 <branto at redhat.com>
 Brian Chrisman <brchrisman at gmail.com>
 Brian Rak <dn at devicenull.org>
 Brown, David M JR <david.brown at pnl.gov>
@@ -255,6 +256,7 @@ Petr Machata <pmachata at redhat.com>
 Pierre Rognant <prognant at oodrive.com>
 qiushanggao <qiushanggao at qq.com>
 Radoslaw Zarzynski <rzarzynski at mirantis.com>
+Raju Kurunkad <raju.kurunkad at sandisk.com>
 Ray Lv <xiangyulv at gmail.com>
 rca <bertosmailbox at gmail.com>
 riccardo80 <riccardo80 at 29311d96-e01e-0410-9327-a35deaab8ce9>
@@ -262,6 +264,7 @@ Riccardo Ferretti <rferrett at soe.ucsc.edu>
 Roald J. van Loon <roald at roaldvanloon.nl>
 RobertJansen1 <r.jansen86 at gmail.com>
 Robin H. Johnson <robbat2 at gentoo.org>
+Rohan Mars <code at rohanmars.com>
 Roman Haritonov <reclosedev at gmail.com>
 Ron Allred <rallred at itrefined.com>
 Rongze Zhu <zrzhit at gmail.com>
@@ -303,6 +306,7 @@ Stuart Longland <stuartl at vrt.com.au>
 Sushma Gurram <sushma.gurram at sandisk.com>
 Swami Reddy <swami.reddy at ril.com>
 Sylvain Munaut <s.munaut at whatever-company.com>
+Takeshi Miyamae <miyamae.takeshi at jp.fujitsu.com>
 Takuya ASADA <syuu at dokukino.com>
 Tamil Muthamizhan <tamil.muthamizhan at inktank.com>
 Thomas Bechtold <t.bechtold at telekom.de>
@@ -343,6 +347,7 @@ Xiaoxi Chen <xiaoxi.chen at intel.com>
 Xihui He <xihuihe at gmail.com>
 Xing Lin <xinglin at cs.utah.edu>
 Xinze Chi <xmdxcxz at gmail.com>
+Xiong Yiliang <xiongyiliang at xunlei.com>
 Yann Dupont <yann at objoo.org>
 Yan, Zheng <zheng.z.yan at intel.com>
 Yan, Zheng <zyan at redhat.com>
diff --git a/COPYING b/COPYING
index 1c3035a..06e20b1 100644
--- a/COPYING
+++ b/COPYING
@@ -17,7 +17,7 @@ License: LGPL2 or later
 
 Files: src/os/btrfs_ioctl.h
 Copyright: Copyright (C) 2007 Oracle.  All rights reserved.
-License: GPL2
+License: GPL2 (see COPYING-GPL2)
 
 Files: src/include/ceph_hash.cc
 Copyright: None
diff --git a/ChangeLog b/ChangeLog
index 7e6c941..86e6bf9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,174 @@
-bebf8e9 (HEAD, tag: v0.93) 0.93
+e4bfad3 (HEAD, tag: v0.94.1) 0.94.1
+5ca771a crush: fix has_v4_buckets()
+33e79ab crush: fix dump of has_v4_buckets
+b5921d5 crush/mapper: fix divide-by-0 in straw2
+93c8f43 osd: fix negative degraded objects during backfilling
+e61c4f0 (tag: v0.94) 0.94
+4347a32 debian: remove lttng checking from rules
+57d2781 (origin/wip-11113-hammer) librbd: snap_remove should ignore -ENOENT errors
+572a2f5 librbd: get_parent_info should protect against invalid parent
+0b2e272 ReplicatedPG::cancel_pull: requeue waiters as well
+23efab7 ReplicatedPG: don't write hitset while scrubbing, update scrub_cstat
+85307b9 ReplicatedPG: in do_op, requeue op if we requeue waiters in agent_choose_mode
+b1f078b ReplicatedPG: requeue waiting_for_active before waiting_for_cache_not_full
+b0a3941 ReplicatedPG::promote_object: do not create obc if not promoting
+bdc664f ECTransaction: write out the hinfo key on touch as well
+8e5d4c6 osd: drop unused utime_t now arg to issue_repop
+8db4056 osd: do not update mtime when recording digest
+491474f test: Add testing for PGLog::filter_log()
+1fcd3fb osd: Create a filter_log for PGLog
+c751191 ceph-objectstore-tool, osd: Filter the pg_log_t for objects no longer in pg
+ccc0839 (origin/wip-11177) common: send cluster log messages to 'cluster' channel by default
+f9b98c9 ceph-objectstore-tool: Fix message and make it debug only to stderr
+923d532 ceph-objectstore-tool: Remove bogus comment and eliminate a debug message
+c176ebf (origin/wip-move-code) osd/: Move ReplicatedBackend methods into ReplicatedBackend.cc
+e9d6096 ReplicatedPG: remove unused C_OnPushCommit
+ddf0292 PG: set/clear CREATING in Primary state entry/exit
+6f218b1 (origin/hammer-11205) qa/workunits/fs/misc: fix filelock_interrupt.py
+1388d6b ReplicatedPG: trim backfill intervals based on peer's last_backfill_started
+924ace8 (origin/wip-11145) rgw: shut down timer before erroring out
+65bb4df ReplicatedPG::promote_object: check scrubber and block if necessary
+78c5de7 osd/: s/is_degraded_object/is_degraded_or_backfilling_object
+4a5bd05 Revert "osd/: update peer_missing and local missing if we write a degraded object"
+6ed86b4 Revert "append_log: use remove_snap_mapped_object"
+b84943c Revert "osd/: don't block writes on degraded objects"
+9cefc59 Revert "ReplicatedPG: block writes on degraded objects for ec pools"
+45bff59 Revert "Merge pull request #3641 from athanatos/wip-10731"
+6f23d34 Revert "osd/: s/is_degraded_object/is_degraded_or_backfilling_object"
+fc3ce48 (origin/wip-hammer-rgw) rgw: update makefile to enable civetweb config
+2f1342e civetweb: update submodule
+e5f3282 rgw: pass civetweb configurables to civetweb
+a8ced2c rgw: don't overwrite bucket / object owner when setting acls
+3edfa67 Revert "ReplicatedPG: only allow a degraded write if we have at least min_size copies"
+5e4b7b0 Revert "Merge pull request #3911 from athanatos/wip-11057"
+0a0d8f6 doc: Regenerate man/ceph.8 based on ceph.rst changes
+eb890b1 doc: Break ceph osd pool get into sections based on pool type
+b6512eb erasure code: add shec's documentation / change default layout
+175aff8 ceph-objectstore-tool: Use exit status 11 for incompatible import attempt
+68719f5 (origin/wip-omap-clear) osd: fix omap digest clearing for omap write ops
+d5b3bd7 os/MemStore: make omap_clear zap the omap header too
+d2467e4 ceph_test_rados_api_aio: verify omap_clear clears header, too
+5b23f5b ceph-objectstore-tool: Output only unsupported features when incomatible
+477ac92 (origin/wip-11102) osd: only complain about stored vs actual digest if all peers support it
+9a2ff34 PG::find_best_info: reject infos with old last_epoch_started
+f96d58b init-radosgw*: don't require rgw_socket_path to be defined
+0712d8d PG: ensure that info.last_epoch_started only increases
+2956ae2 doc: add last_epoch_started.rst
+2da9584 PG: make sure to update history.last_epoch_started with first write
+0d52aca osd: erasure-code-profile incremental rm before set
+b92f9cf mon: informative message when erasure-code-profile set fails
+f5fa25d (origin/wip-rgw-bootstrap) ceph-create-keys: create bootstrap-rgw key
+679e266 mon: add 'bootstrap-rgw' profile
+01379bd (origin/wip-refine-build-configuration-hammer) Compile test_build_librgw only if WITH_BUILD_TESTS
+1c20417 (origin/wip-11123) osd: use (robust) helper for setting exists or clearing whiteout
+f5a2aef PGLog::merge_log: in tail extend case, log.log might be empty
+88d66ca mon: Support multiple args to ceph pg dump_stuck as in usage and man pages
+a3dfeec Improve "ceph_argparse.py: add stderr note if nonrequired param is invalid"
+bbe231a PGLog: split divergent priors as well
+90a0393 PendingReleaseNotes: warn about lttng LD_PRELOAD for daemons
+53cc492 ceph_test_rados_tier: add test case for delete+create compound ops
+93ef911 PG: add config to ignore history les in find_best_info
+d06c1d7 rhel 5.9 port fixes to compile librados only Signed-off-by: Rohan Mars <code at rohanmars.com>
+f4bc48d doc: Fix ceph command manpage to match ceph -h (hammer)
+9495de47 doc: Fix ceph command manpage to match ceph -h (firefly)
+5680456 PGBackend: do not rewrite ec object oi checksums
+e0bf132 PGBackend: add debug option to rewrite digest even if present
+3858d0b ReplicatedPG: finish_ctx: do not assume that the oi is for the head object
+aceb860 Build ceph-dencoder if server and mds for now
+c365cac rbd: regenerate rbd(8) man page
+416cbff doc: Fix typo in ceph pg dump_stuck usage in man page
+ba77bda (origin/wip-librbd-invalidate-object-map) librbd: invalidating snapshot object maps should set snapshot flag
+ba4bb22 test_cls_rbd: verify set_flags updates snapshots
+fa25b84 cls_rbd_client: add snap_id param to set_flags
+2d86898 cls_rbd: set_flags can now update snapshots
+c1892a0 rgw_main.cc: fix null-deref in case get_storage() fails
+f5b0151 rgw/rgw_op.cc: fix potential null-deref in strcmp()
+595e87f Fix XioLoopbackConnection Lifecycle.
+e1eebb3 osd: refactor RepScrubWQ::_process()
+052debd osd: fix a msg leak when OSD is stopping
+3ae87c8 XIO: Handle requeue case of XIO messages
+5a8d4c5 qa,cephtool: add test case for 'ceph osd tier add-cache'
+83d0581 mon: Don't forget set read_tier/write_tier for 'osd tier add-cache'.
+23d7991 tests: add unit test for multiple concurrent resize ops
+194fcfd librbd: retrieve image size at start of resize op
+0212ae4 librbd: do not invalidate oversized object map
+7f246b8 librbd: avoid canceling object map / header updates
+85737ab librbd: update size / parent overlap after resize completes
+1d29890 librbd: use image size and parent overlap from active shrink op
+9c5c665 librbd: queue multiple resize requests
+6bc47eb xlist: add const versions of front / back
+e7f9e3b librbd: use ImageCtx::get_parent_overlap helper function
+286b385 librbd: resize/flatten should validate image is R/W
+9dcd517 librbd: hold write snap_lock when refreshing object map
+ac527a2 (origin/wip-11079) crushtool: improve straw2 compile/decompile test
+6445d9e crush: fix crush_get_bucket_item_weight and bucket destroy for straw2
+b686eda crushtool: fix straw2 cli test
+5b58ef1 osdc: fix a memory leak in C_TwoContexts
+e3616a5 doc: rhel6.5 is rhel6
+147b1db (origin/wip-11068-debian-jessie) deb: add zlib1g-dev to Build-Depends for Debian/jessie
+84f05c0 TestAsyncDriver: Fix typo in ceph_test_async_driver
+918afc0 qa: make rbd-fuse exit cleanly with lttng
+b6326a0 ReplicatedPG: block write on degraded object if there are waiters
+7acfdac (origin/wip-11015) crushtool: test compilation of a rule with straw2 buckets
+61308cc crush: parse alg names that include a digit
+cb6813c tests: add Debian jessie dockerfile
+657844a tests: DEBIAN_FRONTEND=noninteractive apt-get install
+f8dec72 tests: jq is not available on Ubuntu precise
+4add63c install-deps.sh: strip | in the list of packages
+dbe2b24 (origin/wip-wn-rgw-hammer) rgw: flush watch after unregistering
+3530a25 Client: do not require successful remount when unmounting
+b90018f The erasure-code is actually required by libcommon
+9b3e1f0 Minor syntax fix-ups for Makefile.am redesign
+96c685e Minor changes in other Makefile.am files to make them support the build refinement
+0f04633 Split Makefile.am in src/test
+e82ac10 rgw: only finialize finisher if it's not null
+7bab9f7 rgw: fix watch initialization and reinit on error
+387e4f8 rgw: move watch reinit into a finisher
+30c32b4 rgw: add support for new watch/notify functionality
+04437e4 rgw: switch to new watch/notify API
+e3a7ab7 Split Makefile.am in src/tools
+14572ff Cleanup src/Makefile's a bit more
+70c89d5 Split Makefile.am in src
+e37af1b Reorganize structure of Makefile.am in src/include
+da9935e Split Makefile.am in cls
+9e1c49c ceph.spec.in: loosen ceph-test's dependencies
+5cbe5ca man: move ENABLE_* to Makefile.am
+e531dd4 Add new configure options to improve build refinement
+c474106 Split Makefile.am in man
+fa13a5d qa: fix up rbd permissions test
+cb840cc librbd: remove unneeded assert from unregister_watch()
+8dc0bf8 (origin/wip-10828) osdc/Objecter: clean up oncommit_sync (and fix leak)
+f7d35b9 osdc/Objecter: count oncommit_sync as uncommitted
+099264f (origin/hammer-backports-hadoop) hadoop: workunits don't need java path
+2f2ace3 qa: update old replication tests
+a6a6df6 cmake:  build fixes
+137800a (origin/wip-10968) librbd: delay completion of AioRequest::read_from_parent
+7d2fe5b librbd: allow AioCompletions to be blocked
+416ce76 librbd: delete Contexts when object map aio_update not required
+1bfd760 librbd: handle possible aio_read return error code
+fb2caa0 librbd: add log message for completion of AioRequest
+1e3f814 mon: ignore crushtool validation if too long
+7a5a635 mon: do not hardwire crushtool command line
+eca153e (origin/wip-10962) test/cli-integration/rbd: updated to new CLI
+6c2d929 rbd: permit v2 striping for clones and imports
+b5050b6 rbd: fixed formatted output of rbd image features
+6cff494 (origin/wip-10990) qa/workunits/rbd/copy.sh: remove all image locks
+0e58463 librbd: missing callback log message for CopyupRequest object map update
+ed9e358 librbd: hide flush log message if no flushes are pending
+e2283e3 (origin/wip-10958) librbd: flush pending AIO after acquiring lock
+472db64 librbd: hold snap_lock between clipping IO and registering AIO
+7e89f51 mon: do not pollute directory with cvs files from crushtool
+2e74959 (origin/wip-10546) mon: Monitor: fix timecheck rounds period
+3f73eb4 (origin/wip-mon-datahealth-fix.hammer) test: encoding: add LevelDBStoreStats and ceph_data_stats to types.h
+028806a mon/mon_types.h: allow testing encode/decode of LevelDBStoreStats
+6c7f3a7 include/util.h: allow testing encoding/decoding of ceph_data_stats
+b8c7bae include/util.h: initialize ceph_data_stats to zero
+6c2dea9 mon: mon_types.h: initialize LevelDBStoreStats and avoid craziness
+1584104 librbd: moved flush / cache invalidate to resize state machine
+9fed4b9 librbd: add AIO version of invalidate_cache
+bebf8e9 (tag: v0.93) 0.93
+6f31458 (origin/wip-hammer-gplv2-text) Add GPLv2 text file
+2c666f3 librbd: C_SaferCond memory leak
 7ed9640 (origin/wip-fusesystem-10710) ceph-fuse: test dentry invalidation options and fail out if we fail
 694529a Client: support using dentry invalidation callbacks on older kernels
 a6ebf67 Client: add functions to test remount functionality
@@ -51,6 +221,7 @@ e0e765f osd/OSDMap: cache get_up_osd_features
 942f875 librbd: add test instances for watch/notify messages
 10d8686 librbd: minor cleanup of ImageWatcher messages
 0ed296b (origin/wip-librbd-exclusive-lock-config) rbd: disable RBD exclusive locking by default
+2b63dd2 DBObjectMap: lock header_lock on sync()
 170c88d (origin/wip-cmake-vstart) cmake: radosgw, radosgw-admin related fixes
 4feb171 vstart.sh: can use binaries outside of ceph/src
 55d3db9 (origin/wip-10919) cls_rbd: invalidate bufferlist CRC when updating object map
@@ -327,6 +498,7 @@ cfab01e (origin/wip-10722) rgw: move perf cleanup before context cleanup
 4074a91 pybind: fix error hiding and inconsistency on librados load.
 cfcfafc Objecter::_op_submit_with_budget: add timeout before call
 00a3ac3 (tag: v0.92, origin/wip-sam-v0.92) 0.92
+c656bce PGLog: improve PGLog::check() debugging
 05ce2aa qa: use correct binary path on rpm-based systems
 eb526af (origin/wip-10709) rbd: watch command should unwatch before exiting
 2a0e9b7 (origin/wip-optional-encoding) encoding: ignore uninitialized instantiation in boost::optional decode
@@ -906,7 +1078,7 @@ e7cc611 qa: ignore duplicates in rados ls
 e5591f8 (origin/wip-10539) qa: fail_all_mds between fs reset and fs rm
 26a2df2 mailmap: Josh Durgin name normalization
 d6a9d25 doc/release-notes: v0.80.8
-45e9cd5 (origin/wip-xio) Fix make check blockers.
+45e9cd5 Fix make check blockers.
 daefad7 xio: enable accelio debug on level 2
 aa5f195 xio: Get the right Accelio errno code
 37719c3 Dequeue XioMsg on send-fail
@@ -4296,7 +4468,7 @@ ecbb005 OSD: The thread pool variable name changed The variable names are more m
 a0e48b8 ShardedTP: Changes related to conforming to Ceph coding guidelines
 2e3f4bc doc: Fixed typo.
 6733947 Fix for bug #6700
-a4923f5 (origin/wip-warnings) fix compilation warnings
+a4923f5 fix compilation warnings
 63cc7f9 Add test for objectstore
 50c8fee Fix write operation on a deleted object in the same transaction
 737c13e Remove SequencerPosition from KeyValueStore
@@ -28362,7 +28534,7 @@ a80a0ca rados:Added basic df functionality to rados and fixed librados.cc to han
 26ff613 debian: add build depends libssl-dev, libfcgi-dev
 c645d26 osd: autodetect PGOP flag if there are PG ops
 b4eaf55 rados: rename radostool -> rados
-98a8175 rados: external acls [beginning of] implementation
+98a81758 rados: external acls [beginning of] implementation
 e5e1264 s3: fastcgi s3 gateway
 6ddb9e5 objecter: unify read and write paths
 bb9a109 osd: you may, but need not, specify READ|WRITE flag in MOSDOp.
@@ -33844,7 +34016,7 @@ c8015df * fixed up indoe/dentry/dir discover; all now add_replica_*() * fixed bu
 918e5a2 * cosmetic
 4c1ea57 * fixed link/unlink recovery behavior * fixed up slave request recovery handling in general * unlink now reanchors when moving ots tray * fixed rename replication of straydn
 705bbe4 * new link thrasher, still needs some work.
-76fec3d * cleaned up old message types, unlink/link cruft * rejoin restores authpins AND xlocks, slightly more cleanly * rename reanchor cleaned up * fixed migrator export vs stopping mds race * slave update recovery implemented (untested)
+76fec3d0 * cleaned up old message types, unlink/link cruft * rejoin restores authpins AND xlocks, slightly more cleanly * rename reanchor cleaned up * fixed migrator export vs stopping mds race * slave update recovery implemented (untested)
 2cfdd57 * remote unlink, genericized slave link++/--
 15d9d63 * foreign link implemented
 7693801 * resolved request forward vs slave request finish race
@@ -35226,7 +35398,7 @@ eba9e7e *** empty log message ***
 ee63c70 *** empty log message ***
 90a1c02 *** empty log message ***
 bac0031 *** empty log message ***
-2576492 import is currently broken
+25764921 import is currently broken
 b247412 *** empty log message ***
 61a5130 *** empty log message ***
 9475610 *** empty log message ***
diff --git a/Makefile.in b/Makefile.in
index 5e346f0..f833e04 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -248,6 +248,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@
diff --git a/ceph.spec b/ceph.spec
index 774da19..1684366 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -9,7 +9,7 @@
 # common
 #################################################################################
 Name:		ceph
-Version:	0.93
+Version:	0.94.1
 Release:	0%{?dist}
 Epoch:		1
 Summary:	User space components of the Ceph file system
@@ -315,9 +315,7 @@ RESTful bencher that can be used to benchmark radosgw performance.
 Summary:	Ceph benchmarks and test tools
 Group:		System Environment/Libraries
 License:	LGPL-2.0
-Requires:	librados2 = %{epoch}:%{version}-%{release}
-Requires:	librbd1 = %{epoch}:%{version}-%{release}
-Requires:	libcephfs1 = %{epoch}:%{version}-%{release}
+Requires:	ceph-common
 %if (0%{?fedora} >= 20 || 0%{?rhel} == 6)
 BuildRequires:	lttng-ust-devel
 BuildRequires:	libbabeltrace-devel
diff --git a/ceph.spec.in b/ceph.spec.in
index fdbd2da..567586c 100644
--- a/ceph.spec.in
+++ b/ceph.spec.in
@@ -315,9 +315,7 @@ RESTful bencher that can be used to benchmark radosgw performance.
 Summary:	Ceph benchmarks and test tools
 Group:		System Environment/Libraries
 License:	LGPL-2.0
-Requires:	librados2 = %{epoch}:%{version}-%{release}
-Requires:	librbd1 = %{epoch}:%{version}-%{release}
-Requires:	libcephfs1 = %{epoch}:%{version}-%{release}
+Requires:	ceph-common
 %if (0%{?fedora} >= 20 || 0%{?rhel} == 6)
 BuildRequires:	lttng-ust-devel
 BuildRequires:	libbabeltrace-devel
diff --git a/configure b/configure
index 1e41452..1b0ea46 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for ceph 0.93.
+# Generated by GNU Autoconf 2.68 for ceph 0.94.1.
 #
 # Report bugs to <ceph-devel at vger.kernel.org>.
 #
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ceph'
 PACKAGE_TARNAME='ceph'
-PACKAGE_VERSION='0.93'
-PACKAGE_STRING='ceph 0.93'
+PACKAGE_VERSION='0.94.1'
+PACKAGE_STRING='ceph 0.94.1'
 PACKAGE_BUGREPORT='ceph-devel at vger.kernel.org'
 PACKAGE_URL=''
 
@@ -731,6 +731,7 @@ PTHREAD_CC
 acx_pthread_config
 COMPILER_HAS_VTA_FALSE
 COMPILER_HAS_VTA_TRUE
+WARN_ERROR_FORMAT_SECURITY
 WARN_IGNORED_QUALIFIERS
 WARN_TYPE_LIMITS
 WITH_BETTER_YASM_ELF64_FALSE
@@ -738,6 +739,24 @@ WITH_BETTER_YASM_ELF64_TRUE
 WITH_GOOD_YASM_ELF64_FALSE
 WITH_GOOD_YASM_ELF64_TRUE
 YASM_CHECK
+ENABLE_SERVER_FALSE
+ENABLE_SERVER_TRUE
+ENABLE_CLIENT_FALSE
+ENABLE_CLIENT_TRUE
+WITH_MDS_FALSE
+WITH_MDS_TRUE
+WITH_OSD_FALSE
+WITH_OSD_TRUE
+WITH_MON_FALSE
+WITH_MON_TRUE
+WITH_RADOSSTRIPER_FALSE
+WITH_RADOSSTRIPER_TRUE
+WITH_CEPHFS_FALSE
+WITH_CEPHFS_TRUE
+WITH_RBD_FALSE
+WITH_RBD_TRUE
+WITH_RADOS_FALSE
+WITH_RADOS_TRUE
 AM_CXXFLAGS
 CLANG_FALSE
 CLANG_TRUE
@@ -890,13 +909,22 @@ with_gnu_ld
 with_sysroot
 enable_libtool_lock
 enable_silent_rules
+with_rados
+with_rbd
+with_cephfs
+with_radosgw
+with_radosstriper
+with_mon
+with_osd
+with_mds
+enable_client
+enable_server
 with_cryptopp
 with_nss
 enable_root_make_check
 with_profiler
 with_debug
 enable_coverage
-with_radosgw
 with_fuse
 with_jemalloc
 with_tcmalloc
@@ -1489,7 +1517,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ceph 0.93 to adapt to many kinds of systems.
+\`configure' configures ceph 0.94.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1560,7 +1588,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ceph 0.93:";;
+     short | recursive ) echo "Configuration of ceph 0.94.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1577,6 +1605,8 @@ Optional Features:
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --enable-silent-rules          less verbose build output (undo: `make V=1')
   --disable-silent-rules         verbose build output (undo: `make V=0')
+  --enable-client         enable client-side build
+  --enable-server         enable server-side build
   --enable-root-make-check
                           enable make check tests that require root privileges
   --enable-coverage       enable code coverage tracking
@@ -1592,11 +1622,18 @@ Optional Packages:
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
+  --with-rados            build with librados support
+  --with-rbd              build rbd files
+  --with-cephfs           build cephfs files
+  --with-radosgw          build RADOS gateway
+  --with-radosstriper     build radosstriper files
+  --with-mon              build Ceph monitor software files
+  --with-osd              build object store daemon files
+  --with-mds              build mds files
   --with-cryptopp         Use cryptographic functions from cryptopp
   --with-nss              Use cryptographic functions from nss
   --with-profiler         build extra profiler binaries
   --with-debug            build extra debug binaries
-  --with-radosgw          build RADOS gateway
   --without-fuse          disable FUSE userspace client
   --with-jemalloc         enable jemalloc for memory allocations
   --without-tcmalloc      disable tcmalloc for memory allocations
@@ -1719,7 +1756,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ceph configure 0.93
+ceph configure 0.94.1
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2790,7 +2827,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ceph $as_me 0.93, which was
+It was created by ceph $as_me 0.94.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -4790,7 +4827,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ceph'
- VERSION='0.93'
+ VERSION='0.94.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12768,7 +12805,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ceph'
- VERSION='0.93'
+ VERSION='0.94.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -16822,6 +16859,294 @@ fi
 
 AM_CXXFLAGS="${AM_CXXFLAGS}"
 
+
+###### PATCH STARTS HERE ######
+# Find out what to build (default is all of these)
+
+# rados?
+
+# Check whether --with-rados was given.
+if test "${with_rados+set}" = set; then :
+  withval=$with_rados;
+else
+  with_rados=yes
+fi
+
+ if test "$with_rados" = "yes"; then
+  WITH_RADOS_TRUE=
+  WITH_RADOS_FALSE='#'
+else
+  WITH_RADOS_TRUE='#'
+  WITH_RADOS_FALSE=
+fi
+
+#AS_IF([test "$with_rados" = "yes"], [AC_DEFINE([WITH_RADOS])])
+
+# rbd?
+# rbd requires rados
+
+# Check whether --with-rbd was given.
+if test "${with_rbd+set}" = set; then :
+  withval=$with_rbd;
+else
+  with_rbd=yes
+fi
+
+ if test "$with_rbd" = "yes"; then
+  WITH_RBD_TRUE=
+  WITH_RBD_FALSE='#'
+else
+  WITH_RBD_TRUE='#'
+  WITH_RBD_FALSE=
+fi
+
+#AS_IF([test "$with_rbd" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RBD])])
+
+# cephfs?
+# cephfs requires rados
+
+# Check whether --with-cephfs was given.
+if test "${with_cephfs+set}" = set; then :
+  withval=$with_cephfs;
+else
+  with_cephfs=yes
+fi
+
+ if test "$with_cephfs" = "yes"; then
+  WITH_CEPHFS_TRUE=
+  WITH_CEPHFS_FALSE='#'
+else
+  WITH_CEPHFS_TRUE='#'
+  WITH_CEPHFS_FALSE=
+fi
+
+#AS_IF([test "$with_cephfs" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_CEPHFS])])
+
+# radosgw?
+# radosgw requires rados
+
+# Check whether --with-radosgw was given.
+if test "${with_radosgw+set}" = set; then :
+  withval=$with_radosgw;
+else
+  with_radosgw=check
+fi
+
+# AM_CONDITIONAL is defined later -- we need to check whether we can enable radosgw if no option is present
+#AS_IF([test "$with_radosgw" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RADOSGW])])
+
+# radosstriper?
+
+# Check whether --with-radosstriper was given.
+if test "${with_radosstriper+set}" = set; then :
+  withval=$with_radosstriper;
+else
+  with_radosstriper=yes
+fi
+
+ if test "$with_radosstriper" = "yes"; then
+  WITH_RADOSSTRIPER_TRUE=
+  WITH_RADOSSTRIPER_FALSE='#'
+else
+  WITH_RADOSSTRIPER_TRUE='#'
+  WITH_RADOSSTRIPER_FALSE=
+fi
+
+#AS_IF([test "$with_radostriper" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RADOSSTRIPER])])
+
+# mon?
+
+# Check whether --with-mon was given.
+if test "${with_mon+set}" = set; then :
+  withval=$with_mon;
+else
+  with_mon=yes
+fi
+
+ if test "$with_mon" = "yes"; then
+  WITH_MON_TRUE=
+  WITH_MON_FALSE='#'
+else
+  WITH_MON_TRUE='#'
+  WITH_MON_FALSE=
+fi
+
+#AS_IF([test "$with_mon" = "yes"], [AC_DEFINE([WITH_MON])])
+
+# osd?
+
+# Check whether --with-osd was given.
+if test "${with_osd+set}" = set; then :
+  withval=$with_osd;
+else
+  with_osd=yes
+fi
+
+ if test "$with_osd" = "yes"; then
+  WITH_OSD_TRUE=
+  WITH_OSD_FALSE='#'
+else
+  WITH_OSD_TRUE='#'
+  WITH_OSD_FALSE=
+fi
+
+#AS_IF([test "$with_osd" = "yes"], [AC_DEFINE([WITH_OSD])])
+
+# mds?
+
+# Check whether --with-mds was given.
+if test "${with_mds+set}" = set; then :
+  withval=$with_mds;
+else
+  with_mds=yes
+fi
+
+ if test "$with_mds" = "yes"; then
+  WITH_MDS_TRUE=
+  WITH_MDS_FALSE='#'
+else
+  WITH_MDS_TRUE='#'
+  WITH_MDS_FALSE=
+fi
+
+#AS_IF([test "$with_mds" = "yes"], [AC_DEFINE([WITH_MDS])])
+
+# client?
+# Check whether --enable-client was given.
+if test "${enable_client+set}" = set; then :
+  enableval=$enable_client;
+else
+  enable_client=yes
+fi
+
+ if test "$enable_client" = "yes"; then
+  ENABLE_CLIENT_TRUE=
+  ENABLE_CLIENT_FALSE='#'
+else
+  ENABLE_CLIENT_TRUE='#'
+  ENABLE_CLIENT_FALSE=
+fi
+
+#AS_IF([test "$enable_client" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RBD, ENABLE_CLIENT])])
+
+# server?
+# Check whether --enable-server was given.
+if test "${enable_server+set}" = set; then :
+  enableval=$enable_server;
+else
+  enable_server=yes
+fi
+
+ if test "$enable_server" = "yes"; then
+  ENABLE_SERVER_TRUE=
+  ENABLE_SERVER_FALSE='#'
+else
+  ENABLE_SERVER_TRUE='#'
+  ENABLE_SERVER_FALSE=
+fi
+
+#AS_IF([test "$enable_server" = "yes"], [AC_DEFINE([WITH_MON, WITH_OSD, WITH_MDS, ENABLE_SERVER])])
+
+# cond-check if snappy-devel is installed, needed by leveldb that is need by server parts of the project
+if test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \); then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snappy_compress in -lsnappy" >&5
+$as_echo_n "checking for snappy_compress in -lsnappy... " >&6; }
+if ${ac_cv_lib_snappy_snappy_compress+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsnappy  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char snappy_compress ();
+int
+main ()
+{
+return snappy_compress ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_snappy_snappy_compress=yes
+else
+  ac_cv_lib_snappy_snappy_compress=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_snappy_snappy_compress" >&5
+$as_echo "$ac_cv_lib_snappy_snappy_compress" >&6; }
+if test "x$ac_cv_lib_snappy_snappy_compress" = xyes; then :
+  true
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "libsnappy not found
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+fi
+
+# cond-check leveldb, necessary if server, osd or mon enabled
+if test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \); then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for leveldb_open in -lleveldb" >&5
+$as_echo_n "checking for leveldb_open in -lleveldb... " >&6; }
+if ${ac_cv_lib_leveldb_leveldb_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lleveldb -lsnappy -lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char leveldb_open ();
+int
+main ()
+{
+return leveldb_open ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_leveldb_leveldb_open=yes
+else
+  ac_cv_lib_leveldb_leveldb_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_leveldb_leveldb_open" >&5
+$as_echo "$ac_cv_lib_leveldb_leveldb_open" >&6; }
+if test "x$ac_cv_lib_leveldb_leveldb_open" = xyes; then :
+  true
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "libleveldb not found
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+fi
+###### PATCH ENDS HERE ######
+
+
 # Check for yasm
 # Extract the first word of "yasm", so it can be a program name with args.
 set dummy yasm; ac_word=$2
@@ -17017,6 +17342,46 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 }
+{
+	ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+	my_cflags_save="$CFLAGS"
+	CFLAGS="$my_cflags_save -Werror=format-security"
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Werror=format-security" >&5
+$as_echo_n "checking whether $CC accepts -Werror=format-security... " >&6; }
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WARN_ERROR_FORMAT_SECURITY="-Werror=format-security"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	CFLAGS="$my_cflags_save"
+	ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+}
 
 # Check for compiler VTA support
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fvar-tracking-assignments" >&5
@@ -17817,7 +18182,7 @@ fi
 
 
 # rbd {map,unmap,showmapped} dependencies, Linux only
-if test x"$linux" = x"yes"; then
+if test x"$linux" = x"yes" -a x"$with_rbd" = x"yes"; then
   # libblkid
   ac_fn_c_check_header_mongrel "$LINENO" "blkid/blkid.h" "ac_cv_header_blkid_blkid_h" "$ac_includes_default"
 if test "x$ac_cv_header_blkid_blkid_h" = xyes; then :
@@ -18795,15 +19160,7 @@ fi
 GCOV_PREFIX_STRIP=`echo $(pwd)/src | tr -dc / | wc -c`
 
 
-# radosgw?
-
-# Check whether --with-radosgw was given.
-if test "${with_radosgw+set}" = set; then :
-  withval=$with_radosgw;
-else
-  with_radosgw=check
-fi
-
+# is radosgw available?
 RADOSGW=0
 if test "x$with_radosgw" != xno; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FCGX_Init in -lfcgi" >&5
@@ -19475,7 +19832,7 @@ else
 JAVA_TEST=Test.java
 CLASS_TEST=Test.class
 cat << \EOF > $JAVA_TEST
-/* #line 19478 "configure" */
+/* #line 19835 "configure" */
 public class Test {
 }
 EOF
@@ -19935,7 +20292,7 @@ fi
 #
 # FreeBSD has it in base.
 #
-if test x"$freebsd" != x"yes"; then
+if test x"$freebsd" != x"yes" -a x"$with_radosgw" = x"yes"; then
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBEDIT" >&5
@@ -20118,8 +20475,9 @@ else
 fi
 
 
-# check is snappy-devel is installed, needed by leveldb
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for snappy_compress in -lsnappy" >&5
+# cond-check snappy-devel and leveldb, necessary if server + osd or mon enabled
+if test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \); then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for snappy_compress in -lsnappy" >&5
 $as_echo_n "checking for snappy_compress in -lsnappy... " >&6; }
 if ${ac_cv_lib_snappy_snappy_compress+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20164,8 +20522,7 @@ as_fn_error $? "libsnappy not found
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 
-# use system leveldb
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for leveldb_open in -lleveldb" >&5
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for leveldb_open in -lleveldb" >&5
 $as_echo_n "checking for leveldb_open in -lleveldb... " >&6; }
 if ${ac_cv_lib_leveldb_leveldb_open+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20210,14 +20567,15 @@ as_fn_error $? "libleveldb not found
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 
-# see if we can use bloom filters with leveldb
-ac_ext=cpp
+
+	# see if we can use bloom filters with leveldb
+	ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-ac_fn_cxx_check_header_mongrel "$LINENO" "leveldb/filter_policy.h" "ac_cv_header_leveldb_filter_policy_h" "$ac_includes_default"
+	ac_fn_cxx_check_header_mongrel "$LINENO" "leveldb/filter_policy.h" "ac_cv_header_leveldb_filter_policy_h" "$ac_includes_default"
 if test "x$ac_cv_header_leveldb_filter_policy_h" = xyes; then :
 
 $as_echo "#define HAVE_LEVELDB_FILTER_POLICY 1" >>confdefs.h
@@ -20225,12 +20583,13 @@ $as_echo "#define HAVE_LEVELDB_FILTER_POLICY 1" >>confdefs.h
 fi
 
 
-ac_ext=c
+	ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+fi
 
 # Find supported SIMD / NEON / SSE extensions supported by the compiler
 
@@ -22351,6 +22710,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched.h" >&5
 $as_echo_n "checking for sched.h... " >&6; }
++ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -22372,7 +22737,7 @@ return 0;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"; then :
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -22387,6 +22752,13 @@ $as_echo "no" >&6; }
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 
 #
 # Check for pthread spinlock (depends on ACX_PTHREAD)
@@ -23450,6 +23822,42 @@ if test -z "${CLANG_TRUE}" && test -z "${CLANG_FALSE}"; then
   as_fn_error $? "conditional \"CLANG\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${WITH_RADOS_TRUE}" && test -z "${WITH_RADOS_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_RADOS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_RBD_TRUE}" && test -z "${WITH_RBD_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_RBD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_CEPHFS_TRUE}" && test -z "${WITH_CEPHFS_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_CEPHFS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_RADOSSTRIPER_TRUE}" && test -z "${WITH_RADOSSTRIPER_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_RADOSSTRIPER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_MON_TRUE}" && test -z "${WITH_MON_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_MON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_OSD_TRUE}" && test -z "${WITH_OSD_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_OSD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_MDS_TRUE}" && test -z "${WITH_MDS_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_MDS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_CLIENT_TRUE}" && test -z "${ENABLE_CLIENT_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_CLIENT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SERVER_TRUE}" && test -z "${ENABLE_SERVER_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_SERVER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${WITH_GOOD_YASM_ELF64_TRUE}" && test -z "${WITH_GOOD_YASM_ELF64_FALSE}"; then
   as_fn_error $? "conditional \"WITH_GOOD_YASM_ELF64\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -23987,7 +24395,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ceph $as_me 0.93, which was
+This file was extended by ceph $as_me 0.94.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -24053,7 +24461,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ceph config.status 0.93
+ceph config.status 0.94.1
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 05f0cf9..241366e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,7 @@ AC_PREREQ(2.59)
 # VERSION define is not used by the code.  It gets a version string
 # from 'git describe'; see src/ceph_ver.[ch]
 
-AC_INIT([ceph], [0.93], [ceph-devel at vger.kernel.org])
+AC_INIT([ceph], [0.94.1], [ceph-devel at vger.kernel.org])
 
 # Create release string.  Used with VERSION for RPMs.
 RPM_RELEASE=0
@@ -86,6 +86,103 @@ AC_PROG_LIBTOOL
 AC_SUBST(AM_CXXFLAGS)
 AM_CXXFLAGS="${AM_CXXFLAGS}"
 
+
+###### PATCH STARTS HERE ######
+# Find out what to build (default is all of these)
+
+# rados?
+AC_ARG_WITH([rados],
+	[AS_HELP_STRING([--with-rados], [build with librados support])],
+	[],
+	[with_rados=yes])
+AM_CONDITIONAL(WITH_RADOS, test "$with_rados" = "yes")
+#AS_IF([test "$with_rados" = "yes"], [AC_DEFINE([WITH_RADOS])])
+
+# rbd?
+# rbd requires rados
+AC_ARG_WITH([rbd],
+	[AS_HELP_STRING([--with-rbd], [build rbd files])],
+	[],
+	[with_rbd=yes])
+AM_CONDITIONAL(WITH_RBD, test "$with_rbd" = "yes")
+#AS_IF([test "$with_rbd" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RBD])])
+
+# cephfs?
+# cephfs requires rados
+AC_ARG_WITH([cephfs],
+	[AS_HELP_STRING([--with-cephfs], [build cephfs files])],
+	[],
+	[with_cephfs=yes])
+AM_CONDITIONAL(WITH_CEPHFS, test "$with_cephfs" = "yes")
+#AS_IF([test "$with_cephfs" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_CEPHFS])])
+
+# radosgw?
+# radosgw requires rados
+AC_ARG_WITH([radosgw],
+            [AS_HELP_STRING([--with-radosgw], [build RADOS gateway])],
+            [],
+            [with_radosgw=check])
+# AM_CONDITIONAL is defined later -- we need to check whether we can enable radosgw if no option is present
+#AS_IF([test "$with_radosgw" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RADOSGW])])
+
+# radosstriper?
+AC_ARG_WITH([radosstriper],
+	[AS_HELP_STRING([--with-radosstriper], [build radosstriper files])],
+	[],
+	[with_radosstriper=yes])
+AM_CONDITIONAL(WITH_RADOSSTRIPER, test "$with_radosstriper" = "yes")
+#AS_IF([test "$with_radostriper" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RADOSSTRIPER])])
+
+# mon?
+AC_ARG_WITH([mon],
+	[AS_HELP_STRING([--with-mon], [build Ceph monitor software files])],
+	[],
+	[with_mon=yes])
+AM_CONDITIONAL(WITH_MON, test "$with_mon" = "yes")
+#AS_IF([test "$with_mon" = "yes"], [AC_DEFINE([WITH_MON])])
+
+# osd?
+AC_ARG_WITH([osd],
+	[AS_HELP_STRING([--with-osd], [build object store daemon files])],
+	[],
+	[with_osd=yes])
+AM_CONDITIONAL(WITH_OSD, test "$with_osd" = "yes")
+#AS_IF([test "$with_osd" = "yes"], [AC_DEFINE([WITH_OSD])])
+
+# mds?
+AC_ARG_WITH([mds],
+	[AS_HELP_STRING([--with-mds], [build mds files])],
+	[],
+	[with_mds=yes])
+AM_CONDITIONAL(WITH_MDS, test "$with_mds" = "yes")
+#AS_IF([test "$with_mds" = "yes"], [AC_DEFINE([WITH_MDS])])
+
+# client?
+AC_ARG_ENABLE([client],
+	[AS_HELP_STRING([--enable-client], [enable client-side build])],
+	[],
+	[enable_client=yes])
+AM_CONDITIONAL([ENABLE_CLIENT], test "$enable_client" = "yes")
+#AS_IF([test "$enable_client" = "yes"], [AC_DEFINE([WITH_RADOS, WITH_RBD, ENABLE_CLIENT])])
+
+# server?
+AC_ARG_ENABLE([server],
+	[AS_HELP_STRING([--enable-server], [enable server-side build ])],
+	[],
+	[enable_server=yes])
+AM_CONDITIONAL(ENABLE_SERVER, test "$enable_server" = "yes")
+#AS_IF([test "$enable_server" = "yes"], [AC_DEFINE([WITH_MON, WITH_OSD, WITH_MDS, ENABLE_SERVER])])
+
+# cond-check if snappy-devel is installed, needed by leveldb that is need by server parts of the project
+AS_IF([test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \)],
+	[AC_CHECK_LIB([snappy], [snappy_compress], [true], [AC_MSG_FAILURE([libsnappy not found])])])
+
+# cond-check leveldb, necessary if server, osd or mon enabled
+AS_IF([test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \)],
+	[AC_CHECK_LIB([leveldb], [leveldb_open], [true], [AC_MSG_FAILURE([libleveldb not found])], [-lsnappy -lpthread])])
+###### PATCH ENDS HERE ######
+
+
 # Check for yasm
 AC_CHECK_PROG(YASM_CHECK, yasm, yes)
 if test x"$YASM_CHECK" = x"yes"; then
@@ -145,6 +242,7 @@ AC_DEFUN([AC_CHECK_CC_FLAG],
 
 AC_CHECK_CC_FLAG([-Wtype-limits], [WARN_TYPE_LIMITS])
 AC_CHECK_CC_FLAG([-Wignored-qualifiers], [WARN_IGNORED_QUALIFIERS])
+AC_CHECK_CC_FLAG([-Werror=format-security], [WARN_ERROR_FORMAT_SECURITY])
 
 # Check for compiler VTA support
 AX_CHECK_COMPILE_FLAG([-fvar-tracking-assignments], [HAS_VTA_SUPPORT=1], [HAS_VTA_SUPPORT=0])
@@ -160,7 +258,7 @@ ACX_PTHREAD
 AC_CHECK_LIB([uuid], [uuid_parse], [true], AC_MSG_FAILURE([libuuid not found]))
 
 # rbd {map,unmap,showmapped} dependencies, Linux only
-if test x"$linux" = x"yes"; then
+if test x"$linux" = x"yes" -a x"$with_rbd" = x"yes"; then
   # libblkid
   AC_CHECK_HEADER([blkid/blkid.h], [],
     AC_MSG_ERROR([blkid/blkid.h not found (libblkid-dev, libblkid-devel)]))
@@ -333,11 +431,7 @@ if test "x$enable_coverage" != xno; then
 fi
 AC_SUBST(GCOV_PREFIX_STRIP, `echo $(pwd)/src | tr -dc / | wc -c`)
 
-# radosgw?
-AC_ARG_WITH([radosgw],
-            [AS_HELP_STRING([--with-radosgw], [build RADOS gateway])],
-            [],
-            [with_radosgw=check])
+# is radosgw available?
 RADOSGW=0
 AS_IF([test "x$with_radosgw" != xno],
 	    [AC_CHECK_LIB([fcgi], [FCGX_Init],
@@ -552,7 +646,7 @@ fi
 #
 # FreeBSD has it in base.
 #
-if test x"$freebsd" != x"yes"; then
+if test x"$freebsd" != x"yes" -a x"$with_radosgw" = x"yes"; then
 PKG_CHECK_MODULES([LIBEDIT], [libedit >= 2.11],
                 [], AC_MSG_FAILURE([No usable version of libedit found.]))
 else
@@ -594,14 +688,16 @@ AC_ARG_WITH([ocf],
             [with_ocf=no])
 AM_CONDITIONAL(WITH_OCF, [ test "$with_ocf" = "yes" ])
 
-# check is snappy-devel is installed, needed by leveldb
-AC_CHECK_LIB([snappy], [snappy_compress], [true], [AC_MSG_FAILURE([libsnappy not found])])
-# use system leveldb
-AC_CHECK_LIB([leveldb], [leveldb_open], [true], [AC_MSG_FAILURE([libleveldb not found])], [-lsnappy -lpthread])
-# see if we can use bloom filters with leveldb
-AC_LANG_PUSH([C++])
-AC_CHECK_HEADER([leveldb/filter_policy.h], [AC_DEFINE([HAVE_LEVELDB_FILTER_POLICY], [1], [Defined if LevelDB supports bloom filters ])])
-AC_LANG_POP([C++])
+# cond-check snappy-devel and leveldb, necessary if server + osd or mon enabled
+if test "$enable_server" = "yes" -a \( "$with_osd" = "yes" -o "$with_mon" = "yes" \); then
+	AC_CHECK_LIB([snappy], [snappy_compress], [true], [AC_MSG_FAILURE([libsnappy not found])])
+	AC_CHECK_LIB([leveldb], [leveldb_open], [true], [AC_MSG_FAILURE([libleveldb not found])], [-lsnappy -lpthread])
+
+	# see if we can use bloom filters with leveldb
+	AC_LANG_PUSH([C++])
+	AC_CHECK_HEADER([leveldb/filter_policy.h], [AC_DEFINE([HAVE_LEVELDB_FILTER_POLICY], [1], [Defined if LevelDB supports bloom filters ])])
+	AC_LANG_POP([C++])
+fi
 
 # Find supported SIMD / NEON / SSE extensions supported by the compiler
 AX_ARM_FEATURES()
@@ -871,6 +967,7 @@ AC_MSG_RESULT([no])
 ])
 
 AC_MSG_CHECKING([for sched.h])
++AC_LANG_PUSH([C++])
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #define _GNU_SOURCE
 #include <sched.h>
@@ -887,6 +984,8 @@ AC_DEFINE([HAVE_SCHED], 1, [Define to 1 if you have sched.h.])
 ], [
 AC_MSG_RESULT([no])
 ])
++AC_LANG_POP([C++])
+
 
 #
 # Check for pthread spinlock (depends on ACX_PTHREAD)
diff --git a/debian/changelog b/debian/changelog
index cc2832a..904c9a4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+ceph (0.94.1-1) stable; urgency=low
+
+  * New upstream release
+
+ -- Alfredo Deza <adeza at redhat.com>  Fri, 10 Apr 2015 12:04:49 -0700
+
+ceph (0.94-1) stable; urgency=low
+
+  * New upstream release
+
+ -- Alfredo Deza <adeza at redhat.com>  Tue, 07 Apr 2015 10:05:40 -0700
+
 ceph (0.93-1) stable; urgency=low
 
   * New upstream release
diff --git a/debian/control b/debian/control
index 0c9528e..58d4cfe 100644
--- a/debian/control
+++ b/debian/control
@@ -53,7 +53,8 @@ Build-Depends: autoconf,
                xfslibs-dev,
                xfsprogs,
                xmlstarlet,
-               yasm [amd64]
+               yasm [amd64],
+               zlib1g-dev
 Standards-Version: 3.9.3
 
 Package: ceph
diff --git a/debian/copyright b/debian/copyright
index d3906c4..1557b4c 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -13,11 +13,11 @@ License: Creative Commons Attribution-ShareAlike (CC BY-SA)
 
 Files: src/mount/canonicalize.c
 Copyright: Copyright (C) 1993 Rick Sladkey <jrs at world.std.com>
-License: LGPL2 or later
+License: LGPL2 or later (see COPYING-GPL2)
 
 Files: src/os/btrfs_ioctl.h
 Copyright: Copyright (C) 2007 Oracle.  All rights reserved.
-License: GPL2
+License: GPL2 (see COPYING-GPL2)
 
 Files: src/include/ceph_hash.cc
 Copyright: None
diff --git a/debian/rules b/debian/rules
index 34f6939..1fd2d66 100755
--- a/debian/rules
+++ b/debian/rules
@@ -33,12 +33,6 @@ ifeq ($(DEB_HOST_ARCH), armel)
   extraopts += --without-libatomic-ops
 endif
 
-ifeq ($(shell lsb_release -sc | egrep -q '(precise|quantal|raring|saucy|wheezy|squeeze)' && echo yes),yes)
-  extraopts += --without-lttng --without-babeltrace
-else
-  extraopts += --with-lttng --with-babeltrace
-endif
-
 configure: configure-stamp
 configure-stamp:
 	dh_testdir
diff --git a/install-deps.sh b/install-deps.sh
index cb050d6..129b238 100755
--- a/install-deps.sh
+++ b/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/man/Makefile-client.am b/man/Makefile-client.am
new file mode 100644
index 0000000..14200f5
--- /dev/null
+++ b/man/Makefile-client.am
@@ -0,0 +1,39 @@
+dist_man_MANS += \
+	ceph-syn.8 \
+	ceph-conf.8 \
+	ceph.8 \
+	ceph-authtool.8 \
+	rados.8 \
+	rbd.8 \
+	ceph-post-file.8 \
+	ceph-dencoder.8
+
+if WITH_RADOS
+dist_man_MANS += \
+	librados-config.8
+endif
+
+if WITH_RBD
+dist_man_MANS += \
+	ceph-rbdnamer.8 \
+	rbd-replay.8 \
+	rbd-replay-many.8 \
+	rbd-replay-prep.8
+endif
+
+if WITH_CEPHFS
+dist_man_MANS += \
+	cephfs.8
+endif
+
+if WITH_FUSE
+dist_man_MANS += \
+	rbd-fuse.8 \
+	ceph-fuse.8
+endif
+
+if WITH_RADOSGW
+dist_man_MANS += \
+	radosgw.8 \
+	radosgw-admin.8
+endif
diff --git a/man/Makefile-server.am b/man/Makefile-server.am
new file mode 100644
index 0000000..794275b
--- /dev/null
+++ b/man/Makefile-server.am
@@ -0,0 +1,26 @@
+dist_man_MANS += \
+	ceph-deploy.8 \
+	crushtool.8 \
+	ceph-run.8 \
+	mount.ceph.8 \
+	ceph-rest-api.8 \
+	ceph-debugpack.8
+
+if WITH_MON
+dist_man_MANS += \
+	ceph-mon.8 \
+	monmaptool.8
+endif
+
+if WITH_OSD
+dist_man_MANS += \
+	ceph-clsinfo.8 \
+	ceph-disk.8 \
+	ceph-osd.8 \
+	osdmaptool.8
+endif
+
+if WITH_MDS
+dist_man_MANS += \
+	ceph-mds.8
+endif
diff --git a/man/Makefile.am b/man/Makefile.am
index 4c8b20f..64f07cc 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,34 +1,11 @@
 AUTOMAKE_OPTIONS = gnu
 
-dist_man_MANS = \
-	ceph-deploy.8 \
-	ceph-disk.8 \
-	ceph-osd.8 \
-	ceph-mds.8 \
-	ceph-mon.8 \
-	ceph-fuse.8 \
-	ceph-syn.8 \
-	crushtool.8 \
-	osdmaptool.8 \
-	monmaptool.8 \
-	ceph-conf.8 \
-	ceph-run.8 \
-	ceph.8 \
-	mount.ceph.8 \
-	radosgw.8 \
-	radosgw-admin.8 \
-	ceph-authtool.8 \
-	rados.8 \
-	librados-config.8 \
-	rbd.8 \
-	ceph-clsinfo.8 \
-	ceph-debugpack.8 \
-	cephfs.8 \
-	ceph-dencoder.8 \
-	ceph-rest-api.8 \
-	ceph-rbdnamer.8 \
-	ceph-post-file.8 \
-	rbd-fuse.8 \
-	rbd-replay.8 \
-	rbd-replay-many.8 \
-	rbd-replay-prep.8
+dist_man_MANS = 
+
+if ENABLE_CLIENT
+include Makefile-client.am
+endif
+
+if ENABLE_SERVER
+include Makefile-server.am
+endif
diff --git a/man/Makefile.in b/man/Makefile.in
index 38bf8bc..89b5b1e 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -34,9 +34,61 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = man
-DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile-client.am \
+	$(srcdir)/Makefile-server.am $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
+ at ENABLE_CLIENT_TRUE@am__append_1 = \
+ at ENABLE_CLIENT_TRUE@	ceph-syn.8 \
+ at ENABLE_CLIENT_TRUE@	ceph-conf.8 \
+ at ENABLE_CLIENT_TRUE@	ceph.8 \
+ at ENABLE_CLIENT_TRUE@	ceph-authtool.8 \
+ at ENABLE_CLIENT_TRUE@	rados.8 \
+ at ENABLE_CLIENT_TRUE@	rbd.8 \
+ at ENABLE_CLIENT_TRUE@	ceph-post-file.8 \
+ at ENABLE_CLIENT_TRUE@	ceph-dencoder.8
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_2 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados-config.8
+
+ at ENABLE_CLIENT_TRUE@@WITH_RBD_TRUE at am__append_3 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RBD_TRUE@	ceph-rbdnamer.8 \
+ at ENABLE_CLIENT_TRUE@@WITH_RBD_TRUE@	rbd-replay.8 \
+ at ENABLE_CLIENT_TRUE@@WITH_RBD_TRUE@	rbd-replay-many.8 \
+ at ENABLE_CLIENT_TRUE@@WITH_RBD_TRUE@	rbd-replay-prep.8
+
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE at am__append_4 = \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@	cephfs.8
+
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at am__append_5 = \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@	rbd-fuse.8 \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@	ceph-fuse.8
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE at am__append_6 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@	radosgw.8 \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@	radosgw-admin.8
+
+ at ENABLE_SERVER_TRUE@am__append_7 = \
+ at ENABLE_SERVER_TRUE@	ceph-deploy.8 \
+ at ENABLE_SERVER_TRUE@	crushtool.8 \
+ at ENABLE_SERVER_TRUE@	ceph-run.8 \
+ at ENABLE_SERVER_TRUE@	mount.ceph.8 \
+ at ENABLE_SERVER_TRUE@	ceph-rest-api.8 \
+ at ENABLE_SERVER_TRUE@	ceph-debugpack.8
+
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_8 = \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	ceph-mon.8 \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	monmaptool.8
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_9 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-clsinfo.8 \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-disk.8 \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-osd.8 \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osdmaptool.8
+
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_10 = \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	ceph-mds.8
+
+subdir = man
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_classpath.m4 \
 	$(top_srcdir)/m4/ac_prog_jar.m4 \
@@ -220,6 +272,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@
@@ -288,43 +341,14 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = gnu
-dist_man_MANS = \
-	ceph-deploy.8 \
-	ceph-disk.8 \
-	ceph-osd.8 \
-	ceph-mds.8 \
-	ceph-mon.8 \
-	ceph-fuse.8 \
-	ceph-syn.8 \
-	crushtool.8 \
-	osdmaptool.8 \
-	monmaptool.8 \
-	ceph-conf.8 \
-	ceph-run.8 \
-	ceph.8 \
-	mount.ceph.8 \
-	radosgw.8 \
-	radosgw-admin.8 \
-	ceph-authtool.8 \
-	rados.8 \
-	librados-config.8 \
-	rbd.8 \
-	ceph-clsinfo.8 \
-	ceph-debugpack.8 \
-	cephfs.8 \
-	ceph-dencoder.8 \
-	ceph-rest-api.8 \
-	ceph-rbdnamer.8 \
-	ceph-post-file.8 \
-	rbd-fuse.8 \
-	rbd-replay.8 \
-	rbd-replay-many.8 \
-	rbd-replay-prep.8
-
+dist_man_MANS = $(am__append_1) $(am__append_2) $(am__append_3) \
+	$(am__append_4) $(am__append_5) $(am__append_6) \
+	$(am__append_7) $(am__append_8) $(am__append_9) \
+	$(am__append_10)
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -345,6 +369,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
diff --git a/man/ceph.8 b/man/ceph.8
index 902ec05..0ec9d53 100644
--- a/man/ceph.8
+++ b/man/ceph.8
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "CEPH" "8" "December 18, 2014" "dev" "Ceph"
+.TH "CEPH" "8" "March 22, 2015" "dev" "Ceph"
 .SH NAME
 ceph \- ceph administration tool
 .
@@ -59,27 +59,51 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 ..
 .SH SYNOPSIS
 .nf
-\fBceph\fP \fBauth\fP \fIadd\fP \fI<entity>\fP {\fI<caps>\fP [\fI<caps>\fP\&...]}
+\fBceph\fP \fBauth\fP [ \fIadd\fP | \fIcaps\fP | \fIdel\fP | \fIexport\fP | \fIget\fP | \fIget\-key\fP | \fIget\-or\-create\fP | \fIget\-or\-create\-key\fP | \fIimport\fP | \fIlist\fP | \fIprint\-key\fP | \fIprint_key\fP ] ...
 .fi
 .sp
 .nf
-\fBceph\fP \fBauth\fP \fIexport\fP \fI<entity>\fP
+\fBceph\fP \fBcompact\fP
 .fi
 .sp
 .nf
-\fBceph\fP \fBconfig\-key\fP \fIget\fP \fI<key>\fP
+\fBceph\fP \fBconfig\-key\fP [ \fIdel\fP | \fIexists\fP | \fIget\fP | \fIlist\fP | \fIput\fP ] ...
 .fi
 .sp
 .nf
-\fBceph\fP \fBmds\fP \fIadd_data_pool\fP \fI<pool>\fP
+\fBceph\fP \fBdf\fP \fI{detail}\fP
 .fi
 .sp
 .nf
-\fBceph\fP \fBmds\fP \fIgetmap\fP {\fI<int[0\-]>\fP}
+\fBceph\fP \fBfs\fP [ \fIls\fP | \fInew\fP | \fIreset\fP | \fIrm\fP ] ...
 .fi
 .sp
 .nf
-\fBceph\fP \fBmon\fP \fIadd\fP \fI<name>\fP <\fIIPaddr[:port]\fP>
+\fBceph\fP \fBfsid\fP
+.fi
+.sp
+.nf
+\fBceph\fP \fBhealth\fP \fI{detail}\fP
+.fi
+.sp
+.nf
+\fBceph\fP \fBheap\fP [ \fIdump\fP | \fIstart_profiler\fP | \fIstop_profiler\fP | \fIrelease\fP | \fIstats\fP ] ...
+.fi
+.sp
+.nf
+\fBceph\fP \fBinjectargs\fP \fI<injectedargs>\fP [ \fI<injectedargs>\fP\&... ]
+.fi
+.sp
+.nf
+\fBceph\fP \fBlog\fP \fI<logtext>\fP [ \fI<logtext>\fP\&... ]
+.fi
+.sp
+.nf
+\fBceph\fP \fBmds\fP [ \fIadd_data_pool\fP | \fIcluster_down\fP | \fIcluster_up\fP | \fIcompat\fP | \fIdeactivate\fP | \fIdump\fP | \fIfail\fP | \fIgetmap\fP | \fInewfs\fP | \fIremove_data_pool\fP | \fIrm\fP | \fIrmfailed\fP | \fIset\fP | \fIset_max_mds\fP | \fIset_state\fP | \fIsetmap\fP | \fIstat\fP | \fIstop\fP | \fItell\fP ] ...
+.fi
+.sp
+.nf
+\fBceph\fP \fBmon\fP [ \fIadd\fP | \fIdump\fP | \fIgetmap\fP | \fIremove\fP | \fIstat\fP ] ...
 .fi
 .sp
 .nf
@@ -87,27 +111,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .fi
 .sp
 .nf
-\fBceph\fP \fBosd\fP \fIcreate\fP {\fI<uuid>\fP}
+\fBceph\fP \fBosd\fP [ \fIblacklist\fP | \fIblocked\-by\fP | \fIcreate\fP | \fIdeep\-scrub\fP | \fIdf\fP | \fIdown\fP | \fIdump\fP | \fIerasure\-code\-profile\fP | \fIfind\fP | \fIgetcrushmap\fP | \fIgetmap\fP | \fIgetmaxosd\fP | \fIin\fP | \fIlspools\fP | \fImap\fP | \fImetadata\fP | \fIout\fP | \fIpause\fP | \fIperf\fP | \fIpg\-temp\fP | \fIprimary\-affinity\fP | \fIprimary\-temp\fP | \fIrepair\fP | \fIreweight\fP | \fIreweight\-by\-pg\fP | \fIrm\fP | \fIscrub\fP | \fIset\fP | \fIsetcr [...]
 .fi
 .sp
 .nf
-\fBceph\fP \fBosd\fP \fBcrush\fP \fIadd\fP \fI<osdname (id|osd.id)>\fP
+\fBceph\fP \fBosd\fP \fBcrush\fP [ \fIadd\fP | \fIadd\-bucket\fP | \fIcreate\-or\-move\fP | \fIdump\fP | \fIget\-tunable\fP | \fIlink\fP | \fImove\fP | \fIremove\fP | \fIrename\-bucket\fP | \fIreweight\fP | \fIreweight\-all\fP | \fIreweight\-subtree\fP | \fIrm\fP | \fIrule\fP | \fIset\fP | \fIset\-tunable\fP | \fIshow\-tunables\fP | \fItunables\fP | \fIunlink\fP ] ...
 .fi
 .sp
+.nf
+\fBceph\fP \fBosd\fP \fBpool\fP [ \fIcreate\fP | \fIdelete\fP | \fIget\fP | \fIget\-quota\fP | \fIls\fP | \fImksnap\fP | \fIrename\fP | \fIrmsnap\fP | \fIset\fP | \fIset\-quota\fP | \fIstats\fP ] ...
+.fi
+.sp
+.nf
+\fBceph\fP \fBosd\fP \fBtier\fP [ \fIadd\fP | \fIadd\-cache\fP | \fIcache\-mode\fP | \fIremove\fP | \fIremove\-overlay\fP | \fIset\-overlay\fP ] ...
+.fi
 .sp
-\fI<float[0.0\-]>\fP \fI<args>\fP [\fI<args>\fP\&...]
 .nf
-\fBceph\fP \fBpg\fP \fIforce_create_pg\fP \fI<pgid>\fP
+\fBceph\fP \fBpg\fP [ \fIdebug\fP | \fIdeep\-scrub\fP | \fIdump\fP | \fIdump_json\fP | \fIdump_pools_json\fP | \fIdump_stuck\fP | \fIforce_create_pg\fP | \fIgetmap\fP | \fIls\fP | \fIls\-by\-osd\fP | \fIls\-by\-pool\fP | \fIls\-by\-primary\fP | \fImap\fP | \fIrepair\fP | \fIscrub\fP | \fIsend_pg_creates\fP | \fIset_full_ratio\fP | \fIset_nearfull_ratio\fP | \fIstat\fP ] ...
 .fi
 .sp
 .nf
-\fBceph\fP \fBpg\fP \fIstat\fP
+\fBceph\fP \fBquorum\fP [ \fIenter\fP | \fIexit\fP ]
 .fi
 .sp
 .nf
 \fBceph\fP \fBquorum_status\fP
 .fi
 .sp
+.nf
+\fBceph\fP \fBreport\fP { \fI<tags>\fP [ \fI<tags>...\fP ] }
+.fi
+.sp
+.nf
+\fBceph\fP \fBscrub\fP
+.fi
+.sp
+.nf
+\fBceph\fP \fBstatus\fP
+.fi
+.sp
+.nf
+\fBceph\fP \fBsync\fP \fBforce\fP {\-\-yes\-i\-really\-mean\-it} {\-\-i\-know\-what\-i\-am\-doing}
+.fi
+.sp
+.nf
+\fBceph\fP \fBtell\fP \fI<name (type.id)> <args> [<args>...]\fP
+.fi
+.sp
+.nf
+\fBceph\fP \fBversion\fP
+.fi
+.sp
 .SH DESCRIPTION
 .sp
 \fBceph\fP is a control utility which is used for manual deployment and maintenance
@@ -122,7 +176,7 @@ or updating of authentication keys for a particular  entity such as a monitor or
 OSD. It uses some additional subcommands.
 .sp
 Subcommand \fBadd\fP adds authentication info for a particular entity from input
-file, or random key if no input given and/or any caps specified in the command.
+file, or random key if no input is given and/or any caps specified in the command.
 .sp
 Usage:
 .INDENT 0.0
@@ -313,7 +367,7 @@ ceph compact
 .sp
 Manage configuration key. It uses some additional subcommands.
 .sp
-Subcommand \fBget\fP gets the configuration key.
+Subcommand \fBdel\fP deletes configuration key.
 .sp
 Usage:
 .INDENT 0.0
@@ -321,13 +375,13 @@ Usage:
 .sp
 .nf
 .ft C
-ceph config\-key get <key>
+ceph config\-key del <key>
 .ft P
 .fi
 .UNINDENT
 .UNINDENT
 .sp
-Subcommand \fBput\fP puts configuration key and values.
+Subcommand \fBexists\fP checks for configuration keys existence.
 .sp
 Usage:
 .INDENT 0.0
@@ -335,13 +389,13 @@ Usage:
 .sp
 .nf
 .ft C
-ceph config\-key put <key> {<val>}
+ceph config\-key exists <key>
 .ft P
 .fi
 .UNINDENT
 .UNINDENT
 .sp
-Subcommand \fBexists\fP checks for configuration keys existence.
+Subcommand \fBget\fP gets the configuration key.
 .sp
 Usage:
 .INDENT 0.0
@@ -349,7 +403,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph config\-key exists <key>
+ceph config\-key get <key>
 .ft P
 .fi
 .UNINDENT
@@ -369,7 +423,7 @@ ceph config\-key list
 .UNINDENT
 .UNINDENT
 .sp
-Subcommand \fBdel\fP deletes configuration key.
+Subcommand \fBput\fP puts configuration key and values.
 .sp
 Usage:
 .INDENT 0.0
@@ -377,7 +431,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph config\-key del <key>
+ceph config\-key put <key> {<val>}
 .ft P
 .fi
 .UNINDENT
@@ -392,7 +446,66 @@ Usage:
 .sp
 .nf
 .ft C
-ceph df
+ceph df {detail}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS fs
+.sp
+Manage cephfs filesystems. It uses some additional subcommands.
+.sp
+Subcommand \fBls\fP to list filesystems
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph fs ls
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBnew\fP to make a new filesystem using named pools <metadata> and <data>
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph fs new <fs_name> <metadata> <data>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBreset\fP is used for disaster recovery only: reset to a single\-MDS map
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph fs reset <fs_name> {\-\-yes\-i\-really\-mean\-it}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBrm\fP to disable the named filesystem
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph fs rm <fs_name> {\-\-yes\-i\-really\-mean\-it}
 .ft P
 .fi
 .UNINDENT
@@ -422,7 +535,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph health
+ceph health {detail}
 .ft P
 .fi
 .UNINDENT
@@ -676,6 +789,20 @@ ceph mds rmfailed <int[0\-]>
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBset\fP set mds parameter <var> to <val>
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph mds set max_mds|max_file_size|allow_new_snaps|inline_data <va> {<confirm>}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBset_max_mds\fP sets max MDS index.
 .sp
 Usage:
@@ -833,8 +960,9 @@ ceph mon stat
 .fi
 .UNINDENT
 .UNINDENT
+.SS mon_status
 .sp
-Subcommand \fBmon_status\fP reports status of monitors.
+Reports status of monitors.
 .sp
 Usage:
 .INDENT 0.0
@@ -852,6 +980,66 @@ ceph mon_status
 Manage OSD configuration and administration. It uses some additional
 subcommands.
 .sp
+Subcommand \fBblacklist\fP manage blacklisted clients. It uses some additional
+subcommands.
+.sp
+Subcommand \fBadd\fP add <addr> to blacklist (optionally until <expire> seconds
+from now)
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd blacklist add <EntityAddr> {<float[0.0\-]>}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBls\fP show blacklisted clients
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd blacklist ls
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBrm\fP remove <addr> from blacklist
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd blacklist rm <EntityAddr>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBblocked\-by\fP prints a histogram of which OSDs are blocking their peers
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd blocked\-by
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBcreate\fP creates new osd (with optional UUID).
 .sp
 Usage:
@@ -909,13 +1097,12 @@ Usage:
 .nf
 .ft C
 ceph osd crush create\-or\-move <osdname (id|osd.id)> <float[0.0\-]> <args>
+[<args>...]
 .ft P
 .fi
 .UNINDENT
 .UNINDENT
 .sp
-[<args>...]
-.sp
 Subcommand \fBdump\fP dumps crush map.
 .sp
 Usage:
@@ -930,6 +1117,20 @@ ceph osd crush dump
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBget\-tunable\fP get crush tunable straw_calc_version
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd crush get\-tunable straw_calc_version
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBlink\fP links existing entry for <name> under location <args>.
 .sp
 Usage:
@@ -973,6 +1174,20 @@ ceph osd crush remove <name> {<ancestor>}
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBrename\-bucket\fP renames buchket <srcname> to <stname>
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd crush rename\-bucket <srcname> <dstname>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBreweight\fP change <name>\(aqs weight to <weight> in crush map.
 .sp
 Usage:
@@ -987,6 +1202,36 @@ ceph osd crush reweight <name> <float[0.0\-]>
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBreweight\-all\fP recalculate the weights for the tree to
+ensure they sum correctly
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd crush reweight\-all
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBreweight\-subtree\fP changes all leaf items beneath <name>
+to <weight> in crush map
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd crush reweight\-subtree <name> <weight>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBrm\fP removes <name> from crush map (everywhere, or just at
 <ancestor>).
 .sp
@@ -1092,7 +1337,7 @@ ceph osd crush rule rm <name>
 .UNINDENT
 .UNINDENT
 .sp
-Subcommand \fBset\fP sets crush map from input file.
+Subcommand \fBset\fP used alone, sets crush map from input file.
 .sp
 Usage:
 .INDENT 0.0
@@ -1121,6 +1366,21 @@ ceph osd crush set <osdname (id|osd.id)> <float[0.0\-]> <args> [<args>...]
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBset\-tunable\fP set crush tunable <tunable> to <value>.  The only
+tunable that can be set is straw_calc_version.
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd crush set\-tunable straw_calc_version <value>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBshow\-tunables\fP shows current crush tunables.
 .sp
 Usage:
@@ -1143,7 +1403,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph osd crush tunables legacy|argonaut|bobtail|firefly|optimal|default
+ceph osd crush tunables legacy|argonaut|bobtail|firefly|hammer|optimal|default
 .ft P
 .fi
 .UNINDENT
@@ -1164,6 +1424,20 @@ ceph osd crush unlink <name> {<ancestor>}
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBdf\fP shows OSD utilization
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd df {plain|tree}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBdeep\-scrub\fP initiates deep scrub on specified osd.
 .sp
 Usage:
@@ -1476,7 +1750,7 @@ Usage:
 .nf
 .ft C
 ceph osd pool create <poolname> <int[0\-]> {<int[0\-]>} {replicated|erasure}
-{<erasure_code_profile>} {<ruleset>}
+{<erasure_code_profile>} {<ruleset>} {<int>}
 .ft P
 .fi
 .UNINDENT
@@ -1505,14 +1779,34 @@ Usage:
 .nf
 .ft C
 ceph osd pool get <poolname> size|min_size|crash_replay_interval|pg_num|
-pgp_num|crush_ruleset|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|
-
-ceph osd pool get <poolname> auid|target_max_objects|target_max_bytes
-
-ceph osd pool get <poolname> cache_target_dirty_ratio|cache_target_full_ratio
-
-ceph osd pool get <poolname> cache_min_flush_age|cache_min_evict_age|
-erasure_code_profile
+pgp_num|crush_ruleset|auid|write_fadvise_dontneed
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Only for tiered pools:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd pool get <poolname> hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|
+target_max_objects|target_max_bytes|cache_target_dirty_ratio|
+cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|
+min_read_recency_for_promote
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Only for erasure coded pools:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd pool get <poolname> erasure_code_profile
 .ft P
 .fi
 .UNINDENT
@@ -1532,6 +1826,20 @@ ceph osd pool get\-quota <poolname>
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBls\fP list pools
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd pool ls {detail}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBmksnap\fP makes snapshot <snap> in <pool>.
 .sp
 Usage:
@@ -1583,18 +1891,12 @@ Usage:
 .nf
 .ft C
 ceph osd pool set <poolname> size|min_size|crash_replay_interval|pg_num|
-pgp_num|crush_ruleset|hashpspool|hit_set_type|hit_set_period|
-
-ceph osd pool set <poolname> hit_set_count|hit_set_fpp|debug_fake_ec_pool
-
-ceph osd pool set <poolname> target_max_bytes|target_max_objects
-
-ceph osd pool set <poolname> cache_target_dirty_ratio|cache_target_full_ratio
-
-ceph osd pool set <poolname> cache_min_flush_age
-
-ceph osd pool set <poolname> cache_min_evict_age|auid <val>
-{\-\-yes\-i\-really\-mean\-it}
+pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|
+hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|debug_fake_ec_pool|
+target_max_bytes|target_max_objects|cache_target_dirty_ratio|
+cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|auid|
+min_read_recency_for_promote|write_fadvise_dontneed
+<val> {\-\-yes\-i\-really\-mean\-it}
 .ft P
 .fi
 .UNINDENT
@@ -1686,6 +1988,21 @@ osd reweight <int[0\-]> <float[0.0\-1.0]>
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBreweight\-by\-pg\fP reweight OSDs by PG distribution
+[overload\-percentage\-for\-consideration, default 120].
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph osd reweight\-by\-pg {<int[100\-]>} {<poolname> [<poolname...]}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBreweight\-by\-utilization\fP reweight OSDs by utilization
 [overload\-percentage\-for\-consideration, default 120].
 .sp
@@ -1737,8 +2054,8 @@ Usage:
 .sp
 .nf
 .ft C
-ceph osd set pause|noup|nodown|noout|noin|nobackfill|norecover|noscrub|
-nodeep\-scrub|notieragent
+ceph osd set full|pause|noup|nodown|noout|noin|nobackfill|
+norebalance|norecover|noscrub|nodeep\-scrub|notieragent
 .ft P
 .fi
 .UNINDENT
@@ -1841,7 +2158,8 @@ Usage:
 .sp
 .nf
 .ft C
-ceph osd tier cache\-mode <poolname> none|writeback|forward|readonly
+ceph osd tier cache\-mode <poolname> none|writeback|forward|readonly|
+readforward|readproxy
 .ft P
 .fi
 .UNINDENT
@@ -1927,8 +2245,8 @@ Usage:
 .sp
 .nf
 .ft C
-osd unset pause|noup|nodown|noout|noin|nobackfill|norecover|noscrub|
-nodeep\-scrub|notieragent
+ceph osd unset full|pause|noup|nodown|noout|noin|nobackfill|
+norebalance|norecover|noscrub|nodeep\-scrub|notieragent
 .ft P
 .fi
 .UNINDENT
@@ -1975,9 +2293,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph pg dump {all|summary|sum|delta|pools|osds|pgs|pgs_brief}
-
-ceph pg dump {all|summary|sum|delta|pools|osds|pgs|pgs_brief...}
+ceph pg dump {all|summary|sum|delta|pools|osds|pgs|pgs_brief} [{all|summary|sum|delta|pools|osds|pgs|pgs_brief...]}
 .ft P
 .fi
 .UNINDENT
@@ -1991,8 +2307,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph pg dump_json {all|summary|sum|pools|osds|pgs[all|summary|sum|pools|
-osds|pgs...]}
+ceph pg dump_json {all|summary|sum|delta|pools|osds|pgs|pgs_brief} [{all|summary|sum|delta|pools|osds|pgs|pgs_brief...]}
 .ft P
 .fi
 .UNINDENT
@@ -2020,7 +2335,7 @@ Usage:
 .sp
 .nf
 .ft C
-ceph pg dump_stuck {inactive|unclean|stale|undersized|degraded[inactive|unclean|stale|undersized|degraded...]}
+ceph pg dump_stuck {inactive|unclean|stale|undersized|degraded [inactive|unclean|stale|undersized|degraded...]}
 {<int>}
 .ft P
 .fi
@@ -2055,6 +2370,97 @@ ceph pg getmap
 .UNINDENT
 .UNINDENT
 .sp
+Subcommand \fBls\fP lists pg with specific pool, osd, state
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph pg ls {<int>} {active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale| remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized [active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale|remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized...]}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBls\-by\-osd\fP lists pg on osd [osd]
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph pg ls\-by\-osd <osdname (id|osd.id)> {<int>}
+{active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale| remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized [active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale|remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized...]}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBls\-by\-pool\fP lists pg with pool = [poolname | poolid]
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph pg ls\-by\-pool <poolstr> {<int>} {active|
+clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale| remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized [active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale|remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized...]}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Subcommand \fBls\-by\-primary\fP lists pg with primary = [osd]
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph pg ls\-by\-primary <osdname (id|osd.id)> {<int>}
+{active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale| remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized [active|clean|down|replay|splitting|
+scrubbing|scrubq|degraded|inconsistent|peering|repair|
+recovery|backfill_wait|incomplete|stale|remapped|
+deep_scrub|backfill|backfill_toofull|recovery_wait|
+undersized...]}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 Subcommand \fBmap\fP shows mapping of pg to osds.
 .sp
 Usage:
@@ -2258,6 +2664,21 @@ ceph tell <name (type.id)> <args> [<args>...]
 .fi
 .UNINDENT
 .UNINDENT
+.SS version
+.sp
+Show mon daemon version
+.sp
+Usage:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ceph version
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
 .SH OPTIONS
 .INDENT 0.0
 .TP
@@ -2366,7 +2787,7 @@ Set a timeout for connecting to the cluster.
 .UNINDENT
 .SH AVAILABILITY
 .sp
-\fBceph\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to
+\fBceph\fP is part of Ceph, a massively scalable, open\-source, distributed storage system. Please refer to
 the Ceph documentation at \fI\%http://ceph.com/docs\fP for more information.
 .SH SEE ALSO
 .sp
diff --git a/man/rbd.8 b/man/rbd.8
index e12a95c..4185dfc 100644
--- a/man/rbd.8
+++ b/man/rbd.8
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "RBD" "8" "January 12, 2014" "dev" "Ceph"
+.TH "RBD" "8" "March 12, 2015" "dev" "Ceph"
 .SH NAME
 rbd \- manage rados block device (RBD) images
 .
@@ -187,6 +187,25 @@ See map options section below for more details.
 .B \-\-read\-only
 Map the image read\-only.  Equivalent to \-o ro.
 .UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-image\-features features
+Specifies which RBD format 2 features are to be enabled when creating
+an image. The numbers from the desired features below should be added
+to compute the parameter value:
+.sp
++1: layering support
++2: striping v2 support
++4: exclusive locking support
++8: object map support
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-image\-shared
+Specifies that the image will be used concurrently by multiple clients.
+This will disable features that are dependent upon exclusive ownership
+of the image.
+.UNINDENT
 .SH COMMANDS
 .INDENT 0.0
 .TP
@@ -207,7 +226,8 @@ Will create a new rbd image. You must also specify the size via \-\-size.  The
 .B \fBclone\fP [\fIparent\-snapname\fP] [\fIimage\-name\fP]
 Will create a clone (copy\-on\-write child) of the parent snapshot.
 Object order will be identical to that of the parent image unless
-specified. Size will be the same as the parent snapshot.
+specified. Size will be the same as the parent snapshot. The \-\-stripe\-unit
+and \-\-stripe\-count arguments are optional, but must be used together.
 .sp
 The parent snapshot must be protected (see \fIrbd snap protect\fP).
 This requires image format 2.
@@ -242,6 +262,9 @@ Creates a new image and imports its data from path (use \- for
 stdin).  The import operation will try to create sparse rbd images
 if possible.  For import from stdin, the sparsification unit is
 the data block size of the destination image (1 << order).
+.sp
+The \-\-stripe\-unit and \-\-stripe\-count arguments are optional, but must be
+used together.
 .TP
 .B \fBexport\-diff\fP [\fIimage\-name\fP] [\fIdest\-path\fP] [\-\-from\-snap \fIsnapname\fP]
 Exports an incremental diff for an image to dest path (use \- for stdout).  If
@@ -251,6 +274,14 @@ using the standard \-\-snap option or @snap syntax (see below).  The image diff
 metadata about image size changes, and the start and end snapshots.  It efficiently represents
 discarded or \(aqzero\(aq regions of the image.
 .TP
+.B \fBmerge\-diff\fP [\fIfirst\-diff\-path\fP] [\fIsecond\-diff\-path\fP] [\fImerged\-diff\-path\fP]
+Merge two continuous incremental diffs of an image into one single diff. The
+first diff\(aqs end snapshot must be equal with the second diff\(aqs start snapshot.
+The first diff could be \- for stdin, and merged diff could be \- for stdout, which
+enables multiple diff files to be merged using something like
+\(aqrbd merge\-diff first second \- | rbd merge\-diff \- third result\(aq. Note this command
+currently only support the source incremental diff with stripe_count == 1
+.TP
 .B \fBimport\-diff\fP [\fIsrc\-path\fP] [\fIimage\-name\fP]
 Imports an incremental diff of an image and applies it to the current image.  If the diff
 was generated relative to a start snapshot, we verify that snapshot already exists before
@@ -311,6 +342,9 @@ Unmaps the block device that was mapped via the rbd kernel module.
 .B \fBshowmapped\fP
 Show the rbd images that are mapped via the rbd kernel module.
 .TP
+.B \fBstatus\fP [\fIimage\-name\fP]
+Show the status of the image, including which clients have it open.
+.TP
 .B \fBlock\fP list [\fIimage\-name\fP]
 Show locks held on the image. The first column is the locker
 to use with the \fIlock remove\fP command.
@@ -361,28 +395,21 @@ The striping is controlled by three parameters:
 .INDENT 0.0
 .TP
 .B order
-.TP
-.B The size of objects we stripe over is a power of two, specifially 2^[*order*] bytes.  The default
-.TP
-.B is 22, or 4 MB.
+The size of objects we stripe over is a power of two, specifically 2^[\fIorder\fP] bytes.  The default
+is 22, or 4 MB.
 .UNINDENT
 .INDENT 0.0
 .TP
 .B stripe_unit
-.TP
-.B Each [*stripe_unit*] contiguous bytes are stored adjacently in the same object, before we move on
-.TP
-.B to the next object.
+Each [\fIstripe_unit\fP] contiguous bytes are stored adjacently in the same object, before we move on
+to the next object.
 .UNINDENT
 .INDENT 0.0
 .TP
 .B stripe_count
-.TP
-.B After we write [*stripe_unit*] bytes to [*stripe_count*] objects, we loop back to the initial object
-.TP
-.B and write another stripe, until the object reaches its maximum size (as specified by [*order*].  At that
-.TP
-.B point, we move on to the next [*stripe_count*] objects.
+After we write [\fIstripe_unit\fP] bytes to [\fIstripe_count\fP] objects, we loop back to the initial object
+and write another stripe, until the object reaches its maximum size (as specified by [\fIorder\fP].  At that
+point, we move on to the next [\fIstripe_count\fP] objects.
 .UNINDENT
 .sp
 By default, [\fIstripe_unit\fP] is the same as the object size and [\fIstripe_count\fP] is 1.  Specifying a different
@@ -604,7 +631,7 @@ rbd lock remove mypool/myimage mylockid client.2485
 .UNINDENT
 .SH AVAILABILITY
 .sp
-\fBrbd\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to
+\fBrbd\fP is part of Ceph, a massively scalable, open\-source, distributed storage system. Please refer to
 the Ceph documentation at \fI\%http://ceph.com/docs\fP for more information.
 .SH SEE ALSO
 .sp
diff --git a/src/.git_version b/src/.git_version
index d882ace..92389dc 100644
--- a/src/.git_version
+++ b/src/.git_version
@@ -1,2 +1,2 @@
-bebf8e9a830d998eeaab55f86bb256d4360dd3c4
-v0.93
+e4bfad3a3c51054df7e537a724c8d0bf9be972ff
+v0.94.1
diff --git a/src/Makefile-client.am b/src/Makefile-client.am
new file mode 100644
index 0000000..587bdf3
--- /dev/null
+++ b/src/Makefile-client.am
@@ -0,0 +1,111 @@
+bash_completiondir = $(sysconfdir)/bash_completion.d
+bash_completion_DATA = $(srcdir)/bash_completion/ceph
+
+bin_SCRIPTS += \
+	ceph \
+	ceph-post-file
+
+python_PYTHON += pybind/ceph_argparse.py
+
+ceph_syn_SOURCES = ceph_syn.cc
+ceph_syn_SOURCES += client/SyntheticClient.cc # uses g_conf.. needs cleanup
+ceph_syn_LDADD = $(LIBCLIENT) $(CEPH_GLOBAL)
+bin_PROGRAMS += ceph-syn
+
+# assemble Python script with global version variables
+# NB: depends on format of ceph_ver.h
+
+ceph: ceph.in ./ceph_ver.h Makefile
+	rm -f $@ $@.tmp
+	echo "#!/usr/bin/env python" >$@.tmp
+	grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \
+		sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp
+	grep "#define CEPH_GIT_VER" ./ceph_ver.h | \
+	  sed -e 's/#define \(.*VER\) /\1=/' -e 's/=\(.*\)$$/="\1"/' >>$@.tmp
+	cat $(srcdir)/$@.in >>$@.tmp
+	chmod a+x $@.tmp
+	chmod a-w $@.tmp
+	mv $@.tmp $@
+
+
+if WITH_RADOS
+
+bash_completion_DATA += \
+	$(srcdir)/bash_completion/rados \
+	$(srcdir)/bash_completion/radosgw-admin
+
+python_PYTHON += pybind/rados.py
+
+librados_config_SOURCES = librados-config.cc
+librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_PROGRAMS += librados-config
+
+if WITH_RBD
+
+bash_completion_DATA += \
+	$(srcdir)/bash_completion/rbd
+
+bin_SCRIPTS += \
+	ceph-rbdnamer \
+	rbd-replay-many
+
+python_PYTHON += pybind/rbd.py
+
+libkrbd_la_SOURCES = krbd.cc
+libkrbd_la_LIBADD = $(LIBSECRET) $(LIBCOMMON) -lblkid -ludev
+if LINUX
+noinst_LTLIBRARIES += libkrbd.la
+endif # LINUX
+
+rbd_SOURCES = rbd.cc
+rbd_LDADD = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
+if LINUX
+bin_PROGRAMS += rbd
+endif # LINUX
+
+endif # WITH_RBD
+
+# Fuse targets
+
+if WITH_FUSE
+ceph_fuse_SOURCES = ceph_fuse.cc
+ceph_fuse_LDADD = $(LIBCLIENT_FUSE) $(CEPH_GLOBAL)
+bin_PROGRAMS += ceph-fuse
+
+rbd_fuse_SOURCES = rbd_fuse/rbd-fuse.cc
+rbd_fuse_LDADD = -lfuse $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
+bin_PROGRAMS += rbd-fuse
+endif # WITH_FUSE
+
+
+if WITH_CEPHFS
+cephfs_SOURCES = cephfs.cc
+cephfs_LDADD = $(LIBCOMMON)
+bin_PROGRAMS += cephfs
+
+python_PYTHON += pybind/cephfs.py
+
+# libcephfs (this should go somewhere else in the future)
+
+libcephfs_la_SOURCES = libcephfs.cc
+libcephfs_la_LIBADD = $(LIBCLIENT) $(LIBCOMMON) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+libcephfs_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
+lib_LTLIBRARIES += libcephfs.la
+
+# jni library (java source is in src/java)
+
+if ENABLE_CEPHFS_JAVA
+libcephfs_jni_la_SOURCES = \
+	java/native/libcephfs_jni.cc \
+	java/native/ScopedLocalRef.h \
+	java/native/JniConstants.cpp \
+	java/native/JniConstants.h
+libcephfs_jni_la_LIBADD = $(LIBCEPHFS) $(EXTRALIBS)
+libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS)
+libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0
+lib_LTLIBRARIES += libcephfs_jni.la
+endif # ENABLE_CEPHFS_JAVA
+
+endif # WITH_CEPHFS
+
+endif # WITH_RADOS
diff --git a/src/Makefile-env.am b/src/Makefile-env.am
index aca2d39..93d5a9a 100644
--- a/src/Makefile-env.am
+++ b/src/Makefile-env.am
@@ -64,7 +64,7 @@ AM_COMMON_CFLAGS = \
 	${WARN_IGNORED_QUALIFIERS} \
 	-Winit-self \
 	-Wpointer-arith \
-	-Werror=format-security \
+	${WARN_ERROR_FORMAT_SECURITY} \
 	-fno-strict-aliasing \
 	-fsigned-char
 if !CLANG
@@ -152,6 +152,7 @@ LIBCLIENT_FUSE = libclient_fuse.la
 LIBRADOS = librados.la
 LIBRADOSSTRIPER = libradosstriper.la
 LIBRGW = librgw.la
+LIBCIVETWEB = libcivetweb.la
 LIBRBD = librbd.la
 LIBRBD_TYPES = librbd_types.la
 LIBKRBD = libkrbd.la
diff --git a/src/Makefile.am b/src/Makefile-rocksdb.am
similarity index 58%
copy from src/Makefile.am
copy to src/Makefile-rocksdb.am
index e18205a..7904c0e 100644
--- a/src/Makefile.am
+++ b/src/Makefile-rocksdb.am
@@ -1,220 +1,3 @@
-include Makefile-env.am
-
-SUBDIRS += ocf java tracing
-DIST_SUBDIRS += gmock ocf libs3 java tracing
-
-
-
-# subdirs
-
-include arch/Makefile.am
-include auth/Makefile.am
-include brag/Makefile.am
-include crush/Makefile.am
-include mon/Makefile.am
-include mds/Makefile.am
-include os/Makefile.am
-include osd/Makefile.am
-include erasure-code/Makefile.am
-include osdc/Makefile.am
-include client/Makefile.am
-include global/Makefile.am
-include json_spirit/Makefile.am
-include log/Makefile.am
-include perfglue/Makefile.am
-include common/Makefile.am
-include msg/Makefile.am
-include messages/Makefile.am
-include include/Makefile.am
-include librados/Makefile.am
-include libradosstriper/Makefile.am
-include librbd/Makefile.am
-include rgw/Makefile.am
-include cls/Makefile.am
-include key_value_store/Makefile.am
-include rbd_replay/Makefile.am
-include test/Makefile.am
-include tools/Makefile.am
-
-
-# core daemons
-
-ceph_mon_SOURCES = ceph_mon.cc
-ceph_mon_LDADD = $(LIBMON) $(LIBOS) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-mon
-
-ceph_osd_SOURCES = ceph_osd.cc
-ceph_osd_LDADD = $(LIBOSD) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-osd
-
-ceph_mds_SOURCES = ceph_mds.cc
-ceph_mds_LDADD = $(LIBMDS) $(LIBOSDC) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-mds
-
-
-# admin tools
-
-
-# user tools
-
-mount_ceph_SOURCES = mount/mount.ceph.c
-mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON)
-if LINUX
-su_sbin_PROGRAMS += mount.ceph
-endif # LINUX
-su_sbin_SCRIPTS += mount.fuse.ceph
-
-cephfs_SOURCES = cephfs.cc
-cephfs_LDADD = $(LIBCOMMON)
-bin_PROGRAMS += cephfs
-
-librados_config_SOURCES = librados-config.cc
-librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += librados-config
-
-ceph_syn_SOURCES = ceph_syn.cc
-ceph_syn_SOURCES += client/SyntheticClient.cc # uses g_conf.. needs cleanup
-ceph_syn_LDADD = $(LIBCLIENT) $(CEPH_GLOBAL)
-bin_PROGRAMS += ceph-syn
-
-
-libkrbd_la_SOURCES = krbd.cc
-libkrbd_la_LIBADD = $(LIBSECRET) $(LIBCOMMON) -lblkid -ludev
-if LINUX
-noinst_LTLIBRARIES += libkrbd.la
-endif LINUX
-
-rbd_SOURCES = rbd.cc
-rbd_LDADD = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-if LINUX
-bin_PROGRAMS += rbd
-endif #LINUX
-
-
-# Fuse targets
-
-if WITH_FUSE
-ceph_fuse_SOURCES = ceph_fuse.cc
-ceph_fuse_LDADD = $(LIBCLIENT_FUSE) $(CEPH_GLOBAL)
-bin_PROGRAMS += ceph-fuse
-
-rbd_fuse_SOURCES = rbd_fuse/rbd-fuse.cc
-rbd_fuse_LDADD = -lfuse $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += rbd-fuse
-endif # WITH_FUSE
-
-
-# libcephfs (this should go somewhere else in the future)
-
-libcephfs_la_SOURCES = libcephfs.cc
-libcephfs_la_LIBADD = $(LIBCLIENT) $(LIBCOMMON) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-libcephfs_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
-lib_LTLIBRARIES += libcephfs.la
-
-# jni library (java source is in src/java)
-
-if ENABLE_CEPHFS_JAVA
-libcephfs_jni_la_SOURCES = \
-	java/native/libcephfs_jni.cc \
-	java/native/ScopedLocalRef.h \
-	java/native/JniConstants.cpp \
-	java/native/JniConstants.h
-libcephfs_jni_la_LIBADD = $(LIBCEPHFS) $(EXTRALIBS)
-libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS)
-libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0
-lib_LTLIBRARIES += libcephfs_jni.la
-endif
-
-
-# shell scripts
-
-editpaths = sed \
-	-e 's|@bindir[@]|$(bindir)|g' \
-	-e 's|@sbindir[@]|$(sbindir)|g' \
-	-e 's|@libdir[@]|$(libdir)|g' \
-	-e 's|@sysconfdir[@]|$(sysconfdir)|g' \
-	-e 's|@datadir[@]|$(pkgdatadir)|g' \
-	-e 's|@prefix[@]|$(prefix)|g' \
-	-e 's|@@GCOV_PREFIX_STRIP[@][@]|$(GCOV_PREFIX_STRIP)|g'
-shell_scripts = ceph-debugpack ceph-post-file ceph-crush-location
-$(shell_scripts): Makefile
-$(shell_scripts): %: %.in
-	rm -f $@ $@.tmp
-	$(editpaths) '$(srcdir)/$@.in' >$@.tmp
-	chmod +x $@.tmp
-	chmod a-w $@.tmp
-	mv $@.tmp $@
-
-EXTRA_DIST += $(srcdir)/$(shell_scripts:%=%.in)
-CLEANFILES += $(shell_scripts)
-
-
-# extra bits
-
-EXTRA_DIST += \
-	$(srcdir)/verify-mds-journal.sh \
-	$(srcdir)/vstart.sh \
-	$(srcdir)/stop.sh \
-	ceph-run \
-	$(srcdir)/ceph-osd-prestart.sh \
-	$(srcdir)/ceph_common.sh \
-	$(srcdir)/init-radosgw \
-	$(srcdir)/init-radosgw.sysv \
-	$(srcdir)/init-rbdmap \
-	$(srcdir)/ceph-clsinfo \
-	$(srcdir)/make_version \
-	$(srcdir)/check_version \
-	$(srcdir)/.git_version \
-	$(srcdir)/ceph-rbdnamer \
-	$(srcdir)/test/encoding/readable.sh \
-	$(srcdir)/upstart/ceph-all.conf \
-	$(srcdir)/upstart/ceph-mon.conf \
-	$(srcdir)/upstart/ceph-mon-all.conf \
-	$(srcdir)/upstart/ceph-mon-all-starter.conf \
-	$(srcdir)/upstart/ceph-create-keys.conf \
-	$(srcdir)/upstart/ceph-osd.conf \
-	$(srcdir)/upstart/ceph-osd-all.conf \
-	$(srcdir)/upstart/ceph-osd-all-starter.conf \
-	$(srcdir)/upstart/ceph-mds.conf \
-	$(srcdir)/upstart/ceph-mds-all.conf \
-	$(srcdir)/upstart/ceph-mds-all-starter.conf \
-	$(srcdir)/upstart/radosgw.conf \
-	$(srcdir)/upstart/radosgw-all.conf \
-	$(srcdir)/upstart/radosgw-all-starter.conf \
-	$(srcdir)/upstart/rbdmap.conf \
-	ceph.in \
-	ceph-disk \
-	ceph-disk-prepare \
-	ceph-disk-activate \
-	ceph-disk-udev \
-	ceph-create-keys \
-	ceph-rest-api \
-	ceph-crush-location \
-	mount.fuse.ceph \
-	rbd-replay-many \
-	rbdmap \
-	yasm-wrapper
-
-EXTRA_DIST += \
-	libs3/COPYING \
-	libs3/ChangeLog \
-	libs3/GNUmakefile \
-	libs3/GNUmakefile.mingw \
-	libs3/GNUmakefile.osx \
-	libs3/INSTALL \
-	libs3/LICENSE \
-	libs3/README \
-	libs3/TODO \
-	libs3/archlinux \
-	libs3/debian \
-	libs3/doxyfile \
-	libs3/inc \
-	libs3/libs3.spec \
-	libs3/mswin \
-	libs3/src \
-	libs3/test \
-	unittest_bufferlist.sh
-
 if WITH_SLIBROCKSDB
   SUBDIRS += rocksdb
 else
@@ -586,221 +369,4 @@ else
         rocksdb/utilities/ttl/db_ttl_impl.cc \
         rocksdb/utilities/ttl/db_ttl_impl.h \
         rocksdb/utilities/ttl/ttl_test.cc
-endif
-
-
-# work around old versions of automake that don't define $docdir
-# NOTE: this won't work on suse, where docdir is /usr/share/doc/packages/$package.
-docdir ?= ${datadir}/doc/ceph
-doc_DATA = $(srcdir)/sample.ceph.conf sample.fetch_config
-
-
-# various scripts
-
-shell_commondir = $(libdir)/ceph
-shell_common_SCRIPTS = ceph_common.sh
-
-ceph_libexecdir = $(libexecdir)/ceph
-ceph_libexec_SCRIPTS = ceph-osd-prestart.sh
-
-bash_completiondir = $(sysconfdir)/bash_completion.d
-bash_completion_DATA = $(srcdir)/bash_completion/ceph \
-               $(srcdir)/bash_completion/rados \
-               $(srcdir)/bash_completion/rbd \
-               $(srcdir)/bash_completion/radosgw-admin
-
-ceph_sbin_SCRIPTS = \
-	ceph-disk \
-	ceph-disk-prepare \
-	ceph-disk-activate \
-	ceph-disk-udev \
-	ceph-create-keys
-
-bin_SCRIPTS += \
-	ceph \
-	ceph-run \
-	ceph-rest-api \
-	ceph-clsinfo \
-	ceph-debugpack \
-	ceph-rbdnamer \
-	ceph-post-file \
-	ceph-crush-location \
-	rbd-replay-many
-
-BUILT_SOURCES += init-ceph
-
-shell_scripts += init-ceph
-
-
-
-
-
-# tests to actually run on "make check"; if you need extra, non-test,
-# executables built, you need to replace this with manual assignments
-# target by target
-
-TESTS = \
-	$(check_PROGRAMS) \
-	$(check_SCRIPTS)
-
-check-local:
-	$(top_srcdir)/qa/workunits/erasure-code/encode-decode-non-regression.sh 
-	$(srcdir)/test/encoding/readable.sh ../ceph-object-corpus
-
-if WITH_LTTNG
-# TODO: If we're running the parallel test harness (the preferred harness), this should be AM_TESTS_ENVIRONMENT instead.
-# See: https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html
-# I don't see the serial-tests Automake option anywhere, but my AM_TESTS_ENVIRONMENT was being ignored.
-TESTS_ENVIRONMENT = LD_PRELOAD=liblttng-ust-fork.so; export LD_PRELOAD; echo "LD_PRELOAD=$${LD_PRELOAD}";
-endif
-
-# base targets
-
-core-daemons: ceph-mon ceph-osd ceph-mds radosgw
-admin-tools: monmaptool osdmaptool crushtool ceph-authtool
-base: core-daemons admin-tools \
-	cephfs ceph-syn ceph-conf \
-	rados radosgw-admin librados-config \
-	init-ceph ceph-post-file \
-	ceph
-
-
-# version stuff
-
-FORCE:
-.git_version: FORCE
-	$(srcdir)/check_version $(srcdir)/.git_version
-
-# if NO_VERSION is set, only generate a new ceph_ver.h if there currently 
-# is none, and call "make_version -n" to fill it with a fixed string.
-# Otherwise, set it from the contents of .git_version.
-
-ceph_ver.h: .git_version
-	if [ -n "$$NO_VERSION" ] ; then \
-	    if [ ! -f ./ceph_ver.h ] ; then \
-	        $(srcdir)/make_version -n ./ceph_ver.h ; \
-	    fi; \
-        else \
-	    $(srcdir)/make_version $(srcdir)/.git_version ./ceph_ver.h ; \
-	fi
-
-ceph_ver.c: ./ceph_ver.h
-common/version.cc: ./ceph_ver.h
-test/encoding/ceph_dencoder.cc: ./ceph_ver.h
-
-sample.fetch_config: fetch_config
-	cp -f $(srcdir)/fetch_config ./sample.fetch_config
-
-dist-hook:
-	$(srcdir)/check_version $(srcdir)/.git_version
-
-CLEANFILES += ceph_ver.h sample.fetch_config
-
-
-# assemble Python script with global version variables
-# NB: depends on format of ceph_ver.h
-
-ceph: ceph.in ./ceph_ver.h Makefile
-	rm -f $@ $@.tmp
-	echo "#!/usr/bin/env python" >$@.tmp
-	grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \
-		sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp
-	grep "#define CEPH_GIT_VER" ./ceph_ver.h | \
-	  sed -e 's/#define \(.*VER\) /\1=/' -e 's/=\(.*\)$$/="\1"/' >>$@.tmp
-	cat $(srcdir)/$@.in >>$@.tmp
-	chmod a+x $@.tmp
-	chmod a-w $@.tmp
-	mv $@.tmp $@
-
-# cleaning
-
-clean-local:
-	rm -f *.so 
-	find . -name '*.gcno' -o -name '*.gcda' -o -name '*.lcov' -o -name "*.o" -o -name "*.lo" | xargs rm -f
-	rm -f ceph java/java/com/ceph/crush/Bucket.class
-
-
-# pybind
-
-python_PYTHON = pybind/rados.py \
-		pybind/rbd.py \
-		pybind/cephfs.py \
-		pybind/ceph_argparse.py \
-		pybind/ceph_rest_api.py
-
-
-# everything else we want to include in a 'make dist'
-
-noinst_HEADERS += \
-	cls_acl.cc\
-	cls_crypto.cc\
-	fetch_config\
-	logrotate.conf\
-	sample.ceph.conf\
-	bash_completion/ceph \
-	bash_completion/rados \
-	bash_completion/rbd \
-	bash_completion/radosgw-admin \
-	mount/canonicalize.c \
-	mount/mtab.c \
-	objclass/objclass.h
-
-
-# coverage
-
-shell_scripts += ceph-coverage
-bin_SCRIPTS += ceph-coverage
-
-
-if ENABLE_COVERAGE
-COV_DIR = $(DESTDIR)$(libdir)/ceph/coverage
-COV_FILES = $(srcdir)/*.gcno
-COV_LIB_FILES = $(srcdir)/.libs/*.gcno
-endif
-
-install-coverage:
-if ENABLE_COVERAGE
-	-mkdir -p $(COV_DIR)/.libs
-	-$(INSTALL_DATA) $(COV_FILES) $(COV_DIR)
-	-$(INSTALL_DATA) $(COV_LIB_FILES) $(COV_DIR)/.libs
-endif
-
-uninstall-coverage:
-if ENABLE_COVERAGE
-	-rm $(COV_DIR)/*.gcno
-	-rm $(COV_DIR)/.libs/*.gcno
-	-rmdir -p $(COV_DIR)/.libs
-	-rmdir -p $(COV_DIR)
-endif
-
-check-coverage:
-if ENABLE_COVERAGE
-	-test/coverage.sh -d $(srcdir) -o check-coverage make check
-endif
-
-install-data-local: install-coverage
-	-mkdir -p $(DESTDIR)$(sysconfdir)/ceph
-	-mkdir -p $(DESTDIR)$(localstatedir)/log/ceph
-	-mkdir -p $(DESTDIR)$(localstatedir)/lib/ceph/tmp
-
-uninstall-local: uninstall-coverage
-	-rmdir -p $(DESTDIR)$(sysconfdir)/ceph/
-	-rmdir -p $(DESTDIR)$(localstatedir)/log/ceph
-	-rmdir -p $(DESTDIR)$(localstatedir)/lib/ceph/tmp
-
-#
-# coverity rules expect:
-#  - cov-build to be in the path
-#  - password in ~/coverity.build.pass.txt
-#  - ability to scp into the ceph.com directory
-#
-project.tgz: clean
-	rm -rf cov-int
-	cov-build --dir cov-int make
-	echo Sage Weil sage at newdream.net ceph >> README
-	tar czvf project.tgz README cov-int
-	rm -f README
-
-coverity-submit:
-	scp project.tgz ceph.com:/home/ceph_site/ceph.com/coverity/`git describe`.tgz
-	curl --data "project=ceph&password=`cat ~/coverity.build.pass.txt`&email=sage at newdream.net&url=http://ceph.com/coverity/`git describe`.tgz" http://scan5.coverity.com/cgi-bin/submit_build.py
+endif # WITH_SLIBROCKSDB
diff --git a/src/Makefile-server.am b/src/Makefile-server.am
new file mode 100644
index 0000000..3cd5229
--- /dev/null
+++ b/src/Makefile-server.am
@@ -0,0 +1,69 @@
+ceph_sbin_SCRIPTS = ceph-create-keys
+
+bin_SCRIPTS += \
+	ceph-run \
+	ceph-rest-api \
+	ceph-debugpack \
+	ceph-crush-location
+
+python_PYTHON += pybind/ceph_rest_api.py
+
+shell_scripts += ceph-coverage
+
+bin_SCRIPTS += ceph-coverage
+
+BUILT_SOURCES += init-ceph
+
+shell_scripts += init-ceph
+
+mount_ceph_SOURCES = mount/mount.ceph.c
+mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON)
+if LINUX
+su_sbin_PROGRAMS += mount.ceph
+endif # LINUX
+su_sbin_SCRIPTS += mount.fuse.ceph
+
+
+if WITH_MON
+
+ceph_mon_SOURCES = ceph_mon.cc
+ceph_mon_LDADD = $(LIBMON) $(LIBOS) $(CEPH_GLOBAL) $(LIBCOMMON)
+bin_PROGRAMS += ceph-mon
+
+endif # WITH_MON
+
+
+if WITH_OSD
+
+ceph_sbin_SCRIPTS += \
+	ceph-disk \
+	ceph-disk-prepare \
+	ceph-disk-activate \
+	ceph-disk-udev
+
+bin_SCRIPTS += \
+	ceph-clsinfo
+
+ceph_osd_SOURCES = ceph_osd.cc
+ceph_osd_LDADD = $(LIBOSD) $(CEPH_GLOBAL) $(LIBCOMMON)
+bin_PROGRAMS += ceph-osd
+
+endif # WITH_OSD
+
+
+if WITH_MDS
+
+ceph_mds_SOURCES = ceph_mds.cc
+ceph_mds_LDADD = $(LIBMDS) $(LIBOSDC) $(CEPH_GLOBAL) $(LIBCOMMON)
+bin_PROGRAMS += ceph-mds
+
+endif # WITH_MDS
+
+
+if ENABLE_COVERAGE
+
+COV_DIR = $(DESTDIR)$(libdir)/ceph/coverage
+COV_FILES = $(srcdir)/*.gcno
+COV_LIB_FILES = $(srcdir)/.libs/*.gcno
+
+endif # ENABLE_COVERAGE
diff --git a/src/Makefile.am b/src/Makefile.am
index e18205a..6d686ee 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,7 +4,6 @@ SUBDIRS += ocf java tracing
 DIST_SUBDIRS += gmock ocf libs3 java tracing
 
 
-
 # subdirs
 
 include arch/Makefile.am
@@ -35,95 +34,7 @@ include key_value_store/Makefile.am
 include rbd_replay/Makefile.am
 include test/Makefile.am
 include tools/Makefile.am
-
-
-# core daemons
-
-ceph_mon_SOURCES = ceph_mon.cc
-ceph_mon_LDADD = $(LIBMON) $(LIBOS) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-mon
-
-ceph_osd_SOURCES = ceph_osd.cc
-ceph_osd_LDADD = $(LIBOSD) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-osd
-
-ceph_mds_SOURCES = ceph_mds.cc
-ceph_mds_LDADD = $(LIBMDS) $(LIBOSDC) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_PROGRAMS += ceph-mds
-
-
-# admin tools
-
-
-# user tools
-
-mount_ceph_SOURCES = mount/mount.ceph.c
-mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON)
-if LINUX
-su_sbin_PROGRAMS += mount.ceph
-endif # LINUX
-su_sbin_SCRIPTS += mount.fuse.ceph
-
-cephfs_SOURCES = cephfs.cc
-cephfs_LDADD = $(LIBCOMMON)
-bin_PROGRAMS += cephfs
-
-librados_config_SOURCES = librados-config.cc
-librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += librados-config
-
-ceph_syn_SOURCES = ceph_syn.cc
-ceph_syn_SOURCES += client/SyntheticClient.cc # uses g_conf.. needs cleanup
-ceph_syn_LDADD = $(LIBCLIENT) $(CEPH_GLOBAL)
-bin_PROGRAMS += ceph-syn
-
-
-libkrbd_la_SOURCES = krbd.cc
-libkrbd_la_LIBADD = $(LIBSECRET) $(LIBCOMMON) -lblkid -ludev
-if LINUX
-noinst_LTLIBRARIES += libkrbd.la
-endif LINUX
-
-rbd_SOURCES = rbd.cc
-rbd_LDADD = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-if LINUX
-bin_PROGRAMS += rbd
-endif #LINUX
-
-
-# Fuse targets
-
-if WITH_FUSE
-ceph_fuse_SOURCES = ceph_fuse.cc
-ceph_fuse_LDADD = $(LIBCLIENT_FUSE) $(CEPH_GLOBAL)
-bin_PROGRAMS += ceph-fuse
-
-rbd_fuse_SOURCES = rbd_fuse/rbd-fuse.cc
-rbd_fuse_LDADD = -lfuse $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += rbd-fuse
-endif # WITH_FUSE
-
-
-# libcephfs (this should go somewhere else in the future)
-
-libcephfs_la_SOURCES = libcephfs.cc
-libcephfs_la_LIBADD = $(LIBCLIENT) $(LIBCOMMON) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-libcephfs_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
-lib_LTLIBRARIES += libcephfs.la
-
-# jni library (java source is in src/java)
-
-if ENABLE_CEPHFS_JAVA
-libcephfs_jni_la_SOURCES = \
-	java/native/libcephfs_jni.cc \
-	java/native/ScopedLocalRef.h \
-	java/native/JniConstants.cpp \
-	java/native/JniConstants.h
-libcephfs_jni_la_LIBADD = $(LIBCEPHFS) $(EXTRALIBS)
-libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS)
-libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0
-lib_LTLIBRARIES += libcephfs_jni.la
-endif
+include Makefile-rocksdb.am
 
 
 # shell scripts
@@ -215,379 +126,6 @@ EXTRA_DIST += \
 	libs3/test \
 	unittest_bufferlist.sh
 
-if WITH_SLIBROCKSDB
-  SUBDIRS += rocksdb
-else
-  EXTRA_DIST += \
-        rocksdb/.arcconfig \
-        rocksdb/.clang-format \
-        rocksdb/.gitignore \
-        rocksdb/CONTRIBUTING.md \
-        rocksdb/HISTORY.md \
-        rocksdb/INSTALL.md \
-        rocksdb/LICENSE \
-        rocksdb/Makefile.am \
-        rocksdb/PATENTS \
-        rocksdb/README \
-        rocksdb/ROCKSDB_LITE.md \
-        rocksdb/build_tools/build_detect_platform \
-        rocksdb/build_tools/build_detect_version \
-        rocksdb/build_tools/fbcode.clang31.sh \
-        rocksdb/build_tools/fbcode.gcc471.sh \
-        rocksdb/build_tools/fbcode.gcc481.sh \
-        rocksdb/build_tools/format-diff.sh \
-        rocksdb/build_tools/mac-install-gflags.sh \
-        rocksdb/build_tools/make_new_version.sh \
-        rocksdb/build_tools/regression_build_test.sh \
-        rocksdb/build_tools/valgrind_test.sh \
-        rocksdb/configure.ac \
-        rocksdb/coverage/coverage_test.sh \
-        rocksdb/coverage/parse_gcov_output.py \
-        rocksdb/db/builder.cc \
-        rocksdb/db/builder.h \
-        rocksdb/db/c.cc \
-        rocksdb/db/c_test.c \
-        rocksdb/db/column_family.cc \
-        rocksdb/db/column_family.h \
-        rocksdb/db/column_family_test.cc \
-        rocksdb/db/compaction.cc \
-        rocksdb/db/compaction.h \
-        rocksdb/db/compaction_picker.cc \
-        rocksdb/db/compaction_picker.h \
-        rocksdb/db/corruption_test.cc \
-        rocksdb/db/db_bench.cc \
-        rocksdb/db/db_filesnapshot.cc \
-        rocksdb/db/db_impl.cc \
-        rocksdb/db/db_impl.h \
-        rocksdb/db/db_impl_debug.cc \
-        rocksdb/db/db_impl_readonly.cc \
-        rocksdb/db/db_impl_readonly.h \
-        rocksdb/db/db_iter.cc \
-        rocksdb/db/db_iter.h \
-        rocksdb/db/db_stats_logger.cc \
-        rocksdb/db/db_test.cc \
-        rocksdb/db/dbformat.cc \
-        rocksdb/db/dbformat.h \
-        rocksdb/db/dbformat_test.cc \
-        rocksdb/db/deletefile_test.cc \
-        rocksdb/db/file_indexer.cc \
-        rocksdb/db/file_indexer.h \
-        rocksdb/db/file_indexer_test.cc \
-        rocksdb/db/filename.cc \
-        rocksdb/db/filename.h \
-        rocksdb/db/filename_test.cc \
-        rocksdb/db/internal_stats.cc \
-        rocksdb/db/internal_stats.h \
-        rocksdb/db/log_and_apply_bench.cc \
-        rocksdb/db/log_format.h \
-        rocksdb/db/log_reader.cc \
-        rocksdb/db/log_reader.h \
-        rocksdb/db/log_test.cc \
-        rocksdb/db/log_writer.cc \
-        rocksdb/db/log_writer.h \
-        rocksdb/db/memtable.cc \
-        rocksdb/db/memtable.h \
-        rocksdb/db/memtable_list.cc \
-        rocksdb/db/memtable_list.h \
-        rocksdb/db/merge_context.h \
-        rocksdb/db/merge_helper.cc \
-        rocksdb/db/merge_helper.h \
-        rocksdb/db/merge_operator.cc \
-        rocksdb/db/merge_test.cc \
-        rocksdb/db/perf_context_test.cc \
-        rocksdb/db/plain_table_db_test.cc \
-        rocksdb/db/prefix_test.cc \
-        rocksdb/db/repair.cc \
-        rocksdb/db/simple_table_db_test.cc \
-        rocksdb/db/skiplist.h \
-        rocksdb/db/skiplist_test.cc \
-        rocksdb/db/snapshot.h \
-        rocksdb/db/table_cache.cc \
-        rocksdb/db/table_cache.h \
-        rocksdb/db/table_properties_collector.cc \
-        rocksdb/db/table_properties_collector.h \
-        rocksdb/db/table_properties_collector_test.cc \
-        rocksdb/db/tailing_iter.cc \
-        rocksdb/db/tailing_iter.h \
-        rocksdb/db/transaction_log_impl.cc \
-        rocksdb/db/transaction_log_impl.h \
-        rocksdb/db/version_edit.cc \
-        rocksdb/db/version_edit.h \
-        rocksdb/db/version_edit_test.cc \
-        rocksdb/db/version_set.cc \
-        rocksdb/db/version_set.h \
-        rocksdb/db/version_set_test.cc \
-        rocksdb/db/write_batch.cc \
-        rocksdb/db/write_batch_internal.h \
-        rocksdb/db/write_batch_test.cc \
-        rocksdb/doc/doc.css \
-        rocksdb/doc/index.html \
-        rocksdb/doc/log_format.txt \
-        rocksdb/doc/rockslogo.jpg \
-        rocksdb/doc/rockslogo.png \
-        rocksdb/hdfs/README \
-        rocksdb/hdfs/env_hdfs.h \
-        rocksdb/hdfs/hdfs.h \
-        rocksdb/hdfs/libhdfs.a \
-        rocksdb/helpers/memenv/memenv.cc \
-        rocksdb/helpers/memenv/memenv_test.cc \
-        rocksdb/include/rocksdb/c.h \
-        rocksdb/include/rocksdb/cache.h \
-        rocksdb/include/rocksdb/compaction_filter.h \
-        rocksdb/include/rocksdb/comparator.h \
-        rocksdb/include/rocksdb/db.h \
-        rocksdb/include/rocksdb/env.h \
-        rocksdb/include/rocksdb/filter_policy.h \
-        rocksdb/include/rocksdb/flush_block_policy.h \
-        rocksdb/include/rocksdb/iterator.h \
-        rocksdb/include/rocksdb/ldb_tool.h \
-        rocksdb/include/rocksdb/memtablerep.h \
-        rocksdb/include/rocksdb/merge_operator.h \
-        rocksdb/include/rocksdb/options.h \
-        rocksdb/include/rocksdb/perf_context.h \
-        rocksdb/include/rocksdb/slice.h \
-        rocksdb/include/rocksdb/slice_transform.h \
-        rocksdb/include/rocksdb/statistics.h \
-        rocksdb/include/rocksdb/status.h \
-        rocksdb/include/rocksdb/table.h \
-        rocksdb/include/rocksdb/table_properties.h \
-        rocksdb/include/rocksdb/transaction_log.h \
-        rocksdb/include/rocksdb/types.h \
-        rocksdb/include/rocksdb/universal_compaction.h \
-        rocksdb/include/rocksdb/version.h \
-        rocksdb/include/rocksdb/write_batch.h \
-        rocksdb/include/utilities/backupable_db.h \
-        rocksdb/include/utilities/db_ttl.h \
-        rocksdb/include/utilities/geo_db.h \
-        rocksdb/include/utilities/stackable_db.h \
-        rocksdb/include/utilities/utility_db.h \
-        rocksdb/java/Makefile \
-        rocksdb/java/RocksDBSample.java \
-        rocksdb/java/jdb_bench.sh \
-        rocksdb/java/org/rocksdb/BackupableDB.java \
-        rocksdb/java/org/rocksdb/BackupableDBOptions.java \
-        rocksdb/java/org/rocksdb/BloomFilter.java \
-        rocksdb/java/org/rocksdb/Filter.java \
-        rocksdb/java/org/rocksdb/HashLinkedListMemTableConfig.java \
-        rocksdb/java/org/rocksdb/HashSkipListMemTableConfig.java \
-        rocksdb/java/org/rocksdb/HistogramData.java \
-        rocksdb/java/org/rocksdb/HistogramType.java \
-        rocksdb/java/org/rocksdb/Iterator.java \
-        rocksdb/java/org/rocksdb/MemTableConfig.java \
-        rocksdb/java/org/rocksdb/Options.java \
-        rocksdb/java/org/rocksdb/PlainTableConfig.java \
-        rocksdb/java/org/rocksdb/ReadOptions.java \
-        rocksdb/java/org/rocksdb/RocksDB.java \
-        rocksdb/java/org/rocksdb/RocksDBException.java \
-        rocksdb/java/org/rocksdb/RocksObject.java \
-        rocksdb/java/org/rocksdb/SkipListMemTableConfig.java \
-        rocksdb/java/org/rocksdb/Statistics.java \
-        rocksdb/java/org/rocksdb/TableFormatConfig.java \
-        rocksdb/java/org/rocksdb/TickerType.java \
-        rocksdb/java/org/rocksdb/VectorMemTableConfig.java \
-        rocksdb/java/org/rocksdb/WriteBatch.java \
-        rocksdb/java/org/rocksdb/WriteBatchTest.java \
-        rocksdb/java/org/rocksdb/WriteOptions.java \
-        rocksdb/java/org/rocksdb/benchmark/DbBenchmark.java \
-        rocksdb/java/org/rocksdb/test/BackupableDBTest.java \
-        rocksdb/java/org/rocksdb/test/OptionsTest.java \
-        rocksdb/java/org/rocksdb/test/ReadOptionsTest.java \
-        rocksdb/java/org/rocksdb/util/Environment.java \
-        rocksdb/java/org/rocksdb/util/SizeUnit.java \
-        rocksdb/java/rocksjni/backupablejni.cc \
-        rocksdb/java/rocksjni/filter.cc \
-        rocksdb/java/rocksjni/iterator.cc \
-        rocksdb/java/rocksjni/memtablejni.cc \
-        rocksdb/java/rocksjni/options.cc \
-        rocksdb/java/rocksjni/portal.h \
-        rocksdb/java/rocksjni/rocksjni.cc \
-        rocksdb/java/rocksjni/statistics.cc \
-        rocksdb/java/rocksjni/table.cc \
-        rocksdb/java/rocksjni/write_batch.cc \
-        rocksdb/linters/__phutil_library_init__.php \
-        rocksdb/linters/__phutil_library_map__.php \
-        rocksdb/linters/cpp_linter/ArcanistCpplintLinter.php \
-        rocksdb/linters/cpp_linter/FbcodeCppLinter.php \
-        rocksdb/linters/cpp_linter/PfffCppLinter.php \
-        rocksdb/linters/cpp_linter/cpplint.py \
-        rocksdb/linters/lint_engine/FacebookFbcodeLintEngine.php \
-        rocksdb/m4/libtool.m4 \
-        rocksdb/m4/ltoptions.m4 \
-        rocksdb/m4/ltsugar.m4 \
-        rocksdb/m4/ltversion.m4 \
-        rocksdb/m4/lt~obsolete.m4 \
-        rocksdb/port/README \
-        rocksdb/port/atomic_pointer.h \
-        rocksdb/port/likely.h \
-        rocksdb/port/port.h \
-        rocksdb/port/port_example.h \
-        rocksdb/port/port_posix.cc \
-        rocksdb/port/port_posix.h \
-        rocksdb/port/stack_trace.cc \
-        rocksdb/port/stack_trace.h \
-        rocksdb/port/win/stdint.h \
-        rocksdb/table/block.cc \
-        rocksdb/table/block.h \
-        rocksdb/table/block_based_table_builder.cc \
-        rocksdb/table/block_based_table_builder.h \
-        rocksdb/table/block_based_table_factory.cc \
-        rocksdb/table/block_based_table_factory.h \
-        rocksdb/table/block_based_table_reader.cc \
-        rocksdb/table/block_based_table_reader.h \
-        rocksdb/table/block_builder.cc \
-        rocksdb/table/block_builder.h \
-        rocksdb/table/block_hash_index.cc \
-        rocksdb/table/block_hash_index.h \
-        rocksdb/table/block_hash_index_test.cc \
-        rocksdb/table/block_test.cc \
-        rocksdb/table/filter_block.cc \
-        rocksdb/table/filter_block.h \
-        rocksdb/table/filter_block_test.cc \
-        rocksdb/table/flush_block_policy.cc \
-        rocksdb/table/format.cc \
-        rocksdb/table/format.h \
-        rocksdb/table/iter_heap.h \
-        rocksdb/table/iterator.cc \
-        rocksdb/table/iterator_wrapper.h \
-        rocksdb/table/merger.cc \
-        rocksdb/table/merger.h \
-        rocksdb/table/meta_blocks.cc \
-        rocksdb/table/meta_blocks.h \
-        rocksdb/table/plain_table_builder.cc \
-        rocksdb/table/plain_table_builder.h \
-        rocksdb/table/plain_table_factory.cc \
-        rocksdb/table/plain_table_factory.h \
-        rocksdb/table/plain_table_reader.cc \
-        rocksdb/table/plain_table_reader.h \
-        rocksdb/table/table_builder.h \
-        rocksdb/table/table_properties.cc \
-        rocksdb/table/table_reader.h \
-        rocksdb/table/table_reader_bench.cc \
-        rocksdb/table/table_test.cc \
-        rocksdb/table/two_level_iterator.cc \
-        rocksdb/table/two_level_iterator.h \
-        rocksdb/tools/auto_sanity_test.sh \
-        rocksdb/tools/blob_store_bench.cc \
-        rocksdb/tools/db_crashtest.py \
-        rocksdb/tools/db_crashtest2.py \
-        rocksdb/tools/db_repl_stress.cc \
-        rocksdb/tools/db_sanity_test.cc \
-        rocksdb/tools/db_stress.cc \
-        rocksdb/tools/ldb.cc \
-        rocksdb/tools/ldb_test.py \
-        rocksdb/tools/reduce_levels_test.cc \
-        rocksdb/tools/sst_dump.cc \
-        rocksdb/util/arena.cc \
-        rocksdb/util/arena.h \
-        rocksdb/util/arena_test.cc \
-        rocksdb/util/auto_roll_logger.cc \
-        rocksdb/util/auto_roll_logger.h \
-        rocksdb/util/auto_roll_logger_test.cc \
-        rocksdb/util/autovector.h \
-        rocksdb/util/autovector_test.cc \
-        rocksdb/util/benchharness.cc \
-        rocksdb/util/benchharness.h \
-        rocksdb/util/benchharness_test.cc \
-        rocksdb/util/blob_store.cc \
-        rocksdb/util/blob_store.h \
-        rocksdb/util/blob_store_test.cc \
-        rocksdb/util/bloom.cc \
-        rocksdb/util/bloom_test.cc \
-        rocksdb/util/build_version.h \
-        rocksdb/util/cache.cc \
-        rocksdb/util/cache_test.cc \
-        rocksdb/util/coding.cc \
-        rocksdb/util/coding.h \
-        rocksdb/util/coding_test.cc \
-        rocksdb/util/comparator.cc \
-        rocksdb/util/crc32c.cc \
-        rocksdb/util/crc32c.h \
-        rocksdb/util/crc32c_test.cc \
-        rocksdb/util/dynamic_bloom.cc \
-        rocksdb/util/dynamic_bloom.h \
-        rocksdb/util/dynamic_bloom_test.cc \
-        rocksdb/util/env.cc \
-        rocksdb/util/env_hdfs.cc \
-        rocksdb/util/env_posix.cc \
-        rocksdb/util/env_test.cc \
-        rocksdb/util/filelock_test.cc \
-        rocksdb/util/filter_policy.cc \
-        rocksdb/util/hash.cc \
-        rocksdb/util/hash.h \
-        rocksdb/util/hash_cuckoo_rep.cc \
-        rocksdb/util/hash_cuckoo_rep.h \
-        rocksdb/util/hash_linklist_rep.cc \
-        rocksdb/util/hash_linklist_rep.h \
-        rocksdb/util/hash_skiplist_rep.cc \
-        rocksdb/util/hash_skiplist_rep.h \
-        rocksdb/util/histogram.cc \
-        rocksdb/util/histogram.h \
-        rocksdb/util/histogram_test.cc \
-        rocksdb/util/ldb_cmd.cc \
-        rocksdb/util/ldb_cmd.h \
-        rocksdb/util/ldb_cmd_execute_result.h \
-        rocksdb/util/ldb_tool.cc \
-        rocksdb/util/log_buffer.cc \
-        rocksdb/util/log_buffer.h \
-        rocksdb/util/log_write_bench.cc \
-        rocksdb/util/logging.cc \
-        rocksdb/util/logging.h \
-        rocksdb/util/manual_compaction_test.cc \
-        rocksdb/util/murmurhash.cc \
-        rocksdb/util/murmurhash.h \
-        rocksdb/util/mutexlock.h \
-        rocksdb/util/options.cc \
-        rocksdb/util/perf_context.cc \
-        rocksdb/util/perf_context_imp.h \
-        rocksdb/util/posix_logger.h \
-        rocksdb/util/random.h \
-        rocksdb/util/signal_test.cc \
-        rocksdb/util/skiplistrep.cc \
-        rocksdb/util/slice.cc \
-        rocksdb/util/statistics.cc \
-        rocksdb/util/statistics.h \
-        rocksdb/util/stats_logger.h \
-        rocksdb/util/status.cc \
-        rocksdb/util/stl_wrappers.h \
-        rocksdb/util/stop_watch.h \
-        rocksdb/util/string_util.cc \
-        rocksdb/util/string_util.h \
-        rocksdb/util/sync_point.cc \
-        rocksdb/util/sync_point.h \
-        rocksdb/util/testharness.cc \
-        rocksdb/util/testharness.h \
-        rocksdb/util/testutil.cc \
-        rocksdb/util/testutil.h \
-        rocksdb/util/thread_local.cc \
-        rocksdb/util/thread_local.h \
-        rocksdb/util/thread_local_test.cc \
-        rocksdb/util/vectorrep.cc \
-        rocksdb/util/xxhash.cc \
-        rocksdb/util/xxhash.h \
-        rocksdb/utilities/backupable/backupable_db.cc \
-        rocksdb/utilities/backupable/backupable_db_test.cc \
-        rocksdb/utilities/geodb/geodb_impl.cc \
-        rocksdb/utilities/geodb/geodb_impl.h \
-        rocksdb/utilities/geodb/geodb_test.cc \
-        rocksdb/utilities/merge_operators.h \
-        rocksdb/utilities/merge_operators/put.cc \
-        rocksdb/utilities/merge_operators/string_append/stringappend.cc \
-        rocksdb/utilities/merge_operators/string_append/stringappend.h \
-        rocksdb/utilities/merge_operators/string_append/stringappend2.cc \
-        rocksdb/utilities/merge_operators/string_append/stringappend2.h \
-        rocksdb/utilities/merge_operators/string_append/stringappend_test.cc \
-        rocksdb/utilities/merge_operators/uint64add.cc \
-        rocksdb/utilities/redis/README \
-        rocksdb/utilities/redis/redis_list_exception.h \
-        rocksdb/utilities/redis/redis_list_iterator.h \
-        rocksdb/utilities/redis/redis_lists.cc \
-        rocksdb/utilities/redis/redis_lists.h \
-        rocksdb/utilities/redis/redis_lists_test.cc \
-        rocksdb/utilities/ttl/db_ttl_impl.cc \
-        rocksdb/utilities/ttl/db_ttl_impl.h \
-        rocksdb/utilities/ttl/ttl_test.cc
-endif
-
 
 # work around old versions of automake that don't define $docdir
 # NOTE: this won't work on suse, where docdir is /usr/share/doc/packages/$package.
@@ -603,37 +141,6 @@ shell_common_SCRIPTS = ceph_common.sh
 ceph_libexecdir = $(libexecdir)/ceph
 ceph_libexec_SCRIPTS = ceph-osd-prestart.sh
 
-bash_completiondir = $(sysconfdir)/bash_completion.d
-bash_completion_DATA = $(srcdir)/bash_completion/ceph \
-               $(srcdir)/bash_completion/rados \
-               $(srcdir)/bash_completion/rbd \
-               $(srcdir)/bash_completion/radosgw-admin
-
-ceph_sbin_SCRIPTS = \
-	ceph-disk \
-	ceph-disk-prepare \
-	ceph-disk-activate \
-	ceph-disk-udev \
-	ceph-create-keys
-
-bin_SCRIPTS += \
-	ceph \
-	ceph-run \
-	ceph-rest-api \
-	ceph-clsinfo \
-	ceph-debugpack \
-	ceph-rbdnamer \
-	ceph-post-file \
-	ceph-crush-location \
-	rbd-replay-many
-
-BUILT_SOURCES += init-ceph
-
-shell_scripts += init-ceph
-
-
-
-
 
 # tests to actually run on "make check"; if you need extra, non-test,
 # executables built, you need to replace this with manual assignments
@@ -697,21 +204,6 @@ dist-hook:
 CLEANFILES += ceph_ver.h sample.fetch_config
 
 
-# assemble Python script with global version variables
-# NB: depends on format of ceph_ver.h
-
-ceph: ceph.in ./ceph_ver.h Makefile
-	rm -f $@ $@.tmp
-	echo "#!/usr/bin/env python" >$@.tmp
-	grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \
-		sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp
-	grep "#define CEPH_GIT_VER" ./ceph_ver.h | \
-	  sed -e 's/#define \(.*VER\) /\1=/' -e 's/=\(.*\)$$/="\1"/' >>$@.tmp
-	cat $(srcdir)/$@.in >>$@.tmp
-	chmod a+x $@.tmp
-	chmod a-w $@.tmp
-	mv $@.tmp $@
-
 # cleaning
 
 clean-local:
@@ -722,12 +214,7 @@ clean-local:
 
 # pybind
 
-python_PYTHON = pybind/rados.py \
-		pybind/rbd.py \
-		pybind/cephfs.py \
-		pybind/ceph_argparse.py \
-		pybind/ceph_rest_api.py
-
+python_PYTHON = 
 
 # everything else we want to include in a 'make dist'
 
@@ -748,15 +235,6 @@ noinst_HEADERS += \
 
 # coverage
 
-shell_scripts += ceph-coverage
-bin_SCRIPTS += ceph-coverage
-
-
-if ENABLE_COVERAGE
-COV_DIR = $(DESTDIR)$(libdir)/ceph/coverage
-COV_FILES = $(srcdir)/*.gcno
-COV_LIB_FILES = $(srcdir)/.libs/*.gcno
-endif
 
 install-coverage:
 if ENABLE_COVERAGE
@@ -804,3 +282,12 @@ project.tgz: clean
 coverity-submit:
 	scp project.tgz ceph.com:/home/ceph_site/ceph.com/coverity/`git describe`.tgz
 	curl --data "project=ceph&password=`cat ~/coverity.build.pass.txt`&email=sage at newdream.net&url=http://ceph.com/coverity/`git describe`.tgz" http://scan5.coverity.com/cgi-bin/submit_build.py
+
+if ENABLE_CLIENT
+include Makefile-client.am
+endif
+
+if ENABLE_SERVER
+include Makefile-server.am
+endif
+
diff --git a/src/Makefile.in b/src/Makefile.in
index 557ca77..0633792 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -42,12 +42,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-DIST_COMMON = README $(am__noinst_HEADERS_DIST) $(dist_bin_SCRIPTS) \
-	$(python_PYTHON) $(srcdir)/Makefile-env.am \
+DIST_COMMON = README $(am__noinst_HEADERS_DIST) \
+	$(am__python_PYTHON_DIST) $(dist_bin_SCRIPTS) \
+	$(srcdir)/Makefile-client.am $(srcdir)/Makefile-env.am \
+	$(srcdir)/Makefile-rocksdb.am $(srcdir)/Makefile-server.am \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/acconfig.h.in $(srcdir)/arch/Makefile.am \
 	$(srcdir)/auth/Makefile.am $(srcdir)/brag/Makefile.am \
-	$(srcdir)/client/Makefile.am $(srcdir)/cls/Makefile.am \
+	$(srcdir)/client/Makefile.am $(srcdir)/cls/Makefile-client.am \
+	$(srcdir)/cls/Makefile-server.am $(srcdir)/cls/Makefile.am \
 	$(srcdir)/common/Makefile.am $(srcdir)/crush/Makefile.am \
 	$(srcdir)/erasure-code/Makefile.am \
 	$(srcdir)/erasure-code/isa/Makefile.am \
@@ -65,34 +68,28 @@ DIST_COMMON = README $(am__noinst_HEADERS_DIST) $(dist_bin_SCRIPTS) \
 	$(srcdir)/os/Makefile.am $(srcdir)/osd/Makefile.am \
 	$(srcdir)/osdc/Makefile.am $(srcdir)/perfglue/Makefile.am \
 	$(srcdir)/rbd_replay/Makefile.am $(srcdir)/rgw/Makefile.am \
-	$(srcdir)/test/Makefile.am \
+	$(srcdir)/test/Makefile-client.am \
+	$(srcdir)/test/Makefile-server.am $(srcdir)/test/Makefile.am \
 	$(srcdir)/test/erasure-code/Makefile.am \
 	$(srcdir)/test/messenger/Makefile.am \
-	$(srcdir)/tools/Makefile.am TODO
-bin_PROGRAMS = $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) \
-	$(am__EXEEXT_12) ceph-dencoder$(EXEEXT) \
-	ceph-objectstore-tool$(EXEEXT) monmaptool$(EXEEXT) \
-	crushtool$(EXEEXT) osdmaptool$(EXEEXT) rados$(EXEEXT) \
-	cephfs-journal-tool$(EXEEXT) cephfs-table-tool$(EXEEXT) \
-	$(am__EXEEXT_13) ceph-conf$(EXEEXT) ceph-authtool$(EXEEXT) \
-	ceph-mon$(EXEEXT) ceph-osd$(EXEEXT) ceph-mds$(EXEEXT) \
-	cephfs$(EXEEXT) librados-config$(EXEEXT) ceph-syn$(EXEEXT) \
-	$(am__EXEEXT_14) $(am__EXEEXT_15)
-noinst_PROGRAMS = ceph_erasure_code_non_regression$(EXEEXT) \
-	$(am__EXEEXT_17) get_command_descriptions$(EXEEXT)
+	$(srcdir)/tools/Makefile-client.am \
+	$(srcdir)/tools/Makefile-server.am $(srcdir)/tools/Makefile.am \
+	TODO
+bin_PROGRAMS = $(am__EXEEXT_27) $(am__EXEEXT_28) $(am__EXEEXT_29) \
+	$(am__EXEEXT_30) $(am__EXEEXT_31) $(am__EXEEXT_32) \
+	$(am__EXEEXT_33) $(am__EXEEXT_34) monmaptool$(EXEEXT) \
+	crushtool$(EXEEXT) osdmaptool$(EXEEXT) $(am__EXEEXT_35) \
+	ceph-conf$(EXEEXT) ceph-authtool$(EXEEXT) $(am__EXEEXT_36) \
+	$(am__EXEEXT_37) $(am__EXEEXT_38) $(am__EXEEXT_39) \
+	$(am__EXEEXT_40) $(am__EXEEXT_41) $(am__EXEEXT_42) \
+	$(am__EXEEXT_43)
+noinst_PROGRAMS = $(am__EXEEXT_54) $(am__EXEEXT_55) $(am__EXEEXT_56)
 sbin_PROGRAMS =
-su_sbin_PROGRAMS = $(am__EXEEXT_18)
-check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
-	unittest_erasure_code$(EXEEXT) \
-	unittest_erasure_code_jerasure$(EXEEXT) \
-	unittest_erasure_code_plugin_jerasure$(EXEEXT) \
-	$(am__EXEEXT_16) unittest_erasure_code_lrc$(EXEEXT) \
-	unittest_erasure_code_plugin_lrc$(EXEEXT) \
-	unittest_erasure_code_shec$(EXEEXT) \
-	unittest_erasure_code_shec_all$(EXEEXT) \
-	unittest_erasure_code_shec_thread$(EXEEXT) \
-	unittest_erasure_code_example$(EXEEXT) \
-	unittest_encoding$(EXEEXT) unittest_addrs$(EXEEXT) \
+su_sbin_PROGRAMS = $(am__EXEEXT_57)
+check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \
+	$(am__EXEEXT_47) $(am__EXEEXT_48) $(am__EXEEXT_49) \
+	$(am__EXEEXT_50) $(am__EXEEXT_51) $(am__EXEEXT_52) \
+	$(am__EXEEXT_53) unittest_addrs$(EXEEXT) \
 	unittest_blkdev$(EXEEXT) unittest_bloom_filter$(EXEEXT) \
 	unittest_histogram$(EXEEXT) unittest_str_map$(EXEEXT) \
 	unittest_sharedptr_registry$(EXEEXT) \
@@ -103,34 +100,23 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 	unittest_striper$(EXEEXT) \
 	unittest_prebufferedstreambuf$(EXEEXT) \
 	unittest_str_list$(EXEEXT) unittest_log$(EXEEXT) \
-	unittest_throttle$(EXEEXT) unittest_base64$(EXEEXT) \
-	unittest_ceph_argparse$(EXEEXT) \
+	unittest_throttle$(EXEEXT) unittest_ceph_argparse$(EXEEXT) \
 	unittest_ceph_compatset$(EXEEXT) unittest_mds_types$(EXEEXT) \
-	unittest_osd_types$(EXEEXT) unittest_pglog$(EXEEXT) \
-	unittest_osdscrub$(EXEEXT) unittest_ecbackend$(EXEEXT) \
-	unittest_hitset$(EXEEXT) unittest_lru$(EXEEXT) \
+	unittest_osd_types$(EXEEXT) unittest_lru$(EXEEXT) \
 	unittest_io_priority$(EXEEXT) unittest_gather$(EXEEXT) \
-	unittest_run_cmd$(EXEEXT) unittest_signals$(EXEEXT) \
-	unittest_simple_spin$(EXEEXT) unittest_librados$(EXEEXT) \
-	unittest_bufferlist$(EXEEXT) unittest_crc32c$(EXEEXT) \
-	unittest_arch$(EXEEXT) unittest_crypto$(EXEEXT) \
-	unittest_crypto_init$(EXEEXT) unittest_perf_counters$(EXEEXT) \
-	unittest_admin_socket$(EXEEXT) unittest_ceph_crypto$(EXEEXT) \
-	unittest_utf8$(EXEEXT) unittest_mime$(EXEEXT) \
-	unittest_escape$(EXEEXT) unittest_chain_xattr$(EXEEXT) \
-	unittest_flatindex$(EXEEXT) unittest_strtol$(EXEEXT) \
-	unittest_confutils$(EXEEXT) unittest_config$(EXEEXT) \
-	unittest_context$(EXEEXT) unittest_safe_io$(EXEEXT) \
-	unittest_heartbeatmap$(EXEEXT) unittest_formatter$(EXEEXT) \
-	unittest_libcephfs_config$(EXEEXT) unittest_lfnindex$(EXEEXT) \
-	unittest_librados_config$(EXEEXT) \
-	unittest_daemon_config$(EXEEXT) unittest_osd_osdcap$(EXEEXT) \
-	unittest_mds_authcap$(EXEEXT) unittest_mon_moncap$(EXEEXT) \
-	unittest_mon_pgmap$(EXEEXT) unittest_ipaddr$(EXEEXT) \
-	unittest_texttable$(EXEEXT) unittest_on_exit$(EXEEXT) \
-	unittest_rbd_replay$(EXEEXT) unittest_readahead$(EXEEXT) \
-	unittest_tableformatter$(EXEEXT) unittest_bit_vector$(EXEEXT) \
-	unittest_librbd$(EXEEXT)
+	unittest_signals$(EXEEXT) unittest_bufferlist$(EXEEXT) \
+	unittest_crc32c$(EXEEXT) unittest_arch$(EXEEXT) \
+	unittest_crypto$(EXEEXT) unittest_crypto_init$(EXEEXT) \
+	unittest_perf_counters$(EXEEXT) unittest_admin_socket$(EXEEXT) \
+	unittest_ceph_crypto$(EXEEXT) unittest_utf8$(EXEEXT) \
+	unittest_mime$(EXEEXT) unittest_escape$(EXEEXT) \
+	unittest_strtol$(EXEEXT) unittest_confutils$(EXEEXT) \
+	unittest_config$(EXEEXT) unittest_context$(EXEEXT) \
+	unittest_safe_io$(EXEEXT) unittest_heartbeatmap$(EXEEXT) \
+	unittest_formatter$(EXEEXT) unittest_daemon_config$(EXEEXT) \
+	unittest_ipaddr$(EXEEXT) unittest_texttable$(EXEEXT) \
+	unittest_on_exit$(EXEEXT) unittest_readahead$(EXEEXT) \
+	unittest_tableformatter$(EXEEXT) unittest_bit_vector$(EXEEXT)
 
 # when doing a debug build, make sure to make the targets
 @WITH_DEBUG_TRUE at am__append_1 = $(bin_DEBUGPROGRAMS)
@@ -151,35 +137,170 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 @WITH_JEMALLOC_TRUE at am__append_16 = -ljemalloc
 @WITH_JEMALLOC_TRUE at am__append_17 = -ljemalloc
 @ENABLE_COVERAGE_TRUE at am__append_18 = -lgcov
- at LINUX_TRUE@am__append_19 = os/BtrfsFileStoreBackend.cc
- at WITH_LIBXFS_TRUE@am__append_20 = os/XfsFileStoreBackend.cc
- at WITH_LIBZFS_TRUE@am__append_21 = os/ZFSFileStoreBackend.cc
- at WITH_LTTNG_TRUE@am__append_22 = $(LIBOS_TP)
- at WITH_SLIBROCKSDB_TRUE@am__append_23 = libos_rocksdb.la
- at WITH_SLIBROCKSDB_TRUE@am__append_24 = os/RocksDBStore.h
- at WITH_DLIBROCKSDB_TRUE@am__append_25 = libos_rocksdb.la
- at WITH_DLIBROCKSDB_TRUE@am__append_26 = os/RocksDBStore.h
- at WITH_LIBZFS_TRUE@am__append_27 = libos_zfs.a
- at WITH_LIBZFS_TRUE@am__append_28 = os/ZFS.h
- at WITH_KINETIC_TRUE@am__append_29 = os/KineticStore.cc
- at WITH_KINETIC_TRUE@am__append_30 = -std=gnu++11
- at WITH_KINETIC_TRUE@am__append_31 = -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a
- at WITH_KINETIC_TRUE@am__append_32 = os/KineticStore.h
- at WITH_LTTNG_TRUE@am__append_33 = $(LIBOSD_TP)
- at WITH_KINETIC_TRUE@am__append_34 = -std=gnu++11
- at LINUX_TRUE@am__append_35 = -export-symbols-regex '.*__erasure_code_.*'
- at LINUX_TRUE@am__append_36 = -export-symbols-regex '.*__erasure_code_.*'
- at HAVE_NEON_TRUE@am__append_37 = libec_jerasure_neon.la
- at LINUX_TRUE@am__append_38 = -export-symbols-regex '.*__erasure_code_.*'
- at HAVE_SSSE3_TRUE@am__append_39 = libec_jerasure_sse3.la
- at LINUX_TRUE@am__append_40 = -export-symbols-regex '.*__erasure_code_.*'
- at HAVE_SSE4_PCLMUL_TRUE@am__append_41 = libec_jerasure_sse4.la
- at LINUX_TRUE@am__append_42 = -export-symbols-regex '.*__erasure_code_.*'
- at LINUX_TRUE@am__append_43 = -export-symbols-regex '.*__erasure_code_.*'
- at LINUX_TRUE@am__append_44 = -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_CLIENT_TRUE@am__append_19 = brag/client/ceph-brag ceph \
+ at ENABLE_CLIENT_TRUE@	ceph-post-file
+ at ENABLE_CLIENT_TRUE@am__append_20 = brag/server brag/README.md brag/client
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_21 = libmon.la
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_22 = \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/AuthMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/DataHealthService.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Elector.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/LogMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/ConfigKeyService.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/HealthMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/HealthService.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MDSMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonmapMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonCap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonClient.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonCommands.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/DumplingMonCommands.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonMap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Monitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonitorStore.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonitorDBStore.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/OSDMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PGMap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PGMonitor.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Paxos.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PaxosService.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/QuorumService.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Session.h \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/mon_types.h
+
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_23 = libmds.la
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_24 =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/inode_backtrace.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/flock.h mds/locks.c \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/locks.h mds/CDentry.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CDir.h mds/CInode.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Capability.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/InoTable.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/JournalPointer.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/LocalLock.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Locker.h mds/LogEvent.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/LogSegment.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDBalancer.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDCache.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/RecoveryQueue.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDLog.h mds/MDS.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Beacon.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSContext.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSAuthCaps.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSMap.h mds/MDSTable.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableServer.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableClient.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Mutation.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Migrator.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/ScatterLock.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Server.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SessionMap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SimpleLock.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapClient.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapRealm.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapServer.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/inode_backtrace.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/mds_table_types.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/mdstypes.h mds/snap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSContinuation.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ECommitted.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EExport.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EFragment.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EImportFinish.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EImportStart.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EMetaBlob.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ENoOp.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EOpen.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EResetJournal.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ESession.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ESessions.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ESlaveUpdate.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ESubtreeMap.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ETableClient.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/ETableServer.h \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/events/EUpdate.h
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__append_25 = os/BtrfsFileStoreBackend.cc
+ at ENABLE_SERVER_TRUE@@WITH_LIBXFS_TRUE at am__append_26 = os/XfsFileStoreBackend.cc
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at am__append_27 = os/ZFSFileStoreBackend.cc
+ at ENABLE_SERVER_TRUE@@WITH_LTTNG_TRUE at am__append_28 = $(LIBOS_TP)
+ at ENABLE_SERVER_TRUE@am__append_29 = libos.la
+ at ENABLE_SERVER_TRUE@am__append_30 = \
+ at ENABLE_SERVER_TRUE@	os/btrfs_ioctl.h \
+ at ENABLE_SERVER_TRUE@	os/chain_xattr.h \
+ at ENABLE_SERVER_TRUE@	os/BtrfsFileStoreBackend.h \
+ at ENABLE_SERVER_TRUE@	os/CollectionIndex.h \
+ at ENABLE_SERVER_TRUE@	os/DBObjectMap.h \
+ at ENABLE_SERVER_TRUE@	os/GenericObjectMap.h \
+ at ENABLE_SERVER_TRUE@	os/FileJournal.h \
+ at ENABLE_SERVER_TRUE@	os/FileStore.h \
+ at ENABLE_SERVER_TRUE@	os/FlatIndex.h \
+ at ENABLE_SERVER_TRUE@	os/FDCache.h \
+ at ENABLE_SERVER_TRUE@	os/GenericFileStoreBackend.h \
+ at ENABLE_SERVER_TRUE@	os/HashIndex.h \
+ at ENABLE_SERVER_TRUE@	os/IndexManager.h \
+ at ENABLE_SERVER_TRUE@	os/Journal.h \
+ at ENABLE_SERVER_TRUE@	os/JournalingObjectStore.h \
+ at ENABLE_SERVER_TRUE@	os/KeyValueDB.h \
+ at ENABLE_SERVER_TRUE@	os/LevelDBStore.h \
+ at ENABLE_SERVER_TRUE@	os/LFNIndex.h \
+ at ENABLE_SERVER_TRUE@	os/MemStore.h \
+ at ENABLE_SERVER_TRUE@	os/KeyValueStore.h \
+ at ENABLE_SERVER_TRUE@	os/ObjectMap.h \
+ at ENABLE_SERVER_TRUE@	os/ObjectStore.h \
+ at ENABLE_SERVER_TRUE@	os/SequencerPosition.h \
+ at ENABLE_SERVER_TRUE@	os/WBThrottle.h \
+ at ENABLE_SERVER_TRUE@	os/XfsFileStoreBackend.h \
+ at ENABLE_SERVER_TRUE@	os/ZFSFileStoreBackend.h
+
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at am__append_31 = libos_rocksdb.la
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at am__append_32 = os/RocksDBStore.h
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at am__append_33 = libos_rocksdb.la
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at am__append_34 = os/RocksDBStore.h
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at am__append_35 = libos_zfs.a
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at am__append_36 = os/ZFS.h
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__append_37 = os/KineticStore.cc
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__append_38 = -std=gnu++11
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__append_39 = -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__append_40 = os/KineticStore.h
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@@WITH_OSD_TRUE at am__append_41 = -std=gnu++11
+ at ENABLE_SERVER_TRUE@@WITH_LTTNG_TRUE@@WITH_OSD_TRUE at am__append_42 = $(LIBOSD_TP)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_43 = libosd.la
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_44 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/Ager.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ClassHandler.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/HitSet.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OSD.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OSDCap.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OSDMap.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ObjectVersioner.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OpRequest.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/SnapMapper.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/PG.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/PGLog.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ReplicatedPG.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/PGBackend.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ReplicatedBackend.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/TierAgentState.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECBackend.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECUtil.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECMsgTypes.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECTransaction.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/Watch.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/osd_types.h
+
+ at LINUX_TRUE@am__append_45 = -export-symbols-regex '.*__erasure_code_.*'
+ at LINUX_TRUE@am__append_46 = -export-symbols-regex '.*__erasure_code_.*'
+ at HAVE_NEON_TRUE@am__append_47 = libec_jerasure_neon.la
+ at LINUX_TRUE@am__append_48 = -export-symbols-regex '.*__erasure_code_.*'
+ at HAVE_SSSE3_TRUE@am__append_49 = libec_jerasure_sse3.la
+ at LINUX_TRUE@am__append_50 = -export-symbols-regex '.*__erasure_code_.*'
+ at HAVE_SSE4_PCLMUL_TRUE@am__append_51 = libec_jerasure_sse4.la
+ at LINUX_TRUE@am__append_52 = -export-symbols-regex '.*__erasure_code_.*'
+ at LINUX_TRUE@am__append_53 = -export-symbols-regex '.*__erasure_code_.*'
+ at LINUX_TRUE@am__append_54 = -export-symbols-regex '.*__erasure_code_.*'
 
 # ISA
- at WITH_BETTER_YASM_ELF64_TRUE@am__append_45 = \
+ at WITH_BETTER_YASM_ELF64_TRUE@am__append_55 = \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/ErasureCodeIsa.h \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/ErasureCodeIsaTableCache.h \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/xor_op.h \
@@ -190,32 +311,51 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/include/gf_vect_mul.h \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/include/types.h
 
- at LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE at am__append_46 = -export-symbols-regex '.*__erasure_code_.*'
- at WITH_BETTER_YASM_ELF64_TRUE@am__append_47 = libec_isa.la
- at WITH_FUSE_TRUE@am__append_48 = libclient_fuse.la
- at WITH_FUSE_TRUE@am__append_49 = client/fuse_ll.h
- at WITH_TCMALLOC_TRUE@am__append_50 = perfglue/heap_profiler.cc
- at WITH_TCMALLOC_TRUE@am__append_51 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
- at WITH_TCMALLOC_TRUE@am__append_52 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
- at WITH_TCMALLOC_FALSE@am__append_53 = perfglue/disabled_heap_profiler.cc
- at WITH_PROFILER_TRUE@am__append_54 = perfglue/cpu_profiler.cc
- at WITH_PROFILER_FALSE@am__append_55 = perfglue/disabled_stubs.cc
- at ENABLE_XIO_TRUE@am__append_56 = \
+ at LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE at am__append_56 = -export-symbols-regex '.*__erasure_code_.*'
+ at WITH_BETTER_YASM_ELF64_TRUE@am__append_57 = libec_isa.la
+ at ENABLE_CLIENT_TRUE@am__append_58 = libclient.la
+ at ENABLE_CLIENT_TRUE@am__append_59 = \
+ at ENABLE_CLIENT_TRUE@	client/Client.h \
+ at ENABLE_CLIENT_TRUE@	client/Dentry.h \
+ at ENABLE_CLIENT_TRUE@	client/Dir.h \
+ at ENABLE_CLIENT_TRUE@	client/Fh.h \
+ at ENABLE_CLIENT_TRUE@	client/Inode.h \
+ at ENABLE_CLIENT_TRUE@	client/MetaRequest.h \
+ at ENABLE_CLIENT_TRUE@	client/MetaSession.h \
+ at ENABLE_CLIENT_TRUE@	client/ClientSnapRealm.h \
+ at ENABLE_CLIENT_TRUE@	client/SyntheticClient.h \
+ at ENABLE_CLIENT_TRUE@	client/Trace.h \
+ at ENABLE_CLIENT_TRUE@	client/ioctl.h \
+ at ENABLE_CLIENT_TRUE@	client/ObjecterWriteback.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at am__append_60 = libclient_fuse.la
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at am__append_61 = client/fuse_ll.h
+ at ENABLE_CLIENT_TRUE@am__append_62 = ceph_test_ioctls
+ at WITH_TCMALLOC_TRUE@am__append_63 = perfglue/heap_profiler.cc
+ at WITH_TCMALLOC_TRUE@am__append_64 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
+ at WITH_TCMALLOC_TRUE@am__append_65 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
+ at WITH_TCMALLOC_FALSE@am__append_66 = perfglue/disabled_heap_profiler.cc
+ at WITH_PROFILER_TRUE@am__append_67 = perfglue/cpu_profiler.cc
+ at WITH_PROFILER_FALSE@am__append_68 = perfglue/disabled_stubs.cc
+ at WITH_RBD_TRUE@am__append_69 = \
+ at WITH_RBD_TRUE@	common/blkdev.cc
+
+ at ENABLE_XIO_TRUE@am__append_70 = \
 @ENABLE_XIO_TRUE@	common/address_helper.cc
 
- at WITH_GOOD_YASM_ELF64_TRUE@am__append_57 = common/crc32c_intel_fast_asm.S common/crc32c_intel_fast_zero_asm.S
- at LINUX_TRUE@am__append_58 = -lrt
- at ENABLE_XIO_TRUE@am__append_59 = \
+ at WITH_GOOD_YASM_ELF64_TRUE@am__append_71 = common/crc32c_intel_fast_asm.S common/crc32c_intel_fast_zero_asm.S
+ at LINUX_TRUE@am__append_72 = -lrt
+ at ENABLE_XIO_TRUE@am__append_73 = \
 @ENABLE_XIO_TRUE@	common/address_helper.h
 
- at LINUX_TRUE@am__append_60 = libsecret.la
- at LINUX_TRUE@am__append_61 = msg/async/EventEpoll.cc
- at DARWIN_TRUE@am__append_62 = msg/async/EventKqueue.cc
- at FREEBSD_TRUE@am__append_63 = msg/async/EventKqueue.cc
- at LINUX_TRUE@am__append_64 = msg/async/EventEpoll.h
- at DARWIN_TRUE@am__append_65 = msg/async/EventKqueue.h
- at FREEBSD_TRUE@am__append_66 = msg/async/EventKqueue.h
- at ENABLE_XIO_TRUE@am__append_67 = \
+ at LINUX_TRUE@am__append_74 = libsecret.la
+ at LINUX_TRUE@am__append_75 = msg/async/EventEpoll.cc
+ at DARWIN_TRUE@am__append_76 = msg/async/EventKqueue.cc
+ at FREEBSD_TRUE@am__append_77 = msg/async/EventKqueue.cc
+ at LINUX_TRUE@am__append_78 = msg/async/EventEpoll.h
+ at DARWIN_TRUE@am__append_79 = msg/async/EventKqueue.h
+ at FREEBSD_TRUE@am__append_80 = msg/async/EventKqueue.h
+ at ENABLE_XIO_TRUE@am__append_81 = \
 @ENABLE_XIO_TRUE@	msg/xio/QueueStrategy.cc \
 @ENABLE_XIO_TRUE@	msg/xio/XioConnection.cc \
 @ENABLE_XIO_TRUE@	msg/xio/XioMessenger.cc \
@@ -223,7 +363,7 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 @ENABLE_XIO_TRUE@	msg/xio/XioPortal.cc \
 @ENABLE_XIO_TRUE@	msg/xio/XioPool.cc
 
- at ENABLE_XIO_TRUE@am__append_68 = \
+ at ENABLE_XIO_TRUE@am__append_82 = \
 @ENABLE_XIO_TRUE@	msg/xio/DispatchStrategy.h \
 @ENABLE_XIO_TRUE@	msg/xio/FastStrategy.h \
 @ENABLE_XIO_TRUE@	msg/xio/QueueStrategy.h \
@@ -235,106 +375,408 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 @ENABLE_XIO_TRUE@	msg/xio/XioPortal.h \
 @ENABLE_XIO_TRUE@	msg/xio/XioSubmit.h
 
- at WITH_LTTNG_TRUE@am__append_69 = $(LIBRADOS_TP)
- at LINUX_TRUE@am__append_70 = -fvisibility=hidden -fvisibility-inlines-hidden
- at LINUX_TRUE@am__append_71 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL'
- at LINUX_TRUE@am__append_72 = -export-symbols-regex '^radosstriper_.*'
- at WITH_LTTNG_TRUE@am__append_73 = $(LIBRBD_TP)
- at LINUX_TRUE@am__append_74 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL'
- at WITH_RADOSGW_TRUE@am__append_75 = librgw.la
- at WITH_RADOSGW_TRUE@am__append_76 = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la \
- at WITH_RADOSGW_TRUE@	libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a \
- at WITH_RADOSGW_TRUE@	libcls_user_client.a \
- at WITH_RADOSGW_TRUE@	libcls_replica_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_lock_client.la \
- at WITH_RADOSGW_TRUE@	libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a \
- at WITH_RADOSGW_TRUE@	-lcurl \
- at WITH_RADOSGW_TRUE@	-lexpat \
- at WITH_RADOSGW_TRUE@	-lm \
- at WITH_RADOSGW_TRUE@	-lfcgi \
- at WITH_RADOSGW_TRUE@	-ldl
-
- at WITH_RADOSGW_TRUE@am__append_77 = radosgw radosgw-admin
- at WITH_RADOSGW_TRUE@am__append_78 = ceph_rgw_multiparser \
- at WITH_RADOSGW_TRUE@	ceph_rgw_jsonparser
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_83 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados_api.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_84 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados_internal.la libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBOSDC) $(LIBCOMMON_DEPS)
+
+ at ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE at am__append_85 = $(LIBRADOS_TP)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am__append_86 = -fvisibility=hidden -fvisibility-inlines-hidden
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am__append_87 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL'
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_88 = librados.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_89 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/snap_set_diff.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/AioCompletionImpl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/IoCtxImpl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/PoolAsyncCompletionImpl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosClient.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosXattrIter.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/ListObjectImpl.h
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__append_90 = -export-symbols-regex '^radosstriper_.*'
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__append_91 = libradosstriper.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__append_92 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/RadosStriperImpl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/MultiAioCompletionImpl.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_93 = librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_api.la
+ at ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_94 = $(LIBRBD_TP)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_95 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL'
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_96 = librbd.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_97 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AioCompletion.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AioRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncFlattenRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncObjectThrottle.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncOperation.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncResizeRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncTrimRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/CopyupRequest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageCtx.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageWatcher.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/internal.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/LibrbdWriteback.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ObjectMap.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/parent_types.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/SnapInfo.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/TaskFinisher.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/WatchNotifyTypes.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_98 = librgw.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcivetweb.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_99 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_user_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lexpat \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lm \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lfcgi \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-ldl
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_100 = radosgw \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	radosgw-admin
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_101 = ceph_rgw_multiparser \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_rgw_jsonparser
 
 # inject rgw stuff in the decoder testcase
- at WITH_RADOSGW_TRUE@am__append_79 = \
- at WITH_RADOSGW_TRUE@	rgw/rgw_dencoder.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_acl.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_common.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_env.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_json_enc.cc
-
- at LINUX_TRUE@am__append_80 = libcls_kvs.la
- at LINUX_TRUE@am__append_81 = rbd-replay
- at WITH_BABELTRACE_TRUE@am__append_82 = rbd-replay-prep
- at LINUX_TRUE@am__append_83 = -ldl
- at LINUX_TRUE@am__append_84 = -ldl
- at LINUX_TRUE@am__append_85 = -ldl
- at LINUX_TRUE@am__append_86 = -ldl
- at LINUX_TRUE@am__append_87 = -ldl
- at LINUX_TRUE@am__append_88 = -ldl
- at LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE at am__append_89 = -ldl
- at WITH_BETTER_YASM_ELF64_TRUE@am__append_90 =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	unittest_erasure_code_isa \
- at WITH_BETTER_YASM_ELF64_TRUE@	unittest_erasure_code_plugin_isa
- at LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE at am__append_91 = -ldl
- at LINUX_TRUE@am__append_92 = -ldl
- at LINUX_TRUE@am__append_93 = -ldl
- at LINUX_TRUE@am__append_94 = -ldl
- at LINUX_TRUE@am__append_95 = -ldl
- at LINUX_TRUE@am__append_96 = -ldl
- at ENABLE_XIO_TRUE@am__append_97 = test/messenger/message_helper.h \
- at ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.h \
- at ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.h
- at ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_98 = -ldl
- at ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_99 = -ldl
- at ENABLE_XIO_TRUE@am__append_100 = simple_server simple_client \
- at ENABLE_XIO_TRUE@	xio_server xio_client
- at ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_101 = -ldl
- at ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_102 = -ldl
- at COMPILER_HAS_VTA_TRUE@am__append_103 = -fno-var-tracking-assignments
- at COMPILER_HAS_VTA_TRUE@am__append_104 = -fno-var-tracking-assignments
- at WITH_BUILD_TESTS_TRUE@am__append_105 = test_build_libcommon \
- at WITH_BUILD_TESTS_TRUE@	test_build_librados test_build_librgw \
- at WITH_BUILD_TESTS_TRUE@	test_build_libcephfs
- at LINUX_TRUE@am__append_106 = ceph_kvstorebench \
- at LINUX_TRUE@	ceph_test_rados_list_parallel \
- at LINUX_TRUE@	ceph_test_rados_open_pools_parallel \
- at LINUX_TRUE@	ceph_test_rados_delete_pools_parallel \
- at LINUX_TRUE@	ceph_test_rados_watch_notify
- at LINUX_TRUE@am__append_107 = libsystest.la
- at ENABLE_ROOT_MAKE_CHECK_TRUE@am__append_108 = test/ceph-disk-root.sh
- at ENABLE_ROOT_MAKE_CHECK_FALSE@am__append_109 = test/ceph-disk.sh
- at LINUX_TRUE@am__append_110 = -ldl
- at LINUX_TRUE@am__append_111 = -ldl
- at WITH_RADOSGW_TRUE@am__append_112 = ceph_test_cors \
- at WITH_RADOSGW_TRUE@	ceph_test_rgw_manifest \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_meta \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_log \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_opstate
- at WITH_LTTNG_TRUE@am__append_113 = $(LIBRBD_TP)
- at WITH_LTTNG_TRUE@am__append_114 = $(LIBRBD_TP)
- at LINUX_TRUE@am__append_115 = ceph_test_librbd_fsx
- at WITH_RADOSGW_TRUE@am__append_116 = ceph_test_cls_rgw
- at LINUX_TRUE@am__append_117 = ceph_test_objectstore ceph_test_filestore
- at LINUX_TRUE@am__append_118 = -ldl
- at WITH_REST_BENCH_TRUE@am__append_119 = rest-bench
- at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_TRUE at am__append_120 = -ls3
- at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__append_121 = libs3/build/lib/libs3.a -lcurl -lxml2
- at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__append_122 = libs3
- at LINUX_TRUE@am__append_123 = mount.ceph
- at LINUX_TRUE@am__append_124 = libkrbd.la
- at LINUX_TRUE@am__append_125 = rbd
- at WITH_FUSE_TRUE@am__append_126 = ceph-fuse rbd-fuse
- at ENABLE_CEPHFS_JAVA_TRUE@am__append_127 = libcephfs_jni.la
- at WITH_SLIBROCKSDB_TRUE@am__append_128 = rocksdb
- at WITH_SLIBROCKSDB_FALSE@am__append_129 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_102 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_dencoder.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_common.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_env.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_json_enc.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_103 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/logrotate.conf \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl_s3.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl_swift.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_client_io.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_fcgi.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_xml.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cache.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_common.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cors.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cors_s3.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cors_swift.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_string.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_formats.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_http_errors.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_log.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_loadgen.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_multi.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_policy_s3.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_gc.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_metadata.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_multi_del.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_op.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_http_client.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift_auth.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_quota.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rados.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_replica_log.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_resolve.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_swift.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_s3.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_auth_s3.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_admin.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_usage.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_user.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_bucket.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_client.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_conn.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_tools.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_metadata.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_log.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_opstate.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_replica_log.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_config.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_usage.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_user.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_bucket.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_keystone.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_civetweb.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_civetweb_log.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/civetweb.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/include/civetweb.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/include/civetweb_conf.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/src/md5.h
+
+ at ENABLE_CLIENT_TRUE@am__append_104 = libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@	libcls_rgw_client.la libcls_rbd_client.la
+ at ENABLE_CLIENT_TRUE@am__append_105 = libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@	libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@	libcls_rgw_client.la libcls_user_client.a
+ at ENABLE_CLIENT_TRUE@am__append_106 = libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@	libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@	libcls_user_client.a
+ at ENABLE_CLIENT_TRUE@am__append_107 = \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/rbd/cls_rbd.h \
+ at ENABLE_CLIENT_TRUE@	cls/rbd/cls_rbd_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/log/cls_log_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/log/cls_log_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/log/cls_log_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/statelog/cls_statelog_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/statelog/cls_statelog_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/statelog/cls_statelog_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_types.h \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_client.h \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_ops.h \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_types.h
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_108 = libcls_hello.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_rbd.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_lock.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_refcount.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_version.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_log.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_statelog.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_replica_log.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_user.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libcls_rgw.la
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_109 = libcls_kvs.la
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_110 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	key_value_store/key_value_structure.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	key_value_store/kv_flat_btree_async.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	key_value_store/kvs_arg_types.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_111 = librbd_replay.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay_ios.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_112 = rbd_replay/BoundedBuffer.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/actions.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Deser.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/ImageNameMap.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/ios.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/PendingIO.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/rbd_loc.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/rbd_replay_debug.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Replayer.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Ser.hpp
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_113 = rbd-replay
+ at ENABLE_CLIENT_TRUE@@WITH_BABELTRACE_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_114 = rbd-replay-prep
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_115 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/test-erasure-code.sh
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_116 = test/erasure-code/ceph_erasure_code_benchmark.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ceph_erasure_code_benchmark.h \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ErasureCodeExample.h
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_117 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_118 = ceph_erasure_code_benchmark \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph_erasure_code
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_119 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_120 = ceph_erasure_code_non_regression
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_121 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_122 = libec_example.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_missing_entry_point.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_missing_version.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_hangs.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_fail_to_initialize.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_fail_to_register.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_test_jerasure_neon.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_test_jerasure_sse4.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_test_jerasure_sse3.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libec_test_jerasure_generic.la
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_123 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_124 = unittest_erasure_code_plugin \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_jerasure \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_jerasure
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_125 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_126 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am__append_127 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am__append_128 = unittest_erasure_code_isa \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_isa
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am__append_129 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_130 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_131 =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_lrc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_lrc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec_all \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec_thread \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_example
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_132 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_133 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_134 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_135 = -ldl
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am__append_136 = test/messenger/message_helper.h \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.h \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.h
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_137 = -ldl
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_138 = -ldl
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am__append_139 = simple_server \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	simple_client xio_server \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	xio_client
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_140 = -ldl
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE at am__append_141 = -ldl
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_142 = libradostest.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados_test_stub.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_143 = ceph_test_rados \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_mutate
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at am__append_144 = test_build_librados
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_145 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_smalliobench \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_omapbench
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am__append_146 = ceph_kvstorebench \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_list_parallel \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_open_pools_parallel \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_delete_pools_parallel \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_watch_notify
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_147 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	unittest_librados \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	unittest_librados_config
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_148 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_multi_stress_watch \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rbd \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_refcount \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_version \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_log \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_statelog \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_replica_log \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_lock \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_hello \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_cmd \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_io \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_c_write_operations \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_c_read_operations \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_aio \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_list \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_nlist \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_pool \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_stat \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_watch_notify \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_snapshots \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_cls \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_misc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_tier \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_lock \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_stress_watch
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_149 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestClassHandler.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestRadosClient.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemRadosClient.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestWatchNotify.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemIoCtxImpl.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestIoCtxImpl.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_150 = ceph_smalliobenchrbd \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	ceph_test_librbd
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_151 = unittest_rbd_replay \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	unittest_librbd
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_152 = librbd_test.la
+ at ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_153 = $(LIBRBD_TP)
+ at ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_154 = $(LIBRBD_TP)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_155 = ceph_test_librbd_fsx
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__append_156 = libradosstripertest.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__append_157 = ceph_test_rados_striper_api_io \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_striper_api_aio \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_striper_api_striping
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_158 = test_build_libcephfs
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_159 = unittest_encoding \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_base64 \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_run_cmd \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_simple_spin \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_libcephfs_config
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_160 = ceph_test_libcephfs \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	ceph_test_c_headers
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_161 = test_build_librgw
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__append_162 = ceph_test_cors \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_rgw_manifest \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_meta \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_log \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_opstate \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw
+ at ENABLE_SERVER_TRUE@am__append_163 = ceph_test_async_driver \
+ at ENABLE_SERVER_TRUE@	ceph_test_msgr ceph_streamtest \
+ at ENABLE_SERVER_TRUE@	ceph_test_trans ceph_test_mon_workloadgen \
+ at ENABLE_SERVER_TRUE@	ceph_test_mon_msg ceph_perf_objectstore
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__append_164 =  \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	ceph_test_objectstore \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	ceph_test_filestore
+ at ENABLE_SERVER_TRUE@am__append_165 =  \
+ at ENABLE_SERVER_TRUE@	ceph_test_objectstore_workloadgen \
+ at ENABLE_SERVER_TRUE@	ceph_test_filestore_idempotent \
+ at ENABLE_SERVER_TRUE@	ceph_test_filestore_idempotent_sequence \
+ at ENABLE_SERVER_TRUE@	ceph_xattr_bench ceph_test_filejournal \
+ at ENABLE_SERVER_TRUE@	ceph_test_object_map \
+ at ENABLE_SERVER_TRUE@	ceph_test_keyvaluedb_atomicity \
+ at ENABLE_SERVER_TRUE@	ceph_test_keyvaluedb_iterators
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at am__append_166 = ceph_smalliobenchfs \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	ceph_smalliobenchdumb \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	ceph_tpbench
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_167 = ceph_test_keys
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_168 = get_command_descriptions
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_169 =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	unittest_mon_moncap \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	unittest_mon_pgmap
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_170 =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_ecbackend \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_osdscrub \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_pglog \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_hitset \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_osd_osdcap
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_171 = -ldl
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_172 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_173 = ceph_test_snap_mapper
+ at ENABLE_SERVER_TRUE@am__append_174 = unittest_chain_xattr \
+ at ENABLE_SERVER_TRUE@	unittest_flatindex unittest_lfnindex
+ at COMPILER_HAS_VTA_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_175 = -fno-var-tracking-assignments
+ at COMPILER_HAS_VTA_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_176 = -fno-var-tracking-assignments
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_177 = ceph-dencoder
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_178 = unittest_mds_authcap
+ at WITH_BUILD_TESTS_TRUE@am__append_179 = test_build_libcommon
+ at LINUX_TRUE@am__append_180 = libsystest.la
+ at ENABLE_ROOT_MAKE_CHECK_TRUE@am__append_181 = test/ceph-disk-root.sh
+ at ENABLE_ROOT_MAKE_CHECK_FALSE@am__append_182 = test/ceph-disk.sh
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_183 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_scratchtool \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_scratchtoolpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_radosacl
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_184 = rados
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_185 = ceph-client-debug
+ at ENABLE_SERVER_TRUE@am__append_186 = ceph-osdomap-tool \
+ at ENABLE_SERVER_TRUE@	ceph-monstore-tool ceph-kvstore-tool
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am__append_187 = -ldl
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_188 = ceph-objectstore-tool
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at am__append_189 = cephfs-journal-tool \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	cephfs-table-tool
+ at WITH_REST_BENCH_TRUE@am__append_190 = rest-bench
+ at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_TRUE at am__append_191 = -ls3
+ at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__append_192 = libs3/build/lib/libs3.a -lcurl -lxml2
+ at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__append_193 = libs3
+ at WITH_SLIBROCKSDB_TRUE@am__append_194 = rocksdb
+ at WITH_SLIBROCKSDB_FALSE@am__append_195 = \
 @WITH_SLIBROCKSDB_FALSE@        rocksdb/.arcconfig \
 @WITH_SLIBROCKSDB_FALSE@        rocksdb/.clang-format \
 @WITH_SLIBROCKSDB_FALSE@        rocksdb/.gitignore \
@@ -703,6 +1145,50 @@ check_PROGRAMS = unittest_erasure_code_plugin$(EXEEXT) \
 @WITH_SLIBROCKSDB_FALSE@        rocksdb/utilities/ttl/db_ttl_impl.h \
 @WITH_SLIBROCKSDB_FALSE@        rocksdb/utilities/ttl/ttl_test.cc
 
+ at ENABLE_CLIENT_TRUE@am__append_196 = pybind/ceph_argparse.py
+ at ENABLE_CLIENT_TRUE@am__append_197 = ceph-syn
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_198 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/bash_completion/rados \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/bash_completion/radosgw-admin
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_199 = pybind/rados.py
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__append_200 = librados-config
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_201 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(srcdir)/bash_completion/rbd
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_202 = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	ceph-rbdnamer \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd-replay-many
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_203 = pybind/rbd.py
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_204 = libkrbd.la
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__append_205 = rbd
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at am__append_206 = ceph-fuse \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@	rbd-fuse
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_207 = cephfs
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_208 = pybind/cephfs.py
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_209 = libcephfs.la
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_210 = libcephfs_jni.la
+ at ENABLE_SERVER_TRUE@am__append_211 = ceph-run ceph-rest-api \
+ at ENABLE_SERVER_TRUE@	ceph-debugpack ceph-crush-location \
+ at ENABLE_SERVER_TRUE@	ceph-coverage
+ at ENABLE_SERVER_TRUE@am__append_212 = pybind/ceph_rest_api.py
+ at ENABLE_SERVER_TRUE@am__append_213 = ceph-coverage init-ceph
+ at ENABLE_SERVER_TRUE@am__append_214 = init-ceph
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__append_215 = mount.ceph
+ at ENABLE_SERVER_TRUE@am__append_216 = mount.fuse.ceph
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__append_217 = ceph-mon
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_218 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-disk \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-disk-prepare \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-disk-activate \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-disk-udev
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_219 = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph-clsinfo
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__append_220 = ceph-osd
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__append_221 = ceph-mds
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_classpath.m4 \
@@ -736,41 +1222,52 @@ am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
 libcls_log_client_a_AR = $(AR) $(ARFLAGS)
 libcls_log_client_a_LIBADD =
+am__libcls_log_client_a_SOURCES_DIST = cls/log/cls_log_client.cc
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libcls_log_client_a_OBJECTS = cls/log/cls_log_client.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@am_libcls_log_client_a_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/log/cls_log_client.$(OBJEXT)
 libcls_log_client_a_OBJECTS = $(am_libcls_log_client_a_OBJECTS)
 libcls_replica_log_client_a_AR = $(AR) $(ARFLAGS)
 libcls_replica_log_client_a_LIBADD =
-am_libcls_replica_log_client_a_OBJECTS =  \
-	cls/replica_log/cls_replica_log_types.$(OBJEXT) \
-	cls/replica_log/cls_replica_log_ops.$(OBJEXT) \
-	cls/replica_log/cls_replica_log_client.$(OBJEXT)
+am__libcls_replica_log_client_a_SOURCES_DIST =  \
+	cls/replica_log/cls_replica_log_types.cc \
+	cls/replica_log/cls_replica_log_ops.cc \
+	cls/replica_log/cls_replica_log_client.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_replica_log_client_a_OBJECTS = cls/replica_log/cls_replica_log_types.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_ops.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_client.$(OBJEXT)
 libcls_replica_log_client_a_OBJECTS =  \
 	$(am_libcls_replica_log_client_a_OBJECTS)
 libcls_statelog_client_a_AR = $(AR) $(ARFLAGS)
 libcls_statelog_client_a_LIBADD =
-am_libcls_statelog_client_a_OBJECTS =  \
-	cls/statelog/cls_statelog_client.$(OBJEXT)
+am__libcls_statelog_client_a_SOURCES_DIST =  \
+	cls/statelog/cls_statelog_client.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_statelog_client_a_OBJECTS = cls/statelog/cls_statelog_client.$(OBJEXT)
 libcls_statelog_client_a_OBJECTS =  \
 	$(am_libcls_statelog_client_a_OBJECTS)
 libcls_user_client_a_AR = $(AR) $(ARFLAGS)
 libcls_user_client_a_LIBADD =
-am_libcls_user_client_a_OBJECTS = cls/user/cls_user_client.$(OBJEXT) \
-	cls/user/cls_user_types.$(OBJEXT) \
-	cls/user/cls_user_ops.$(OBJEXT)
+am__libcls_user_client_a_SOURCES_DIST = cls/user/cls_user_client.cc \
+	cls/user/cls_user_types.cc cls/user/cls_user_ops.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_user_client_a_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_client.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_types.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_ops.$(OBJEXT)
 libcls_user_client_a_OBJECTS = $(am_libcls_user_client_a_OBJECTS)
 libcls_version_client_a_AR = $(AR) $(ARFLAGS)
 libcls_version_client_a_LIBADD =
-am_libcls_version_client_a_OBJECTS =  \
-	cls/version/cls_version_client.$(OBJEXT) \
-	cls/version/cls_version_types.$(OBJEXT)
+am__libcls_version_client_a_SOURCES_DIST =  \
+	cls/version/cls_version_client.cc \
+	cls/version/cls_version_types.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_version_client_a_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_client.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_types.$(OBJEXT)
 libcls_version_client_a_OBJECTS =  \
 	$(am_libcls_version_client_a_OBJECTS)
 libos_zfs_a_AR = $(AR) $(ARFLAGS)
 libos_zfs_a_LIBADD =
 am__libos_zfs_a_SOURCES_DIST = os/ZFS.cc
- at WITH_LIBZFS_TRUE@am_libos_zfs_a_OBJECTS =  \
- at WITH_LIBZFS_TRUE@	os/libos_zfs_a-ZFS.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at am_libos_zfs_a_OBJECTS = os/libos_zfs_a-ZFS.$(OBJEXT)
 libos_zfs_a_OBJECTS = $(am_libos_zfs_a_OBJECTS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -834,147 +1331,250 @@ libauth_la_OBJECTS = $(am_libauth_la_OBJECTS)
 am__DEPENDENCIES_1 =
 am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-libcephfs_la_DEPENDENCIES = $(LIBCLIENT) $(LIBCOMMON) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcephfs_la_OBJECTS = libcephfs.lo
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_la_DEPENDENCIES = $(LIBCLIENT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2)
+am__libcephfs_la_SOURCES_DIST = libcephfs.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_libcephfs_la_OBJECTS = libcephfs.lo
 libcephfs_la_OBJECTS = $(am_libcephfs_la_OBJECTS)
 libcephfs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(libcephfs_la_LDFLAGS) $(LDFLAGS) -o $@
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs_jni_la_DEPENDENCIES = $(LIBCEPHFS) \
- at ENABLE_CEPHFS_JAVA_TRUE@	$(am__DEPENDENCIES_2)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_libcephfs_la_rpath =  \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-rpath \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(libdir)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_jni_la_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2)
 am__libcephfs_jni_la_SOURCES_DIST = java/native/libcephfs_jni.cc \
 	java/native/ScopedLocalRef.h java/native/JniConstants.cpp \
 	java/native/JniConstants.h
- at ENABLE_CEPHFS_JAVA_TRUE@am_libcephfs_jni_la_OBJECTS = java/native/libcephfs_jni_la-libcephfs_jni.lo \
- at ENABLE_CEPHFS_JAVA_TRUE@	java/native/libcephfs_jni_la-JniConstants.lo
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_libcephfs_jni_la_OBJECTS = java/native/libcephfs_jni_la-libcephfs_jni.lo \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/native/libcephfs_jni_la-JniConstants.lo
 libcephfs_jni_la_OBJECTS = $(am_libcephfs_jni_la_OBJECTS)
 libcephfs_jni_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcephfs_jni_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
- at ENABLE_CEPHFS_JAVA_TRUE@am_libcephfs_jni_la_rpath = -rpath $(libdir)
-libclient_la_DEPENDENCIES = $(LIBOSDC) $(am__DEPENDENCIES_1)
-am_libclient_la_OBJECTS = client/Client.lo client/Inode.lo \
-	client/Dentry.lo client/MetaRequest.lo \
-	client/ClientSnapRealm.lo client/MetaSession.lo \
-	client/Trace.lo
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_libcephfs_jni_la_rpath = -rpath \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(libdir)
+libcivetweb_la_LIBADD =
+am__libcivetweb_la_SOURCES_DIST = rgw/rgw_civetweb.cc \
+	rgw/rgw_civetweb_log.cc civetweb/src/civetweb.c
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_libcivetweb_la_OBJECTS = rgw/libcivetweb_la-rgw_civetweb.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/libcivetweb_la-rgw_civetweb_log.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/src/libcivetweb_la-civetweb.lo
+libcivetweb_la_OBJECTS = $(am_libcivetweb_la_OBJECTS)
+libcivetweb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(libcivetweb_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_libcivetweb_la_rpath =
+ at ENABLE_CLIENT_TRUE@libclient_la_DEPENDENCIES = $(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@	$(am__DEPENDENCIES_1)
+am__libclient_la_SOURCES_DIST = client/Client.cc client/Inode.cc \
+	client/Dentry.cc client/MetaRequest.cc \
+	client/ClientSnapRealm.cc client/MetaSession.cc \
+	client/Trace.cc
+ at ENABLE_CLIENT_TRUE@am_libclient_la_OBJECTS = client/Client.lo \
+ at ENABLE_CLIENT_TRUE@	client/Inode.lo client/Dentry.lo \
+ at ENABLE_CLIENT_TRUE@	client/MetaRequest.lo \
+ at ENABLE_CLIENT_TRUE@	client/ClientSnapRealm.lo \
+ at ENABLE_CLIENT_TRUE@	client/MetaSession.lo client/Trace.lo
 libclient_la_OBJECTS = $(am_libclient_la_OBJECTS)
- at WITH_FUSE_TRUE@libclient_fuse_la_DEPENDENCIES = libclient.la
+ at ENABLE_CLIENT_TRUE@am_libclient_la_rpath =
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at libclient_fuse_la_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@	libclient.la
 am__libclient_fuse_la_SOURCES_DIST = client/fuse_ll.cc
- at WITH_FUSE_TRUE@am_libclient_fuse_la_OBJECTS = client/fuse_ll.lo
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at am_libclient_fuse_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@	client/fuse_ll.lo
 libclient_fuse_la_OBJECTS = $(am_libclient_fuse_la_OBJECTS)
- at WITH_FUSE_TRUE@am_libclient_fuse_la_rpath =
-libcls_hello_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_hello_la_OBJECTS = cls/hello/cls_hello.lo
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at am_libclient_fuse_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_hello_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_hello_la_SOURCES_DIST = cls/hello/cls_hello.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_hello_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/hello/cls_hello.lo
 libcls_hello_la_OBJECTS = $(am_libcls_hello_la_OBJECTS)
 libcls_hello_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_hello_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
- at LINUX_TRUE@libcls_kvs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at LINUX_TRUE@	$(am__DEPENDENCIES_2)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_hello_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at libcls_kvs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
 am__libcls_kvs_la_SOURCES_DIST = key_value_store/cls_kvs.cc
- at LINUX_TRUE@am_libcls_kvs_la_OBJECTS = key_value_store/cls_kvs.lo
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am_libcls_kvs_la_OBJECTS = key_value_store/cls_kvs.lo
 libcls_kvs_la_OBJECTS = $(am_libcls_kvs_la_OBJECTS)
 libcls_kvs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_kvs_la_LDFLAGS) $(LDFLAGS) \
 	-o $@
- at LINUX_TRUE@am_libcls_kvs_la_rpath = -rpath $(radoslibdir)
-libcls_lock_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_lock_la_OBJECTS = cls/lock/cls_lock.lo
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at am_libcls_kvs_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_lock_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_lock_la_SOURCES_DIST = cls/lock/cls_lock.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_lock_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/lock/cls_lock.lo
 libcls_lock_la_OBJECTS = $(am_libcls_lock_la_OBJECTS)
 libcls_lock_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_lock_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_lock_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
 libcls_lock_client_la_LIBADD =
-am_libcls_lock_client_la_OBJECTS = cls/lock/cls_lock_client.lo \
-	cls/lock/cls_lock_types.lo cls/lock/cls_lock_ops.lo
+am__libcls_lock_client_la_SOURCES_DIST = cls/lock/cls_lock_client.cc \
+	cls/lock/cls_lock_types.cc cls/lock/cls_lock_ops.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_lock_client_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_client.lo \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_types.lo \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_ops.lo
 libcls_lock_client_la_OBJECTS = $(am_libcls_lock_client_la_OBJECTS)
-libcls_log_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_log_la_OBJECTS = cls/log/cls_log.lo
+ at ENABLE_CLIENT_TRUE@am_libcls_lock_client_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_log_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_log_la_SOURCES_DIST = cls/log/cls_log.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_log_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/log/cls_log.lo
 libcls_log_la_OBJECTS = $(am_libcls_log_la_OBJECTS)
 libcls_log_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_log_la_LDFLAGS) $(LDFLAGS) \
 	-o $@
-libcls_rbd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_rbd_la_OBJECTS = cls/rbd/cls_rbd.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_log_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rbd_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_rbd_la_SOURCES_DIST = cls/rbd/cls_rbd.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_rbd_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rbd/cls_rbd.lo
 libcls_rbd_la_OBJECTS = $(am_libcls_rbd_la_OBJECTS)
 libcls_rbd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_rbd_la_LDFLAGS) $(LDFLAGS) \
 	-o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_rbd_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
 libcls_rbd_client_la_LIBADD =
-am_libcls_rbd_client_la_OBJECTS = cls/rbd/cls_rbd_client.lo
+am__libcls_rbd_client_la_SOURCES_DIST = cls/rbd/cls_rbd_client.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_rbd_client_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/rbd/cls_rbd_client.lo
 libcls_rbd_client_la_OBJECTS = $(am_libcls_rbd_client_la_OBJECTS)
-libcls_refcount_la_DEPENDENCIES = libjson_spirit.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am_libcls_refcount_la_OBJECTS = cls/refcount/cls_refcount.lo \
-	cls/refcount/cls_refcount_ops.lo common/ceph_json.lo
+ at ENABLE_CLIENT_TRUE@am_libcls_rbd_client_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_refcount_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libjson_spirit.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_refcount_la_SOURCES_DIST = cls/refcount/cls_refcount.cc \
+	cls/refcount/cls_refcount_ops.cc common/ceph_json.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_refcount_la_OBJECTS = cls/refcount/cls_refcount.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/refcount/cls_refcount_ops.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/ceph_json.lo
 libcls_refcount_la_OBJECTS = $(am_libcls_refcount_la_OBJECTS)
 libcls_refcount_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_refcount_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_refcount_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath $(radoslibdir)
 libcls_refcount_client_la_LIBADD =
-am_libcls_refcount_client_la_OBJECTS =  \
-	cls/refcount/cls_refcount_client.lo \
-	cls/refcount/cls_refcount_ops.lo
+am__libcls_refcount_client_la_SOURCES_DIST =  \
+	cls/refcount/cls_refcount_client.cc \
+	cls/refcount/cls_refcount_ops.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_refcount_client_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_client.lo \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_ops.lo
 libcls_refcount_client_la_OBJECTS =  \
 	$(am_libcls_refcount_client_la_OBJECTS)
-libcls_replica_log_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_replica_log_la_OBJECTS = cls/replica_log/cls_replica_log.lo
+ at ENABLE_CLIENT_TRUE@am_libcls_refcount_client_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_replica_log_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_replica_log_la_SOURCES_DIST =  \
+	cls/replica_log/cls_replica_log.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_replica_log_la_OBJECTS = cls/replica_log/cls_replica_log.lo
 libcls_replica_log_la_OBJECTS = $(am_libcls_replica_log_la_OBJECTS)
 libcls_replica_log_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_replica_log_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-libcls_rgw_la_DEPENDENCIES = libjson_spirit.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_rgw_la_OBJECTS = cls/rgw/cls_rgw.lo cls/rgw/cls_rgw_ops.lo \
-	cls/rgw/cls_rgw_types.lo common/ceph_json.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_replica_log_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath $(radoslibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rgw_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	libjson_spirit.la \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_rgw_la_SOURCES_DIST = cls/rgw/cls_rgw.cc \
+	cls/rgw/cls_rgw_ops.cc cls/rgw/cls_rgw_types.cc \
+	common/ceph_json.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_rgw_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw_ops.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw_types.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/ceph_json.lo
 libcls_rgw_la_OBJECTS = $(am_libcls_rgw_la_OBJECTS)
 libcls_rgw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_rgw_la_LDFLAGS) $(LDFLAGS) \
 	-o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_rgw_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
 libcls_rgw_client_la_LIBADD =
-am_libcls_rgw_client_la_OBJECTS = cls/rgw/cls_rgw_client.lo \
-	cls/rgw/cls_rgw_types.lo cls/rgw/cls_rgw_ops.lo
+am__libcls_rgw_client_la_SOURCES_DIST = cls/rgw/cls_rgw_client.cc \
+	cls/rgw/cls_rgw_types.cc cls/rgw/cls_rgw_ops.cc
+ at ENABLE_CLIENT_TRUE@am_libcls_rgw_client_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_client.lo \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_types.lo \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_ops.lo
 libcls_rgw_client_la_OBJECTS = $(am_libcls_rgw_client_la_OBJECTS)
-libcls_statelog_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_statelog_la_OBJECTS = cls/statelog/cls_statelog.lo
+ at ENABLE_CLIENT_TRUE@am_libcls_rgw_client_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_statelog_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_statelog_la_SOURCES_DIST = cls/statelog/cls_statelog.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_statelog_la_OBJECTS = cls/statelog/cls_statelog.lo
 libcls_statelog_la_OBJECTS = $(am_libcls_statelog_la_OBJECTS)
 libcls_statelog_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_statelog_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-libcls_user_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_user_la_OBJECTS = cls/user/cls_user.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_statelog_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath $(radoslibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_user_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_user_la_SOURCES_DIST = cls/user/cls_user.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_user_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/user/cls_user.lo
 libcls_user_la_OBJECTS = $(am_libcls_user_la_OBJECTS)
 libcls_user_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_user_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-libcls_version_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libcls_version_la_OBJECTS = cls/version/cls_version.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_user_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(radoslibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_version_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libcls_version_la_SOURCES_DIST = cls/version/cls_version.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_version_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/version/cls_version.lo
 libcls_version_la_OBJECTS = $(am_libcls_version_la_OBJECTS)
 libcls_version_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcls_version_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libcls_version_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath $(radoslibdir)
 am__DEPENDENCIES_3 = libcommon_internal.la libcommon_crc.la \
 	$(LIBERASURE_CODE) $(LIBMSG) $(LIBAUTH) $(LIBCRUSH) \
 	$(LIBJSON_SPIRIT) $(LIBLOG) $(LIBARCH) $(am__DEPENDENCIES_1)
@@ -1017,26 +1617,27 @@ am__libcommon_internal_la_SOURCES_DIST = ceph_ver.c \
 	common/WorkQueue.cc common/ConfUtils.cc common/MemoryModel.cc \
 	common/armor.c common/fd.cc common/xattr.c common/safe_io.c \
 	common/snap_types.cc common/str_list.cc common/str_map.cc \
-	common/errno.cc common/RefCountedObj.cc common/blkdev.cc \
-	common/common_init.cc common/pipe.c common/ceph_argparse.cc \
-	common/ceph_context.cc common/types.cc \
-	common/code_environment.cc common/dout.cc common/histogram.cc \
-	common/signal.cc common/simple_spin.cc common/Thread.cc \
-	common/Formatter.cc common/HeartbeatMap.cc common/config.cc \
-	common/utf8.c common/mime.c common/strtol.cc common/page.cc \
-	common/lockdep.cc common/version.cc common/hex.cc \
-	common/entity_name.cc common/ceph_crypto.cc \
+	common/errno.cc common/RefCountedObj.cc common/common_init.cc \
+	common/pipe.c common/ceph_argparse.cc common/ceph_context.cc \
+	common/types.cc common/code_environment.cc common/dout.cc \
+	common/histogram.cc common/signal.cc common/simple_spin.cc \
+	common/Thread.cc common/Formatter.cc common/HeartbeatMap.cc \
+	common/config.cc common/utf8.c common/mime.c common/strtol.cc \
+	common/page.cc common/lockdep.cc common/version.cc \
+	common/hex.cc common/entity_name.cc common/ceph_crypto.cc \
 	common/ceph_crypto_cms.cc common/ceph_json.cc common/ipaddr.cc \
 	common/pick_address.cc common/util.cc common/TextTable.cc \
 	common/ceph_fs.cc common/ceph_hash.cc common/ceph_strings.cc \
 	common/ceph_frag.cc common/addr_parsing.c common/hobject.cc \
 	common/bloom_filter.cc common/linux_version.c common/module.c \
 	common/Readahead.cc common/Cycles.cc \
-	common/ContextCompletion.cc common/address_helper.cc \
-	mon/MonCap.cc mon/MonClient.cc mon/MonMap.cc osd/OSDMap.cc \
-	osd/osd_types.cc osd/ECMsgTypes.cc osd/HitSet.cc mds/MDSMap.cc \
-	mds/inode_backtrace.cc mds/mdstypes.cc mds/flock.cc
- at ENABLE_XIO_TRUE@am__objects_2 = common/address_helper.lo
+	common/ContextCompletion.cc common/blkdev.cc \
+	common/address_helper.cc mon/MonCap.cc mon/MonClient.cc \
+	mon/MonMap.cc osd/OSDMap.cc osd/osd_types.cc osd/ECMsgTypes.cc \
+	osd/HitSet.cc mds/MDSMap.cc mds/inode_backtrace.cc \
+	mds/mdstypes.cc mds/flock.cc
+ at WITH_RBD_TRUE@am__objects_2 = common/blkdev.lo
+ at ENABLE_XIO_TRUE@am__objects_3 = common/address_helper.lo
 am_libcommon_internal_la_OBJECTS = ceph_ver.lo common/DecayCounter.lo \
 	common/LogClient.lo common/LogEntry.lo \
 	common/PrebufferedStreambuf.lo common/SloppyCRCMap.lo \
@@ -1049,24 +1650,24 @@ am_libcommon_internal_la_OBJECTS = ceph_ver.lo common/DecayCounter.lo \
 	common/WorkQueue.lo common/ConfUtils.lo common/MemoryModel.lo \
 	common/armor.lo common/fd.lo common/xattr.lo common/safe_io.lo \
 	common/snap_types.lo common/str_list.lo common/str_map.lo \
-	common/errno.lo common/RefCountedObj.lo common/blkdev.lo \
-	common/common_init.lo common/pipe.lo common/ceph_argparse.lo \
-	common/ceph_context.lo common/types.lo \
-	common/code_environment.lo common/dout.lo common/histogram.lo \
-	common/signal.lo common/simple_spin.lo common/Thread.lo \
-	common/Formatter.lo common/HeartbeatMap.lo common/config.lo \
-	common/utf8.lo common/mime.lo common/strtol.lo common/page.lo \
-	common/lockdep.lo common/version.lo common/hex.lo \
-	common/entity_name.lo common/ceph_crypto.lo \
-	common/ceph_crypto_cms.lo common/ceph_json.lo common/ipaddr.lo \
-	common/pick_address.lo common/util.lo common/TextTable.lo \
-	common/ceph_fs.lo common/ceph_hash.lo common/ceph_strings.lo \
-	common/ceph_frag.lo common/addr_parsing.lo common/hobject.lo \
+	common/errno.lo common/RefCountedObj.lo common/common_init.lo \
+	common/pipe.lo common/ceph_argparse.lo common/ceph_context.lo \
+	common/types.lo common/code_environment.lo common/dout.lo \
+	common/histogram.lo common/signal.lo common/simple_spin.lo \
+	common/Thread.lo common/Formatter.lo common/HeartbeatMap.lo \
+	common/config.lo common/utf8.lo common/mime.lo \
+	common/strtol.lo common/page.lo common/lockdep.lo \
+	common/version.lo common/hex.lo common/entity_name.lo \
+	common/ceph_crypto.lo common/ceph_crypto_cms.lo \
+	common/ceph_json.lo common/ipaddr.lo common/pick_address.lo \
+	common/util.lo common/TextTable.lo common/ceph_fs.lo \
+	common/ceph_hash.lo common/ceph_strings.lo common/ceph_frag.lo \
+	common/addr_parsing.lo common/hobject.lo \
 	common/bloom_filter.lo common/linux_version.lo \
 	common/module.lo common/Readahead.lo common/Cycles.lo \
-	common/ContextCompletion.lo $(am__objects_2) mon/MonCap.lo \
-	mon/MonClient.lo mon/MonMap.lo osd/OSDMap.lo osd/osd_types.lo \
-	osd/ECMsgTypes.lo osd/HitSet.lo mds/MDSMap.lo \
+	common/ContextCompletion.lo $(am__objects_2) $(am__objects_3) \
+	mon/MonCap.lo mon/MonClient.lo mon/MonMap.lo osd/OSDMap.lo \
+	osd/osd_types.lo osd/ECMsgTypes.lo osd/HitSet.lo mds/MDSMap.lo \
 	mds/inode_backtrace.lo mds/mdstypes.lo mds/flock.lo
 libcommon_internal_la_OBJECTS = $(am_libcommon_internal_la_OBJECTS)
 libcrush_la_LIBADD =
@@ -1074,41 +1675,63 @@ am_libcrush_la_OBJECTS = crush/builder.lo crush/mapper.lo \
 	crush/crush.lo crush/hash.lo crush/CrushWrapper.lo \
 	crush/CrushCompiler.lo crush/CrushTester.lo
 libcrush_la_OBJECTS = $(am_libcrush_la_OBJECTS)
-libec_example_la_DEPENDENCIES = $(LIBCRUSH) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_example_la_OBJECTS = test/erasure-code/libec_example_la-ErasureCodePluginExample.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCRUSH) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_example_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginExample.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_example_la_OBJECTS = test/erasure-code/libec_example_la-ErasureCodePluginExample.lo
 libec_example_la_OBJECTS = $(am_libec_example_la_OBJECTS)
 libec_example_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_example_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_example_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_fail_to_initialize_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_fail_to_initialize_la_OBJECTS = test/erasure-code/libec_fail_to_initialize_la-ErasureCodePluginFailToInitialize.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_example_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_fail_to_initialize_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginFailToInitialize.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_fail_to_initialize_la_OBJECTS = test/erasure-code/libec_fail_to_initialize_la-ErasureCodePluginFailToInitialize.lo
 libec_fail_to_initialize_la_OBJECTS =  \
 	$(am_libec_fail_to_initialize_la_OBJECTS)
 libec_fail_to_initialize_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_fail_to_initialize_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_fail_to_initialize_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_fail_to_register_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_fail_to_register_la_OBJECTS = test/erasure-code/libec_fail_to_register_la-ErasureCodePluginFailToRegister.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_fail_to_initialize_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_fail_to_register_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginFailToRegister.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_fail_to_register_la_OBJECTS = test/erasure-code/libec_fail_to_register_la-ErasureCodePluginFailToRegister.lo
 libec_fail_to_register_la_OBJECTS =  \
 	$(am_libec_fail_to_register_la_OBJECTS)
 libec_fail_to_register_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_fail_to_register_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_fail_to_register_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_hangs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_hangs_la_OBJECTS =  \
-	test/erasure-code/libec_hangs_la-ErasureCodePluginHangs.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_fail_to_register_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_hangs_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginHangs.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_hangs_la_OBJECTS = test/erasure-code/libec_hangs_la-ErasureCodePluginHangs.lo
 libec_hangs_la_OBJECTS = $(am_libec_hangs_la_OBJECTS)
 libec_hangs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_hangs_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_hangs_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_hangs_la_rpath = -rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
 @WITH_BETTER_YASM_ELF64_TRUE at libec_isa_la_DEPENDENCIES = $(LIBCRUSH) \
 @WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_1) \
 @WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_2)
@@ -1140,7 +1763,7 @@ am__libec_isa_la_SOURCES_DIST = erasure-code/ErasureCode.cc \
 	erasure-code/isa/ErasureCodeIsaTableCache.cc \
 	erasure-code/isa/ErasureCodePluginIsa.cc \
 	erasure-code/isa/xor_op.cc
- at WITH_BETTER_YASM_ELF64_TRUE@am__objects_3 = erasure-code/libec_isa_la-ErasureCode.lo \
+ at WITH_BETTER_YASM_ELF64_TRUE@am__objects_4 = erasure-code/libec_isa_la-ErasureCode.lo \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/erasure_code/libec_isa_la-ec_base.lo \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/erasure_code/libec_isa_la-ec_highlevel_func.lo \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/erasure_code/libec_isa_la-ec_multibinary.asm.lo \
@@ -1169,7 +1792,7 @@ am__libec_isa_la_SOURCES_DIST = erasure-code/ErasureCode.cc \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/libec_isa_la-ErasureCodePluginIsa.lo \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/libec_isa_la-xor_op.lo
 @WITH_BETTER_YASM_ELF64_TRUE at am_libec_isa_la_OBJECTS =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__objects_3)
+ at WITH_BETTER_YASM_ELF64_TRUE@	$(am__objects_4)
 libec_isa_la_OBJECTS = $(am_libec_isa_la_OBJECTS)
 libec_isa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(libec_isa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
@@ -1187,7 +1810,7 @@ libec_jerasure_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(libec_jerasure_la_LDFLAGS) $(LDFLAGS) -o $@
 libec_jerasure_generic_la_DEPENDENCIES = $(LIBCRUSH) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am__objects_4 = erasure-code/libec_jerasure_generic_la-ErasureCode.lo \
+am__objects_5 = erasure-code/libec_jerasure_generic_la-ErasureCode.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_generic_la-cauchy.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_generic_la-galois.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_generic_la-jerasure.lo \
@@ -1206,7 +1829,7 @@ am__objects_4 = erasure-code/libec_jerasure_generic_la-ErasureCode.lo \
 	erasure-code/jerasure/gf-complete/src/libec_jerasure_generic_la-gf_w8.lo \
 	erasure-code/jerasure/libec_jerasure_generic_la-ErasureCodePluginJerasure.lo \
 	erasure-code/jerasure/libec_jerasure_generic_la-ErasureCodeJerasure.lo
-am_libec_jerasure_generic_la_OBJECTS = $(am__objects_4)
+am_libec_jerasure_generic_la_OBJECTS = $(am__objects_5)
 libec_jerasure_generic_la_OBJECTS =  \
 	$(am_libec_jerasure_generic_la_OBJECTS)
 libec_jerasure_generic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
@@ -1215,7 +1838,7 @@ libec_jerasure_generic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(libec_jerasure_generic_la_LDFLAGS) $(LDFLAGS) -o $@
 libec_jerasure_neon_la_DEPENDENCIES = $(LIBCRUSH) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am__objects_5 = erasure-code/libec_jerasure_neon_la-ErasureCode.lo \
+am__objects_6 = erasure-code/libec_jerasure_neon_la-ErasureCode.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_neon_la-cauchy.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_neon_la-galois.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_neon_la-jerasure.lo \
@@ -1234,7 +1857,7 @@ am__objects_5 = erasure-code/libec_jerasure_neon_la-ErasureCode.lo \
 	erasure-code/jerasure/gf-complete/src/libec_jerasure_neon_la-gf_w8.lo \
 	erasure-code/jerasure/libec_jerasure_neon_la-ErasureCodePluginJerasure.lo \
 	erasure-code/jerasure/libec_jerasure_neon_la-ErasureCodeJerasure.lo
-am_libec_jerasure_neon_la_OBJECTS = $(am__objects_5) \
+am_libec_jerasure_neon_la_OBJECTS = $(am__objects_6) \
 	erasure-code/jerasure/gf-complete/src/neon/libec_jerasure_neon_la-gf_w4_neon.lo \
 	erasure-code/jerasure/gf-complete/src/neon/libec_jerasure_neon_la-gf_w8_neon.lo \
 	erasure-code/jerasure/gf-complete/src/neon/libec_jerasure_neon_la-gf_w16_neon.lo \
@@ -1249,7 +1872,7 @@ libec_jerasure_neon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 @HAVE_NEON_TRUE@	$(erasure_codelibdir)
 libec_jerasure_sse3_la_DEPENDENCIES = $(LIBCRUSH) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am__objects_6 = erasure-code/libec_jerasure_sse3_la-ErasureCode.lo \
+am__objects_7 = erasure-code/libec_jerasure_sse3_la-ErasureCode.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse3_la-cauchy.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse3_la-galois.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse3_la-jerasure.lo \
@@ -1268,7 +1891,7 @@ am__objects_6 = erasure-code/libec_jerasure_sse3_la-ErasureCode.lo \
 	erasure-code/jerasure/gf-complete/src/libec_jerasure_sse3_la-gf_w8.lo \
 	erasure-code/jerasure/libec_jerasure_sse3_la-ErasureCodePluginJerasure.lo \
 	erasure-code/jerasure/libec_jerasure_sse3_la-ErasureCodeJerasure.lo
-am_libec_jerasure_sse3_la_OBJECTS = $(am__objects_6)
+am_libec_jerasure_sse3_la_OBJECTS = $(am__objects_7)
 libec_jerasure_sse3_la_OBJECTS = $(am_libec_jerasure_sse3_la_OBJECTS)
 libec_jerasure_sse3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
@@ -1278,7 +1901,7 @@ libec_jerasure_sse3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 @HAVE_SSSE3_TRUE@	$(erasure_codelibdir)
 libec_jerasure_sse4_la_DEPENDENCIES = $(LIBCRUSH) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am__objects_7 = erasure-code/libec_jerasure_sse4_la-ErasureCode.lo \
+am__objects_8 = erasure-code/libec_jerasure_sse4_la-ErasureCode.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse4_la-cauchy.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse4_la-galois.lo \
 	erasure-code/jerasure/jerasure/src/libec_jerasure_sse4_la-jerasure.lo \
@@ -1297,7 +1920,7 @@ am__objects_7 = erasure-code/libec_jerasure_sse4_la-ErasureCode.lo \
 	erasure-code/jerasure/gf-complete/src/libec_jerasure_sse4_la-gf_w8.lo \
 	erasure-code/jerasure/libec_jerasure_sse4_la-ErasureCodePluginJerasure.lo \
 	erasure-code/jerasure/libec_jerasure_sse4_la-ErasureCodeJerasure.lo
-am_libec_jerasure_sse4_la_OBJECTS = $(am__objects_7)
+am_libec_jerasure_sse4_la_OBJECTS = $(am__objects_8)
 libec_jerasure_sse4_la_OBJECTS = $(am_libec_jerasure_sse4_la_OBJECTS)
 libec_jerasure_sse4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
@@ -1307,33 +1930,45 @@ libec_jerasure_sse4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 @HAVE_SSE4_PCLMUL_TRUE@	$(erasure_codelibdir)
 libec_lrc_la_DEPENDENCIES = $(LIBCRUSH) $(am__DEPENDENCIES_1) \
 	$(LIBJSON_SPIRIT)
-am__objects_8 = erasure-code/libec_lrc_la-ErasureCode.lo \
+am__objects_9 = erasure-code/libec_lrc_la-ErasureCode.lo \
 	erasure-code/lrc/libec_lrc_la-ErasureCodePluginLrc.lo \
 	erasure-code/lrc/libec_lrc_la-ErasureCodeLrc.lo
-am_libec_lrc_la_OBJECTS = $(am__objects_8) \
+am_libec_lrc_la_OBJECTS = $(am__objects_9) \
 	common/libec_lrc_la-str_map.lo
 libec_lrc_la_OBJECTS = $(am_libec_lrc_la_OBJECTS)
 libec_lrc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libec_lrc_la_CXXFLAGS) \
 	$(CXXFLAGS) $(libec_lrc_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_missing_entry_point_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_missing_entry_point_la_OBJECTS = test/erasure-code/libec_missing_entry_point_la-ErasureCodePluginMissingEntryPoint.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_missing_entry_point_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginMissingEntryPoint.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_missing_entry_point_la_OBJECTS = test/erasure-code/libec_missing_entry_point_la-ErasureCodePluginMissingEntryPoint.lo
 libec_missing_entry_point_la_OBJECTS =  \
 	$(am_libec_missing_entry_point_la_OBJECTS)
 libec_missing_entry_point_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_missing_entry_point_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_missing_entry_point_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_missing_version_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_missing_version_la_OBJECTS = test/erasure-code/libec_missing_version_la-ErasureCodePluginMissingVersion.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_missing_entry_point_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_missing_version_la_SOURCES_DIST =  \
+	test/erasure-code/ErasureCodePluginMissingVersion.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_missing_version_la_OBJECTS = test/erasure-code/libec_missing_version_la-ErasureCodePluginMissingVersion.lo
 libec_missing_version_la_OBJECTS =  \
 	$(am_libec_missing_version_la_OBJECTS)
 libec_missing_version_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_missing_version_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_missing_version_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_missing_version_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
 libec_shec_la_DEPENDENCIES = $(LIBCRUSH) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_2)
 am_libec_shec_la_OBJECTS = erasure-code/libec_shec_la-ErasureCode.lo \
@@ -1363,42 +1998,66 @@ libec_shec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_shec_la_CXXFLAGS) $(CXXFLAGS) $(libec_shec_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-libec_test_jerasure_generic_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_test_jerasure_generic_la_OBJECTS = test/erasure-code/libec_test_jerasure_generic_la-TestJerasurePluginGeneric.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_test_jerasure_generic_la_SOURCES_DIST =  \
+	test/erasure-code/TestJerasurePluginGeneric.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_generic_la_OBJECTS = test/erasure-code/libec_test_jerasure_generic_la-TestJerasurePluginGeneric.lo
 libec_test_jerasure_generic_la_OBJECTS =  \
 	$(am_libec_test_jerasure_generic_la_OBJECTS)
 libec_test_jerasure_generic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_test_jerasure_generic_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_test_jerasure_generic_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_test_jerasure_neon_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_test_jerasure_neon_la_OBJECTS = test/erasure-code/libec_test_jerasure_neon_la-TestJerasurePluginNEON.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_generic_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_test_jerasure_neon_la_SOURCES_DIST =  \
+	test/erasure-code/TestJerasurePluginNEON.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_neon_la_OBJECTS = test/erasure-code/libec_test_jerasure_neon_la-TestJerasurePluginNEON.lo
 libec_test_jerasure_neon_la_OBJECTS =  \
 	$(am_libec_test_jerasure_neon_la_OBJECTS)
 libec_test_jerasure_neon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_test_jerasure_neon_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_test_jerasure_neon_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_test_jerasure_sse3_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_test_jerasure_sse3_la_OBJECTS = test/erasure-code/libec_test_jerasure_sse3_la-TestJerasurePluginSSE3.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_neon_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_test_jerasure_sse3_la_SOURCES_DIST =  \
+	test/erasure-code/TestJerasurePluginSSE3.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_sse3_la_OBJECTS = test/erasure-code/libec_test_jerasure_sse3_la-TestJerasurePluginSSE3.lo
 libec_test_jerasure_sse3_la_OBJECTS =  \
 	$(am_libec_test_jerasure_sse3_la_OBJECTS)
 libec_test_jerasure_sse3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_test_jerasure_sse3_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_test_jerasure_sse3_la_LDFLAGS) $(LDFLAGS) -o $@
-libec_test_jerasure_sse4_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-am_libec_test_jerasure_sse4_la_OBJECTS = test/erasure-code/libec_test_jerasure_sse4_la-TestJerasurePluginSSE4.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_sse3_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_2)
+am__libec_test_jerasure_sse4_la_SOURCES_DIST =  \
+	test/erasure-code/TestJerasurePluginSSE4.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_sse4_la_OBJECTS = test/erasure-code/libec_test_jerasure_sse4_la-TestJerasurePluginSSE4.lo
 libec_test_jerasure_sse4_la_OBJECTS =  \
 	$(am_libec_test_jerasure_sse4_la_OBJECTS)
 libec_test_jerasure_sse4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libec_test_jerasure_sse4_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libec_test_jerasure_sse4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libec_test_jerasure_sse4_la_rpath =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-rpath \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(erasure_codelibdir)
 am_liberasure_code_la_OBJECTS = erasure-code/ErasureCodePlugin.lo
 liberasure_code_la_OBJECTS = $(am_liberasure_code_la_OBJECTS)
 libglobal_la_DEPENDENCIES = $(LIBCOMMON)
@@ -1410,35 +2069,85 @@ libjson_spirit_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libjson_spirit_la_OBJECTS = json_spirit/json_spirit_reader.lo \
 	json_spirit/json_spirit_writer.lo
 libjson_spirit_la_OBJECTS = $(am_libjson_spirit_la_OBJECTS)
-libkrbd_la_DEPENDENCIES = $(LIBSECRET) $(LIBCOMMON)
-am_libkrbd_la_OBJECTS = krbd.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at libkrbd_la_DEPENDENCIES = $(LIBSECRET) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBCOMMON)
+am__libkrbd_la_SOURCES_DIST = krbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_libkrbd_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	krbd.lo
 libkrbd_la_OBJECTS = $(am_libkrbd_la_OBJECTS)
- at LINUX_TRUE@am_libkrbd_la_rpath =
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_libkrbd_la_rpath =
 liblog_la_LIBADD =
 am_liblog_la_OBJECTS = log/Log.lo log/SubsystemMap.lo
 liblog_la_OBJECTS = $(am_liblog_la_OBJECTS)
-libmds_la_DEPENDENCIES = $(LIBOSDC)
-am_libmds_la_OBJECTS = mds/Capability.lo mds/MDS.lo mds/Beacon.lo \
-	mds/locks.lo mds/journal.lo mds/Server.lo mds/Mutation.lo \
-	mds/MDCache.lo mds/RecoveryQueue.lo mds/Locker.lo \
-	mds/Migrator.lo mds/MDBalancer.lo mds/CDentry.lo mds/CDir.lo \
-	mds/CInode.lo mds/LogEvent.lo mds/MDSTable.lo mds/InoTable.lo \
-	mds/JournalPointer.lo mds/MDSTableClient.lo \
-	mds/MDSTableServer.lo mds/SnapRealm.lo mds/SnapServer.lo \
-	mds/snap.lo mds/SessionMap.lo mds/MDSContext.lo \
-	mds/MDSAuthCaps.lo mds/MDLog.lo common/TrackedOp.lo
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at libmds_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOSDC)
+am__libmds_la_SOURCES_DIST = mds/Capability.cc mds/MDS.cc \
+	mds/Beacon.cc mds/locks.c mds/journal.cc mds/Server.cc \
+	mds/Mutation.cc mds/MDCache.cc mds/RecoveryQueue.cc \
+	mds/Locker.cc mds/Migrator.cc mds/MDBalancer.cc mds/CDentry.cc \
+	mds/CDir.cc mds/CInode.cc mds/LogEvent.cc mds/MDSTable.cc \
+	mds/InoTable.cc mds/JournalPointer.cc mds/MDSTableClient.cc \
+	mds/MDSTableServer.cc mds/SnapRealm.cc mds/SnapServer.cc \
+	mds/snap.cc mds/SessionMap.cc mds/MDSContext.cc \
+	mds/MDSAuthCaps.cc mds/MDLog.cc common/TrackedOp.cc
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am_libmds_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Capability.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDS.lo mds/Beacon.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/locks.lo mds/journal.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Server.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Mutation.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDCache.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/RecoveryQueue.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Locker.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Migrator.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDBalancer.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CDentry.lo mds/CDir.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CInode.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/LogEvent.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTable.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/InoTable.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/JournalPointer.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableClient.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableServer.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapRealm.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapServer.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/snap.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SessionMap.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSContext.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSAuthCaps.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDLog.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	common/TrackedOp.lo
 libmds_la_OBJECTS = $(am_libmds_la_OBJECTS)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am_libmds_la_rpath =
 @WITH_LIBZFS_TRUE at am__DEPENDENCIES_4 = libos_zfs.a
 am__DEPENDENCIES_5 = libos.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_4) $(am__append_12)
-libmon_la_DEPENDENCIES = $(LIBAUTH) $(LIBCOMMON) $(am__DEPENDENCIES_5) \
-	$(LIBMON_TYPES)
-am_libmon_la_OBJECTS = mon/Monitor.lo mon/Paxos.lo mon/PaxosService.lo \
-	mon/OSDMonitor.lo mon/MDSMonitor.lo mon/MonmapMonitor.lo \
-	mon/PGMonitor.lo mon/LogMonitor.lo mon/AuthMonitor.lo \
-	mon/Elector.lo mon/MonitorStore.lo mon/HealthMonitor.lo \
-	mon/DataHealthService.lo mon/ConfigKeyService.lo
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at libmon_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(LIBAUTH) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(LIBMON_TYPES)
+am__libmon_la_SOURCES_DIST = mon/Monitor.cc mon/Paxos.cc \
+	mon/PaxosService.cc mon/OSDMonitor.cc mon/MDSMonitor.cc \
+	mon/MonmapMonitor.cc mon/PGMonitor.cc mon/LogMonitor.cc \
+	mon/AuthMonitor.cc mon/Elector.cc mon/MonitorStore.cc \
+	mon/HealthMonitor.cc mon/DataHealthService.cc \
+	mon/ConfigKeyService.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_libmon_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Monitor.lo mon/Paxos.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PaxosService.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/OSDMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MDSMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonmapMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PGMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/LogMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/AuthMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Elector.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonitorStore.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/HealthMonitor.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/DataHealthService.lo \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/ConfigKeyService.lo
 libmon_la_OBJECTS = $(am_libmon_la_OBJECTS)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_libmon_la_rpath =
 libmon_types_la_LIBADD =
 am_libmon_types_la_OBJECTS = mon/PGMap.lo
 libmon_types_la_OBJECTS = $(am_libmon_types_la_OBJECTS)
@@ -1454,11 +2163,11 @@ am__libmsg_la_SOURCES_DIST = msg/Message.cc msg/Messenger.cc \
 	msg/async/EventKqueue.h msg/xio/QueueStrategy.cc \
 	msg/xio/XioConnection.cc msg/xio/XioMessenger.cc \
 	msg/xio/XioMsg.cc msg/xio/XioPortal.cc msg/xio/XioPool.cc
- at LINUX_TRUE@am__objects_9 = msg/async/EventEpoll.lo
- at DARWIN_TRUE@am__objects_10 = msg/async/EventKqueue.lo
- at FREEBSD_TRUE@am__objects_11 = msg/async/EventKqueue.lo
-am__objects_12 =
- at ENABLE_XIO_TRUE@am__objects_13 = msg/xio/QueueStrategy.lo \
+ at LINUX_TRUE@am__objects_10 = msg/async/EventEpoll.lo
+ at DARWIN_TRUE@am__objects_11 = msg/async/EventKqueue.lo
+ at FREEBSD_TRUE@am__objects_12 = msg/async/EventKqueue.lo
+am__objects_13 =
+ at ENABLE_XIO_TRUE@am__objects_14 = msg/xio/QueueStrategy.lo \
 @ENABLE_XIO_TRUE@	msg/xio/XioConnection.lo \
 @ENABLE_XIO_TRUE@	msg/xio/XioMessenger.lo msg/xio/XioMsg.lo \
 @ENABLE_XIO_TRUE@	msg/xio/XioPortal.lo msg/xio/XioPool.lo
@@ -1468,13 +2177,14 @@ am_libmsg_la_OBJECTS = msg/Message.lo msg/Messenger.lo \
 	msg/simple/PipeConnection.lo msg/simple/SimpleMessenger.lo \
 	msg/async/AsyncConnection.lo msg/async/AsyncMessenger.lo \
 	msg/async/Event.lo msg/async/net_handler.lo \
-	msg/async/EventSelect.lo $(am__objects_9) $(am__objects_10) \
-	$(am__objects_11) $(am__objects_12) $(am__objects_12) \
-	$(am__objects_12) $(am__objects_13)
+	msg/async/EventSelect.lo $(am__objects_10) $(am__objects_11) \
+	$(am__objects_12) $(am__objects_13) $(am__objects_13) \
+	$(am__objects_13) $(am__objects_14)
 libmsg_la_OBJECTS = $(am_libmsg_la_OBJECTS)
- at WITH_KINETIC_TRUE@am__DEPENDENCIES_6 = libcrypto.a
-libos_la_DEPENDENCIES = $(LIBOS_TYPES) $(am__append_22) \
-	$(am__DEPENDENCIES_6)
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__DEPENDENCIES_6 =  \
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@	libcrypto.a
+ at ENABLE_SERVER_TRUE@libos_la_DEPENDENCIES = $(LIBOS_TYPES) \
+ at ENABLE_SERVER_TRUE@	$(am__append_28) $(am__DEPENDENCIES_6)
 am__libos_la_SOURCES_DIST = os/chain_xattr.cc os/DBObjectMap.cc \
 	os/GenericObjectMap.cc os/FileJournal.cc os/FileStore.cc \
 	os/FlatIndex.cc os/GenericFileStoreBackend.cc os/HashIndex.cc \
@@ -1484,40 +2194,47 @@ am__libos_la_SOURCES_DIST = os/chain_xattr.cc os/DBObjectMap.cc \
 	os/WBThrottle.cc common/TrackedOp.cc \
 	os/BtrfsFileStoreBackend.cc os/XfsFileStoreBackend.cc \
 	os/ZFSFileStoreBackend.cc os/KineticStore.cc
- at LINUX_TRUE@am__objects_14 = os/libos_la-BtrfsFileStoreBackend.lo
- at WITH_LIBXFS_TRUE@am__objects_15 = os/libos_la-XfsFileStoreBackend.lo
- at WITH_LIBZFS_TRUE@am__objects_16 = os/libos_la-ZFSFileStoreBackend.lo
- at WITH_KINETIC_TRUE@am__objects_17 = os/libos_la-KineticStore.lo
-am_libos_la_OBJECTS = os/libos_la-chain_xattr.lo \
-	os/libos_la-DBObjectMap.lo os/libos_la-GenericObjectMap.lo \
-	os/libos_la-FileJournal.lo os/libos_la-FileStore.lo \
-	os/libos_la-FlatIndex.lo \
-	os/libos_la-GenericFileStoreBackend.lo \
-	os/libos_la-HashIndex.lo os/libos_la-IndexManager.lo \
-	os/libos_la-JournalingObjectStore.lo \
-	os/libos_la-LevelDBStore.lo os/libos_la-LFNIndex.lo \
-	os/libos_la-MemStore.lo os/libos_la-KeyValueDB.lo \
-	os/libos_la-KeyValueStore.lo os/libos_la-ObjectStore.lo \
-	os/libos_la-WBThrottle.lo os/libos_la-KeyValueDB.lo \
-	common/libos_la-TrackedOp.lo $(am__objects_14) \
-	$(am__objects_15) $(am__objects_16) $(am__objects_17)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__objects_15 = os/libos_la-BtrfsFileStoreBackend.lo
+ at ENABLE_SERVER_TRUE@@WITH_LIBXFS_TRUE at am__objects_16 = os/libos_la-XfsFileStoreBackend.lo
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at am__objects_17 = os/libos_la-ZFSFileStoreBackend.lo
+ at ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE at am__objects_18 = os/libos_la-KineticStore.lo
+ at ENABLE_SERVER_TRUE@am_libos_la_OBJECTS = os/libos_la-chain_xattr.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-DBObjectMap.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-GenericObjectMap.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-FileJournal.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-FileStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-FlatIndex.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-GenericFileStoreBackend.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-HashIndex.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-IndexManager.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-JournalingObjectStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-LevelDBStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-LFNIndex.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-MemStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-KeyValueDB.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-KeyValueStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-ObjectStore.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-WBThrottle.lo \
+ at ENABLE_SERVER_TRUE@	os/libos_la-KeyValueDB.lo \
+ at ENABLE_SERVER_TRUE@	common/libos_la-TrackedOp.lo \
+ at ENABLE_SERVER_TRUE@	$(am__objects_15) $(am__objects_16) \
+ at ENABLE_SERVER_TRUE@	$(am__objects_17) $(am__objects_18)
 libos_la_OBJECTS = $(am_libos_la_OBJECTS)
 libos_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libos_la_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- at WITH_SLIBROCKSDB_TRUE@libos_rocksdb_la_DEPENDENCIES =  \
- at WITH_SLIBROCKSDB_TRUE@	rocksdb/librocksdb.la
+ at ENABLE_SERVER_TRUE@am_libos_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at libos_rocksdb_la_DEPENDENCIES = rocksdb/librocksdb.la
 am__libos_rocksdb_la_SOURCES_DIST = os/RocksDBStore.cc
- at WITH_DLIBROCKSDB_FALSE@@WITH_SLIBROCKSDB_TRUE at am_libos_rocksdb_la_OBJECTS = os/libos_rocksdb_la-RocksDBStore.lo
- at WITH_DLIBROCKSDB_TRUE@am_libos_rocksdb_la_OBJECTS =  \
- at WITH_DLIBROCKSDB_TRUE@	os/libos_rocksdb_la-RocksDBStore.lo
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_FALSE@@WITH_SLIBROCKSDB_TRUE at am_libos_rocksdb_la_OBJECTS = os/libos_rocksdb_la-RocksDBStore.lo
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at am_libos_rocksdb_la_OBJECTS = os/libos_rocksdb_la-RocksDBStore.lo
 libos_rocksdb_la_OBJECTS = $(am_libos_rocksdb_la_OBJECTS)
 libos_rocksdb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libos_rocksdb_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
- at WITH_DLIBROCKSDB_TRUE@am_libos_rocksdb_la_rpath =
- at WITH_SLIBROCKSDB_TRUE@am_libos_rocksdb_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at am_libos_rocksdb_la_rpath =
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at am_libos_rocksdb_la_rpath =
 libos_types_la_LIBADD =
 am_libos_types_la_OBJECTS = os/libos_types_la-Transaction.lo
 libos_types_la_OBJECTS = $(am_libos_types_la_OBJECTS)
@@ -1525,22 +2242,41 @@ libos_types_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libos_types_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-libosd_la_DEPENDENCIES = $(LIBOSDC) $(am__DEPENDENCIES_5) \
-	$(LIBOSD_TYPES) $(LIBOS_TYPES) $(am__append_33)
-am_libosd_la_OBJECTS = osd/libosd_la-PG.lo \
-	osd/libosd_la-ReplicatedPG.lo \
-	osd/libosd_la-ReplicatedBackend.lo osd/libosd_la-ECBackend.lo \
-	osd/libosd_la-ECMsgTypes.lo osd/libosd_la-ECTransaction.lo \
-	osd/libosd_la-PGBackend.lo osd/libosd_la-Ager.lo \
-	osd/libosd_la-HitSet.lo osd/libosd_la-OSD.lo \
-	osd/libosd_la-OSDCap.lo osd/libosd_la-Watch.lo \
-	osd/libosd_la-ClassHandler.lo osd/libosd_la-OpRequest.lo \
-	common/libosd_la-TrackedOp.lo osd/libosd_la-SnapMapper.lo \
-	objclass/libosd_la-class_api.lo
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libosd_la_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSDC) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOS_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_42)
+am__libosd_la_SOURCES_DIST = osd/PG.cc osd/ReplicatedPG.cc \
+	osd/ReplicatedBackend.cc osd/ECBackend.cc osd/ECMsgTypes.cc \
+	osd/ECTransaction.cc osd/PGBackend.cc osd/Ager.cc \
+	osd/HitSet.cc osd/OSD.cc osd/OSDCap.cc osd/Watch.cc \
+	osd/ClassHandler.cc osd/OpRequest.cc common/TrackedOp.cc \
+	osd/SnapMapper.cc objclass/class_api.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libosd_la_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-PG.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ReplicatedPG.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ReplicatedBackend.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ECBackend.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ECMsgTypes.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ECTransaction.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-PGBackend.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-Ager.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-HitSet.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-OSD.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-OSDCap.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-Watch.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-ClassHandler.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-OpRequest.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/libosd_la-TrackedOp.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/libosd_la-SnapMapper.lo \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	objclass/libosd_la-class_api.lo
 libosd_la_OBJECTS = $(am_libosd_la_OBJECTS)
 libosd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libosd_la_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_libosd_la_rpath =
 libosd_types_la_LIBADD =
 am_libosd_types_la_OBJECTS = osd/libosd_types_la-PGLog.lo \
 	osd/libosd_types_la-osd_types.lo osd/libosd_types_la-ECUtil.lo
@@ -1557,115 +2293,200 @@ libperfglue_la_DEPENDENCIES =
 am__libperfglue_la_SOURCES_DIST = perfglue/heap_profiler.cc \
 	perfglue/disabled_heap_profiler.cc perfglue/cpu_profiler.cc \
 	perfglue/disabled_stubs.cc
- at WITH_TCMALLOC_TRUE@am__objects_18 = perfglue/heap_profiler.lo
- at WITH_TCMALLOC_FALSE@am__objects_19 =  \
+ at WITH_TCMALLOC_TRUE@am__objects_19 = perfglue/heap_profiler.lo
+ at WITH_TCMALLOC_FALSE@am__objects_20 =  \
 @WITH_TCMALLOC_FALSE@	perfglue/disabled_heap_profiler.lo
- at WITH_PROFILER_TRUE@am__objects_20 = perfglue/cpu_profiler.lo
- at WITH_PROFILER_FALSE@am__objects_21 = perfglue/disabled_stubs.lo
-am_libperfglue_la_OBJECTS = $(am__objects_18) $(am__objects_19) \
-	$(am__objects_20) $(am__objects_21)
+ at WITH_PROFILER_TRUE@am__objects_21 = perfglue/cpu_profiler.lo
+ at WITH_PROFILER_FALSE@am__objects_22 = perfglue/disabled_stubs.lo
+am_libperfglue_la_OBJECTS = $(am__objects_19) $(am__objects_20) \
+	$(am__objects_21) $(am__objects_22)
 libperfglue_la_OBJECTS = $(am_libperfglue_la_OBJECTS)
-am__DEPENDENCIES_7 = librados_internal.la libcls_lock_client.la \
-	$(LIBOSDC) $(am__DEPENDENCIES_3) $(am__append_69)
-librados_la_DEPENDENCIES = $(am__DEPENDENCIES_7) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-am_librados_la_OBJECTS = common/librados_la-buffer.lo \
-	librados/librados_la-librados.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__DEPENDENCIES_7 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_3)
+am__DEPENDENCIES_8 = $(am__DEPENDENCIES_7) $(am__append_85)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_la_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_8) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2)
+am__librados_la_SOURCES_DIST = common/buffer.cc librados/librados.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_la_OBJECTS = common/librados_la-buffer.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/librados_la-librados.lo
 librados_la_OBJECTS = $(am_librados_la_OBJECTS)
 librados_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(librados_la_CXXFLAGS) \
 	$(CXXFLAGS) $(librados_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_la_rpath = -rpath \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(libdir)
 librados_api_la_LIBADD =
-am_librados_api_la_OBJECTS = common/buffer.lo librados/librados.lo
+am__librados_api_la_SOURCES_DIST = common/buffer.cc \
+	librados/librados.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_api_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	common/buffer.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/librados.lo
 librados_api_la_OBJECTS = $(am_librados_api_la_OBJECTS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_api_la_rpath =
 librados_internal_la_LIBADD =
-am_librados_internal_la_OBJECTS = librados/RadosClient.lo \
-	librados/IoCtxImpl.lo librados/RadosXattrIter.lo \
-	librados/snap_set_diff.lo
+am__librados_internal_la_SOURCES_DIST = librados/RadosClient.cc \
+	librados/IoCtxImpl.cc librados/RadosXattrIter.cc \
+	librados/snap_set_diff.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_internal_la_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosClient.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/IoCtxImpl.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosXattrIter.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/snap_set_diff.lo
 librados_internal_la_OBJECTS = $(am_librados_internal_la_OBJECTS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_internal_la_rpath =
 librados_test_stub_la_LIBADD =
-am_librados_test_stub_la_OBJECTS =  \
-	test/librados_test_stub/LibradosTestStub.lo \
-	test/librados_test_stub/TestClassHandler.lo \
-	test/librados_test_stub/TestIoCtxImpl.lo \
-	test/librados_test_stub/TestMemIoCtxImpl.lo \
-	test/librados_test_stub/TestMemRadosClient.lo \
-	test/librados_test_stub/TestRadosClient.lo \
-	test/librados_test_stub/TestWatchNotify.lo
+am__librados_test_stub_la_SOURCES_DIST =  \
+	test/librados_test_stub/LibradosTestStub.cc \
+	test/librados_test_stub/TestClassHandler.cc \
+	test/librados_test_stub/TestIoCtxImpl.cc \
+	test/librados_test_stub/TestMemIoCtxImpl.cc \
+	test/librados_test_stub/TestMemRadosClient.cc \
+	test/librados_test_stub/TestRadosClient.cc \
+	test/librados_test_stub/TestWatchNotify.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_test_stub_la_OBJECTS = test/librados_test_stub/LibradosTestStub.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestClassHandler.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestIoCtxImpl.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemIoCtxImpl.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemRadosClient.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestRadosClient.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestWatchNotify.lo
 librados_test_stub_la_OBJECTS = $(am_librados_test_stub_la_OBJECTS)
-am__DEPENDENCIES_8 = $(am__DEPENDENCIES_7)
-libradosstriper_la_DEPENDENCIES = $(am__DEPENDENCIES_8)
-am_libradosstriper_la_OBJECTS =  \
-	libradosstriper/libradosstriper_la-libradosstriper.lo \
-	libradosstriper/libradosstriper_la-RadosStriperImpl.lo \
-	libradosstriper/libradosstriper_la-MultiAioCompletionImpl.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_test_stub_la_rpath =
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__DEPENDENCIES_9 = $(am__DEPENDENCIES_8)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstriper_la_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am__libradosstriper_la_SOURCES_DIST =  \
+	libradosstriper/libradosstriper.cc \
+	libradosstriper/RadosStriperImpl.cc \
+	libradosstriper/MultiAioCompletionImpl.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_libradosstriper_la_OBJECTS = libradosstriper/libradosstriper_la-libradosstriper.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/libradosstriper_la-RadosStriperImpl.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/libradosstriper_la-MultiAioCompletionImpl.lo
 libradosstriper_la_OBJECTS = $(am_libradosstriper_la_OBJECTS)
 libradosstriper_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libradosstriper_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libradosstriper_la_LDFLAGS) $(LDFLAGS) -o $@
-libradosstripertest_la_DEPENDENCIES = $(RADOS_TEST_LDADD)
-am_libradosstripertest_la_OBJECTS =  \
-	test/libradosstriper/libradosstripertest_la-TestCase.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_libradosstriper_la_rpath = -rpath \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(libdir)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstripertest_la_DEPENDENCIES = $(RADOS_TEST_LDADD)
+am__libradosstripertest_la_SOURCES_DIST =  \
+	test/libradosstriper/TestCase.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_libradosstripertest_la_OBJECTS = test/libradosstriper/libradosstripertest_la-TestCase.lo
 libradosstripertest_la_OBJECTS = $(am_libradosstripertest_la_OBJECTS)
 libradosstripertest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libradosstripertest_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_libradosstripertest_la_rpath =
 libradostest_la_LIBADD =
-am_libradostest_la_OBJECTS = test/librados/libradostest_la-test.lo \
-	test/librados/libradostest_la-TestCase.lo
+am__libradostest_la_SOURCES_DIST = test/librados/test.cc \
+	test/librados/TestCase.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_libradostest_la_OBJECTS = test/librados/libradostest_la-test.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/libradostest_la-TestCase.lo
 libradostest_la_OBJECTS = $(am_libradostest_la_OBJECTS)
 libradostest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libradostest_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-librbd_la_DEPENDENCIES = librbd_internal.la $(LIBRBD_TYPES) \
-	$(LIBRADOS) $(LIBCOMMON) $(LIBOSDC) librados_internal.la \
-	libcls_rbd_client.la libcls_lock_client.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) $(am__append_73)
-am_librbd_la_OBJECTS = librbd/librbd_la-librbd.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_libradostest_la_rpath =
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_la_DEPENDENCIES = librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_94)
+am__librbd_la_SOURCES_DIST = librbd/librbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_la_OBJECTS = librbd/librbd_la-librbd.lo
 librbd_la_OBJECTS = $(am_librbd_la_OBJECTS)
 librbd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(librbd_la_CXXFLAGS) \
 	$(CXXFLAGS) $(librbd_la_LDFLAGS) $(LDFLAGS) -o $@
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_la_rpath =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	-rpath \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(libdir)
 librbd_api_la_LIBADD =
-am_librbd_api_la_OBJECTS = librbd/librbd.lo
+am__librbd_api_la_SOURCES_DIST = librbd/librbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_api_la_OBJECTS = librbd/librbd.lo
 librbd_api_la_OBJECTS = $(am_librbd_api_la_OBJECTS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_api_la_rpath =
 librbd_internal_la_LIBADD =
-am_librbd_internal_la_OBJECTS = librbd/AioCompletion.lo \
-	librbd/AioRequest.lo librbd/AsyncFlattenRequest.lo \
-	librbd/AsyncObjectThrottle.lo librbd/AsyncOperation.lo \
-	librbd/AsyncRequest.lo librbd/AsyncResizeRequest.lo \
-	librbd/AsyncTrimRequest.lo librbd/CopyupRequest.lo \
-	librbd/ImageCtx.lo librbd/ImageWatcher.lo librbd/internal.lo \
-	librbd/LibrbdWriteback.lo librbd/ObjectMap.lo
+am__librbd_internal_la_SOURCES_DIST = librbd/AioCompletion.cc \
+	librbd/AioRequest.cc librbd/AsyncFlattenRequest.cc \
+	librbd/AsyncObjectThrottle.cc librbd/AsyncOperation.cc \
+	librbd/AsyncRequest.cc librbd/AsyncResizeRequest.cc \
+	librbd/AsyncTrimRequest.cc librbd/CopyupRequest.cc \
+	librbd/ImageCtx.cc librbd/ImageWatcher.cc librbd/internal.cc \
+	librbd/LibrbdWriteback.cc librbd/ObjectMap.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_internal_la_OBJECTS = librbd/AioCompletion.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AioRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncFlattenRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncObjectThrottle.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncOperation.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncResizeRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncTrimRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/CopyupRequest.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageCtx.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageWatcher.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/internal.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/LibrbdWriteback.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ObjectMap.lo
 librbd_internal_la_OBJECTS = $(am_librbd_internal_la_OBJECTS)
-am__DEPENDENCIES_9 = $(LIBGLOBAL) $(LIBCOMMON) $(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_internal_la_rpath =
+am__DEPENDENCIES_10 = $(LIBGLOBAL) $(LIBCOMMON) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-librbd_replay_la_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9)
-am_librbd_replay_la_OBJECTS = rbd_replay/actions.lo \
-	rbd_replay/Deser.lo rbd_replay/ImageNameMap.lo \
-	rbd_replay/PendingIO.lo rbd_replay/rbd_loc.lo \
-	rbd_replay/Replayer.lo rbd_replay/Ser.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_la_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10)
+am__librbd_replay_la_SOURCES_DIST = rbd_replay/actions.cc \
+	rbd_replay/Deser.cc rbd_replay/ImageNameMap.cc \
+	rbd_replay/PendingIO.cc rbd_replay/rbd_loc.cc \
+	rbd_replay/Replayer.cc rbd_replay/Ser.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_replay_la_OBJECTS = rbd_replay/actions.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Deser.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/ImageNameMap.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/PendingIO.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/rbd_loc.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Replayer.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Ser.lo
 librbd_replay_la_OBJECTS = $(am_librbd_replay_la_OBJECTS)
-librbd_replay_ios_la_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) librbd_replay.la
-am_librbd_replay_ios_la_OBJECTS = rbd_replay/ios.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_replay_la_rpath =
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_ios_la_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la
+am__librbd_replay_ios_la_SOURCES_DIST = rbd_replay/ios.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_replay_ios_la_OBJECTS = rbd_replay/ios.lo
 librbd_replay_ios_la_OBJECTS = $(am_librbd_replay_ios_la_OBJECTS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_replay_ios_la_rpath =
 librbd_test_la_LIBADD =
-am_librbd_test_la_OBJECTS =  \
-	test/librbd/librbd_test_la-test_fixture.lo \
-	test/librbd/librbd_test_la-test_librbd.lo \
-	test/librbd/librbd_test_la-test_ImageWatcher.lo \
-	test/librbd/librbd_test_la-test_internal.lo \
-	test/librbd/librbd_test_la-test_main.lo
+am__librbd_test_la_SOURCES_DIST = test/librbd/test_fixture.cc \
+	test/librbd/test_librbd.cc test/librbd/test_ImageWatcher.cc \
+	test/librbd/test_internal.cc test/librbd/test_main.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_test_la_OBJECTS = test/librbd/librbd_test_la-test_fixture.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/librbd_test_la-test_librbd.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/librbd_test_la-test_ImageWatcher.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/librbd_test_la-test_internal.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/librbd_test_la-test_main.lo
 librbd_test_la_OBJECTS = $(am_librbd_test_la_OBJECTS)
 librbd_test_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(librbd_test_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_librbd_test_la_rpath =
 librbd_types_la_LIBADD =
 am_librbd_types_la_OBJECTS = librbd/WatchNotifyTypes.lo
 librbd_types_la_OBJECTS = $(am_librbd_types_la_OBJECTS)
@@ -1682,50 +2503,50 @@ am__librgw_la_SOURCES_DIST = rgw/librgw.cc rgw/rgw_acl.cc \
 	rgw/rgw_cors.cc rgw/rgw_cors_s3.cc rgw/rgw_auth_s3.cc \
 	rgw/rgw_metadata.cc rgw/rgw_replica_log.cc rgw/rgw_keystone.cc \
 	rgw/rgw_quota.cc rgw/rgw_dencoder.cc
- at WITH_RADOSGW_TRUE@am_librgw_la_OBJECTS = rgw/librgw_la-librgw.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_acl.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_acl_s3.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_acl_swift.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_client_io.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_fcgi.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_xml.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_usage.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_json_enc.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_user.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_bucket.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_tools.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_rados.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_http_client.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_rest_client.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_rest_conn.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_op.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_common.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_cache.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_formats.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_log.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_multi.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_policy_s3.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_gc.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_multi_del.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_env.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_cors.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_cors_s3.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_auth_s3.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_metadata.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_replica_log.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_keystone.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_quota.lo \
- at WITH_RADOSGW_TRUE@	rgw/librgw_la-rgw_dencoder.lo
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_librgw_la_OBJECTS = rgw/librgw_la-librgw.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_acl.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_acl_s3.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_acl_swift.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_client_io.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_fcgi.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_xml.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_usage.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_json_enc.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_user.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_bucket.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_tools.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_rados.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_http_client.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_rest_client.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_rest_conn.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_op.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_common.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_cache.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_formats.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_log.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_multi.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_policy_s3.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_gc.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_multi_del.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_env.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_cors.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_cors_s3.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_auth_s3.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_metadata.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_replica_log.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_keystone.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_quota.lo \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw_la-rgw_dencoder.lo
 librgw_la_OBJECTS = $(am_librgw_la_OBJECTS)
 librgw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(librgw_la_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- at WITH_RADOSGW_TRUE@am_librgw_la_rpath =
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_librgw_la_rpath =
 libsecret_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libsecret_la_OBJECTS = common/secret.lo
 libsecret_la_OBJECTS = $(am_libsecret_la_OBJECTS)
 @LINUX_TRUE at am_libsecret_la_rpath =
- at LINUX_TRUE@libsystest_la_DEPENDENCIES = $(am__DEPENDENCIES_9)
+ at LINUX_TRUE@libsystest_la_DEPENDENCIES = $(am__DEPENDENCIES_10)
 am__libsystest_la_SOURCES_DIST = test/system/cross_process_sem.cc \
 	test/system/systest_runnable.cc \
 	test/system/systest_settings.cc
@@ -1735,322 +2556,487 @@ am__libsystest_la_SOURCES_DIST = test/system/cross_process_sem.cc \
 @LINUX_TRUE@	test/system/systest_settings.lo
 libsystest_la_OBJECTS = $(am_libsystest_la_OBJECTS)
 @LINUX_TRUE at am_libsystest_la_rpath =
- at WITH_RADOSGW_TRUE@am__EXEEXT_1 = ceph_rgw_multiparser$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	ceph_rgw_jsonparser$(EXEEXT)
- at WITH_BUILD_TESTS_TRUE@am__EXEEXT_2 = test_build_libcommon$(EXEEXT) \
- at WITH_BUILD_TESTS_TRUE@	test_build_librados$(EXEEXT) \
- at WITH_BUILD_TESTS_TRUE@	test_build_librgw$(EXEEXT) \
- at WITH_BUILD_TESTS_TRUE@	test_build_libcephfs$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_3 = ceph_kvstorebench$(EXEEXT) \
- at LINUX_TRUE@	ceph_test_rados_list_parallel$(EXEEXT) \
- at LINUX_TRUE@	ceph_test_rados_open_pools_parallel$(EXEEXT) \
- at LINUX_TRUE@	ceph_test_rados_delete_pools_parallel$(EXEEXT) \
- at LINUX_TRUE@	ceph_test_rados_watch_notify$(EXEEXT)
- at WITH_RADOSGW_TRUE@am__EXEEXT_4 = ceph_test_cors$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	ceph_test_rgw_manifest$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_meta$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_log$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	ceph_test_cls_rgw_opstate$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_5 = ceph_test_librbd_fsx$(EXEEXT)
- at WITH_RADOSGW_TRUE@am__EXEEXT_6 = ceph_test_cls_rgw$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_7 = ceph_test_objectstore$(EXEEXT) \
- at LINUX_TRUE@	ceph_test_filestore$(EXEEXT)
-am__EXEEXT_8 = ceph_test_ioctls$(EXEEXT) $(am__EXEEXT_1) \
-	ceph_erasure_code_benchmark$(EXEEXT) \
-	ceph_erasure_code$(EXEEXT) ceph_test_timers$(EXEEXT) \
-	ceph_test_signal_handlers$(EXEEXT) ceph_test_rados$(EXEEXT) \
-	ceph_test_mutate$(EXEEXT) ceph_test_rewrite_latency$(EXEEXT) \
-	ceph_test_async_driver$(EXEEXT) ceph_test_msgr$(EXEEXT) \
-	ceph_streamtest$(EXEEXT) ceph_test_trans$(EXEEXT) \
-	ceph_test_crypto$(EXEEXT) ceph_test_keys$(EXEEXT) \
-	$(am__EXEEXT_2) ceph_smalliobench$(EXEEXT) \
-	ceph_smalliobenchfs$(EXEEXT) ceph_smalliobenchdumb$(EXEEXT) \
-	ceph_smalliobenchrbd$(EXEEXT) ceph_tpbench$(EXEEXT) \
-	ceph_omapbench$(EXEEXT) $(am__EXEEXT_3) \
-	ceph_bench_log$(EXEEXT) $(am__EXEEXT_4) \
-	ceph_multi_stress_watch$(EXEEXT) ceph_test_librbd$(EXEEXT) \
-	$(am__EXEEXT_5) ceph_test_cls_rbd$(EXEEXT) \
-	ceph_test_cls_refcount$(EXEEXT) ceph_test_cls_version$(EXEEXT) \
-	ceph_test_cls_log$(EXEEXT) ceph_test_cls_statelog$(EXEEXT) \
-	ceph_test_cls_replica_log$(EXEEXT) ceph_test_cls_lock$(EXEEXT) \
-	ceph_test_cls_hello$(EXEEXT) $(am__EXEEXT_6) \
-	ceph_test_mon_workloadgen$(EXEEXT) ceph_test_mon_msg$(EXEEXT) \
-	ceph_test_rados_api_cmd$(EXEEXT) \
-	ceph_test_rados_api_io$(EXEEXT) \
-	ceph_test_rados_api_c_write_operations$(EXEEXT) \
-	ceph_test_rados_api_c_read_operations$(EXEEXT) \
-	ceph_test_rados_api_aio$(EXEEXT) \
-	ceph_test_rados_api_list$(EXEEXT) \
-	ceph_test_rados_api_nlist$(EXEEXT) \
-	ceph_test_rados_api_pool$(EXEEXT) \
-	ceph_test_rados_api_stat$(EXEEXT) \
-	ceph_test_rados_api_watch_notify$(EXEEXT) \
-	ceph_test_rados_api_snapshots$(EXEEXT) \
-	ceph_test_rados_api_cls$(EXEEXT) \
-	ceph_test_rados_api_misc$(EXEEXT) \
-	ceph_test_rados_api_tier$(EXEEXT) \
-	ceph_test_rados_api_lock$(EXEEXT) \
-	ceph_test_rados_striper_api_io$(EXEEXT) \
-	ceph_test_rados_striper_api_aio$(EXEEXT) \
-	ceph_test_rados_striper_api_striping$(EXEEXT) \
-	ceph_test_libcephfs$(EXEEXT) ceph_perf_objectstore$(EXEEXT) \
-	$(am__EXEEXT_7) ceph_test_objectstore_workloadgen$(EXEEXT) \
-	ceph_test_filestore_idempotent$(EXEEXT) \
-	ceph_test_filestore_idempotent_sequence$(EXEEXT) \
-	ceph_xattr_bench$(EXEEXT) ceph_test_filejournal$(EXEEXT) \
-	ceph_test_stress_watch$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@am__EXEEXT_1 = ceph_test_ioctls$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_2 = ceph_rgw_multiparser$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_rgw_jsonparser$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_3 = ceph_erasure_code_benchmark$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph_erasure_code$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_4 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_mutate$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_5 = test_build_librados$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_6 = ceph_smalliobench$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_omapbench$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_7 = ceph_kvstorebench$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_list_parallel$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_open_pools_parallel$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_delete_pools_parallel$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_watch_notify$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_8 = ceph_multi_stress_watch$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rbd$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_refcount$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_version$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_log$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_statelog$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_replica_log$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_lock$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_hello$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_cmd$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_io$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_c_write_operations$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_c_read_operations$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_aio$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_list$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_nlist$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_pool$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_stat$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_watch_notify$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_snapshots$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_cls$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_misc$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_tier$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_api_lock$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_test_stress_watch$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_9 = ceph_smalliobenchrbd$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	ceph_test_librbd$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_10 = ceph_test_librbd_fsx$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_11 = ceph_test_rados_striper_api_io$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_striper_api_aio$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	ceph_test_rados_striper_api_striping$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_12 = test_build_libcephfs$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_13 = ceph_test_libcephfs$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	ceph_test_c_headers$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_14 = test_build_librgw$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_15 = ceph_test_cors$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_rgw_manifest$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_meta$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_log$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw_opstate$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	ceph_test_cls_rgw$(EXEEXT)
+ at ENABLE_SERVER_TRUE@am__EXEEXT_16 = ceph_test_async_driver$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_msgr$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_streamtest$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_trans$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_mon_workloadgen$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_mon_msg$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_perf_objectstore$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__EXEEXT_17 = ceph_test_objectstore$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	ceph_test_filestore$(EXEEXT)
+ at ENABLE_SERVER_TRUE@am__EXEEXT_18 = ceph_test_objectstore_workloadgen$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_filestore_idempotent$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_filestore_idempotent_sequence$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_xattr_bench$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_filejournal$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_object_map$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_keyvaluedb_atomicity$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph_test_keyvaluedb_iterators$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_19 = ceph_smalliobenchfs$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	ceph_smalliobenchdumb$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	ceph_tpbench$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__EXEEXT_20 =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	ceph_test_keys$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_21 = ceph_test_snap_mapper$(EXEEXT)
+ at WITH_BUILD_TESTS_TRUE@am__EXEEXT_22 = test_build_libcommon$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_23 = ceph_scratchtool$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_scratchtoolpp$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	ceph_radosacl$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_24 = ceph-client-debug$(EXEEXT)
+ at ENABLE_SERVER_TRUE@am__EXEEXT_25 = ceph-osdomap-tool$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph-monstore-tool$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	ceph-kvstore-tool$(EXEEXT)
+am__EXEEXT_26 = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
+	$(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
+	$(am__EXEEXT_10) $(am__EXEEXT_11) $(am__EXEEXT_12) \
+	$(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) \
+	$(am__EXEEXT_16) $(am__EXEEXT_17) $(am__EXEEXT_18) \
+	$(am__EXEEXT_19) $(am__EXEEXT_20) $(am__EXEEXT_21) \
+	ceph_test_timers$(EXEEXT) ceph_test_signal_handlers$(EXEEXT) \
+	ceph_test_rewrite_latency$(EXEEXT) ceph_test_crypto$(EXEEXT) \
+	$(am__EXEEXT_22) ceph_bench_log$(EXEEXT) \
 	ceph_test_objectcacher_stress$(EXEEXT) \
-	ceph_test_snap_mapper$(EXEEXT) ceph_test_object_map$(EXEEXT) \
-	ceph_test_keyvaluedb_atomicity$(EXEEXT) \
-	ceph_test_keyvaluedb_iterators$(EXEEXT) \
 	ceph_test_cfuse_cache_invalidate$(EXEEXT) \
-	ceph_test_c_headers$(EXEEXT) \
-	ceph_test_get_blkdev_size$(EXEEXT) ceph-osdomap-tool$(EXEEXT) \
-	ceph-monstore-tool$(EXEEXT) ceph-kvstore-tool$(EXEEXT) \
-	ceph_scratchtool$(EXEEXT) ceph_scratchtoolpp$(EXEEXT) \
-	ceph_psim$(EXEEXT) ceph_radosacl$(EXEEXT) \
-	ceph-client-debug$(EXEEXT)
- at WITH_DEBUG_TRUE@am__EXEEXT_9 = $(am__EXEEXT_8)
- at WITH_RADOSGW_TRUE@am__EXEEXT_10 = radosgw$(EXEEXT) \
- at WITH_RADOSGW_TRUE@	radosgw-admin$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_11 = rbd-replay$(EXEEXT)
- at WITH_BABELTRACE_TRUE@am__EXEEXT_12 = rbd-replay-prep$(EXEEXT)
- at WITH_REST_BENCH_TRUE@am__EXEEXT_13 = rest-bench$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_14 = rbd$(EXEEXT)
- at WITH_FUSE_TRUE@am__EXEEXT_15 = ceph-fuse$(EXEEXT) rbd-fuse$(EXEEXT)
- at WITH_BETTER_YASM_ELF64_TRUE@am__EXEEXT_16 = unittest_erasure_code_isa$(EXEEXT) \
- at WITH_BETTER_YASM_ELF64_TRUE@	unittest_erasure_code_plugin_isa$(EXEEXT)
- at ENABLE_XIO_TRUE@am__EXEEXT_17 = simple_server$(EXEEXT) \
- at ENABLE_XIO_TRUE@	simple_client$(EXEEXT) xio_server$(EXEEXT) \
- at ENABLE_XIO_TRUE@	xio_client$(EXEEXT)
- at LINUX_TRUE@am__EXEEXT_18 = mount.ceph$(EXEEXT)
+	ceph_test_get_blkdev_size$(EXEEXT) $(am__EXEEXT_23) \
+	$(am__EXEEXT_24) $(am__EXEEXT_25) ceph_psim$(EXEEXT)
+ at WITH_DEBUG_TRUE@am__EXEEXT_27 = $(am__EXEEXT_26)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_28 = radosgw$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	radosgw-admin$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_29 = rbd-replay$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BABELTRACE_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_30 = rbd-replay-prep$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__EXEEXT_31 =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	ceph-dencoder$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_32 = rados$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_33 = ceph-objectstore-tool$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_34 = cephfs-journal-tool$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	cephfs-table-tool$(EXEEXT)
+ at WITH_REST_BENCH_TRUE@am__EXEEXT_35 = rest-bench$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@am__EXEEXT_36 = ceph-syn$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_37 =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados-config$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_38 = rbd$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_39 = ceph-fuse$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@	rbd-fuse$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_40 = cephfs$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__EXEEXT_41 = ceph-mon$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_42 = ceph-osd$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__EXEEXT_43 = ceph-mds$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_44 = unittest_erasure_code_plugin$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_jerasure$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_jerasure$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am__EXEEXT_45 = unittest_erasure_code_isa$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_isa$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_46 = unittest_erasure_code_lrc$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_plugin_lrc$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec_all$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_shec_thread$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_erasure_code_example$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_47 = unittest_librados$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	unittest_librados_config$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am__EXEEXT_48 = unittest_rbd_replay$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	unittest_librbd$(EXEEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__EXEEXT_49 = unittest_encoding$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_base64$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_run_cmd$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_simple_spin$(EXEEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	unittest_libcephfs_config$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__EXEEXT_50 = unittest_mon_moncap$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	unittest_mon_pgmap$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_51 = unittest_ecbackend$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_osdscrub$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_pglog$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_hitset$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	unittest_osd_osdcap$(EXEEXT)
+ at ENABLE_SERVER_TRUE@am__EXEEXT_52 = unittest_chain_xattr$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	unittest_flatindex$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@	unittest_lfnindex$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am__EXEEXT_53 = unittest_mds_authcap$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am__EXEEXT_54 = ceph_erasure_code_non_regression$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am__EXEEXT_55 =  \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	simple_server$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	simple_client$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	xio_server$(EXEEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	xio_client$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am__EXEEXT_56 = get_command_descriptions$(EXEEXT)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am__EXEEXT_57 = mount.ceph$(EXEEXT)
 PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(sbin_PROGRAMS) \
 	$(su_sbin_PROGRAMS)
 am_ceph_authtool_OBJECTS = tools/ceph_authtool.$(OBJEXT)
 ceph_authtool_OBJECTS = $(am_ceph_authtool_OBJECTS)
-ceph_authtool_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON)
-am_ceph_client_debug_OBJECTS = tools/ceph-client-debug.$(OBJEXT)
+ceph_authtool_DEPENDENCIES = $(am__DEPENDENCIES_10) $(LIBCOMMON)
+am__ceph_client_debug_SOURCES_DIST = tools/ceph-client-debug.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_ceph_client_debug_OBJECTS = tools/ceph-client-debug.$(OBJEXT)
 ceph_client_debug_OBJECTS = $(am_ceph_client_debug_OBJECTS)
-ceph_client_debug_DEPENDENCIES = $(LIBCEPHFS) $(am__DEPENDENCIES_9) \
-	$(LIBCOMMON)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_client_debug_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON)
 am_ceph_conf_OBJECTS = tools/ceph_conf.$(OBJEXT)
 ceph_conf_OBJECTS = $(am_ceph_conf_OBJECTS)
-ceph_conf_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON)
+ceph_conf_DEPENDENCIES = $(am__DEPENDENCIES_10) $(LIBCOMMON)
 am__ceph_dencoder_SOURCES_DIST = test/encoding/ceph_dencoder.cc \
 	rgw/rgw_dencoder.cc rgw/rgw_acl.cc rgw/rgw_common.cc \
 	rgw/rgw_env.cc rgw/rgw_json_enc.cc
- at WITH_RADOSGW_TRUE@am__objects_22 =  \
- at WITH_RADOSGW_TRUE@	rgw/ceph_dencoder-rgw_dencoder.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/ceph_dencoder-rgw_acl.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/ceph_dencoder-rgw_common.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/ceph_dencoder-rgw_env.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/ceph_dencoder-rgw_json_enc.$(OBJEXT)
-am__objects_23 = $(am__objects_22)
-am_ceph_dencoder_OBJECTS =  \
-	test/encoding/ceph_dencoder-ceph_dencoder.$(OBJEXT) \
-	$(am__objects_23)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__objects_23 = rgw/ceph_dencoder-rgw_dencoder.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/ceph_dencoder-rgw_acl.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/ceph_dencoder-rgw_common.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/ceph_dencoder-rgw_env.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/ceph_dencoder-rgw_json_enc.$(OBJEXT)
+am__objects_24 = $(am__objects_23)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am_ceph_dencoder_OBJECTS = test/encoding/ceph_dencoder-ceph_dencoder.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__objects_24)
 ceph_dencoder_OBJECTS = $(am_ceph_dencoder_OBJECTS)
-am__DEPENDENCIES_10 = libperfglue.la $(am__DEPENDENCIES_1)
-am__DEPENDENCIES_11 = libmds.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_10)
-ceph_dencoder_DEPENDENCIES = $(LIBRBD_TYPES) $(LIBOSD_TYPES) \
-	$(LIBOS_TYPES) $(am__DEPENDENCIES_11) $(LIBMON_TYPES) \
-	$(DENCODER_DEPS) $(am__DEPENDENCIES_9)
+am__DEPENDENCIES_11 = libperfglue.la $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_12 = libmds.la $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_11)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_dencoder_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOSD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOS_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_12) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBMON_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(DENCODER_DEPS) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_10)
 ceph_dencoder_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_dencoder_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
 am__ceph_fuse_SOURCES_DIST = ceph_fuse.cc
- at WITH_FUSE_TRUE@am_ceph_fuse_OBJECTS = ceph_fuse.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at am_ceph_fuse_OBJECTS = ceph_fuse.$(OBJEXT)
 ceph_fuse_OBJECTS = $(am_ceph_fuse_OBJECTS)
- at WITH_FUSE_TRUE@ceph_fuse_DEPENDENCIES = $(LIBCLIENT_FUSE) \
- at WITH_FUSE_TRUE@	$(am__DEPENDENCIES_9)
-am_ceph_kvstore_tool_OBJECTS =  \
-	tools/ceph_kvstore_tool-ceph_kvstore_tool.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at ceph_fuse_DEPENDENCIES = $(LIBCLIENT_FUSE) \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_kvstore_tool_SOURCES_DIST = tools/ceph_kvstore_tool.cc
+ at ENABLE_SERVER_TRUE@am_ceph_kvstore_tool_OBJECTS = tools/ceph_kvstore_tool-ceph_kvstore_tool.$(OBJEXT)
 ceph_kvstore_tool_OBJECTS = $(am_ceph_kvstore_tool_OBJECTS)
-ceph_kvstore_tool_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_kvstore_tool_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_kvstore_tool_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_kvstore_tool_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_mds_OBJECTS = ceph_mds.$(OBJEXT)
+am__ceph_mds_SOURCES_DIST = ceph_mds.cc
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am_ceph_mds_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	ceph_mds.$(OBJEXT)
 ceph_mds_OBJECTS = $(am_ceph_mds_OBJECTS)
-ceph_mds_DEPENDENCIES = $(am__DEPENDENCIES_11) $(LIBOSDC) \
-	$(am__DEPENDENCIES_9) $(LIBCOMMON)
-am_ceph_mon_OBJECTS = ceph_mon.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_mds_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_12) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOSDC) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBCOMMON)
+am__ceph_mon_SOURCES_DIST = ceph_mon.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_ceph_mon_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	ceph_mon.$(OBJEXT)
 ceph_mon_OBJECTS = $(am_ceph_mon_OBJECTS)
-am__DEPENDENCIES_12 = libmon.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_10)
-ceph_mon_DEPENDENCIES = $(am__DEPENDENCIES_12) $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9) $(LIBCOMMON)
-am_ceph_monstore_tool_OBJECTS = tools/ceph_monstore_tool.$(OBJEXT)
+am__DEPENDENCIES_13 = libmon.la $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_11)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_mon_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_13) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(LIBCOMMON)
+am__ceph_monstore_tool_SOURCES_DIST = tools/ceph_monstore_tool.cc
+ at ENABLE_SERVER_TRUE@am_ceph_monstore_tool_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	tools/ceph_monstore_tool.$(OBJEXT)
 ceph_monstore_tool_OBJECTS = $(am_ceph_monstore_tool_OBJECTS)
-ceph_monstore_tool_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
-am_ceph_objectstore_tool_OBJECTS =  \
-	tools/ceph_objectstore_tool.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_monstore_tool_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_objectstore_tool_SOURCES_DIST =  \
+	tools/ceph_objectstore_tool.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_objectstore_tool_OBJECTS = tools/ceph_objectstore_tool.$(OBJEXT)
 ceph_objectstore_tool_OBJECTS = $(am_ceph_objectstore_tool_OBJECTS)
-am__DEPENDENCIES_13 = libosd.la $(am__DEPENDENCIES_1) $(LIBOSDC) \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_10)
-ceph_objectstore_tool_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1) $(LIBRADOS) $(am__DEPENDENCIES_1)
-am_ceph_osd_OBJECTS = ceph_osd.$(OBJEXT)
+am__DEPENDENCIES_14 = libosd.la $(am__DEPENDENCIES_1) $(LIBOSDC) \
+	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_11)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_objectstore_tool_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBRADOS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_osd_SOURCES_DIST = ceph_osd.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_osd_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	ceph_osd.$(OBJEXT)
 ceph_osd_OBJECTS = $(am_ceph_osd_OBJECTS)
-ceph_osd_DEPENDENCIES = $(am__DEPENDENCIES_13) $(am__DEPENDENCIES_9) \
-	$(LIBCOMMON)
-am_ceph_osdomap_tool_OBJECTS = tools/ceph_osdomap_tool.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_osd_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON)
+am__ceph_osdomap_tool_SOURCES_DIST = tools/ceph_osdomap_tool.cc
+ at ENABLE_SERVER_TRUE@am_ceph_osdomap_tool_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	tools/ceph_osdomap_tool.$(OBJEXT)
 ceph_osdomap_tool_OBJECTS = $(am_ceph_osdomap_tool_OBJECTS)
-ceph_osdomap_tool_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
-am_ceph_syn_OBJECTS = ceph_syn.$(OBJEXT) \
-	client/SyntheticClient.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_osdomap_tool_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_syn_SOURCES_DIST = ceph_syn.cc client/SyntheticClient.cc
+ at ENABLE_CLIENT_TRUE@am_ceph_syn_OBJECTS = ceph_syn.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@	client/SyntheticClient.$(OBJEXT)
 ceph_syn_OBJECTS = $(am_ceph_syn_OBJECTS)
-ceph_syn_DEPENDENCIES = $(LIBCLIENT) $(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@ceph_syn_DEPENDENCIES = $(LIBCLIENT) \
+ at ENABLE_CLIENT_TRUE@	$(am__DEPENDENCIES_10)
 am_ceph_bench_log_OBJECTS = test/bench_log.$(OBJEXT)
 ceph_bench_log_OBJECTS = $(am_ceph_bench_log_OBJECTS)
-ceph_bench_log_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_ceph_erasure_code_OBJECTS =  \
-	test/erasure-code/ceph_erasure_code.$(OBJEXT)
+ceph_bench_log_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__ceph_erasure_code_SOURCES_DIST =  \
+	test/erasure-code/ceph_erasure_code.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_erasure_code_OBJECTS = test/erasure-code/ceph_erasure_code.$(OBJEXT)
 ceph_erasure_code_OBJECTS = $(am_ceph_erasure_code_OBJECTS)
-ceph_erasure_code_DEPENDENCIES = $(am__DEPENDENCIES_13) $(LIBCOMMON) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
-am_ceph_erasure_code_benchmark_OBJECTS =  \
-	erasure-code/ErasureCode.$(OBJEXT) \
-	test/erasure-code/ceph_erasure_code_benchmark.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_erasure_code_benchmark_SOURCES_DIST =  \
+	erasure-code/ErasureCode.cc \
+	test/erasure-code/ceph_erasure_code_benchmark.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_erasure_code_benchmark_OBJECTS = erasure-code/ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ceph_erasure_code_benchmark.$(OBJEXT)
 ceph_erasure_code_benchmark_OBJECTS =  \
 	$(am_ceph_erasure_code_benchmark_OBJECTS)
-ceph_erasure_code_benchmark_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
-am_ceph_erasure_code_non_regression_OBJECTS =  \
-	test/erasure-code/ceph_erasure_code_non_regression.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_benchmark_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_erasure_code_non_regression_SOURCES_DIST =  \
+	test/erasure-code/ceph_erasure_code_non_regression.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_erasure_code_non_regression_OBJECTS = test/erasure-code/ceph_erasure_code_non_regression.$(OBJEXT)
 ceph_erasure_code_non_regression_OBJECTS =  \
 	$(am_ceph_erasure_code_non_regression_OBJECTS)
-ceph_erasure_code_non_regression_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_13) $(LIBCOMMON) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_non_regression_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 am__ceph_kvstorebench_SOURCES_DIST = test/kv_store_bench.cc \
 	key_value_store/kv_flat_btree_async.cc
- at LINUX_TRUE@am_ceph_kvstorebench_OBJECTS =  \
- at LINUX_TRUE@	test/kv_store_bench.$(OBJEXT) \
- at LINUX_TRUE@	key_value_store/kv_flat_btree_async.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am_ceph_kvstorebench_OBJECTS = test/kv_store_bench.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	key_value_store/kv_flat_btree_async.$(OBJEXT)
 ceph_kvstorebench_OBJECTS = $(am_ceph_kvstorebench_OBJECTS)
- at LINUX_TRUE@ceph_kvstorebench_DEPENDENCIES = $(LIBRADOS) \
- at LINUX_TRUE@	$(am__DEPENDENCIES_9)
-am_ceph_multi_stress_watch_OBJECTS =  \
-	test/multi_stress_watch.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_kvstorebench_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_multi_stress_watch_SOURCES_DIST = test/multi_stress_watch.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_multi_stress_watch_OBJECTS = test/multi_stress_watch.$(OBJEXT)
 ceph_multi_stress_watch_OBJECTS =  \
 	$(am_ceph_multi_stress_watch_OBJECTS)
-ceph_multi_stress_watch_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) $(RADOS_TEST_LDADD)
-am_ceph_omapbench_OBJECTS = test/omap_bench.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_multi_stress_watch_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
+am__ceph_omapbench_SOURCES_DIST = test/omap_bench.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_omapbench_OBJECTS = test/omap_bench.$(OBJEXT)
 ceph_omapbench_OBJECTS = $(am_ceph_omapbench_OBJECTS)
-ceph_omapbench_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
-am_ceph_perf_objectstore_OBJECTS = test/objectstore/ceph_perf_objectstore-ObjectStoreTransactionBenchmark.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_omapbench_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_perf_objectstore_SOURCES_DIST =  \
+	test/objectstore/ObjectStoreTransactionBenchmark.cc
+ at ENABLE_SERVER_TRUE@am_ceph_perf_objectstore_OBJECTS = test/objectstore/ceph_perf_objectstore-ObjectStoreTransactionBenchmark.$(OBJEXT)
 ceph_perf_objectstore_OBJECTS = $(am_ceph_perf_objectstore_OBJECTS)
-am__DEPENDENCIES_14 = $(top_builddir)/src/gmock/lib/libgmock_main.la \
+am__DEPENDENCIES_15 = $(top_builddir)/src/gmock/lib/libgmock_main.la \
 	$(top_builddir)/src/gmock/lib/libgmock.la \
 	$(top_builddir)/src/gmock/gtest/lib/libgtest.la \
 	$(am__DEPENDENCIES_1)
-ceph_perf_objectstore_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_perf_objectstore_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_perf_objectstore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_perf_objectstore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_ceph_psim_OBJECTS = tools/psim.$(OBJEXT)
 ceph_psim_OBJECTS = $(am_ceph_psim_OBJECTS)
-ceph_psim_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_ceph_radosacl_OBJECTS = tools/radosacl.$(OBJEXT)
+ceph_psim_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__ceph_radosacl_SOURCES_DIST = tools/radosacl.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_radosacl_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/radosacl.$(OBJEXT)
 ceph_radosacl_OBJECTS = $(am_ceph_radosacl_OBJECTS)
-ceph_radosacl_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_radosacl_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am__ceph_rgw_jsonparser_SOURCES_DIST = rgw/rgw_jsonparser.cc \
 	rgw/rgw_common.cc rgw/rgw_env.cc rgw/rgw_json_enc.cc
- at WITH_RADOSGW_TRUE@am_ceph_rgw_jsonparser_OBJECTS =  \
- at WITH_RADOSGW_TRUE@	rgw/rgw_jsonparser.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_common.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_env.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_json_enc.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_rgw_jsonparser_OBJECTS = rgw/rgw_jsonparser.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_common.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_env.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_json_enc.$(OBJEXT)
 ceph_rgw_jsonparser_OBJECTS = $(am_ceph_rgw_jsonparser_OBJECTS)
-am__DEPENDENCIES_15 = librgw.la $(am__DEPENDENCIES_1)
- at WITH_RADOSGW_TRUE@am__DEPENDENCIES_16 = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a \
- at WITH_RADOSGW_TRUE@	libcls_user_client.a \
- at WITH_RADOSGW_TRUE@	libcls_replica_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_lock_client.la \
- at WITH_RADOSGW_TRUE@	libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a
-am__DEPENDENCIES_17 = $(am__DEPENDENCIES_16)
- at WITH_RADOSGW_TRUE@ceph_rgw_jsonparser_DEPENDENCIES =  \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9)
+am__DEPENDENCIES_16 = librgw.la $(am__DEPENDENCIES_1)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__DEPENDENCIES_17 = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_user_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a
+am__DEPENDENCIES_18 = $(am__DEPENDENCIES_17)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_jsonparser_DEPENDENCIES = $(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am__ceph_rgw_multiparser_SOURCES_DIST = rgw/rgw_multiparser.cc
- at WITH_RADOSGW_TRUE@am_ceph_rgw_multiparser_OBJECTS =  \
- at WITH_RADOSGW_TRUE@	rgw/rgw_multiparser.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_rgw_multiparser_OBJECTS = rgw/rgw_multiparser.$(OBJEXT)
 ceph_rgw_multiparser_OBJECTS = $(am_ceph_rgw_multiparser_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_rgw_multiparser_DEPENDENCIES =  \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9)
-am_ceph_scratchtool_OBJECTS = tools/scratchtool.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_multiparser_DEPENDENCIES = $(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_scratchtool_SOURCES_DIST = tools/scratchtool.c
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_scratchtool_OBJECTS = tools/scratchtool.$(OBJEXT)
 ceph_scratchtool_OBJECTS = $(am_ceph_scratchtool_OBJECTS)
-ceph_scratchtool_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
-am_ceph_scratchtoolpp_OBJECTS = tools/scratchtoolpp.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtool_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_scratchtoolpp_SOURCES_DIST = tools/scratchtoolpp.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_scratchtoolpp_OBJECTS = tools/scratchtoolpp.$(OBJEXT)
 ceph_scratchtoolpp_OBJECTS = $(am_ceph_scratchtoolpp_OBJECTS)
-ceph_scratchtoolpp_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
-am_ceph_smalliobench_OBJECTS = test/bench/small_io_bench.$(OBJEXT) \
-	test/bench/rados_backend.$(OBJEXT) \
-	test/bench/detailed_stat_collector.$(OBJEXT) \
-	test/bench/bencher.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtoolpp_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_smalliobench_SOURCES_DIST = test/bench/small_io_bench.cc \
+	test/bench/rados_backend.cc \
+	test/bench/detailed_stat_collector.cc test/bench/bencher.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_smalliobench_OBJECTS = test/bench/small_io_bench.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/rados_backend.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.$(OBJEXT)
 ceph_smalliobench_OBJECTS = $(am_ceph_smalliobench_OBJECTS)
-ceph_smalliobench_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_9)
-am_ceph_smalliobenchdumb_OBJECTS =  \
-	test/bench/small_io_bench_dumb.$(OBJEXT) \
-	test/bench/dumb_backend.$(OBJEXT) \
-	test/bench/detailed_stat_collector.$(OBJEXT) \
-	test/bench/bencher.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_smalliobench_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_smalliobenchdumb_SOURCES_DIST =  \
+	test/bench/small_io_bench_dumb.cc test/bench/dumb_backend.cc \
+	test/bench/detailed_stat_collector.cc test/bench/bencher.cc
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at am_ceph_smalliobenchdumb_OBJECTS = test/bench/small_io_bench_dumb.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/dumb_backend.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.$(OBJEXT)
 ceph_smalliobenchdumb_OBJECTS = $(am_ceph_smalliobenchdumb_OBJECTS)
-ceph_smalliobenchdumb_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9)
-am_ceph_smalliobenchfs_OBJECTS =  \
-	test/bench/small_io_bench_fs.$(OBJEXT) \
-	test/bench/testfilestore_backend.$(OBJEXT) \
-	test/bench/detailed_stat_collector.$(OBJEXT) \
-	test/bench/bencher.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchdumb_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_smalliobenchfs_SOURCES_DIST =  \
+	test/bench/small_io_bench_fs.cc \
+	test/bench/testfilestore_backend.cc \
+	test/bench/detailed_stat_collector.cc test/bench/bencher.cc
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at am_ceph_smalliobenchfs_OBJECTS = test/bench/small_io_bench_fs.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/testfilestore_backend.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.$(OBJEXT)
 ceph_smalliobenchfs_OBJECTS = $(am_ceph_smalliobenchfs_OBJECTS)
-ceph_smalliobenchfs_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9)
-am_ceph_smalliobenchrbd_OBJECTS =  \
-	test/bench/small_io_bench_rbd.$(OBJEXT) \
-	test/bench/rbd_backend.$(OBJEXT) \
-	test/bench/detailed_stat_collector.$(OBJEXT) \
-	test/bench/bencher.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchfs_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_smalliobenchrbd_SOURCES_DIST =  \
+	test/bench/small_io_bench_rbd.cc test/bench/rbd_backend.cc \
+	test/bench/detailed_stat_collector.cc test/bench/bencher.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_ceph_smalliobenchrbd_OBJECTS = test/bench/small_io_bench_rbd.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/rbd_backend.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/detailed_stat_collector.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/bencher.$(OBJEXT)
 ceph_smalliobenchrbd_OBJECTS = $(am_ceph_smalliobenchrbd_OBJECTS)
-ceph_smalliobenchrbd_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_9)
-am_ceph_streamtest_OBJECTS = test/streamtest.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_smalliobenchrbd_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_streamtest_SOURCES_DIST = test/streamtest.cc
+ at ENABLE_SERVER_TRUE@am_ceph_streamtest_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	test/streamtest.$(OBJEXT)
 ceph_streamtest_OBJECTS = $(am_ceph_streamtest_OBJECTS)
-ceph_streamtest_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9)
-am_ceph_test_async_driver_OBJECTS =  \
-	test/msgr/ceph_test_async_driver-test_async_driver.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_streamtest_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_async_driver_SOURCES_DIST =  \
+	test/msgr/test_async_driver.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_async_driver_OBJECTS = test/msgr/ceph_test_async_driver-test_async_driver.$(OBJEXT)
 ceph_test_async_driver_OBJECTS = $(am_ceph_test_async_driver_OBJECTS)
-ceph_test_async_driver_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_async_driver_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_async_driver_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_async_driver_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_c_headers_OBJECTS =  \
-	test/ceph_test_c_headers-test_c_headers.$(OBJEXT)
+am__ceph_test_c_headers_SOURCES_DIST = test/test_c_headers.c
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_ceph_test_c_headers_OBJECTS = test/ceph_test_c_headers-test_c_headers.$(OBJEXT)
 ceph_test_c_headers_OBJECTS = $(am_ceph_test_c_headers_OBJECTS)
-ceph_test_c_headers_DEPENDENCIES = $(LIBRADOS) $(LIBCEPHFS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_c_headers_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(LIBCEPHFS)
 ceph_test_c_headers_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(ceph_test_c_headers_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -2060,292 +3046,385 @@ am_ceph_test_cfuse_cache_invalidate_OBJECTS =  \
 ceph_test_cfuse_cache_invalidate_OBJECTS =  \
 	$(am_ceph_test_cfuse_cache_invalidate_OBJECTS)
 ceph_test_cfuse_cache_invalidate_LDADD = $(LDADD)
-am_ceph_test_cls_hello_OBJECTS =  \
-	test/cls_hello/ceph_test_cls_hello-test_cls_hello.$(OBJEXT)
+am__ceph_test_cls_hello_SOURCES_DIST =  \
+	test/cls_hello/test_cls_hello.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_hello_OBJECTS = test/cls_hello/ceph_test_cls_hello-test_cls_hello.$(OBJEXT)
 ceph_test_cls_hello_OBJECTS = $(am_ceph_test_cls_hello_OBJECTS)
-ceph_test_cls_hello_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_hello_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_hello_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_hello_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_lock_OBJECTS =  \
-	test/cls_lock/ceph_test_cls_lock-test_cls_lock.$(OBJEXT)
+am__ceph_test_cls_lock_SOURCES_DIST = test/cls_lock/test_cls_lock.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_lock_OBJECTS = test/cls_lock/ceph_test_cls_lock-test_cls_lock.$(OBJEXT)
 ceph_test_cls_lock_OBJECTS = $(am_ceph_test_cls_lock_OBJECTS)
-ceph_test_cls_lock_DEPENDENCIES = $(LIBRADOS) libcls_lock_client.la \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_lock_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_lock_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_lock_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_log_OBJECTS =  \
-	test/cls_log/ceph_test_cls_log-test_cls_log.$(OBJEXT)
+am__ceph_test_cls_log_SOURCES_DIST = test/cls_log/test_cls_log.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_log_OBJECTS = test/cls_log/ceph_test_cls_log-test_cls_log.$(OBJEXT)
 ceph_test_cls_log_OBJECTS = $(am_ceph_test_cls_log_OBJECTS)
-ceph_test_cls_log_DEPENDENCIES = $(LIBRADOS) libcls_log_client.a \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_log_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_log_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_log_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_rbd_OBJECTS =  \
-	test/cls_rbd/ceph_test_cls_rbd-test_cls_rbd.$(OBJEXT)
+am__ceph_test_cls_rbd_SOURCES_DIST = test/cls_rbd/test_cls_rbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_rbd_OBJECTS = test/cls_rbd/ceph_test_cls_rbd-test_cls_rbd.$(OBJEXT)
 ceph_test_cls_rbd_OBJECTS = $(am_ceph_test_cls_rbd_OBJECTS)
-ceph_test_cls_rbd_DEPENDENCIES = $(LIBRADOS) libcls_rbd_client.la \
-	libcls_lock_client.la $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rbd_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_rbd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_rbd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_refcount_OBJECTS = test/cls_refcount/ceph_test_cls_refcount-test_cls_refcount.$(OBJEXT)
+am__ceph_test_cls_refcount_SOURCES_DIST =  \
+	test/cls_refcount/test_cls_refcount.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_refcount_OBJECTS = test/cls_refcount/ceph_test_cls_refcount-test_cls_refcount.$(OBJEXT)
 ceph_test_cls_refcount_OBJECTS = $(am_ceph_test_cls_refcount_OBJECTS)
-ceph_test_cls_refcount_DEPENDENCIES = $(LIBRADOS) \
-	libcls_refcount_client.la $(am__DEPENDENCIES_14) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_refcount_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_refcount_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_refcount_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_replica_log_OBJECTS = test/cls_replica_log/ceph_test_cls_replica_log-test_cls_replica_log.$(OBJEXT)
+am__ceph_test_cls_replica_log_SOURCES_DIST =  \
+	test/cls_replica_log/test_cls_replica_log.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_replica_log_OBJECTS = test/cls_replica_log/ceph_test_cls_replica_log-test_cls_replica_log.$(OBJEXT)
 ceph_test_cls_replica_log_OBJECTS =  \
 	$(am_ceph_test_cls_replica_log_OBJECTS)
-ceph_test_cls_replica_log_DEPENDENCIES = $(LIBRADOS) \
-	libcls_replica_log_client.a $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_replica_log_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_replica_log_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_replica_log_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 am__ceph_test_cls_rgw_SOURCES_DIST = test/cls_rgw/test_cls_rgw.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_cls_rgw_OBJECTS = test/cls_rgw/ceph_test_cls_rgw-test_cls_rgw.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_rgw_OBJECTS = test/cls_rgw/ceph_test_cls_rgw-test_cls_rgw.$(OBJEXT)
 ceph_test_cls_rgw_OBJECTS = $(am_ceph_test_cls_rgw_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_DEPENDENCIES = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1) libcls_rgw_client.la \
- at WITH_RADOSGW_TRUE@	$(LIBCOMMON) $(am__DEPENDENCIES_14) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_rgw_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_rgw_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_cls_rgw_log_SOURCES_DIST = test/test_rgw_admin_log.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_cls_rgw_log_OBJECTS = test/ceph_test_cls_rgw_log-test_rgw_admin_log.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_rgw_log_OBJECTS = test/ceph_test_cls_rgw_log-test_rgw_admin_log.$(OBJEXT)
 ceph_test_cls_rgw_log_OBJECTS = $(am_ceph_test_cls_rgw_log_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_log_DEPENDENCIES = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a \
- at WITH_RADOSGW_TRUE@	libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a \
- at WITH_RADOSGW_TRUE@	libcls_lock_client.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_log_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_user_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la
 ceph_test_cls_rgw_log_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_rgw_log_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_cls_rgw_meta_SOURCES_DIST = test/test_rgw_admin_meta.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_cls_rgw_meta_OBJECTS = test/ceph_test_cls_rgw_meta-test_rgw_admin_meta.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_rgw_meta_OBJECTS = test/ceph_test_cls_rgw_meta-test_rgw_admin_meta.$(OBJEXT)
 ceph_test_cls_rgw_meta_OBJECTS = $(am_ceph_test_cls_rgw_meta_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_meta_DEPENDENCIES = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a \
- at WITH_RADOSGW_TRUE@	libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a \
- at WITH_RADOSGW_TRUE@	libcls_lock_client.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_meta_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_user_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la
 ceph_test_cls_rgw_meta_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_rgw_meta_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_cls_rgw_opstate_SOURCES_DIST =  \
 	test/test_rgw_admin_opstate.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_cls_rgw_opstate_OBJECTS = test/ceph_test_cls_rgw_opstate-test_rgw_admin_opstate.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_rgw_opstate_OBJECTS = test/ceph_test_cls_rgw_opstate-test_rgw_admin_opstate.$(OBJEXT)
 ceph_test_cls_rgw_opstate_OBJECTS =  \
 	$(am_ceph_test_cls_rgw_opstate_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_opstate_DEPENDENCIES =  \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a \
- at WITH_RADOSGW_TRUE@	libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a \
- at WITH_RADOSGW_TRUE@	libcls_lock_client.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_opstate_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_user_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la
 ceph_test_cls_rgw_opstate_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_rgw_opstate_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_cls_statelog_OBJECTS = test/cls_statelog/ceph_test_cls_statelog-test_cls_statelog.$(OBJEXT)
+am__ceph_test_cls_statelog_SOURCES_DIST =  \
+	test/cls_statelog/test_cls_statelog.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_statelog_OBJECTS = test/cls_statelog/ceph_test_cls_statelog-test_cls_statelog.$(OBJEXT)
 ceph_test_cls_statelog_OBJECTS = $(am_ceph_test_cls_statelog_OBJECTS)
-ceph_test_cls_statelog_DEPENDENCIES = $(LIBRADOS) \
-	libcls_statelog_client.a $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_statelog_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_statelog_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_statelog_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_cls_version_OBJECTS = test/cls_version/ceph_test_cls_version-test_cls_version.$(OBJEXT)
+am__ceph_test_cls_version_SOURCES_DIST =  \
+	test/cls_version/test_cls_version.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cls_version_OBJECTS = test/cls_version/ceph_test_cls_version-test_cls_version.$(OBJEXT)
 ceph_test_cls_version_OBJECTS = $(am_ceph_test_cls_version_OBJECTS)
-ceph_test_cls_version_DEPENDENCIES = $(LIBRADOS) \
-	libcls_version_client.a $(am__DEPENDENCIES_14) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_version_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_cls_version_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cls_version_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_cors_SOURCES_DIST = test/test_cors.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_cors_OBJECTS =  \
- at WITH_RADOSGW_TRUE@	test/ceph_test_cors-test_cors.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_cors_OBJECTS = test/ceph_test_cors-test_cors.$(OBJEXT)
 ceph_test_cors_OBJECTS = $(am_ceph_test_cors_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_cors_DEPENDENCIES = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cors_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 ceph_test_cors_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_cors_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_ceph_test_crypto_OBJECTS = test/testcrypto.$(OBJEXT)
 ceph_test_crypto_OBJECTS = $(am_ceph_test_crypto_OBJECTS)
-ceph_test_crypto_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_ceph_test_filejournal_OBJECTS =  \
-	test/ceph_test_filejournal-test_filejournal.$(OBJEXT)
+ceph_test_crypto_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__ceph_test_filejournal_SOURCES_DIST = test/test_filejournal.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_filejournal_OBJECTS = test/ceph_test_filejournal-test_filejournal.$(OBJEXT)
 ceph_test_filejournal_OBJECTS = $(am_ceph_test_filejournal_OBJECTS)
-ceph_test_filejournal_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_filejournal_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_filejournal_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_filejournal_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_filestore_SOURCES_DIST =  \
 	test/filestore/TestFileStore.cc
- at LINUX_TRUE@am_ceph_test_filestore_OBJECTS = test/filestore/ceph_test_filestore-TestFileStore.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am_ceph_test_filestore_OBJECTS = test/filestore/ceph_test_filestore-TestFileStore.$(OBJEXT)
 ceph_test_filestore_OBJECTS = $(am_ceph_test_filestore_OBJECTS)
- at LINUX_TRUE@ceph_test_filestore_DEPENDENCIES = $(am__DEPENDENCIES_5) \
- at LINUX_TRUE@	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_filestore_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_filestore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_filestore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_filestore_idempotent_OBJECTS =  \
-	test/objectstore/test_idempotent.$(OBJEXT) \
-	test/objectstore/FileStoreTracker.$(OBJEXT) \
-	test/common/ObjectContents.$(OBJEXT)
+am__ceph_test_filestore_idempotent_SOURCES_DIST =  \
+	test/objectstore/test_idempotent.cc \
+	test/objectstore/FileStoreTracker.cc \
+	test/common/ObjectContents.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_filestore_idempotent_OBJECTS = test/objectstore/test_idempotent.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/objectstore/FileStoreTracker.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/common/ObjectContents.$(OBJEXT)
 ceph_test_filestore_idempotent_OBJECTS =  \
 	$(am_ceph_test_filestore_idempotent_OBJECTS)
-ceph_test_filestore_idempotent_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9)
-am_ceph_test_filestore_idempotent_sequence_OBJECTS =  \
-	test/objectstore/test_idempotent_sequence.$(OBJEXT) \
-	test/objectstore/DeterministicOpSequence.$(OBJEXT) \
-	test/objectstore/TestObjectStoreState.$(OBJEXT) \
-	test/objectstore/FileStoreDiff.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_filestore_idempotent_sequence_SOURCES_DIST =  \
+	test/objectstore/test_idempotent_sequence.cc \
+	test/objectstore/DeterministicOpSequence.cc \
+	test/objectstore/TestObjectStoreState.cc \
+	test/objectstore/FileStoreDiff.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_filestore_idempotent_sequence_OBJECTS = test/objectstore/test_idempotent_sequence.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/objectstore/DeterministicOpSequence.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/objectstore/TestObjectStoreState.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/objectstore/FileStoreDiff.$(OBJEXT)
 ceph_test_filestore_idempotent_sequence_OBJECTS =  \
 	$(am_ceph_test_filestore_idempotent_sequence_OBJECTS)
-ceph_test_filestore_idempotent_sequence_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_sequence_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 am_ceph_test_get_blkdev_size_OBJECTS =  \
 	test/test_get_blkdev_size.$(OBJEXT)
 ceph_test_get_blkdev_size_OBJECTS =  \
 	$(am_ceph_test_get_blkdev_size_OBJECTS)
 ceph_test_get_blkdev_size_DEPENDENCIES = $(LIBCOMMON)
-am_ceph_test_ioctls_OBJECTS = client/test_ioctls.$(OBJEXT)
+am__ceph_test_ioctls_SOURCES_DIST = client/test_ioctls.c
+ at ENABLE_CLIENT_TRUE@am_ceph_test_ioctls_OBJECTS =  \
+ at ENABLE_CLIENT_TRUE@	client/test_ioctls.$(OBJEXT)
 ceph_test_ioctls_OBJECTS = $(am_ceph_test_ioctls_OBJECTS)
 ceph_test_ioctls_LDADD = $(LDADD)
-am_ceph_test_keys_OBJECTS = test/testkeys.$(OBJEXT)
+am__ceph_test_keys_SOURCES_DIST = test/testkeys.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_ceph_test_keys_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	test/testkeys.$(OBJEXT)
 ceph_test_keys_OBJECTS = $(am_ceph_test_keys_OBJECTS)
-ceph_test_keys_DEPENDENCIES = $(am__DEPENDENCIES_12) \
-	$(am__DEPENDENCIES_9)
-am_ceph_test_keyvaluedb_atomicity_OBJECTS = test/ObjectMap/ceph_test_keyvaluedb_atomicity-test_keyvaluedb_atomicity.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_test_keys_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_13) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_keyvaluedb_atomicity_SOURCES_DIST =  \
+	test/ObjectMap/test_keyvaluedb_atomicity.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_keyvaluedb_atomicity_OBJECTS = test/ObjectMap/ceph_test_keyvaluedb_atomicity-test_keyvaluedb_atomicity.$(OBJEXT)
 ceph_test_keyvaluedb_atomicity_OBJECTS =  \
 	$(am_ceph_test_keyvaluedb_atomicity_OBJECTS)
-ceph_test_keyvaluedb_atomicity_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_atomicity_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_keyvaluedb_atomicity_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_keyvaluedb_atomicity_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_keyvaluedb_iterators_OBJECTS = test/ObjectMap/ceph_test_keyvaluedb_iterators-test_keyvaluedb_iterators.$(OBJEXT) \
-	test/ObjectMap/ceph_test_keyvaluedb_iterators-KeyValueDBMemory.$(OBJEXT)
+am__ceph_test_keyvaluedb_iterators_SOURCES_DIST =  \
+	test/ObjectMap/test_keyvaluedb_iterators.cc \
+	test/ObjectMap/KeyValueDBMemory.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_keyvaluedb_iterators_OBJECTS = test/ObjectMap/ceph_test_keyvaluedb_iterators-test_keyvaluedb_iterators.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/ceph_test_keyvaluedb_iterators-KeyValueDBMemory.$(OBJEXT)
 ceph_test_keyvaluedb_iterators_OBJECTS =  \
 	$(am_ceph_test_keyvaluedb_iterators_OBJECTS)
-ceph_test_keyvaluedb_iterators_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_iterators_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_keyvaluedb_iterators_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_keyvaluedb_iterators_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_libcephfs_OBJECTS =  \
-	test/libcephfs/ceph_test_libcephfs-test.$(OBJEXT) \
-	test/libcephfs/ceph_test_libcephfs-readdir_r_cb.$(OBJEXT) \
-	test/libcephfs/ceph_test_libcephfs-caps.$(OBJEXT) \
-	test/libcephfs/ceph_test_libcephfs-multiclient.$(OBJEXT)
+am__ceph_test_libcephfs_SOURCES_DIST = test/libcephfs/test.cc \
+	test/libcephfs/readdir_r_cb.cc test/libcephfs/caps.cc \
+	test/libcephfs/multiclient.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_ceph_test_libcephfs_OBJECTS = test/libcephfs/ceph_test_libcephfs-test.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/ceph_test_libcephfs-readdir_r_cb.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/ceph_test_libcephfs-caps.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/ceph_test_libcephfs-multiclient.$(OBJEXT)
 ceph_test_libcephfs_OBJECTS = $(am_ceph_test_libcephfs_OBJECTS)
-ceph_test_libcephfs_DEPENDENCIES = $(LIBCEPHFS) $(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_libcephfs_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 ceph_test_libcephfs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_libcephfs_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_ceph_test_librbd_OBJECTS =
 ceph_test_librbd_OBJECTS = $(am_ceph_test_librbd_OBJECTS)
-ceph_test_librbd_DEPENDENCIES = librbd_test.la librbd_api.la \
-	librbd_internal.la $(LIBRBD_TYPES) libcls_rbd_client.la \
-	libcls_lock_client.la librados_api.la $(am__DEPENDENCIES_7) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(RADOS_TEST_LDADD) $(am__append_114)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_DEPENDENCIES = librbd_test.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_8) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(RADOS_TEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_154)
 ceph_test_librbd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_librbd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__ceph_test_librbd_fsx_SOURCES_DIST = test/librbd/fsx.c \
 	common/dummy.cc
- at LINUX_TRUE@am_ceph_test_librbd_fsx_OBJECTS =  \
- at LINUX_TRUE@	test/librbd/ceph_test_librbd_fsx-fsx.$(OBJEXT) \
- at LINUX_TRUE@	common/dummy.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_ceph_test_librbd_fsx_OBJECTS = test/librbd/ceph_test_librbd_fsx-fsx.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	common/dummy.$(OBJEXT)
 ceph_test_librbd_fsx_OBJECTS = $(am_ceph_test_librbd_fsx_OBJECTS)
- at LINUX_TRUE@ceph_test_librbd_fsx_DEPENDENCIES = $(LIBKRBD) $(LIBRBD) \
- at LINUX_TRUE@	$(LIBRADOS) $(am__DEPENDENCIES_1) \
- at LINUX_TRUE@	$(am__DEPENDENCIES_1)
-am_ceph_test_mon_msg_OBJECTS =  \
-	test/mon/ceph_test_mon_msg-test-mon-msg.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_fsx_DEPENDENCIES = $(LIBKRBD) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_test_mon_msg_SOURCES_DIST = test/mon/test-mon-msg.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_mon_msg_OBJECTS = test/mon/ceph_test_mon_msg-test-mon-msg.$(OBJEXT)
 ceph_test_mon_msg_OBJECTS = $(am_ceph_test_mon_msg_OBJECTS)
-ceph_test_mon_msg_DEPENDENCIES = $(am__DEPENDENCIES_5) $(LIBOSDC) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_14)
+ at ENABLE_SERVER_TRUE@ceph_test_mon_msg_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) $(LIBOSDC) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15)
 ceph_test_mon_msg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_mon_msg_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_mon_workloadgen_OBJECTS =  \
-	test/mon/test_mon_workloadgen.$(OBJEXT)
+am__ceph_test_mon_workloadgen_SOURCES_DIST =  \
+	test/mon/test_mon_workloadgen.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_mon_workloadgen_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	test/mon/test_mon_workloadgen.$(OBJEXT)
 ceph_test_mon_workloadgen_OBJECTS =  \
 	$(am_ceph_test_mon_workloadgen_OBJECTS)
-ceph_test_mon_workloadgen_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(LIBOSDC) $(am__DEPENDENCIES_9)
-am_ceph_test_msgr_OBJECTS =  \
-	test/msgr/ceph_test_msgr-test_msgr.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_test_mon_workloadgen_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) $(LIBOSDC) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_msgr_SOURCES_DIST = test/msgr/test_msgr.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_msgr_OBJECTS = test/msgr/ceph_test_msgr-test_msgr.$(OBJEXT)
 ceph_test_msgr_OBJECTS = $(am_ceph_test_msgr_OBJECTS)
-ceph_test_msgr_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_msgr_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_msgr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_msgr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_mutate_OBJECTS = test/test_mutate.$(OBJEXT)
+am__ceph_test_mutate_SOURCES_DIST = test/test_mutate.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_mutate_OBJECTS = test/test_mutate.$(OBJEXT)
 ceph_test_mutate_OBJECTS = $(am_ceph_test_mutate_OBJECTS)
-ceph_test_mutate_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
-am_ceph_test_object_map_OBJECTS =  \
-	test/ObjectMap/ceph_test_object_map-test_object_map.$(OBJEXT) \
-	test/ObjectMap/ceph_test_object_map-KeyValueDBMemory.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_mutate_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_object_map_SOURCES_DIST =  \
+	test/ObjectMap/test_object_map.cc \
+	test/ObjectMap/KeyValueDBMemory.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_object_map_OBJECTS = test/ObjectMap/ceph_test_object_map-test_object_map.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/ceph_test_object_map-KeyValueDBMemory.$(OBJEXT)
 ceph_test_object_map_OBJECTS = $(am_ceph_test_object_map_OBJECTS)
-ceph_test_object_map_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_test_object_map_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_object_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_object_map_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2356,175 +3435,224 @@ am_ceph_test_objectcacher_stress_OBJECTS =  \
 ceph_test_objectcacher_stress_OBJECTS =  \
 	$(am_ceph_test_objectcacher_stress_OBJECTS)
 ceph_test_objectcacher_stress_DEPENDENCIES = $(LIBOSDC) \
-	$(am__DEPENDENCIES_9)
+	$(am__DEPENDENCIES_10)
 am__ceph_test_objectstore_SOURCES_DIST =  \
 	test/objectstore/store_test.cc
- at LINUX_TRUE@am_ceph_test_objectstore_OBJECTS = test/objectstore/ceph_test_objectstore-store_test.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at am_ceph_test_objectstore_OBJECTS = test/objectstore/ceph_test_objectstore-store_test.$(OBJEXT)
 ceph_test_objectstore_OBJECTS = $(am_ceph_test_objectstore_OBJECTS)
- at LINUX_TRUE@ceph_test_objectstore_DEPENDENCIES =  \
- at LINUX_TRUE@	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_14) \
- at LINUX_TRUE@	$(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_objectstore_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_objectstore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_objectstore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_objectstore_workloadgen_OBJECTS =  \
-	test/objectstore/workload_generator.$(OBJEXT) \
-	test/objectstore/TestObjectStoreState.$(OBJEXT)
+am__ceph_test_objectstore_workloadgen_SOURCES_DIST =  \
+	test/objectstore/workload_generator.cc \
+	test/objectstore/TestObjectStoreState.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_objectstore_workloadgen_OBJECTS = test/objectstore/workload_generator.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@	test/objectstore/TestObjectStoreState.$(OBJEXT)
 ceph_test_objectstore_workloadgen_OBJECTS =  \
 	$(am_ceph_test_objectstore_workloadgen_OBJECTS)
-ceph_test_objectstore_workloadgen_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9)
-am_ceph_test_rados_OBJECTS = test/osd/TestRados.$(OBJEXT) \
-	test/osd/TestOpStat.$(OBJEXT) test/osd/Object.$(OBJEXT) \
-	test/osd/RadosModel.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_test_objectstore_workloadgen_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_rados_SOURCES_DIST = test/osd/TestRados.cc \
+	test/osd/TestOpStat.cc test/osd/Object.cc \
+	test/osd/RadosModel.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_OBJECTS = test/osd/TestRados.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/TestOpStat.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/Object.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/RadosModel.$(OBJEXT)
 ceph_test_rados_OBJECTS = $(am_ceph_test_rados_OBJECTS)
-ceph_test_rados_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
-am_ceph_test_rados_api_aio_OBJECTS =  \
-	test/librados/ceph_test_rados_api_aio-aio.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_test_rados_api_aio_SOURCES_DIST = test/librados/aio.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_aio_OBJECTS = test/librados/ceph_test_rados_api_aio-aio.$(OBJEXT)
 ceph_test_rados_api_aio_OBJECTS =  \
 	$(am_ceph_test_rados_api_aio_OBJECTS)
-ceph_test_rados_api_aio_DEPENDENCIES = $(LIBRADOS) $(LIBCOMMON) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_aio_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_aio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_aio_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_c_read_operations_OBJECTS = test/librados/ceph_test_rados_api_c_read_operations-c_read_operations.$(OBJEXT)
+am__ceph_test_rados_api_c_read_operations_SOURCES_DIST =  \
+	test/librados/c_read_operations.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_c_read_operations_OBJECTS = test/librados/ceph_test_rados_api_c_read_operations-c_read_operations.$(OBJEXT)
 ceph_test_rados_api_c_read_operations_OBJECTS =  \
 	$(am_ceph_test_rados_api_c_read_operations_OBJECTS)
-ceph_test_rados_api_c_read_operations_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_read_operations_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_c_read_operations_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(ceph_test_rados_api_c_read_operations_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_api_c_write_operations_OBJECTS = test/librados/ceph_test_rados_api_c_write_operations-c_write_operations.$(OBJEXT)
+am__ceph_test_rados_api_c_write_operations_SOURCES_DIST =  \
+	test/librados/c_write_operations.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_c_write_operations_OBJECTS = test/librados/ceph_test_rados_api_c_write_operations-c_write_operations.$(OBJEXT)
 ceph_test_rados_api_c_write_operations_OBJECTS =  \
 	$(am_ceph_test_rados_api_c_write_operations_OBJECTS)
-ceph_test_rados_api_c_write_operations_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_write_operations_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_c_write_operations_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(ceph_test_rados_api_c_write_operations_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_api_cls_OBJECTS =  \
-	test/librados/ceph_test_rados_api_cls-cls.$(OBJEXT)
+am__ceph_test_rados_api_cls_SOURCES_DIST = test/librados/cls.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_cls_OBJECTS = test/librados/ceph_test_rados_api_cls-cls.$(OBJEXT)
 ceph_test_rados_api_cls_OBJECTS =  \
 	$(am_ceph_test_rados_api_cls_OBJECTS)
-ceph_test_rados_api_cls_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cls_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_cls_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_cls_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_cmd_OBJECTS =  \
-	test/librados/ceph_test_rados_api_cmd-cmd.$(OBJEXT)
+am__ceph_test_rados_api_cmd_SOURCES_DIST = test/librados/cmd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_cmd_OBJECTS = test/librados/ceph_test_rados_api_cmd-cmd.$(OBJEXT)
 ceph_test_rados_api_cmd_OBJECTS =  \
 	$(am_ceph_test_rados_api_cmd_OBJECTS)
-ceph_test_rados_api_cmd_DEPENDENCIES = $(LIBCOMMON) $(LIBRADOS) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_14) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cmd_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_cmd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_cmd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_io_OBJECTS =  \
-	test/librados/ceph_test_rados_api_io-io.$(OBJEXT)
+am__ceph_test_rados_api_io_SOURCES_DIST = test/librados/io.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_io_OBJECTS = test/librados/ceph_test_rados_api_io-io.$(OBJEXT)
 ceph_test_rados_api_io_OBJECTS = $(am_ceph_test_rados_api_io_OBJECTS)
-ceph_test_rados_api_io_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_io_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_io_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_io_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_list_OBJECTS =  \
-	test/librados/ceph_test_rados_api_list-list.$(OBJEXT)
+am__ceph_test_rados_api_list_SOURCES_DIST = test/librados/list.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_list_OBJECTS = test/librados/ceph_test_rados_api_list-list.$(OBJEXT)
 ceph_test_rados_api_list_OBJECTS =  \
 	$(am_ceph_test_rados_api_list_OBJECTS)
-ceph_test_rados_api_list_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_list_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_list_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_lock_OBJECTS =  \
-	test/librados/ceph_test_rados_api_lock-lock.$(OBJEXT)
+am__ceph_test_rados_api_lock_SOURCES_DIST = test/librados/lock.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_lock_OBJECTS = test/librados/ceph_test_rados_api_lock-lock.$(OBJEXT)
 ceph_test_rados_api_lock_OBJECTS =  \
 	$(am_ceph_test_rados_api_lock_OBJECTS)
-ceph_test_rados_api_lock_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_lock_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_lock_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_lock_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_misc_OBJECTS =  \
-	test/librados/ceph_test_rados_api_misc-misc.$(OBJEXT)
+am__ceph_test_rados_api_misc_SOURCES_DIST = test/librados/misc.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_misc_OBJECTS = test/librados/ceph_test_rados_api_misc-misc.$(OBJEXT)
 ceph_test_rados_api_misc_OBJECTS =  \
 	$(am_ceph_test_rados_api_misc_OBJECTS)
-ceph_test_rados_api_misc_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_misc_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_misc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_misc_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_nlist_OBJECTS =  \
-	test/librados/ceph_test_rados_api_nlist-nlist.$(OBJEXT)
+am__ceph_test_rados_api_nlist_SOURCES_DIST = test/librados/nlist.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_nlist_OBJECTS = test/librados/ceph_test_rados_api_nlist-nlist.$(OBJEXT)
 ceph_test_rados_api_nlist_OBJECTS =  \
 	$(am_ceph_test_rados_api_nlist_OBJECTS)
-ceph_test_rados_api_nlist_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_nlist_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_nlist_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_nlist_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_api_pool_OBJECTS =  \
-	test/librados/ceph_test_rados_api_pool-pool.$(OBJEXT)
+am__ceph_test_rados_api_pool_SOURCES_DIST = test/librados/pool.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_pool_OBJECTS = test/librados/ceph_test_rados_api_pool-pool.$(OBJEXT)
 ceph_test_rados_api_pool_OBJECTS =  \
 	$(am_ceph_test_rados_api_pool_OBJECTS)
-ceph_test_rados_api_pool_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_pool_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_pool_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_pool_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_snapshots_OBJECTS = test/librados/ceph_test_rados_api_snapshots-snapshots.$(OBJEXT)
+am__ceph_test_rados_api_snapshots_SOURCES_DIST =  \
+	test/librados/snapshots.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_snapshots_OBJECTS = test/librados/ceph_test_rados_api_snapshots-snapshots.$(OBJEXT)
 ceph_test_rados_api_snapshots_OBJECTS =  \
 	$(am_ceph_test_rados_api_snapshots_OBJECTS)
-ceph_test_rados_api_snapshots_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_snapshots_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_snapshots_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_snapshots_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_api_stat_OBJECTS =  \
-	test/librados/ceph_test_rados_api_stat-stat.$(OBJEXT)
+am__ceph_test_rados_api_stat_SOURCES_DIST = test/librados/stat.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_stat_OBJECTS = test/librados/ceph_test_rados_api_stat-stat.$(OBJEXT)
 ceph_test_rados_api_stat_OBJECTS =  \
 	$(am_ceph_test_rados_api_stat_OBJECTS)
-ceph_test_rados_api_stat_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_stat_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_stat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_stat_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_tier_OBJECTS =  \
-	test/librados/ceph_test_rados_api_tier-tier.$(OBJEXT) \
-	osd/ceph_test_rados_api_tier-HitSet.$(OBJEXT)
+am__ceph_test_rados_api_tier_SOURCES_DIST = test/librados/tier.cc \
+	osd/HitSet.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_tier_OBJECTS = test/librados/ceph_test_rados_api_tier-tier.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	osd/ceph_test_rados_api_tier-HitSet.$(OBJEXT)
 ceph_test_rados_api_tier_OBJECTS =  \
 	$(am_ceph_test_rados_api_tier_OBJECTS)
-ceph_test_rados_api_tier_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_tier_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_tier_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_api_tier_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_rados_api_watch_notify_OBJECTS = test/librados/ceph_test_rados_api_watch_notify-watch_notify.$(OBJEXT)
+am__ceph_test_rados_api_watch_notify_SOURCES_DIST =  \
+	test/librados/watch_notify.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_api_watch_notify_OBJECTS = test/librados/ceph_test_rados_api_watch_notify-watch_notify.$(OBJEXT)
 ceph_test_rados_api_watch_notify_OBJECTS =  \
 	$(am_ceph_test_rados_api_watch_notify_OBJECTS)
-ceph_test_rados_api_watch_notify_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_watch_notify_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_rados_api_watch_notify_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(ceph_test_rados_api_watch_notify_CXXFLAGS) \
@@ -2534,63 +3662,76 @@ am__ceph_test_rados_delete_pools_parallel_SOURCES_DIST =  \
 	test/system/st_rados_create_pool.cc \
 	test/system/st_rados_delete_pool.cc \
 	test/system/st_rados_list_objects.cc
- at LINUX_TRUE@am_ceph_test_rados_delete_pools_parallel_OBJECTS =  \
- at LINUX_TRUE@	test/system/rados_delete_pools_parallel.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_delete_pool.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_list_objects.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_delete_pools_parallel_OBJECTS = test/system/rados_delete_pools_parallel.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_pool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_list_objects.$(OBJEXT)
 ceph_test_rados_delete_pools_parallel_OBJECTS =  \
 	$(am_ceph_test_rados_delete_pools_parallel_OBJECTS)
- at LINUX_TRUE@ceph_test_rados_delete_pools_parallel_DEPENDENCIES =  \
- at LINUX_TRUE@	$(LIBRADOS) libsystest.la $(am__DEPENDENCIES_1)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_delete_pools_parallel_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	libsystest.la \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1)
 am__ceph_test_rados_list_parallel_SOURCES_DIST =  \
 	test/system/rados_list_parallel.cc \
 	test/system/st_rados_create_pool.cc \
 	test/system/st_rados_list_objects.cc
- at LINUX_TRUE@am_ceph_test_rados_list_parallel_OBJECTS =  \
- at LINUX_TRUE@	test/system/rados_list_parallel.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_list_objects.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_list_parallel_OBJECTS = test/system/rados_list_parallel.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_list_objects.$(OBJEXT)
 ceph_test_rados_list_parallel_OBJECTS =  \
 	$(am_ceph_test_rados_list_parallel_OBJECTS)
- at LINUX_TRUE@ceph_test_rados_list_parallel_DEPENDENCIES = $(LIBRADOS) \
- at LINUX_TRUE@	libsystest.la $(am__DEPENDENCIES_1)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_list_parallel_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	libsystest.la \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1)
 am__ceph_test_rados_open_pools_parallel_SOURCES_DIST =  \
 	test/system/rados_open_pools_parallel.cc \
 	test/system/st_rados_create_pool.cc
- at LINUX_TRUE@am_ceph_test_rados_open_pools_parallel_OBJECTS =  \
- at LINUX_TRUE@	test/system/rados_open_pools_parallel.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_create_pool.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_open_pools_parallel_OBJECTS = test/system/rados_open_pools_parallel.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.$(OBJEXT)
 ceph_test_rados_open_pools_parallel_OBJECTS =  \
 	$(am_ceph_test_rados_open_pools_parallel_OBJECTS)
- at LINUX_TRUE@ceph_test_rados_open_pools_parallel_DEPENDENCIES =  \
- at LINUX_TRUE@	$(LIBRADOS) libsystest.la $(am__DEPENDENCIES_1)
-am_ceph_test_rados_striper_api_aio_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_aio-aio.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_open_pools_parallel_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	libsystest.la \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1)
+am__ceph_test_rados_striper_api_aio_SOURCES_DIST =  \
+	test/libradosstriper/aio.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_striper_api_aio_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_aio-aio.$(OBJEXT)
 ceph_test_rados_striper_api_aio_OBJECTS =  \
 	$(am_ceph_test_rados_striper_api_aio_OBJECTS)
-ceph_test_rados_striper_api_aio_DEPENDENCIES = $(LIBRADOS) \
-	$(LIBRADOSSTRIPER) $(am__DEPENDENCIES_14) \
-	$(RADOS_STRIPER_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_aio_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOSSTRIPER) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(RADOS_STRIPER_TEST_LDADD)
 ceph_test_rados_striper_api_aio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_striper_api_aio_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_striper_api_io_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_io-io.$(OBJEXT)
+am__ceph_test_rados_striper_api_io_SOURCES_DIST =  \
+	test/libradosstriper/io.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_striper_api_io_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_io-io.$(OBJEXT)
 ceph_test_rados_striper_api_io_OBJECTS =  \
 	$(am_ceph_test_rados_striper_api_io_OBJECTS)
-ceph_test_rados_striper_api_io_DEPENDENCIES = $(LIBRADOS) \
-	$(LIBRADOSSTRIPER) $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(RADOS_STRIPER_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_io_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOSSTRIPER) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(RADOS_STRIPER_TEST_LDADD)
 ceph_test_rados_striper_api_io_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rados_striper_api_io_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_ceph_test_rados_striper_api_striping_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_striping-striping.$(OBJEXT)
+am__ceph_test_rados_striper_api_striping_SOURCES_DIST =  \
+	test/libradosstriper/striping.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_striper_api_striping_OBJECTS = test/libradosstriper/ceph_test_rados_striper_api_striping-striping.$(OBJEXT)
 ceph_test_rados_striper_api_striping_OBJECTS =  \
 	$(am_ceph_test_rados_striper_api_striping_OBJECTS)
-ceph_test_rados_striper_api_striping_DEPENDENCIES = $(LIBRADOS) \
-	$(LIBRADOSSTRIPER) $(am__DEPENDENCIES_14) \
-	$(RADOS_STRIPER_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_striping_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOSSTRIPER) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(RADOS_STRIPER_TEST_LDADD)
 ceph_test_rados_striper_api_striping_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(ceph_test_rados_striper_api_striping_CXXFLAGS) \
@@ -2601,17 +3742,18 @@ am__ceph_test_rados_watch_notify_SOURCES_DIST =  \
 	test/system/st_rados_delete_pool.cc \
 	test/system/st_rados_delete_objs.cc \
 	test/system/st_rados_watch.cc test/system/st_rados_notify.cc
- at LINUX_TRUE@am_ceph_test_rados_watch_notify_OBJECTS =  \
- at LINUX_TRUE@	test/system/rados_watch_notify.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_delete_pool.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_delete_objs.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_watch.$(OBJEXT) \
- at LINUX_TRUE@	test/system/st_rados_notify.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rados_watch_notify_OBJECTS = test/system/rados_watch_notify.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_pool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_objs.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_watch.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_notify.$(OBJEXT)
 ceph_test_rados_watch_notify_OBJECTS =  \
 	$(am_ceph_test_rados_watch_notify_OBJECTS)
- at LINUX_TRUE@ceph_test_rados_watch_notify_DEPENDENCIES = $(LIBRADOS) \
- at LINUX_TRUE@	libsystest.la $(am__DEPENDENCIES_1)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_watch_notify_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	libsystest.la \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1)
 am_ceph_test_rewrite_latency_OBJECTS =  \
 	test/test_rewrite_latency.$(OBJEXT)
 ceph_test_rewrite_latency_OBJECTS =  \
@@ -2621,14 +3763,14 @@ ceph_test_rewrite_latency_DEPENDENCIES = $(LIBCOMMON) \
 	$(am__DEPENDENCIES_2)
 am__ceph_test_rgw_manifest_SOURCES_DIST =  \
 	test/rgw/test_rgw_manifest.cc
- at WITH_RADOSGW_TRUE@am_ceph_test_rgw_manifest_OBJECTS = test/rgw/ceph_test_rgw_manifest-test_rgw_manifest.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_ceph_test_rgw_manifest_OBJECTS = test/rgw/ceph_test_rgw_manifest-test_rgw_manifest.$(OBJEXT)
 ceph_test_rgw_manifest_OBJECTS = $(am_ceph_test_rgw_manifest_OBJECTS)
- at WITH_RADOSGW_TRUE@ceph_test_rgw_manifest_DEPENDENCIES = $(LIBRADOS) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_rgw_manifest_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1)
 ceph_test_rgw_manifest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_rgw_manifest_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2637,95 +3779,134 @@ am_ceph_test_signal_handlers_OBJECTS =  \
 	test/TestSignalHandlers.$(OBJEXT)
 ceph_test_signal_handlers_OBJECTS =  \
 	$(am_ceph_test_signal_handlers_OBJECTS)
-ceph_test_signal_handlers_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_ceph_test_snap_mapper_OBJECTS =  \
-	test/ceph_test_snap_mapper-test_snap_mapper.$(OBJEXT)
+ceph_test_signal_handlers_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__ceph_test_snap_mapper_SOURCES_DIST = test/test_snap_mapper.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_ceph_test_snap_mapper_OBJECTS = test/ceph_test_snap_mapper-test_snap_mapper.$(OBJEXT)
 ceph_test_snap_mapper_OBJECTS = $(am_ceph_test_snap_mapper_OBJECTS)
-ceph_test_snap_mapper_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_test_snap_mapper_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 ceph_test_snap_mapper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_snap_mapper_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_ceph_test_stress_watch_OBJECTS =  \
-	test/ceph_test_stress_watch-test_stress_watch.$(OBJEXT)
+am__ceph_test_stress_watch_SOURCES_DIST = test/test_stress_watch.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_ceph_test_stress_watch_OBJECTS = test/ceph_test_stress_watch-test_stress_watch.$(OBJEXT)
 ceph_test_stress_watch_OBJECTS = $(am_ceph_test_stress_watch_OBJECTS)
-ceph_test_stress_watch_DEPENDENCIES = $(LIBRADOS) $(LIBCOMMON) \
-	$(am__DEPENDENCIES_14) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_stress_watch_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(RADOS_TEST_LDADD)
 ceph_test_stress_watch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_test_stress_watch_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_ceph_test_timers_OBJECTS = test/TestTimers.$(OBJEXT)
 ceph_test_timers_OBJECTS = $(am_ceph_test_timers_OBJECTS)
-ceph_test_timers_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_ceph_test_trans_OBJECTS = test/test_trans.$(OBJEXT)
+ceph_test_timers_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__ceph_test_trans_SOURCES_DIST = test/test_trans.cc
+ at ENABLE_SERVER_TRUE@am_ceph_test_trans_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	test/test_trans.$(OBJEXT)
 ceph_test_trans_OBJECTS = $(am_ceph_test_trans_OBJECTS)
-ceph_test_trans_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_9)
-am_ceph_tpbench_OBJECTS = test/bench/tp_bench.$(OBJEXT) \
-	test/bench/detailed_stat_collector.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@ceph_test_trans_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_tpbench_SOURCES_DIST = test/bench/tp_bench.cc \
+	test/bench/detailed_stat_collector.cc
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at am_ceph_tpbench_OBJECTS = test/bench/tp_bench.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.$(OBJEXT)
 ceph_tpbench_OBJECTS = $(am_ceph_tpbench_OBJECTS)
-ceph_tpbench_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_9)
-am_ceph_xattr_bench_OBJECTS =  \
-	test/ceph_xattr_bench-xattr_bench.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_tpbench_DEPENDENCIES = $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__ceph_xattr_bench_SOURCES_DIST = test/xattr_bench.cc
+ at ENABLE_SERVER_TRUE@am_ceph_xattr_bench_OBJECTS = test/ceph_xattr_bench-xattr_bench.$(OBJEXT)
 ceph_xattr_bench_OBJECTS = $(am_ceph_xattr_bench_OBJECTS)
-ceph_xattr_bench_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@ceph_xattr_bench_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 ceph_xattr_bench_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(ceph_xattr_bench_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_cephfs_OBJECTS = cephfs.$(OBJEXT)
+am__cephfs_SOURCES_DIST = cephfs.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_cephfs_OBJECTS = cephfs.$(OBJEXT)
 cephfs_OBJECTS = $(am_cephfs_OBJECTS)
-cephfs_DEPENDENCIES = $(LIBCOMMON)
-am_cephfs_journal_tool_OBJECTS =  \
-	tools/cephfs/cephfs-journal-tool.$(OBJEXT) \
-	tools/cephfs/JournalTool.$(OBJEXT) \
-	tools/cephfs/JournalFilter.$(OBJEXT) \
-	tools/cephfs/JournalScanner.$(OBJEXT) \
-	tools/cephfs/EventOutput.$(OBJEXT) \
-	tools/cephfs/Dumper.$(OBJEXT) tools/cephfs/Resetter.$(OBJEXT) \
-	tools/cephfs/MDSUtility.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at cephfs_DEPENDENCIES = $(LIBCOMMON)
+am__cephfs_journal_tool_SOURCES_DIST =  \
+	tools/cephfs/cephfs-journal-tool.cc \
+	tools/cephfs/JournalTool.cc tools/cephfs/JournalFilter.cc \
+	tools/cephfs/JournalScanner.cc tools/cephfs/EventOutput.cc \
+	tools/cephfs/Dumper.cc tools/cephfs/Resetter.cc \
+	tools/cephfs/MDSUtility.cc
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at am_cephfs_journal_tool_OBJECTS = tools/cephfs/cephfs-journal-tool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalTool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalFilter.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalScanner.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/EventOutput.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/Dumper.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/Resetter.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/MDSUtility.$(OBJEXT)
 cephfs_journal_tool_OBJECTS = $(am_cephfs_journal_tool_OBJECTS)
-cephfs_journal_tool_DEPENDENCIES = $(am__DEPENDENCIES_11) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9)
-am_cephfs_table_tool_OBJECTS =  \
-	tools/cephfs/cephfs-table-tool.$(OBJEXT) \
-	tools/cephfs/TableTool.$(OBJEXT) \
-	tools/cephfs/MDSUtility.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_journal_tool_DEPENDENCIES = $(am__DEPENDENCIES_12) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__cephfs_table_tool_SOURCES_DIST =  \
+	tools/cephfs/cephfs-table-tool.cc tools/cephfs/TableTool.cc \
+	tools/cephfs/MDSUtility.cc
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at am_cephfs_table_tool_OBJECTS = tools/cephfs/cephfs-table-tool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/TableTool.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/MDSUtility.$(OBJEXT)
 cephfs_table_tool_OBJECTS = $(am_cephfs_table_tool_OBJECTS)
-cephfs_table_tool_DEPENDENCIES = $(am__DEPENDENCIES_11) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_table_tool_DEPENDENCIES = $(am__DEPENDENCIES_12) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am_crushtool_OBJECTS = tools/crushtool.$(OBJEXT)
 crushtool_OBJECTS = $(am_crushtool_OBJECTS)
-crushtool_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_get_command_descriptions_OBJECTS =  \
-	test/common/get_command_descriptions.$(OBJEXT)
+crushtool_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__get_command_descriptions_SOURCES_DIST =  \
+	test/common/get_command_descriptions.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_get_command_descriptions_OBJECTS = test/common/get_command_descriptions.$(OBJEXT)
 get_command_descriptions_OBJECTS =  \
 	$(am_get_command_descriptions_OBJECTS)
-get_command_descriptions_DEPENDENCIES = $(am__DEPENDENCIES_12) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_9)
-am_librados_config_OBJECTS = librados-config.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at get_command_descriptions_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_13) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_10)
+am__librados_config_SOURCES_DIST = librados-config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_librados_config_OBJECTS = librados-config.$(OBJEXT)
 librados_config_OBJECTS = $(am_librados_config_OBJECTS)
-librados_config_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_config_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am_monmaptool_OBJECTS = tools/monmaptool.$(OBJEXT)
 monmaptool_OBJECTS = $(am_monmaptool_OBJECTS)
-monmaptool_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON)
-am_mount_ceph_OBJECTS = mount/mount.ceph.$(OBJEXT)
+monmaptool_DEPENDENCIES = $(am__DEPENDENCIES_10) $(LIBCOMMON)
+am__mount_ceph_SOURCES_DIST = mount/mount.ceph.c
+ at ENABLE_SERVER_TRUE@am_mount_ceph_OBJECTS =  \
+ at ENABLE_SERVER_TRUE@	mount/mount.ceph.$(OBJEXT)
 mount_ceph_OBJECTS = $(am_mount_ceph_OBJECTS)
-mount_ceph_DEPENDENCIES = $(LIBSECRET) $(LIBCOMMON)
+ at ENABLE_SERVER_TRUE@mount_ceph_DEPENDENCIES = $(LIBSECRET) \
+ at ENABLE_SERVER_TRUE@	$(LIBCOMMON)
 am_osdmaptool_OBJECTS = tools/osdmaptool.$(OBJEXT)
 osdmaptool_OBJECTS = $(am_osdmaptool_OBJECTS)
-osdmaptool_DEPENDENCIES = $(am__DEPENDENCIES_9)
-am_rados_OBJECTS = tools/rados/rados.$(OBJEXT) \
-	tools/rados/rados_import.$(OBJEXT) \
-	tools/rados/rados_export.$(OBJEXT) \
-	tools/rados/rados_sync.$(OBJEXT) common/obj_bencher.$(OBJEXT)
+osdmaptool_DEPENDENCIES = $(am__DEPENDENCIES_10)
+am__rados_SOURCES_DIST = tools/rados/rados.cc \
+	tools/rados/rados_import.cc tools/rados/rados_export.cc \
+	tools/rados/rados_sync.cc common/obj_bencher.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_rados_OBJECTS = tools/rados/rados.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_import.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_export.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_sync.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	common/obj_bencher.$(OBJEXT)
 rados_OBJECTS = $(am_rados_OBJECTS)
-rados_DEPENDENCIES = libcls_lock_client.la $(LIBRADOS) \
-	$(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at rados_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am__radosgw_SOURCES_DIST = rgw/rgw_resolve.cc rgw/rgw_rest.cc \
 	rgw/rgw_rest_swift.cc rgw/rgw_rest_s3.cc rgw/rgw_rest_usage.cc \
 	rgw/rgw_rest_user.cc rgw/rgw_rest_bucket.cc \
@@ -2733,92 +3914,109 @@ am__radosgw_SOURCES_DIST = rgw/rgw_resolve.cc rgw/rgw_rest.cc \
 	rgw/rgw_rest_log.cc rgw/rgw_rest_opstate.cc \
 	rgw/rgw_rest_replica_log.cc rgw/rgw_rest_config.cc \
 	rgw/rgw_http_client.cc rgw/rgw_swift.cc rgw/rgw_swift_auth.cc \
-	rgw/rgw_loadgen.cc rgw/rgw_civetweb.cc rgw/rgw_civetweb_log.cc \
-	civetweb/src/civetweb.c rgw/rgw_main.cc
- at WITH_RADOSGW_TRUE@am_radosgw_OBJECTS = rgw/rgw_resolve.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_swift.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_s3.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_usage.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_user.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_bucket.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_metadata.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_replica_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_opstate.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_replica_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_config.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_http_client.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_swift.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_swift_auth.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_loadgen.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_civetweb.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_civetweb_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	civetweb/src/radosgw-civetweb.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/rgw_main.$(OBJEXT)
+	rgw/rgw_loadgen.cc rgw/rgw_main.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_radosgw_OBJECTS = rgw/rgw_resolve.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_swift.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_s3.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_usage.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_user.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_bucket.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_metadata.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_replica_log.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_log.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_opstate.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_replica_log.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_config.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_http_client.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift_auth.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_loadgen.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_main.$(OBJEXT)
 radosgw_OBJECTS = $(am_radosgw_OBJECTS)
- at WITH_RADOSGW_TRUE@radosgw_DEPENDENCIES = $(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_DEPENDENCIES = $(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBCIVETWEB) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 am__radosgw_admin_SOURCES_DIST = rgw/rgw_admin.cc
- at WITH_RADOSGW_TRUE@am_radosgw_admin_OBJECTS = rgw/rgw_admin.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_radosgw_admin_OBJECTS = rgw/rgw_admin.$(OBJEXT)
 radosgw_admin_OBJECTS = $(am_radosgw_admin_OBJECTS)
- at WITH_RADOSGW_TRUE@radosgw_admin_DEPENDENCIES =  \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_15) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_RADOSGW_TRUE@	$(am__DEPENDENCIES_9)
-am_rbd_OBJECTS = rbd.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_admin_DEPENDENCIES = $(am__DEPENDENCIES_16) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__rbd_SOURCES_DIST = rbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_rbd_OBJECTS = rbd.$(OBJEXT)
 rbd_OBJECTS = $(am_rbd_OBJECTS)
-rbd_DEPENDENCIES = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_DEPENDENCIES = $(LIBKRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10)
 am__rbd_fuse_SOURCES_DIST = rbd_fuse/rbd-fuse.cc
- at WITH_FUSE_TRUE@am_rbd_fuse_OBJECTS = rbd_fuse/rbd-fuse.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at am_rbd_fuse_OBJECTS = rbd_fuse/rbd-fuse.$(OBJEXT)
 rbd_fuse_OBJECTS = $(am_rbd_fuse_OBJECTS)
- at WITH_FUSE_TRUE@rbd_fuse_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
- at WITH_FUSE_TRUE@	$(am__DEPENDENCIES_9)
-am_rbd_replay_OBJECTS = rbd_replay/rbd-replay.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at rbd_fuse_DEPENDENCIES = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
+am__rbd_replay_SOURCES_DIST = rbd_replay/rbd-replay.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_rbd_replay_OBJECTS = rbd_replay/rbd-replay.$(OBJEXT)
 rbd_replay_OBJECTS = $(am_rbd_replay_OBJECTS)
-rbd_replay_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) $(am__DEPENDENCIES_9) \
-	librbd_replay.la
-am_rbd_replay_prep_OBJECTS = rbd_replay/rbd-replay-prep.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la
+am__rbd_replay_prep_SOURCES_DIST = rbd_replay/rbd-replay-prep.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_rbd_replay_prep_OBJECTS = rbd_replay/rbd-replay-prep.$(OBJEXT)
 rbd_replay_prep_OBJECTS = $(am_rbd_replay_prep_OBJECTS)
-rbd_replay_prep_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) librbd_replay.la librbd_replay_ios.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_prep_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay_ios.la
 am__rest_bench_SOURCES_DIST = tools/rest_bench.cc \
 	common/obj_bencher.cc
 @WITH_REST_BENCH_TRUE at am_rest_bench_OBJECTS =  \
 @WITH_REST_BENCH_TRUE@	tools/rest_bench-rest_bench.$(OBJEXT) \
 @WITH_REST_BENCH_TRUE@	common/rest_bench-obj_bencher.$(OBJEXT)
 rest_bench_OBJECTS = $(am_rest_bench_OBJECTS)
- at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__DEPENDENCIES_18 = libs3/build/lib/libs3.a
- at WITH_REST_BENCH_TRUE@rest_bench_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+ at WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at am__DEPENDENCIES_19 = libs3/build/lib/libs3.a
+ at WITH_REST_BENCH_TRUE@rest_bench_DEPENDENCIES =  \
+ at WITH_REST_BENCH_TRUE@	$(am__DEPENDENCIES_10) \
 @WITH_REST_BENCH_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_REST_BENCH_TRUE@	$(am__DEPENDENCIES_18)
+ at WITH_REST_BENCH_TRUE@	$(am__DEPENDENCIES_19)
 rest_bench_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(rest_bench_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am__simple_client_SOURCES_DIST = test/messenger/simple_client.cc \
 	test/messenger/simple_dispatcher.cc
- at ENABLE_XIO_TRUE@am_simple_client_OBJECTS = test/messenger/simple_client-simple_client.$(OBJEXT) \
- at ENABLE_XIO_TRUE@	test/messenger/simple_client-simple_dispatcher.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am_simple_client_OBJECTS = test/messenger/simple_client-simple_client.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_client-simple_dispatcher.$(OBJEXT)
 simple_client_OBJECTS = $(am_simple_client_OBJECTS)
- at ENABLE_XIO_TRUE@simple_client_DEPENDENCIES = $(am__DEPENDENCIES_5) \
- at ENABLE_XIO_TRUE@	$(LIBCOMMON) $(am__DEPENDENCIES_9) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_client_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
 simple_client_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(simple_client_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
 am__simple_server_SOURCES_DIST = test/messenger/simple_server.cc \
 	test/messenger/simple_dispatcher.cc
- at ENABLE_XIO_TRUE@am_simple_server_OBJECTS = test/messenger/simple_server-simple_server.$(OBJEXT) \
- at ENABLE_XIO_TRUE@	test/messenger/simple_server-simple_dispatcher.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am_simple_server_OBJECTS = test/messenger/simple_server-simple_server.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_server-simple_dispatcher.$(OBJEXT)
 simple_server_OBJECTS = $(am_simple_server_OBJECTS)
- at ENABLE_XIO_TRUE@simple_server_DEPENDENCIES = $(am__DEPENDENCIES_5) \
- at ENABLE_XIO_TRUE@	$(LIBCOMMON) $(am__DEPENDENCIES_9) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_server_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
 simple_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(simple_server_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -2826,25 +4024,25 @@ simple_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am__test_build_libcephfs_SOURCES_DIST = test/buildtest_skeleton.cc \
 	osdc/Objecter.cc osdc/ObjectCacher.cc osdc/Filer.cc \
 	osdc/Striper.cc osdc/Journaler.cc
-am__objects_24 = osdc/test_build_libcephfs-Objecter.$(OBJEXT) \
+am__objects_25 = osdc/test_build_libcephfs-Objecter.$(OBJEXT) \
 	osdc/test_build_libcephfs-ObjectCacher.$(OBJEXT) \
 	osdc/test_build_libcephfs-Filer.$(OBJEXT) \
 	osdc/test_build_libcephfs-Striper.$(OBJEXT) \
 	osdc/test_build_libcephfs-Journaler.$(OBJEXT)
- at WITH_BUILD_TESTS_TRUE@am_test_build_libcephfs_OBJECTS = test/test_build_libcephfs-buildtest_skeleton.$(OBJEXT) \
- at WITH_BUILD_TESTS_TRUE@	$(am__objects_24)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_test_build_libcephfs_OBJECTS = test/test_build_libcephfs-buildtest_skeleton.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__objects_25)
 test_build_libcephfs_OBJECTS = $(am_test_build_libcephfs_OBJECTS)
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_DEPENDENCIES =  \
- at WITH_BUILD_TESTS_TRUE@	$(LIBCEPHFS) $(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_2)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2)
 test_build_libcephfs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(test_build_libcephfs_CXXFLAGS) $(CXXFLAGS) \
 	$(test_build_libcephfs_LDFLAGS) $(LDFLAGS) -o $@
 am__test_build_libcommon_SOURCES_DIST = test/buildtest_skeleton.cc
 @WITH_BUILD_TESTS_TRUE at am_test_build_libcommon_OBJECTS = test/test_build_libcommon-buildtest_skeleton.$(OBJEXT) \
- at WITH_BUILD_TESTS_TRUE@	$(am__objects_12)
+ at WITH_BUILD_TESTS_TRUE@	$(am__objects_13)
 test_build_libcommon_OBJECTS = $(am_test_build_libcommon_OBJECTS)
 @WITH_BUILD_TESTS_TRUE at test_build_libcommon_DEPENDENCIES =  \
 @WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_3) \
@@ -2857,16 +4055,15 @@ test_build_libcommon_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(test_build_libcommon_LDFLAGS) $(LDFLAGS) -o $@
 am__test_build_librados_SOURCES_DIST = test/buildtest_skeleton.cc \
 	common/buffer.cc librados/librados.cc
-am__objects_25 = common/test_build_librados-buffer.$(OBJEXT) \
-	librados/test_build_librados-librados.$(OBJEXT)
- at WITH_BUILD_TESTS_TRUE@am_test_build_librados_OBJECTS = test/test_build_librados-buildtest_skeleton.$(OBJEXT) \
- at WITH_BUILD_TESTS_TRUE@	$(am__objects_25)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am__objects_26 = common/test_build_librados-buffer.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/test_build_librados-librados.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at am_test_build_librados_OBJECTS = test/test_build_librados-buildtest_skeleton.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(am__objects_26)
 test_build_librados_OBJECTS = $(am_test_build_librados_OBJECTS)
- at WITH_BUILD_TESTS_TRUE@test_build_librados_DEPENDENCIES =  \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_7) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_2)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_DEPENDENCIES = $(am__DEPENDENCIES_8) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2)
 test_build_librados_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(test_build_librados_CXXFLAGS) $(CXXFLAGS) \
@@ -2884,58 +4081,56 @@ am__test_build_librgw_SOURCES_DIST = test/buildtest_skeleton.cc \
 	rgw/rgw_cors_s3.cc rgw/rgw_auth_s3.cc rgw/rgw_metadata.cc \
 	rgw/rgw_replica_log.cc rgw/rgw_keystone.cc rgw/rgw_quota.cc \
 	rgw/rgw_dencoder.cc
- at WITH_RADOSGW_TRUE@am__objects_26 =  \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-librgw.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_acl.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_acl_s3.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_acl_swift.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_client_io.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_fcgi.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_xml.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_usage.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_json_enc.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_user.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_bucket.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_tools.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_rados.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_http_client.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_rest_client.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_rest_conn.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_op.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_common.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_cache.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_formats.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_multi.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_policy_s3.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_gc.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_multi_del.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_env.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_cors.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_cors_s3.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_auth_s3.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_metadata.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_replica_log.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_keystone.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_quota.$(OBJEXT) \
- at WITH_RADOSGW_TRUE@	rgw/test_build_librgw-rgw_dencoder.$(OBJEXT)
- at WITH_BUILD_TESTS_TRUE@am_test_build_librgw_OBJECTS = test/test_build_librgw-buildtest_skeleton.$(OBJEXT) \
- at WITH_BUILD_TESTS_TRUE@	$(am__objects_26)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am__objects_27 = rgw/test_build_librgw-librgw.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_acl.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_acl_s3.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_acl_swift.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_client_io.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_fcgi.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_xml.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_usage.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_json_enc.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_user.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_bucket.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_tools.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_rados.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_http_client.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_rest_client.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_rest_conn.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_op.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_common.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_cache.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_formats.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_log.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_multi.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_policy_s3.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_gc.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_multi_del.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_env.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_cors.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_cors_s3.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_auth_s3.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_metadata.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_replica_log.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_keystone.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_quota.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/test_build_librgw-rgw_dencoder.$(OBJEXT)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at am_test_build_librgw_OBJECTS = test/test_build_librgw-buildtest_skeleton.$(OBJEXT) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__objects_27)
 test_build_librgw_OBJECTS = $(am_test_build_librgw_OBJECTS)
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_DEPENDENCIES =  \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_17) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_1) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_2) \
- at WITH_BUILD_TESTS_TRUE@	$(am__DEPENDENCIES_9)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_DEPENDENCIES = $(am__DEPENDENCIES_18) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10)
 test_build_librgw_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(test_build_librgw_CXXFLAGS) $(CXXFLAGS) \
 	$(test_build_librgw_LDFLAGS) $(LDFLAGS) -o $@
 am_unittest_addrs_OBJECTS = test/unittest_addrs-test_addrs.$(OBJEXT)
 unittest_addrs_OBJECTS = $(am_unittest_addrs_OBJECTS)
-unittest_addrs_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_addrs_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_addrs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_addrs_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2943,24 +4138,26 @@ unittest_addrs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_admin_socket_OBJECTS =  \
 	test/unittest_admin_socket-admin_socket.$(OBJEXT)
 unittest_admin_socket_OBJECTS = $(am_unittest_admin_socket_OBJECTS)
-unittest_admin_socket_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_admin_socket_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_admin_socket_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_admin_socket_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_arch_OBJECTS = test/unittest_arch-test_arch.$(OBJEXT)
 unittest_arch_OBJECTS = $(am_unittest_arch_OBJECTS)
-unittest_arch_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_arch_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_arch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_arch_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-am_unittest_base64_OBJECTS = test/unittest_base64-base64.$(OBJEXT)
+am__unittest_base64_SOURCES_DIST = test/base64.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_unittest_base64_OBJECTS = test/unittest_base64-base64.$(OBJEXT)
 unittest_base64_OBJECTS = $(am_unittest_base64_OBJECTS)
-unittest_base64_DEPENDENCIES = $(LIBCEPHFS) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_base64_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_base64_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_base64_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2968,8 +4165,8 @@ unittest_base64_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_bit_vector_OBJECTS =  \
 	test/common/unittest_bit_vector-test_bit_vector.$(OBJEXT)
 unittest_bit_vector_OBJECTS = $(am_unittest_bit_vector_OBJECTS)
-unittest_bit_vector_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_bit_vector_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_bit_vector_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_bit_vector_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2977,8 +4174,8 @@ unittest_bit_vector_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_blkdev_OBJECTS =  \
 	test/common/unittest_blkdev-test_blkdev.$(OBJEXT)
 unittest_blkdev_OBJECTS = $(am_unittest_blkdev_OBJECTS)
-unittest_blkdev_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_blkdev_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_blkdev_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_blkdev_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2986,8 +4183,8 @@ unittest_blkdev_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_bloom_filter_OBJECTS =  \
 	test/common/unittest_bloom_filter-test_bloom_filter.$(OBJEXT)
 unittest_bloom_filter_OBJECTS = $(am_unittest_bloom_filter_OBJECTS)
-unittest_bloom_filter_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_bloom_filter_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_bloom_filter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_bloom_filter_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -2995,8 +4192,8 @@ unittest_bloom_filter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_bufferlist_OBJECTS =  \
 	test/unittest_bufferlist-bufferlist.$(OBJEXT)
 unittest_bufferlist_OBJECTS = $(am_unittest_bufferlist_OBJECTS)
-unittest_bufferlist_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_bufferlist_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_bufferlist_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_bufferlist_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3004,8 +4201,8 @@ unittest_bufferlist_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_ceph_argparse_OBJECTS =  \
 	test/unittest_ceph_argparse-ceph_argparse.$(OBJEXT)
 unittest_ceph_argparse_OBJECTS = $(am_unittest_ceph_argparse_OBJECTS)
-unittest_ceph_argparse_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_ceph_argparse_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_ceph_argparse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_ceph_argparse_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3014,8 +4211,8 @@ am_unittest_ceph_compatset_OBJECTS =  \
 	test/unittest_ceph_compatset-ceph_compatset.$(OBJEXT)
 unittest_ceph_compatset_OBJECTS =  \
 	$(am_unittest_ceph_compatset_OBJECTS)
-unittest_ceph_compatset_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_ceph_compatset_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_ceph_compatset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_ceph_compatset_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3023,17 +4220,20 @@ unittest_ceph_compatset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_ceph_crypto_OBJECTS =  \
 	test/unittest_ceph_crypto-ceph_crypto.$(OBJEXT)
 unittest_ceph_crypto_OBJECTS = $(am_unittest_ceph_crypto_OBJECTS)
-unittest_ceph_crypto_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_ceph_crypto_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_ceph_crypto_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_ceph_crypto_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_chain_xattr_OBJECTS =  \
-	test/objectstore/unittest_chain_xattr-chain_xattr.$(OBJEXT)
+am__unittest_chain_xattr_SOURCES_DIST =  \
+	test/objectstore/chain_xattr.cc
+ at ENABLE_SERVER_TRUE@am_unittest_chain_xattr_OBJECTS = test/objectstore/unittest_chain_xattr-chain_xattr.$(OBJEXT)
 unittest_chain_xattr_OBJECTS = $(am_unittest_chain_xattr_OBJECTS)
-unittest_chain_xattr_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@unittest_chain_xattr_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 unittest_chain_xattr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_chain_xattr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3041,8 +4241,8 @@ unittest_chain_xattr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_config_OBJECTS =  \
 	test/common/unittest_config-test_config.$(OBJEXT)
 unittest_config_OBJECTS = $(am_unittest_config_OBJECTS)
-unittest_config_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_config_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3050,8 +4250,8 @@ unittest_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_confutils_OBJECTS =  \
 	test/unittest_confutils-confutils.$(OBJEXT)
 unittest_confutils_OBJECTS = $(am_unittest_confutils_OBJECTS)
-unittest_confutils_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_confutils_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_confutils_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_confutils_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3059,8 +4259,8 @@ unittest_confutils_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_context_OBJECTS =  \
 	test/common/unittest_context-test_context.$(OBJEXT)
 unittest_context_OBJECTS = $(am_unittest_context_OBJECTS)
-unittest_context_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_context_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_context_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_context_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3068,16 +4268,16 @@ unittest_context_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_crc32c_OBJECTS =  \
 	test/common/unittest_crc32c-test_crc32c.$(OBJEXT)
 unittest_crc32c_OBJECTS = $(am_unittest_crc32c_OBJECTS)
-unittest_crc32c_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_crc32c_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_crc32c_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_crc32c_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_crush_OBJECTS = test/crush/unittest_crush-crush.$(OBJEXT)
 unittest_crush_OBJECTS = $(am_unittest_crush_OBJECTS)
-unittest_crush_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_9)
+unittest_crush_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_10)
 unittest_crush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_crush_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3085,16 +4285,16 @@ unittest_crush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_crush_wrapper_OBJECTS =  \
 	test/crush/unittest_crush_wrapper-CrushWrapper.$(OBJEXT)
 unittest_crush_wrapper_OBJECTS = $(am_unittest_crush_wrapper_OBJECTS)
-unittest_crush_wrapper_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(LIBCRUSH)
+unittest_crush_wrapper_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10) $(LIBCRUSH)
 unittest_crush_wrapper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_crush_wrapper_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_crypto_OBJECTS = test/unittest_crypto-crypto.$(OBJEXT)
 unittest_crypto_OBJECTS = $(am_unittest_crypto_OBJECTS)
-unittest_crypto_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_crypto_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_crypto_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_crypto_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3102,8 +4302,8 @@ unittest_crypto_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_crypto_init_OBJECTS =  \
 	test/unittest_crypto_init-crypto_init.$(OBJEXT)
 unittest_crypto_init_OBJECTS = $(am_unittest_crypto_init_OBJECTS)
-unittest_crypto_init_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_crypto_init_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_crypto_init_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_crypto_init_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3111,46 +4311,60 @@ unittest_crypto_init_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_daemon_config_OBJECTS =  \
 	test/unittest_daemon_config-daemon_config.$(OBJEXT)
 unittest_daemon_config_OBJECTS = $(am_unittest_daemon_config_OBJECTS)
-unittest_daemon_config_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_daemon_config_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_daemon_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_daemon_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_ecbackend_OBJECTS =  \
-	test/osd/unittest_ecbackend-TestECBackend.$(OBJEXT)
+am__unittest_ecbackend_SOURCES_DIST = test/osd/TestECBackend.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_ecbackend_OBJECTS = test/osd/unittest_ecbackend-TestECBackend.$(OBJEXT)
 unittest_ecbackend_OBJECTS = $(am_unittest_ecbackend_OBJECTS)
-unittest_ecbackend_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_ecbackend_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 unittest_ecbackend_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_ecbackend_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_encoding_OBJECTS =  \
-	test/unittest_encoding-encoding.$(OBJEXT)
+am__unittest_encoding_SOURCES_DIST = test/encoding.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_unittest_encoding_OBJECTS = test/unittest_encoding-encoding.$(OBJEXT)
 unittest_encoding_OBJECTS = $(am_unittest_encoding_OBJECTS)
-unittest_encoding_DEPENDENCIES = $(LIBCEPHFS) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_encoding_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_encoding_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_encoding_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_erasure_code_OBJECTS =  \
-	erasure-code/unittest_erasure_code-ErasureCode.$(OBJEXT) \
-	test/erasure-code/unittest_erasure_code-TestErasureCode.$(OBJEXT)
+am__unittest_erasure_code_SOURCES_DIST = erasure-code/ErasureCode.cc \
+	test/erasure-code/TestErasureCode.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_OBJECTS = erasure-code/unittest_erasure_code-ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/unittest_erasure_code-TestErasureCode.$(OBJEXT)
 unittest_erasure_code_OBJECTS = $(am_unittest_erasure_code_OBJECTS)
-unittest_erasure_code_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 unittest_erasure_code_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_erasure_code_example_OBJECTS = erasure-code/unittest_erasure_code_example-ErasureCode.$(OBJEXT) \
-	test/erasure-code/unittest_erasure_code_example-TestErasureCodeExample.$(OBJEXT)
+am__unittest_erasure_code_example_SOURCES_DIST =  \
+	erasure-code/ErasureCode.cc \
+	test/erasure-code/TestErasureCodeExample.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_example_OBJECTS = erasure-code/unittest_erasure_code_example-ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/unittest_erasure_code_example-TestErasureCodeExample.$(OBJEXT)
 unittest_erasure_code_example_OBJECTS =  \
 	$(am_unittest_erasure_code_example_OBJECTS)
-unittest_erasure_code_example_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_example_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 unittest_erasure_code_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_example_CXXFLAGS) $(CXXFLAGS) \
@@ -3158,23 +4372,43 @@ unittest_erasure_code_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am__unittest_erasure_code_isa_SOURCES_DIST =  \
 	erasure-code/ErasureCode.cc \
 	test/erasure-code/TestErasureCodeIsa.cc
- at WITH_BETTER_YASM_ELF64_TRUE@am_unittest_erasure_code_isa_OBJECTS = erasure-code/unittest_erasure_code_isa-ErasureCode.$(OBJEXT) \
- at WITH_BETTER_YASM_ELF64_TRUE@	test/erasure-code/unittest_erasure_code_isa-TestErasureCodeIsa.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_isa_OBJECTS = erasure-code/unittest_erasure_code_isa-ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	test/erasure-code/unittest_erasure_code_isa-TestErasureCodeIsa.$(OBJEXT)
 unittest_erasure_code_isa_OBJECTS =  \
 	$(am_unittest_erasure_code_isa_OBJECTS)
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_isa_DEPENDENCIES =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_13) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBCOMMON) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_BETTER_YASM_ELF64_TRUE@	.libs/libec_isa.la \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBERASURE_CODE) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_isa_DEPENDENCIES = $(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	.libs/libec_isa.la \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBERASURE_CODE) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_isa_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_isa_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_27 = erasure-code/unittest_erasure_code_jerasure-ErasureCode.$(OBJEXT) \
+am__unittest_erasure_code_jerasure_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodeJerasure.cc \
+	erasure-code/ErasureCode.cc \
+	erasure-code/jerasure/jerasure/src/cauchy.c \
+	erasure-code/jerasure/jerasure/src/galois.c \
+	erasure-code/jerasure/jerasure/src/jerasure.c \
+	erasure-code/jerasure/jerasure/src/liberation.c \
+	erasure-code/jerasure/jerasure/src/reed_sol.c \
+	erasure-code/jerasure/gf-complete/src/gf_wgen.c \
+	erasure-code/jerasure/gf-complete/src/gf_method.c \
+	erasure-code/jerasure/gf-complete/src/gf_w16.c \
+	erasure-code/jerasure/gf-complete/src/gf.c \
+	erasure-code/jerasure/gf-complete/src/gf_w32.c \
+	erasure-code/jerasure/gf-complete/src/gf_w64.c \
+	erasure-code/jerasure/gf-complete/src/gf_w128.c \
+	erasure-code/jerasure/gf-complete/src/gf_general.c \
+	erasure-code/jerasure/gf-complete/src/gf_w4.c \
+	erasure-code/jerasure/gf-complete/src/gf_rand.c \
+	erasure-code/jerasure/gf-complete/src/gf_w8.c \
+	erasure-code/jerasure/ErasureCodePluginJerasure.cc \
+	erasure-code/jerasure/ErasureCodeJerasure.cc
+am__objects_28 = erasure-code/unittest_erasure_code_jerasure-ErasureCode.$(OBJEXT) \
 	erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-cauchy.$(OBJEXT) \
 	erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-galois.$(OBJEXT) \
 	erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-jerasure.$(OBJEXT) \
@@ -3193,39 +4427,56 @@ am__objects_27 = erasure-code/unittest_erasure_code_jerasure-ErasureCode.$(OBJEX
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_jerasure-gf_w8.$(OBJEXT) \
 	erasure-code/jerasure/unittest_erasure_code_jerasure-ErasureCodePluginJerasure.$(OBJEXT) \
 	erasure-code/jerasure/unittest_erasure_code_jerasure-ErasureCodeJerasure.$(OBJEXT)
-am_unittest_erasure_code_jerasure_OBJECTS = test/erasure-code/unittest_erasure_code_jerasure-TestErasureCodeJerasure.$(OBJEXT) \
-	$(am__objects_27)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_jerasure_OBJECTS = test/erasure-code/unittest_erasure_code_jerasure-TestErasureCodeJerasure.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__objects_28)
 unittest_erasure_code_jerasure_OBJECTS =  \
 	$(am_unittest_erasure_code_jerasure_OBJECTS)
-unittest_erasure_code_jerasure_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_jerasure_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_jerasure_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_jerasure_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_28 =  \
+am__unittest_erasure_code_lrc_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodeLrc.cc \
+	erasure-code/ErasureCode.cc \
+	erasure-code/lrc/ErasureCodePluginLrc.cc \
+	erasure-code/lrc/ErasureCodeLrc.cc
+am__objects_29 =  \
 	erasure-code/unittest_erasure_code_lrc-ErasureCode.$(OBJEXT) \
 	erasure-code/lrc/unittest_erasure_code_lrc-ErasureCodePluginLrc.$(OBJEXT) \
 	erasure-code/lrc/unittest_erasure_code_lrc-ErasureCodeLrc.$(OBJEXT)
-am_unittest_erasure_code_lrc_OBJECTS = test/erasure-code/unittest_erasure_code_lrc-TestErasureCodeLrc.$(OBJEXT) \
-	$(am__objects_28)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_lrc_OBJECTS = test/erasure-code/unittest_erasure_code_lrc-TestErasureCodeLrc.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__objects_29)
 unittest_erasure_code_lrc_OBJECTS =  \
 	$(am_unittest_erasure_code_lrc_OBJECTS)
-unittest_erasure_code_lrc_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_lrc_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_lrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_lrc_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_erasure_code_plugin_OBJECTS = erasure-code/unittest_erasure_code_plugin-ErasureCode.$(OBJEXT) \
-	test/erasure-code/unittest_erasure_code_plugin-TestErasureCodePlugin.$(OBJEXT)
+am__unittest_erasure_code_plugin_SOURCES_DIST =  \
+	erasure-code/ErasureCode.cc \
+	test/erasure-code/TestErasureCodePlugin.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_plugin_OBJECTS = erasure-code/unittest_erasure_code_plugin-ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/unittest_erasure_code_plugin-TestErasureCodePlugin.$(OBJEXT)
 unittest_erasure_code_plugin_OBJECTS =  \
 	$(am_unittest_erasure_code_plugin_OBJECTS)
-unittest_erasure_code_plugin_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_plugin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_plugin_CXXFLAGS) $(CXXFLAGS) \
@@ -3233,43 +4484,75 @@ unittest_erasure_code_plugin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am__unittest_erasure_code_plugin_isa_SOURCES_DIST =  \
 	erasure-code/ErasureCode.cc \
 	test/erasure-code/TestErasureCodePluginIsa.cc
- at WITH_BETTER_YASM_ELF64_TRUE@am_unittest_erasure_code_plugin_isa_OBJECTS = erasure-code/unittest_erasure_code_plugin_isa-ErasureCode.$(OBJEXT) \
- at WITH_BETTER_YASM_ELF64_TRUE@	test/erasure-code/unittest_erasure_code_plugin_isa-TestErasureCodePluginIsa.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_plugin_isa_OBJECTS = erasure-code/unittest_erasure_code_plugin_isa-ErasureCode.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	test/erasure-code/unittest_erasure_code_plugin_isa-TestErasureCodePluginIsa.$(OBJEXT)
 unittest_erasure_code_plugin_isa_OBJECTS =  \
 	$(am_unittest_erasure_code_plugin_isa_OBJECTS)
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_plugin_isa_DEPENDENCIES =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_13) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBCOMMON) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_14) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_9) \
- at WITH_BETTER_YASM_ELF64_TRUE@	.libs/libec_isa.la \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBERASURE_CODE) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_isa_DEPENDENCIES = $(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	.libs/libec_isa.la \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBERASURE_CODE) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_plugin_isa_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(unittest_erasure_code_plugin_isa_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_erasure_code_plugin_jerasure_OBJECTS = test/erasure-code/unittest_erasure_code_plugin_jerasure-TestErasureCodePluginJerasure.$(OBJEXT)
+am__unittest_erasure_code_plugin_jerasure_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodePluginJerasure.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_plugin_jerasure_OBJECTS = test/erasure-code/unittest_erasure_code_plugin_jerasure-TestErasureCodePluginJerasure.$(OBJEXT)
 unittest_erasure_code_plugin_jerasure_OBJECTS =  \
 	$(am_unittest_erasure_code_plugin_jerasure_OBJECTS)
-unittest_erasure_code_plugin_jerasure_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_13) $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_jerasure_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_plugin_jerasure_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(unittest_erasure_code_plugin_jerasure_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_erasure_code_plugin_lrc_OBJECTS = test/erasure-code/unittest_erasure_code_plugin_lrc-TestErasureCodePluginLrc.$(OBJEXT)
+am__unittest_erasure_code_plugin_lrc_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodePluginLrc.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_plugin_lrc_OBJECTS = test/erasure-code/unittest_erasure_code_plugin_lrc-TestErasureCodePluginLrc.$(OBJEXT)
 unittest_erasure_code_plugin_lrc_OBJECTS =  \
 	$(am_unittest_erasure_code_plugin_lrc_OBJECTS)
-unittest_erasure_code_plugin_lrc_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_13) $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_lrc_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_plugin_lrc_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(unittest_erasure_code_plugin_lrc_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_29 =  \
+am__unittest_erasure_code_shec_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodeShec.cc \
+	erasure-code/ErasureCode.cc \
+	erasure-code/shec/ErasureCodePluginShec.cc \
+	erasure-code/shec/ErasureCodeShec.cc \
+	erasure-code/shec/ErasureCodeShecTableCache.cc \
+	erasure-code/shec/shec.cc erasure-code/shec/determinant.c \
+	erasure-code/jerasure/jerasure/src/cauchy.c \
+	erasure-code/jerasure/jerasure/src/galois.c \
+	erasure-code/jerasure/jerasure/src/jerasure.c \
+	erasure-code/jerasure/jerasure/src/liberation.c \
+	erasure-code/jerasure/jerasure/src/reed_sol.c \
+	erasure-code/jerasure/gf-complete/src/gf_wgen.c \
+	erasure-code/jerasure/gf-complete/src/gf_method.c \
+	erasure-code/jerasure/gf-complete/src/gf_w16.c \
+	erasure-code/jerasure/gf-complete/src/gf.c \
+	erasure-code/jerasure/gf-complete/src/gf_w32.c \
+	erasure-code/jerasure/gf-complete/src/gf_w64.c \
+	erasure-code/jerasure/gf-complete/src/gf_w128.c \
+	erasure-code/jerasure/gf-complete/src/gf_general.c \
+	erasure-code/jerasure/gf-complete/src/gf_w4.c \
+	erasure-code/jerasure/gf-complete/src/gf_rand.c \
+	erasure-code/jerasure/gf-complete/src/gf_w8.c
+am__objects_30 =  \
 	erasure-code/unittest_erasure_code_shec-ErasureCode.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec-ErasureCodePluginShec.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec-ErasureCodeShec.$(OBJEXT) \
@@ -3292,18 +4575,44 @@ am__objects_29 =  \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec-gf_w4.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec-gf_rand.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec-gf_w8.$(OBJEXT)
-am_unittest_erasure_code_shec_OBJECTS = test/erasure-code/unittest_erasure_code_shec-TestErasureCodeShec.$(OBJEXT) \
-	$(am__objects_29)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_shec_OBJECTS = test/erasure-code/unittest_erasure_code_shec-TestErasureCodeShec.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__objects_30)
 unittest_erasure_code_shec_OBJECTS =  \
 	$(am_unittest_erasure_code_shec_OBJECTS)
-unittest_erasure_code_shec_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_shec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_shec_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_30 = erasure-code/unittest_erasure_code_shec_all-ErasureCode.$(OBJEXT) \
+am__unittest_erasure_code_shec_all_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodeShec_all.cc \
+	erasure-code/ErasureCode.cc \
+	erasure-code/shec/ErasureCodePluginShec.cc \
+	erasure-code/shec/ErasureCodeShec.cc \
+	erasure-code/shec/ErasureCodeShecTableCache.cc \
+	erasure-code/shec/shec.cc erasure-code/shec/determinant.c \
+	erasure-code/jerasure/jerasure/src/cauchy.c \
+	erasure-code/jerasure/jerasure/src/galois.c \
+	erasure-code/jerasure/jerasure/src/jerasure.c \
+	erasure-code/jerasure/jerasure/src/liberation.c \
+	erasure-code/jerasure/jerasure/src/reed_sol.c \
+	erasure-code/jerasure/gf-complete/src/gf_wgen.c \
+	erasure-code/jerasure/gf-complete/src/gf_method.c \
+	erasure-code/jerasure/gf-complete/src/gf_w16.c \
+	erasure-code/jerasure/gf-complete/src/gf.c \
+	erasure-code/jerasure/gf-complete/src/gf_w32.c \
+	erasure-code/jerasure/gf-complete/src/gf_w64.c \
+	erasure-code/jerasure/gf-complete/src/gf_w128.c \
+	erasure-code/jerasure/gf-complete/src/gf_general.c \
+	erasure-code/jerasure/gf-complete/src/gf_w4.c \
+	erasure-code/jerasure/gf-complete/src/gf_rand.c \
+	erasure-code/jerasure/gf-complete/src/gf_w8.c
+am__objects_31 = erasure-code/unittest_erasure_code_shec_all-ErasureCode.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_all-ErasureCodePluginShec.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_all-ErasureCodeShec.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_all-ErasureCodeShecTableCache.$(OBJEXT) \
@@ -3325,18 +4634,44 @@ am__objects_30 = erasure-code/unittest_erasure_code_shec_all-ErasureCode.$(OBJEX
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_all-gf_w4.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_all-gf_rand.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_all-gf_w8.$(OBJEXT)
-am_unittest_erasure_code_shec_all_OBJECTS = test/erasure-code/unittest_erasure_code_shec_all-TestErasureCodeShec_all.$(OBJEXT) \
-	$(am__objects_30)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_shec_all_OBJECTS = test/erasure-code/unittest_erasure_code_shec_all-TestErasureCodeShec_all.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__objects_31)
 unittest_erasure_code_shec_all_OBJECTS =  \
 	$(am_unittest_erasure_code_shec_all_OBJECTS)
-unittest_erasure_code_shec_all_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(LIBCOMMON) $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_all_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_shec_all_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_erasure_code_shec_all_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_31 = erasure-code/unittest_erasure_code_shec_thread-ErasureCode.$(OBJEXT) \
+am__unittest_erasure_code_shec_thread_SOURCES_DIST =  \
+	test/erasure-code/TestErasureCodeShec_thread.cc \
+	erasure-code/ErasureCode.cc \
+	erasure-code/shec/ErasureCodePluginShec.cc \
+	erasure-code/shec/ErasureCodeShec.cc \
+	erasure-code/shec/ErasureCodeShecTableCache.cc \
+	erasure-code/shec/shec.cc erasure-code/shec/determinant.c \
+	erasure-code/jerasure/jerasure/src/cauchy.c \
+	erasure-code/jerasure/jerasure/src/galois.c \
+	erasure-code/jerasure/jerasure/src/jerasure.c \
+	erasure-code/jerasure/jerasure/src/liberation.c \
+	erasure-code/jerasure/jerasure/src/reed_sol.c \
+	erasure-code/jerasure/gf-complete/src/gf_wgen.c \
+	erasure-code/jerasure/gf-complete/src/gf_method.c \
+	erasure-code/jerasure/gf-complete/src/gf_w16.c \
+	erasure-code/jerasure/gf-complete/src/gf.c \
+	erasure-code/jerasure/gf-complete/src/gf_w32.c \
+	erasure-code/jerasure/gf-complete/src/gf_w64.c \
+	erasure-code/jerasure/gf-complete/src/gf_w128.c \
+	erasure-code/jerasure/gf-complete/src/gf_general.c \
+	erasure-code/jerasure/gf-complete/src/gf_w4.c \
+	erasure-code/jerasure/gf-complete/src/gf_rand.c \
+	erasure-code/jerasure/gf-complete/src/gf_w8.c
+am__objects_32 = erasure-code/unittest_erasure_code_shec_thread-ErasureCode.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_thread-ErasureCodePluginShec.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_thread-ErasureCodeShec.$(OBJEXT) \
 	erasure-code/shec/unittest_erasure_code_shec_thread-ErasureCodeShecTableCache.$(OBJEXT) \
@@ -3358,30 +4693,35 @@ am__objects_31 = erasure-code/unittest_erasure_code_shec_thread-ErasureCode.$(OB
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_thread-gf_w4.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_thread-gf_rand.$(OBJEXT) \
 	erasure-code/jerasure/gf-complete/src/unittest_erasure_code_shec_thread-gf_w8.$(OBJEXT)
-am_unittest_erasure_code_shec_thread_OBJECTS = test/erasure-code/unittest_erasure_code_shec_thread-TestErasureCodeShec_thread.$(OBJEXT) \
-	$(am__objects_31)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_erasure_code_shec_thread_OBJECTS = test/erasure-code/unittest_erasure_code_shec_thread-TestErasureCodeShec_thread.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__objects_32)
 unittest_erasure_code_shec_thread_OBJECTS =  \
 	$(am_unittest_erasure_code_shec_thread_OBJECTS)
-unittest_erasure_code_shec_thread_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_13) $(LIBCOMMON) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_thread_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_erasure_code_shec_thread_LINK = $(LIBTOOL) $(AM_V_lt) \
 	--tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CXXLD) $(unittest_erasure_code_shec_thread_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_unittest_escape_OBJECTS = test/unittest_escape-escape.$(OBJEXT)
 unittest_escape_OBJECTS = $(am_unittest_escape_OBJECTS)
-unittest_escape_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_escape_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_escape_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_escape_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_flatindex_OBJECTS =  \
-	test/os/unittest_flatindex-TestFlatIndex.$(OBJEXT)
+am__unittest_flatindex_SOURCES_DIST = test/os/TestFlatIndex.cc
+ at ENABLE_SERVER_TRUE@am_unittest_flatindex_OBJECTS = test/os/unittest_flatindex-TestFlatIndex.$(OBJEXT)
 unittest_flatindex_OBJECTS = $(am_unittest_flatindex_OBJECTS)
-unittest_flatindex_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@unittest_flatindex_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 unittest_flatindex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_flatindex_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3390,16 +4730,16 @@ am_unittest_formatter_OBJECTS =  \
 	test/unittest_formatter-formatter.$(OBJEXT) \
 	rgw/unittest_formatter-rgw_formats.$(OBJEXT)
 unittest_formatter_OBJECTS = $(am_unittest_formatter_OBJECTS)
-unittest_formatter_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_formatter_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_formatter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_formatter_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_gather_OBJECTS = test/unittest_gather-gather.$(OBJEXT)
 unittest_gather_OBJECTS = $(am_unittest_gather_OBJECTS)
-unittest_gather_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_gather_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_gather_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_gather_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3408,7 +4748,7 @@ am_unittest_heartbeatmap_OBJECTS =  \
 	test/unittest_heartbeatmap-heartbeat_map.$(OBJEXT)
 unittest_heartbeatmap_OBJECTS = $(am_unittest_heartbeatmap_OBJECTS)
 unittest_heartbeatmap_DEPENDENCIES = $(LIBCOMMON) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+	$(am__DEPENDENCIES_15) $(am__DEPENDENCIES_10)
 unittest_heartbeatmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_heartbeatmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3416,17 +4756,19 @@ unittest_heartbeatmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_histogram_OBJECTS =  \
 	test/common/unittest_histogram-histogram.$(OBJEXT)
 unittest_histogram_OBJECTS = $(am_unittest_histogram_OBJECTS)
-unittest_histogram_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_histogram_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_histogram_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_histogram_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_hitset_OBJECTS =  \
-	test/osd/unittest_hitset-hitset.$(OBJEXT)
+am__unittest_hitset_SOURCES_DIST = test/osd/hitset.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_hitset_OBJECTS = test/osd/unittest_hitset-hitset.$(OBJEXT)
 unittest_hitset_OBJECTS = $(am_unittest_hitset_OBJECTS)
-unittest_hitset_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_hitset_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 unittest_hitset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_hitset_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3434,8 +4776,8 @@ unittest_hitset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_io_priority_OBJECTS =  \
 	test/common/unittest_io_priority-test_io_priority.$(OBJEXT)
 unittest_io_priority_OBJECTS = $(am_unittest_io_priority_OBJECTS)
-unittest_io_priority_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_io_priority_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_io_priority_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_io_priority_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3443,74 +4785,93 @@ unittest_io_priority_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_ipaddr_OBJECTS =  \
 	test/unittest_ipaddr-test_ipaddr.$(OBJEXT)
 unittest_ipaddr_OBJECTS = $(am_unittest_ipaddr_OBJECTS)
-unittest_ipaddr_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_ipaddr_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_ipaddr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_ipaddr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_lfnindex_OBJECTS =  \
-	test/os/unittest_lfnindex-TestLFNIndex.$(OBJEXT)
+am__unittest_lfnindex_SOURCES_DIST = test/os/TestLFNIndex.cc
+ at ENABLE_SERVER_TRUE@am_unittest_lfnindex_OBJECTS = test/os/unittest_lfnindex-TestLFNIndex.$(OBJEXT)
 unittest_lfnindex_OBJECTS = $(am_unittest_lfnindex_OBJECTS)
-unittest_lfnindex_DEPENDENCIES = $(am__DEPENDENCIES_5) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@unittest_lfnindex_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@	$(am__DEPENDENCIES_10)
 unittest_lfnindex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_lfnindex_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_libcephfs_config_OBJECTS =  \
-	test/unittest_libcephfs_config-libcephfs_config.$(OBJEXT)
+am__unittest_libcephfs_config_SOURCES_DIST = test/libcephfs_config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_unittest_libcephfs_config_OBJECTS = test/unittest_libcephfs_config-libcephfs_config.$(OBJEXT)
 unittest_libcephfs_config_OBJECTS =  \
 	$(am_unittest_libcephfs_config_OBJECTS)
-unittest_libcephfs_config_DEPENDENCIES = $(LIBCEPHFS) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_libcephfs_config_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_libcephfs_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_libcephfs_config_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_librados_OBJECTS =  \
-	test/librados/unittest_librados-librados.$(OBJEXT)
+am__unittest_librados_SOURCES_DIST = test/librados/librados.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_unittest_librados_OBJECTS = test/librados/unittest_librados-librados.$(OBJEXT)
 unittest_librados_OBJECTS = $(am_unittest_librados_OBJECTS)
-unittest_librados_DEPENDENCIES = $(LIBRADOS) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_librados_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_librados_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_librados_config_OBJECTS = test/librados/unittest_librados_config-librados_config.$(OBJEXT)
+am__unittest_librados_config_SOURCES_DIST =  \
+	test/librados/librados_config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at am_unittest_librados_config_OBJECTS = test/librados/unittest_librados_config-librados_config.$(OBJEXT)
 unittest_librados_config_OBJECTS =  \
 	$(am_unittest_librados_config_OBJECTS)
-unittest_librados_config_DEPENDENCIES = $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) $(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_config_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_librados_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_librados_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_librbd_OBJECTS =
 unittest_librbd_OBJECTS = $(am_unittest_librbd_OBJECTS)
-unittest_librbd_DEPENDENCIES = librbd_test.la librbd_api.la \
-	librbd_internal.la $(LIBRBD_TYPES) libcls_rbd_client.la \
-	libcls_lock_client.la librados_test_stub.la \
-	librados_internal.la $(LIBOSDC) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9) $(RADOS_TEST_LDADD) $(am__append_113)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_librbd_DEPENDENCIES = librbd_test.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_test_stub.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(RADOS_TEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_153)
 am_unittest_log_OBJECTS = log/unittest_log-test.$(OBJEXT)
 unittest_log_OBJECTS = $(am_unittest_log_OBJECTS)
-unittest_log_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14)
+unittest_log_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_15)
 unittest_log_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(unittest_log_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_unittest_lru_OBJECTS = test/common/unittest_lru-test_lru.$(OBJEXT)
 unittest_lru_OBJECTS = $(am_unittest_lru_OBJECTS)
-unittest_lru_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_lru_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_lru_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(unittest_lru_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_mds_authcap_OBJECTS =  \
-	test/mds/unittest_mds_authcap-TestMDSAuthCaps.$(OBJEXT)
+am__unittest_mds_authcap_SOURCES_DIST = test/mds/TestMDSAuthCaps.cc
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at am_unittest_mds_authcap_OBJECTS = test/mds/unittest_mds_authcap-TestMDSAuthCaps.$(OBJEXT)
 unittest_mds_authcap_OBJECTS = $(am_unittest_mds_authcap_OBJECTS)
-unittest_mds_authcap_DEPENDENCIES = $(am__DEPENDENCIES_11) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at unittest_mds_authcap_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_12) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__DEPENDENCIES_10)
 unittest_mds_authcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_mds_authcap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3518,34 +4879,38 @@ unittest_mds_authcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_mds_types_OBJECTS =  \
 	test/fs/unittest_mds_types-mds_types.$(OBJEXT)
 unittest_mds_types_OBJECTS = $(am_unittest_mds_types_OBJECTS)
-unittest_mds_types_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_mds_types_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_mds_types_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_mds_types_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_mime_OBJECTS = test/unittest_mime-mime.$(OBJEXT)
 unittest_mime_OBJECTS = $(am_unittest_mime_OBJECTS)
-unittest_mime_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_mime_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_mime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_mime_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-am_unittest_mon_moncap_OBJECTS =  \
-	test/mon/unittest_mon_moncap-moncap.$(OBJEXT)
+am__unittest_mon_moncap_SOURCES_DIST = test/mon/moncap.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_unittest_mon_moncap_OBJECTS = test/mon/unittest_mon_moncap-moncap.$(OBJEXT)
 unittest_mon_moncap_OBJECTS = $(am_unittest_mon_moncap_OBJECTS)
-unittest_mon_moncap_DEPENDENCIES = $(am__DEPENDENCIES_12) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_moncap_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_13) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_10)
 unittest_mon_moncap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_mon_moncap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_mon_pgmap_OBJECTS =  \
-	test/mon/unittest_mon_pgmap-PGMap.$(OBJEXT)
+am__unittest_mon_pgmap_SOURCES_DIST = test/mon/PGMap.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at am_unittest_mon_pgmap_OBJECTS = test/mon/unittest_mon_pgmap-PGMap.$(OBJEXT)
 unittest_mon_pgmap_OBJECTS = $(am_unittest_mon_pgmap_OBJECTS)
-unittest_mon_pgmap_DEPENDENCIES = $(am__DEPENDENCIES_12) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_pgmap_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_13) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	$(am__DEPENDENCIES_10)
 unittest_mon_pgmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_mon_pgmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3553,11 +4918,13 @@ unittest_mon_pgmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_on_exit_OBJECTS = test/on_exit.$(OBJEXT)
 unittest_on_exit_OBJECTS = $(am_unittest_on_exit_OBJECTS)
 unittest_on_exit_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_unittest_osd_osdcap_OBJECTS =  \
-	test/osd/unittest_osd_osdcap-osdcap.$(OBJEXT)
+am__unittest_osd_osdcap_SOURCES_DIST = test/osd/osdcap.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_osd_osdcap_OBJECTS = test/osd/unittest_osd_osdcap-osdcap.$(OBJEXT)
 unittest_osd_osdcap_OBJECTS = $(am_unittest_osd_osdcap_OBJECTS)
-unittest_osd_osdcap_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osd_osdcap_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10)
 unittest_osd_osdcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_osd_osdcap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3565,8 +4932,8 @@ unittest_osd_osdcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_osd_types_OBJECTS =  \
 	test/osd/unittest_osd_types-types.$(OBJEXT)
 unittest_osd_types_OBJECTS = $(am_unittest_osd_types_OBJECTS)
-unittest_osd_types_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_osd_types_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_osd_types_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_osd_types_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3574,18 +4941,20 @@ unittest_osd_types_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_osdmap_OBJECTS =  \
 	test/osd/unittest_osdmap-TestOSDMap.$(OBJEXT)
 unittest_osdmap_OBJECTS = $(am_unittest_osdmap_OBJECTS)
-unittest_osdmap_DEPENDENCIES = $(am__DEPENDENCIES_14) $(LIBCOMMON) \
-	$(am__DEPENDENCIES_9)
+unittest_osdmap_DEPENDENCIES = $(am__DEPENDENCIES_15) $(LIBCOMMON) \
+	$(am__DEPENDENCIES_10)
 unittest_osdmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_osdmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_osdscrub_OBJECTS =  \
-	test/osd/unittest_osdscrub-TestOSDScrub.$(OBJEXT)
+am__unittest_osdscrub_SOURCES_DIST = test/osd/TestOSDScrub.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_osdscrub_OBJECTS = test/osd/unittest_osdscrub-TestOSDScrub.$(OBJEXT)
 unittest_osdscrub_OBJECTS = $(am_unittest_osdscrub_OBJECTS)
-unittest_osdscrub_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osdscrub_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_osdscrub_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_osdscrub_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3593,18 +4962,20 @@ unittest_osdscrub_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_perf_counters_OBJECTS =  \
 	test/unittest_perf_counters-perf_counters.$(OBJEXT)
 unittest_perf_counters_OBJECTS = $(am_unittest_perf_counters_OBJECTS)
-unittest_perf_counters_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_perf_counters_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_perf_counters_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_perf_counters_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_pglog_OBJECTS =  \
-	test/osd/unittest_pglog-TestPGLog.$(OBJEXT)
+am__unittest_pglog_SOURCES_DIST = test/osd/TestPGLog.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at am_unittest_pglog_OBJECTS = test/osd/unittest_pglog-TestPGLog.$(OBJEXT)
 unittest_pglog_OBJECTS = $(am_unittest_pglog_OBJECTS)
-unittest_pglog_DEPENDENCIES = $(am__DEPENDENCIES_13) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_pglog_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_14) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_15) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__DEPENDENCIES_1)
 unittest_pglog_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_pglog_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3613,17 +4984,21 @@ am_unittest_prebufferedstreambuf_OBJECTS = test/unittest_prebufferedstreambuf-te
 unittest_prebufferedstreambuf_OBJECTS =  \
 	$(am_unittest_prebufferedstreambuf_OBJECTS)
 unittest_prebufferedstreambuf_DEPENDENCIES = $(LIBCOMMON) \
-	$(am__DEPENDENCIES_14) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_15) $(am__DEPENDENCIES_2)
 unittest_prebufferedstreambuf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_prebufferedstreambuf_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_unittest_rbd_replay_OBJECTS =  \
-	test/unittest_rbd_replay-test_rbd_replay.$(OBJEXT)
+am__unittest_rbd_replay_SOURCES_DIST = test/test_rbd_replay.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at am_unittest_rbd_replay_OBJECTS = test/unittest_rbd_replay-test_rbd_replay.$(OBJEXT)
 unittest_rbd_replay_OBJECTS = $(am_unittest_rbd_replay_OBJECTS)
-unittest_rbd_replay_DEPENDENCIES = $(LIBRBD) $(LIBRADOS) \
-	$(am__DEPENDENCIES_9) librbd_replay.la librbd_replay_ios.la \
-	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_rbd_replay_DEPENDENCIES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay_ios.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__DEPENDENCIES_15)
 unittest_rbd_replay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_rbd_replay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3631,16 +5006,18 @@ unittest_rbd_replay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_readahead_OBJECTS =  \
 	test/common/unittest_readahead-Readahead.$(OBJEXT)
 unittest_readahead_OBJECTS = $(am_unittest_readahead_OBJECTS)
-unittest_readahead_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_readahead_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_readahead_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_readahead_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_run_cmd_OBJECTS = test/unittest_run_cmd-run_cmd.$(OBJEXT)
+am__unittest_run_cmd_SOURCES_DIST = test/run_cmd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_unittest_run_cmd_OBJECTS = test/unittest_run_cmd-run_cmd.$(OBJEXT)
 unittest_run_cmd_OBJECTS = $(am_unittest_run_cmd_OBJECTS)
-unittest_run_cmd_DEPENDENCIES = $(LIBCEPHFS) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_run_cmd_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_run_cmd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_run_cmd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3648,8 +5025,8 @@ unittest_run_cmd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_safe_io_OBJECTS =  \
 	test/common/unittest_safe_io-test_safe_io.$(OBJEXT)
 unittest_safe_io_OBJECTS = $(am_unittest_safe_io_OBJECTS)
-unittest_safe_io_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_safe_io_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_safe_io_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_safe_io_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3657,8 +5034,8 @@ unittest_safe_io_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_shared_cache_OBJECTS =  \
 	test/common/unittest_shared_cache-test_shared_cache.$(OBJEXT)
 unittest_shared_cache_OBJECTS = $(am_unittest_shared_cache_OBJECTS)
-unittest_shared_cache_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_shared_cache_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_shared_cache_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_shared_cache_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3666,25 +5043,26 @@ unittest_shared_cache_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_sharedptr_registry_OBJECTS = test/common/unittest_sharedptr_registry-test_sharedptr_registry.$(OBJEXT)
 unittest_sharedptr_registry_OBJECTS =  \
 	$(am_unittest_sharedptr_registry_OBJECTS)
-unittest_sharedptr_registry_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_sharedptr_registry_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_sharedptr_registry_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_sharedptr_registry_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_unittest_signals_OBJECTS = test/unittest_signals-signals.$(OBJEXT)
 unittest_signals_OBJECTS = $(am_unittest_signals_OBJECTS)
-unittest_signals_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_signals_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_signals_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_signals_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_unittest_simple_spin_OBJECTS =  \
-	test/unittest_simple_spin-simple_spin.$(OBJEXT)
+am__unittest_simple_spin_SOURCES_DIST = test/simple_spin.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am_unittest_simple_spin_OBJECTS = test/unittest_simple_spin-simple_spin.$(OBJEXT)
 unittest_simple_spin_OBJECTS = $(am_unittest_simple_spin_OBJECTS)
-unittest_simple_spin_DEPENDENCIES = $(LIBCEPHFS) $(am__DEPENDENCIES_9) \
-	$(am__DEPENDENCIES_14)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_simple_spin_DEPENDENCIES = $(LIBCEPHFS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__DEPENDENCIES_15)
 unittest_simple_spin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_simple_spin_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3692,8 +5070,8 @@ unittest_simple_spin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_sloppy_crc_map_OBJECTS = test/common/unittest_sloppy_crc_map-test_sloppy_crc_map.$(OBJEXT)
 unittest_sloppy_crc_map_OBJECTS =  \
 	$(am_unittest_sloppy_crc_map_OBJECTS)
-unittest_sloppy_crc_map_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_sloppy_crc_map_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_sloppy_crc_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_sloppy_crc_map_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3701,8 +5079,8 @@ unittest_sloppy_crc_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_str_list_OBJECTS =  \
 	test/unittest_str_list-test_str_list.$(OBJEXT)
 unittest_str_list_OBJECTS = $(am_unittest_str_list_OBJECTS)
-unittest_str_list_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_str_list_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_str_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_str_list_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3710,8 +5088,8 @@ unittest_str_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_str_map_OBJECTS =  \
 	test/common/unittest_str_map-test_str_map.$(OBJEXT)
 unittest_str_map_OBJECTS = $(am_unittest_str_map_OBJECTS)
-unittest_str_map_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_str_map_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_str_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_str_map_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3719,16 +5097,16 @@ unittest_str_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_striper_OBJECTS =  \
 	test/unittest_striper-test_striper.$(OBJEXT)
 unittest_striper_OBJECTS = $(am_unittest_striper_OBJECTS)
-unittest_striper_DEPENDENCIES = $(LIBOSDC) $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_striper_DEPENDENCIES = $(LIBOSDC) $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_striper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_striper_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_strtol_OBJECTS = test/unittest_strtol-strtol.$(OBJEXT)
 unittest_strtol_OBJECTS = $(am_unittest_strtol_OBJECTS)
-unittest_strtol_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_strtol_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_strtol_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_strtol_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3736,8 +5114,8 @@ unittest_strtol_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_tableformatter_OBJECTS = test/common/unittest_tableformatter-test_tableformatter.$(OBJEXT)
 unittest_tableformatter_OBJECTS =  \
 	$(am_unittest_tableformatter_OBJECTS)
-unittest_tableformatter_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_tableformatter_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_tableformatter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_tableformatter_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3745,7 +5123,7 @@ unittest_tableformatter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_texttable_OBJECTS =  \
 	test/unittest_texttable-test_texttable.$(OBJEXT)
 unittest_texttable_OBJECTS = $(am_unittest_texttable_OBJECTS)
-unittest_texttable_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14)
+unittest_texttable_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_15)
 unittest_texttable_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_texttable_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -3753,16 +5131,16 @@ unittest_texttable_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_throttle_OBJECTS =  \
 	test/common/unittest_throttle-Throttle.$(OBJEXT)
 unittest_throttle_OBJECTS = $(am_unittest_throttle_OBJECTS)
-unittest_throttle_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_throttle_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_throttle_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_throttle_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am_unittest_utf8_OBJECTS = test/unittest_utf8-utf8.$(OBJEXT)
 unittest_utf8_OBJECTS = $(am_unittest_utf8_OBJECTS)
-unittest_utf8_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_utf8_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_utf8_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_utf8_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -3770,7 +5148,7 @@ unittest_utf8_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_util_OBJECTS =  \
 	test/common/unittest_util-test_util.$(OBJEXT)
 unittest_util_OBJECTS = $(am_unittest_util_OBJECTS)
-unittest_util_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) \
+unittest_util_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_15) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 unittest_util_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
@@ -3779,33 +5157,39 @@ unittest_util_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 am_unittest_workqueue_OBJECTS =  \
 	test/unittest_workqueue-test_workqueue.$(OBJEXT)
 unittest_workqueue_OBJECTS = $(am_unittest_workqueue_OBJECTS)
-unittest_workqueue_DEPENDENCIES = $(am__DEPENDENCIES_14) \
-	$(am__DEPENDENCIES_9)
+unittest_workqueue_DEPENDENCIES = $(am__DEPENDENCIES_15) \
+	$(am__DEPENDENCIES_10)
 unittest_workqueue_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(unittest_workqueue_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__xio_client_SOURCES_DIST = test/messenger/xio_client.cc \
 	test/messenger/xio_dispatcher.cc
- at ENABLE_XIO_TRUE@am_xio_client_OBJECTS = test/messenger/xio_client-xio_client.$(OBJEXT) \
- at ENABLE_XIO_TRUE@	test/messenger/xio_client-xio_dispatcher.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am_xio_client_OBJECTS = test/messenger/xio_client-xio_client.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_client-xio_dispatcher.$(OBJEXT)
 xio_client_OBJECTS = $(am_xio_client_OBJECTS)
- at ENABLE_XIO_TRUE@xio_client_DEPENDENCIES = $(am__DEPENDENCIES_5) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_9) $(LIBCOMMON) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_client_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
 xio_client_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(xio_client_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am__xio_server_SOURCES_DIST = test/messenger/xio_server.cc \
 	test/messenger/xio_dispatcher.cc
- at ENABLE_XIO_TRUE@am_xio_server_OBJECTS = test/messenger/xio_server-xio_server.$(OBJEXT) \
- at ENABLE_XIO_TRUE@	test/messenger/xio_server-xio_dispatcher.$(OBJEXT)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at am_xio_server_OBJECTS = test/messenger/xio_server-xio_server.$(OBJEXT) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_server-xio_dispatcher.$(OBJEXT)
 xio_server_OBJECTS = $(am_xio_server_OBJECTS)
- at ENABLE_XIO_TRUE@xio_server_DEPENDENCIES = $(am__DEPENDENCIES_5) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_9) $(LIBCOMMON) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
- at ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_server_DEPENDENCIES =  \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_5) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_10) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_2) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__DEPENDENCIES_1)
 xio_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(xio_server_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -3874,11 +5258,12 @@ SOURCES = $(libcls_log_client_a_SOURCES) \
 	$(libcls_version_client_a_SOURCES) $(libos_zfs_a_SOURCES) \
 	$(libarch_la_SOURCES) $(libauth_la_SOURCES) \
 	$(libcephfs_la_SOURCES) $(libcephfs_jni_la_SOURCES) \
-	$(libclient_la_SOURCES) $(libclient_fuse_la_SOURCES) \
-	$(libcls_hello_la_SOURCES) $(libcls_kvs_la_SOURCES) \
-	$(libcls_lock_la_SOURCES) $(libcls_lock_client_la_SOURCES) \
-	$(libcls_log_la_SOURCES) $(libcls_rbd_la_SOURCES) \
-	$(libcls_rbd_client_la_SOURCES) $(libcls_refcount_la_SOURCES) \
+	$(libcivetweb_la_SOURCES) $(libclient_la_SOURCES) \
+	$(libclient_fuse_la_SOURCES) $(libcls_hello_la_SOURCES) \
+	$(libcls_kvs_la_SOURCES) $(libcls_lock_la_SOURCES) \
+	$(libcls_lock_client_la_SOURCES) $(libcls_log_la_SOURCES) \
+	$(libcls_rbd_la_SOURCES) $(libcls_rbd_client_la_SOURCES) \
+	$(libcls_refcount_la_SOURCES) \
 	$(libcls_refcount_client_la_SOURCES) \
 	$(libcls_replica_log_la_SOURCES) $(libcls_rgw_la_SOURCES) \
 	$(libcls_rgw_client_la_SOURCES) $(libcls_statelog_la_SOURCES) \
@@ -4057,142 +5442,179 @@ SOURCES = $(libcls_log_client_a_SOURCES) \
 	$(unittest_utf8_SOURCES) $(unittest_util_SOURCES) \
 	$(unittest_workqueue_SOURCES) $(xio_client_SOURCES) \
 	$(xio_server_SOURCES)
-DIST_SOURCES = $(libcls_log_client_a_SOURCES) \
-	$(libcls_replica_log_client_a_SOURCES) \
-	$(libcls_statelog_client_a_SOURCES) \
-	$(libcls_user_client_a_SOURCES) \
-	$(libcls_version_client_a_SOURCES) \
+DIST_SOURCES = $(am__libcls_log_client_a_SOURCES_DIST) \
+	$(am__libcls_replica_log_client_a_SOURCES_DIST) \
+	$(am__libcls_statelog_client_a_SOURCES_DIST) \
+	$(am__libcls_user_client_a_SOURCES_DIST) \
+	$(am__libcls_version_client_a_SOURCES_DIST) \
 	$(am__libos_zfs_a_SOURCES_DIST) $(libarch_la_SOURCES) \
-	$(libauth_la_SOURCES) $(libcephfs_la_SOURCES) \
-	$(am__libcephfs_jni_la_SOURCES_DIST) $(libclient_la_SOURCES) \
+	$(libauth_la_SOURCES) $(am__libcephfs_la_SOURCES_DIST) \
+	$(am__libcephfs_jni_la_SOURCES_DIST) \
+	$(am__libcivetweb_la_SOURCES_DIST) \
+	$(am__libclient_la_SOURCES_DIST) \
 	$(am__libclient_fuse_la_SOURCES_DIST) \
-	$(libcls_hello_la_SOURCES) $(am__libcls_kvs_la_SOURCES_DIST) \
-	$(libcls_lock_la_SOURCES) $(libcls_lock_client_la_SOURCES) \
-	$(libcls_log_la_SOURCES) $(libcls_rbd_la_SOURCES) \
-	$(libcls_rbd_client_la_SOURCES) $(libcls_refcount_la_SOURCES) \
-	$(libcls_refcount_client_la_SOURCES) \
-	$(libcls_replica_log_la_SOURCES) $(libcls_rgw_la_SOURCES) \
-	$(libcls_rgw_client_la_SOURCES) $(libcls_statelog_la_SOURCES) \
-	$(libcls_user_la_SOURCES) $(libcls_version_la_SOURCES) \
-	$(libcommon_la_SOURCES) $(libcommon_api_la_SOURCES) \
+	$(am__libcls_hello_la_SOURCES_DIST) \
+	$(am__libcls_kvs_la_SOURCES_DIST) \
+	$(am__libcls_lock_la_SOURCES_DIST) \
+	$(am__libcls_lock_client_la_SOURCES_DIST) \
+	$(am__libcls_log_la_SOURCES_DIST) \
+	$(am__libcls_rbd_la_SOURCES_DIST) \
+	$(am__libcls_rbd_client_la_SOURCES_DIST) \
+	$(am__libcls_refcount_la_SOURCES_DIST) \
+	$(am__libcls_refcount_client_la_SOURCES_DIST) \
+	$(am__libcls_replica_log_la_SOURCES_DIST) \
+	$(am__libcls_rgw_la_SOURCES_DIST) \
+	$(am__libcls_rgw_client_la_SOURCES_DIST) \
+	$(am__libcls_statelog_la_SOURCES_DIST) \
+	$(am__libcls_user_la_SOURCES_DIST) \
+	$(am__libcls_version_la_SOURCES_DIST) $(libcommon_la_SOURCES) \
+	$(libcommon_api_la_SOURCES) \
 	$(am__libcommon_crc_la_SOURCES_DIST) \
 	$(am__libcommon_internal_la_SOURCES_DIST) \
-	$(libcrush_la_SOURCES) $(libec_example_la_SOURCES) \
-	$(libec_fail_to_initialize_la_SOURCES) \
-	$(libec_fail_to_register_la_SOURCES) $(libec_hangs_la_SOURCES) \
+	$(libcrush_la_SOURCES) $(am__libec_example_la_SOURCES_DIST) \
+	$(am__libec_fail_to_initialize_la_SOURCES_DIST) \
+	$(am__libec_fail_to_register_la_SOURCES_DIST) \
+	$(am__libec_hangs_la_SOURCES_DIST) \
 	$(am__libec_isa_la_SOURCES_DIST) $(libec_jerasure_la_SOURCES) \
 	$(libec_jerasure_generic_la_SOURCES) \
 	$(libec_jerasure_neon_la_SOURCES) \
 	$(libec_jerasure_sse3_la_SOURCES) \
 	$(libec_jerasure_sse4_la_SOURCES) $(libec_lrc_la_SOURCES) \
-	$(libec_missing_entry_point_la_SOURCES) \
-	$(libec_missing_version_la_SOURCES) $(libec_shec_la_SOURCES) \
-	$(libec_test_jerasure_generic_la_SOURCES) \
-	$(libec_test_jerasure_neon_la_SOURCES) \
-	$(libec_test_jerasure_sse3_la_SOURCES) \
-	$(libec_test_jerasure_sse4_la_SOURCES) \
+	$(am__libec_missing_entry_point_la_SOURCES_DIST) \
+	$(am__libec_missing_version_la_SOURCES_DIST) \
+	$(libec_shec_la_SOURCES) \
+	$(am__libec_test_jerasure_generic_la_SOURCES_DIST) \
+	$(am__libec_test_jerasure_neon_la_SOURCES_DIST) \
+	$(am__libec_test_jerasure_sse3_la_SOURCES_DIST) \
+	$(am__libec_test_jerasure_sse4_la_SOURCES_DIST) \
 	$(liberasure_code_la_SOURCES) $(libglobal_la_SOURCES) \
-	$(libjson_spirit_la_SOURCES) $(libkrbd_la_SOURCES) \
-	$(liblog_la_SOURCES) $(libmds_la_SOURCES) $(libmon_la_SOURCES) \
-	$(libmon_types_la_SOURCES) $(am__libmsg_la_SOURCES_DIST) \
-	$(am__libos_la_SOURCES_DIST) \
+	$(libjson_spirit_la_SOURCES) $(am__libkrbd_la_SOURCES_DIST) \
+	$(liblog_la_SOURCES) $(am__libmds_la_SOURCES_DIST) \
+	$(am__libmon_la_SOURCES_DIST) $(libmon_types_la_SOURCES) \
+	$(am__libmsg_la_SOURCES_DIST) $(am__libos_la_SOURCES_DIST) \
 	$(am__libos_rocksdb_la_SOURCES_DIST) $(libos_types_la_SOURCES) \
-	$(libosd_la_SOURCES) $(libosd_types_la_SOURCES) \
+	$(am__libosd_la_SOURCES_DIST) $(libosd_types_la_SOURCES) \
 	$(libosdc_la_SOURCES) $(am__libperfglue_la_SOURCES_DIST) \
-	$(librados_la_SOURCES) $(librados_api_la_SOURCES) \
-	$(librados_internal_la_SOURCES) \
-	$(librados_test_stub_la_SOURCES) $(libradosstriper_la_SOURCES) \
-	$(libradosstripertest_la_SOURCES) $(libradostest_la_SOURCES) \
-	$(librbd_la_SOURCES) $(librbd_api_la_SOURCES) \
-	$(librbd_internal_la_SOURCES) $(librbd_replay_la_SOURCES) \
-	$(librbd_replay_ios_la_SOURCES) $(librbd_test_la_SOURCES) \
-	$(librbd_types_la_SOURCES) $(am__librgw_la_SOURCES_DIST) \
-	$(libsecret_la_SOURCES) $(am__libsystest_la_SOURCES_DIST) \
-	$(ceph_authtool_SOURCES) $(ceph_client_debug_SOURCES) \
-	$(ceph_conf_SOURCES) $(am__ceph_dencoder_SOURCES_DIST) \
-	$(am__ceph_fuse_SOURCES_DIST) $(ceph_kvstore_tool_SOURCES) \
-	$(ceph_mds_SOURCES) $(ceph_mon_SOURCES) \
-	$(ceph_monstore_tool_SOURCES) $(ceph_objectstore_tool_SOURCES) \
-	$(ceph_osd_SOURCES) $(ceph_osdomap_tool_SOURCES) \
-	$(ceph_syn_SOURCES) $(ceph_bench_log_SOURCES) \
-	$(ceph_erasure_code_SOURCES) \
-	$(ceph_erasure_code_benchmark_SOURCES) \
-	$(ceph_erasure_code_non_regression_SOURCES) \
+	$(am__librados_la_SOURCES_DIST) \
+	$(am__librados_api_la_SOURCES_DIST) \
+	$(am__librados_internal_la_SOURCES_DIST) \
+	$(am__librados_test_stub_la_SOURCES_DIST) \
+	$(am__libradosstriper_la_SOURCES_DIST) \
+	$(am__libradosstripertest_la_SOURCES_DIST) \
+	$(am__libradostest_la_SOURCES_DIST) \
+	$(am__librbd_la_SOURCES_DIST) \
+	$(am__librbd_api_la_SOURCES_DIST) \
+	$(am__librbd_internal_la_SOURCES_DIST) \
+	$(am__librbd_replay_la_SOURCES_DIST) \
+	$(am__librbd_replay_ios_la_SOURCES_DIST) \
+	$(am__librbd_test_la_SOURCES_DIST) $(librbd_types_la_SOURCES) \
+	$(am__librgw_la_SOURCES_DIST) $(libsecret_la_SOURCES) \
+	$(am__libsystest_la_SOURCES_DIST) $(ceph_authtool_SOURCES) \
+	$(am__ceph_client_debug_SOURCES_DIST) $(ceph_conf_SOURCES) \
+	$(am__ceph_dencoder_SOURCES_DIST) \
+	$(am__ceph_fuse_SOURCES_DIST) \
+	$(am__ceph_kvstore_tool_SOURCES_DIST) \
+	$(am__ceph_mds_SOURCES_DIST) $(am__ceph_mon_SOURCES_DIST) \
+	$(am__ceph_monstore_tool_SOURCES_DIST) \
+	$(am__ceph_objectstore_tool_SOURCES_DIST) \
+	$(am__ceph_osd_SOURCES_DIST) \
+	$(am__ceph_osdomap_tool_SOURCES_DIST) \
+	$(am__ceph_syn_SOURCES_DIST) $(ceph_bench_log_SOURCES) \
+	$(am__ceph_erasure_code_SOURCES_DIST) \
+	$(am__ceph_erasure_code_benchmark_SOURCES_DIST) \
+	$(am__ceph_erasure_code_non_regression_SOURCES_DIST) \
 	$(am__ceph_kvstorebench_SOURCES_DIST) \
-	$(ceph_multi_stress_watch_SOURCES) $(ceph_omapbench_SOURCES) \
-	$(ceph_perf_objectstore_SOURCES) $(ceph_psim_SOURCES) \
-	$(ceph_radosacl_SOURCES) \
+	$(am__ceph_multi_stress_watch_SOURCES_DIST) \
+	$(am__ceph_omapbench_SOURCES_DIST) \
+	$(am__ceph_perf_objectstore_SOURCES_DIST) $(ceph_psim_SOURCES) \
+	$(am__ceph_radosacl_SOURCES_DIST) \
 	$(am__ceph_rgw_jsonparser_SOURCES_DIST) \
 	$(am__ceph_rgw_multiparser_SOURCES_DIST) \
-	$(ceph_scratchtool_SOURCES) $(ceph_scratchtoolpp_SOURCES) \
-	$(ceph_smalliobench_SOURCES) $(ceph_smalliobenchdumb_SOURCES) \
-	$(ceph_smalliobenchfs_SOURCES) $(ceph_smalliobenchrbd_SOURCES) \
-	$(ceph_streamtest_SOURCES) $(ceph_test_async_driver_SOURCES) \
-	$(ceph_test_c_headers_SOURCES) \
+	$(am__ceph_scratchtool_SOURCES_DIST) \
+	$(am__ceph_scratchtoolpp_SOURCES_DIST) \
+	$(am__ceph_smalliobench_SOURCES_DIST) \
+	$(am__ceph_smalliobenchdumb_SOURCES_DIST) \
+	$(am__ceph_smalliobenchfs_SOURCES_DIST) \
+	$(am__ceph_smalliobenchrbd_SOURCES_DIST) \
+	$(am__ceph_streamtest_SOURCES_DIST) \
+	$(am__ceph_test_async_driver_SOURCES_DIST) \
+	$(am__ceph_test_c_headers_SOURCES_DIST) \
 	$(ceph_test_cfuse_cache_invalidate_SOURCES) \
-	$(ceph_test_cls_hello_SOURCES) $(ceph_test_cls_lock_SOURCES) \
-	$(ceph_test_cls_log_SOURCES) $(ceph_test_cls_rbd_SOURCES) \
-	$(ceph_test_cls_refcount_SOURCES) \
-	$(ceph_test_cls_replica_log_SOURCES) \
+	$(am__ceph_test_cls_hello_SOURCES_DIST) \
+	$(am__ceph_test_cls_lock_SOURCES_DIST) \
+	$(am__ceph_test_cls_log_SOURCES_DIST) \
+	$(am__ceph_test_cls_rbd_SOURCES_DIST) \
+	$(am__ceph_test_cls_refcount_SOURCES_DIST) \
+	$(am__ceph_test_cls_replica_log_SOURCES_DIST) \
 	$(am__ceph_test_cls_rgw_SOURCES_DIST) \
 	$(am__ceph_test_cls_rgw_log_SOURCES_DIST) \
 	$(am__ceph_test_cls_rgw_meta_SOURCES_DIST) \
 	$(am__ceph_test_cls_rgw_opstate_SOURCES_DIST) \
-	$(ceph_test_cls_statelog_SOURCES) \
-	$(ceph_test_cls_version_SOURCES) \
+	$(am__ceph_test_cls_statelog_SOURCES_DIST) \
+	$(am__ceph_test_cls_version_SOURCES_DIST) \
 	$(am__ceph_test_cors_SOURCES_DIST) $(ceph_test_crypto_SOURCES) \
-	$(ceph_test_filejournal_SOURCES) \
+	$(am__ceph_test_filejournal_SOURCES_DIST) \
 	$(am__ceph_test_filestore_SOURCES_DIST) \
-	$(ceph_test_filestore_idempotent_SOURCES) \
-	$(ceph_test_filestore_idempotent_sequence_SOURCES) \
+	$(am__ceph_test_filestore_idempotent_SOURCES_DIST) \
+	$(am__ceph_test_filestore_idempotent_sequence_SOURCES_DIST) \
 	$(ceph_test_get_blkdev_size_SOURCES) \
-	$(ceph_test_ioctls_SOURCES) $(ceph_test_keys_SOURCES) \
-	$(ceph_test_keyvaluedb_atomicity_SOURCES) \
-	$(ceph_test_keyvaluedb_iterators_SOURCES) \
-	$(ceph_test_libcephfs_SOURCES) $(ceph_test_librbd_SOURCES) \
+	$(am__ceph_test_ioctls_SOURCES_DIST) \
+	$(am__ceph_test_keys_SOURCES_DIST) \
+	$(am__ceph_test_keyvaluedb_atomicity_SOURCES_DIST) \
+	$(am__ceph_test_keyvaluedb_iterators_SOURCES_DIST) \
+	$(am__ceph_test_libcephfs_SOURCES_DIST) \
+	$(ceph_test_librbd_SOURCES) \
 	$(am__ceph_test_librbd_fsx_SOURCES_DIST) \
-	$(ceph_test_mon_msg_SOURCES) \
-	$(ceph_test_mon_workloadgen_SOURCES) $(ceph_test_msgr_SOURCES) \
-	$(ceph_test_mutate_SOURCES) $(ceph_test_object_map_SOURCES) \
+	$(am__ceph_test_mon_msg_SOURCES_DIST) \
+	$(am__ceph_test_mon_workloadgen_SOURCES_DIST) \
+	$(am__ceph_test_msgr_SOURCES_DIST) \
+	$(am__ceph_test_mutate_SOURCES_DIST) \
+	$(am__ceph_test_object_map_SOURCES_DIST) \
 	$(ceph_test_objectcacher_stress_SOURCES) \
 	$(am__ceph_test_objectstore_SOURCES_DIST) \
-	$(ceph_test_objectstore_workloadgen_SOURCES) \
-	$(ceph_test_rados_SOURCES) $(ceph_test_rados_api_aio_SOURCES) \
-	$(ceph_test_rados_api_c_read_operations_SOURCES) \
-	$(ceph_test_rados_api_c_write_operations_SOURCES) \
-	$(ceph_test_rados_api_cls_SOURCES) \
-	$(ceph_test_rados_api_cmd_SOURCES) \
-	$(ceph_test_rados_api_io_SOURCES) \
-	$(ceph_test_rados_api_list_SOURCES) \
-	$(ceph_test_rados_api_lock_SOURCES) \
-	$(ceph_test_rados_api_misc_SOURCES) \
-	$(ceph_test_rados_api_nlist_SOURCES) \
-	$(ceph_test_rados_api_pool_SOURCES) \
-	$(ceph_test_rados_api_snapshots_SOURCES) \
-	$(ceph_test_rados_api_stat_SOURCES) \
-	$(ceph_test_rados_api_tier_SOURCES) \
-	$(ceph_test_rados_api_watch_notify_SOURCES) \
+	$(am__ceph_test_objectstore_workloadgen_SOURCES_DIST) \
+	$(am__ceph_test_rados_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_aio_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_c_read_operations_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_c_write_operations_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_cls_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_cmd_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_io_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_list_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_lock_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_misc_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_nlist_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_pool_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_snapshots_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_stat_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_tier_SOURCES_DIST) \
+	$(am__ceph_test_rados_api_watch_notify_SOURCES_DIST) \
 	$(am__ceph_test_rados_delete_pools_parallel_SOURCES_DIST) \
 	$(am__ceph_test_rados_list_parallel_SOURCES_DIST) \
 	$(am__ceph_test_rados_open_pools_parallel_SOURCES_DIST) \
-	$(ceph_test_rados_striper_api_aio_SOURCES) \
-	$(ceph_test_rados_striper_api_io_SOURCES) \
-	$(ceph_test_rados_striper_api_striping_SOURCES) \
+	$(am__ceph_test_rados_striper_api_aio_SOURCES_DIST) \
+	$(am__ceph_test_rados_striper_api_io_SOURCES_DIST) \
+	$(am__ceph_test_rados_striper_api_striping_SOURCES_DIST) \
 	$(am__ceph_test_rados_watch_notify_SOURCES_DIST) \
 	$(ceph_test_rewrite_latency_SOURCES) \
 	$(am__ceph_test_rgw_manifest_SOURCES_DIST) \
 	$(ceph_test_signal_handlers_SOURCES) \
-	$(ceph_test_snap_mapper_SOURCES) \
-	$(ceph_test_stress_watch_SOURCES) $(ceph_test_timers_SOURCES) \
-	$(ceph_test_trans_SOURCES) $(ceph_tpbench_SOURCES) \
-	$(ceph_xattr_bench_SOURCES) $(cephfs_SOURCES) \
-	$(cephfs_journal_tool_SOURCES) $(cephfs_table_tool_SOURCES) \
-	$(crushtool_SOURCES) $(get_command_descriptions_SOURCES) \
-	$(librados_config_SOURCES) $(monmaptool_SOURCES) \
-	$(mount_ceph_SOURCES) $(osdmaptool_SOURCES) $(rados_SOURCES) \
-	$(am__radosgw_SOURCES_DIST) $(am__radosgw_admin_SOURCES_DIST) \
-	$(rbd_SOURCES) $(am__rbd_fuse_SOURCES_DIST) \
-	$(rbd_replay_SOURCES) $(rbd_replay_prep_SOURCES) \
+	$(am__ceph_test_snap_mapper_SOURCES_DIST) \
+	$(am__ceph_test_stress_watch_SOURCES_DIST) \
+	$(ceph_test_timers_SOURCES) \
+	$(am__ceph_test_trans_SOURCES_DIST) \
+	$(am__ceph_tpbench_SOURCES_DIST) \
+	$(am__ceph_xattr_bench_SOURCES_DIST) \
+	$(am__cephfs_SOURCES_DIST) \
+	$(am__cephfs_journal_tool_SOURCES_DIST) \
+	$(am__cephfs_table_tool_SOURCES_DIST) $(crushtool_SOURCES) \
+	$(am__get_command_descriptions_SOURCES_DIST) \
+	$(am__librados_config_SOURCES_DIST) $(monmaptool_SOURCES) \
+	$(am__mount_ceph_SOURCES_DIST) $(osdmaptool_SOURCES) \
+	$(am__rados_SOURCES_DIST) $(am__radosgw_SOURCES_DIST) \
+	$(am__radosgw_admin_SOURCES_DIST) $(am__rbd_SOURCES_DIST) \
+	$(am__rbd_fuse_SOURCES_DIST) $(am__rbd_replay_SOURCES_DIST) \
+	$(am__rbd_replay_prep_SOURCES_DIST) \
 	$(am__rest_bench_SOURCES_DIST) \
 	$(am__simple_client_SOURCES_DIST) \
 	$(am__simple_server_SOURCES_DIST) \
@@ -4201,53 +5623,63 @@ DIST_SOURCES = $(libcls_log_client_a_SOURCES) \
 	$(am__test_build_librados_SOURCES_DIST) \
 	$(am__test_build_librgw_SOURCES_DIST) \
 	$(unittest_addrs_SOURCES) $(unittest_admin_socket_SOURCES) \
-	$(unittest_arch_SOURCES) $(unittest_base64_SOURCES) \
+	$(unittest_arch_SOURCES) $(am__unittest_base64_SOURCES_DIST) \
 	$(unittest_bit_vector_SOURCES) $(unittest_blkdev_SOURCES) \
 	$(unittest_bloom_filter_SOURCES) \
 	$(unittest_bufferlist_SOURCES) \
 	$(unittest_ceph_argparse_SOURCES) \
 	$(unittest_ceph_compatset_SOURCES) \
 	$(unittest_ceph_crypto_SOURCES) \
-	$(unittest_chain_xattr_SOURCES) $(unittest_config_SOURCES) \
-	$(unittest_confutils_SOURCES) $(unittest_context_SOURCES) \
-	$(unittest_crc32c_SOURCES) $(unittest_crush_SOURCES) \
-	$(unittest_crush_wrapper_SOURCES) $(unittest_crypto_SOURCES) \
-	$(unittest_crypto_init_SOURCES) \
+	$(am__unittest_chain_xattr_SOURCES_DIST) \
+	$(unittest_config_SOURCES) $(unittest_confutils_SOURCES) \
+	$(unittest_context_SOURCES) $(unittest_crc32c_SOURCES) \
+	$(unittest_crush_SOURCES) $(unittest_crush_wrapper_SOURCES) \
+	$(unittest_crypto_SOURCES) $(unittest_crypto_init_SOURCES) \
 	$(unittest_daemon_config_SOURCES) \
-	$(unittest_ecbackend_SOURCES) $(unittest_encoding_SOURCES) \
-	$(unittest_erasure_code_SOURCES) \
-	$(unittest_erasure_code_example_SOURCES) \
+	$(am__unittest_ecbackend_SOURCES_DIST) \
+	$(am__unittest_encoding_SOURCES_DIST) \
+	$(am__unittest_erasure_code_SOURCES_DIST) \
+	$(am__unittest_erasure_code_example_SOURCES_DIST) \
 	$(am__unittest_erasure_code_isa_SOURCES_DIST) \
-	$(unittest_erasure_code_jerasure_SOURCES) \
-	$(unittest_erasure_code_lrc_SOURCES) \
-	$(unittest_erasure_code_plugin_SOURCES) \
+	$(am__unittest_erasure_code_jerasure_SOURCES_DIST) \
+	$(am__unittest_erasure_code_lrc_SOURCES_DIST) \
+	$(am__unittest_erasure_code_plugin_SOURCES_DIST) \
 	$(am__unittest_erasure_code_plugin_isa_SOURCES_DIST) \
-	$(unittest_erasure_code_plugin_jerasure_SOURCES) \
-	$(unittest_erasure_code_plugin_lrc_SOURCES) \
-	$(unittest_erasure_code_shec_SOURCES) \
-	$(unittest_erasure_code_shec_all_SOURCES) \
-	$(unittest_erasure_code_shec_thread_SOURCES) \
-	$(unittest_escape_SOURCES) $(unittest_flatindex_SOURCES) \
+	$(am__unittest_erasure_code_plugin_jerasure_SOURCES_DIST) \
+	$(am__unittest_erasure_code_plugin_lrc_SOURCES_DIST) \
+	$(am__unittest_erasure_code_shec_SOURCES_DIST) \
+	$(am__unittest_erasure_code_shec_all_SOURCES_DIST) \
+	$(am__unittest_erasure_code_shec_thread_SOURCES_DIST) \
+	$(unittest_escape_SOURCES) \
+	$(am__unittest_flatindex_SOURCES_DIST) \
 	$(unittest_formatter_SOURCES) $(unittest_gather_SOURCES) \
 	$(unittest_heartbeatmap_SOURCES) $(unittest_histogram_SOURCES) \
-	$(unittest_hitset_SOURCES) $(unittest_io_priority_SOURCES) \
-	$(unittest_ipaddr_SOURCES) $(unittest_lfnindex_SOURCES) \
-	$(unittest_libcephfs_config_SOURCES) \
-	$(unittest_librados_SOURCES) \
-	$(unittest_librados_config_SOURCES) $(unittest_librbd_SOURCES) \
-	$(unittest_log_SOURCES) $(unittest_lru_SOURCES) \
-	$(unittest_mds_authcap_SOURCES) $(unittest_mds_types_SOURCES) \
-	$(unittest_mime_SOURCES) $(unittest_mon_moncap_SOURCES) \
-	$(unittest_mon_pgmap_SOURCES) $(unittest_on_exit_SOURCES) \
-	$(unittest_osd_osdcap_SOURCES) $(unittest_osd_types_SOURCES) \
-	$(unittest_osdmap_SOURCES) $(unittest_osdscrub_SOURCES) \
-	$(unittest_perf_counters_SOURCES) $(unittest_pglog_SOURCES) \
+	$(am__unittest_hitset_SOURCES_DIST) \
+	$(unittest_io_priority_SOURCES) $(unittest_ipaddr_SOURCES) \
+	$(am__unittest_lfnindex_SOURCES_DIST) \
+	$(am__unittest_libcephfs_config_SOURCES_DIST) \
+	$(am__unittest_librados_SOURCES_DIST) \
+	$(am__unittest_librados_config_SOURCES_DIST) \
+	$(unittest_librbd_SOURCES) $(unittest_log_SOURCES) \
+	$(unittest_lru_SOURCES) \
+	$(am__unittest_mds_authcap_SOURCES_DIST) \
+	$(unittest_mds_types_SOURCES) $(unittest_mime_SOURCES) \
+	$(am__unittest_mon_moncap_SOURCES_DIST) \
+	$(am__unittest_mon_pgmap_SOURCES_DIST) \
+	$(unittest_on_exit_SOURCES) \
+	$(am__unittest_osd_osdcap_SOURCES_DIST) \
+	$(unittest_osd_types_SOURCES) $(unittest_osdmap_SOURCES) \
+	$(am__unittest_osdscrub_SOURCES_DIST) \
+	$(unittest_perf_counters_SOURCES) \
+	$(am__unittest_pglog_SOURCES_DIST) \
 	$(unittest_prebufferedstreambuf_SOURCES) \
-	$(unittest_rbd_replay_SOURCES) $(unittest_readahead_SOURCES) \
-	$(unittest_run_cmd_SOURCES) $(unittest_safe_io_SOURCES) \
-	$(unittest_shared_cache_SOURCES) \
+	$(am__unittest_rbd_replay_SOURCES_DIST) \
+	$(unittest_readahead_SOURCES) \
+	$(am__unittest_run_cmd_SOURCES_DIST) \
+	$(unittest_safe_io_SOURCES) $(unittest_shared_cache_SOURCES) \
 	$(unittest_sharedptr_registry_SOURCES) \
-	$(unittest_signals_SOURCES) $(unittest_simple_spin_SOURCES) \
+	$(unittest_signals_SOURCES) \
+	$(am__unittest_simple_spin_SOURCES_DIST) \
 	$(unittest_sloppy_crc_map_SOURCES) \
 	$(unittest_str_list_SOURCES) $(unittest_str_map_SOURCES) \
 	$(unittest_striper_SOURCES) $(unittest_strtol_SOURCES) \
@@ -4263,6 +5695,8 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__python_PYTHON_DIST = pybind/ceph_argparse.py pybind/rados.py \
+	pybind/rbd.py pybind/cephfs.py pybind/ceph_rest_api.py
 am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 py_compile = $(top_srcdir)/py-compile
 DATA = $(bash_completion_DATA) $(doc_DATA) $(libcephfs_include_DATA) \
@@ -4543,10 +5977,11 @@ am__noinst_HEADERS_DIST = arch/intel.h arch/arm.h arch/probe.h \
 	rgw/rgw_rest_config.h rgw/rgw_usage.h rgw/rgw_user.h \
 	rgw/rgw_bucket.h rgw/rgw_keystone.h rgw/rgw_civetweb.h \
 	rgw/rgw_civetweb_log.h civetweb/civetweb.h \
-	civetweb/include/civetweb.h civetweb/src/md5.h \
-	cls/lock/cls_lock_types.h cls/lock/cls_lock_ops.h \
-	cls/lock/cls_lock_client.h cls/rbd/cls_rbd.h \
-	cls/rbd/cls_rbd_client.h cls/refcount/cls_refcount_ops.h \
+	civetweb/include/civetweb.h civetweb/include/civetweb_conf.h \
+	civetweb/src/md5.h cls/lock/cls_lock_types.h \
+	cls/lock/cls_lock_ops.h cls/lock/cls_lock_client.h \
+	cls/rbd/cls_rbd.h cls/rbd/cls_rbd_client.h \
+	cls/refcount/cls_refcount_ops.h \
 	cls/refcount/cls_refcount_client.h \
 	cls/version/cls_version_types.h cls/version/cls_version_ops.h \
 	cls/version/cls_version_client.h cls/log/cls_log_types.h \
@@ -4650,7 +6085,7 @@ ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_CXXFLAGS = @AM_CXXFLAGS@ $(AM_COMMON_CFLAGS) -ftemplate-depth-1024 \
 	-Wnon-virtual-dtor -Wno-invalid-offsetof $(am__append_3) \
-	$(am__append_6) $(am__append_52)
+	$(am__append_6) $(am__append_65)
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 ARM_FLAGS = @ARM_FLAGS@
@@ -4769,6 +6204,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@
@@ -4837,12 +6273,15 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = gnu subdir-objects
-SUBDIRS = ocf java tracing $(am__append_122) $(am__append_128)
+SUBDIRS = ocf java tracing $(am__append_193) $(am__append_194)
 DIST_SUBDIRS = gmock ocf libs3 java tracing
-BUILT_SOURCES = init-ceph
+BUILT_SOURCES = $(am__append_214)
 
 # extra bits
-EXTRA_DIST = brag/server brag/README.md brag/client \
+EXTRA_DIST = $(am__append_20) \
+	$(srcdir)/test/debian-jessie/Dockerfile.in \
+	$(srcdir)/test/debian-jessie/install-deps.sh \
+	$(srcdir)/test/debian-jessie/debian \
 	$(srcdir)/test/ubuntu-12.04/Dockerfile.in \
 	$(srcdir)/test/ubuntu-12.04/install-deps.sh \
 	$(srcdir)/test/ubuntu-12.04/debian \
@@ -4860,7 +6299,7 @@ EXTRA_DIST = brag/server brag/README.md brag/client \
 	$(srcdir)/test/coverage.sh $(patsubst \
 	%,$(srcdir)/%,$(check_SCRIPTS)) \
 	$(srcdir)/test/container-make-check-ubuntu-14.04.sh \
-	$(srcdir)/$(shell_scripts:%=%.in) \
+	$(am__append_195) $(srcdir)/$(shell_scripts:%=%.in) \
 	$(srcdir)/verify-mds-journal.sh $(srcdir)/vstart.sh \
 	$(srcdir)/stop.sh ceph-run $(srcdir)/ceph-osd-prestart.sh \
 	$(srcdir)/ceph_common.sh $(srcdir)/init-radosgw \
@@ -4890,8 +6329,7 @@ EXTRA_DIST = brag/server brag/README.md brag/client \
 	libs3/GNUmakefile.mingw libs3/GNUmakefile.osx libs3/INSTALL \
 	libs3/LICENSE libs3/README libs3/TODO libs3/archlinux \
 	libs3/debian libs3/doxyfile libs3/inc libs3/libs3.spec \
-	libs3/mswin libs3/src libs3/test unittest_bufferlist.sh \
-	$(am__append_129)
+	libs3/mswin libs3/src libs3/test unittest_bufferlist.sh
 CLEANFILES = $(shell_scripts) ceph_ver.h sample.fetch_config
 
 # jerasure plugin
@@ -4922,51 +6360,9 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	crush/CrushWrapper.h crush/CrushWrapper.i crush/builder.h \
 	crush/crush.h crush/grammar.h crush/hash.h \
 	crush/crush_ln_table.h crush/mapper.h crush/sample.txt \
-	crush/types.h mon/AuthMonitor.h mon/DataHealthService.h \
-	mon/Elector.h mon/LogMonitor.h mon/ConfigKeyService.h \
-	mon/HealthMonitor.h mon/HealthService.h mon/MDSMonitor.h \
-	mon/MonmapMonitor.h mon/MonCap.h mon/MonClient.h \
-	mon/MonCommands.h mon/DumplingMonCommands.h mon/MonMap.h \
-	mon/Monitor.h mon/MonitorStore.h mon/MonitorDBStore.h \
-	mon/OSDMonitor.h mon/PGMap.h mon/PGMonitor.h mon/Paxos.h \
-	mon/PaxosService.h mon/QuorumService.h mon/Session.h \
-	mon/mon_types.h mds/inode_backtrace.h mds/flock.h mds/locks.c \
-	mds/locks.h mds/CDentry.h mds/CDir.h mds/CInode.h \
-	mds/Capability.h mds/InoTable.h mds/JournalPointer.h \
-	mds/LocalLock.h mds/Locker.h mds/LogEvent.h mds/LogSegment.h \
-	mds/MDBalancer.h mds/MDCache.h mds/RecoveryQueue.h mds/MDLog.h \
-	mds/MDS.h mds/Beacon.h mds/MDSContext.h mds/MDSAuthCaps.h \
-	mds/MDSMap.h mds/MDSTable.h mds/MDSTableServer.h \
-	mds/MDSTableClient.h mds/Mutation.h mds/Migrator.h \
-	mds/ScatterLock.h mds/Server.h mds/SessionMap.h \
-	mds/SimpleLock.h mds/SnapClient.h mds/SnapRealm.h \
-	mds/SnapServer.h mds/inode_backtrace.h mds/mds_table_types.h \
-	mds/mdstypes.h mds/snap.h mds/MDSContinuation.h \
-	mds/events/ECommitted.h mds/events/EExport.h \
-	mds/events/EFragment.h mds/events/EImportFinish.h \
-	mds/events/EImportStart.h mds/events/EMetaBlob.h \
-	mds/events/ENoOp.h mds/events/EOpen.h \
-	mds/events/EResetJournal.h mds/events/ESession.h \
-	mds/events/ESessions.h mds/events/ESlaveUpdate.h \
-	mds/events/ESubtreeMap.h mds/events/ETableClient.h \
-	mds/events/ETableServer.h mds/events/EUpdate.h \
-	os/btrfs_ioctl.h os/chain_xattr.h os/BtrfsFileStoreBackend.h \
-	os/CollectionIndex.h os/DBObjectMap.h os/GenericObjectMap.h \
-	os/FileJournal.h os/FileStore.h os/FlatIndex.h os/FDCache.h \
-	os/GenericFileStoreBackend.h os/HashIndex.h os/IndexManager.h \
-	os/Journal.h os/JournalingObjectStore.h os/KeyValueDB.h \
-	os/LevelDBStore.h os/LFNIndex.h os/MemStore.h \
-	os/KeyValueStore.h os/ObjectMap.h os/ObjectStore.h \
-	os/SequencerPosition.h os/WBThrottle.h \
-	os/XfsFileStoreBackend.h os/ZFSFileStoreBackend.h \
-	$(am__append_24) $(am__append_26) $(am__append_28) \
-	$(am__append_32) osd/Ager.h osd/ClassHandler.h osd/HitSet.h \
-	osd/OSD.h osd/OSDCap.h osd/OSDMap.h osd/ObjectVersioner.h \
-	osd/OpRequest.h osd/SnapMapper.h osd/PG.h osd/PGLog.h \
-	osd/ReplicatedPG.h osd/PGBackend.h osd/ReplicatedBackend.h \
-	osd/TierAgentState.h osd/ECBackend.h osd/ECUtil.h \
-	osd/ECMsgTypes.h osd/ECTransaction.h osd/Watch.h \
-	osd/osd_types.h \
+	crush/types.h $(am__append_22) $(am__append_24) \
+	$(am__append_30) $(am__append_32) $(am__append_34) \
+	$(am__append_36) $(am__append_40) $(am__append_44) \
 	erasure-code/jerasure/gf-complete/include/gf_complete.h \
 	erasure-code/jerasure/gf-complete/include/gf_general.h \
 	erasure-code/jerasure/gf-complete/include/gf_int.h \
@@ -4997,16 +6393,12 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	erasure-code/jerasure/gf-complete/include/gf_rand.h \
 	erasure-code/jerasure/gf-complete/include/gf_method.h \
 	erasure-code/jerasure/gf-complete/include/gf_general.h \
-	$(am__append_45) erasure-code/ErasureCode.h \
+	$(am__append_55) erasure-code/ErasureCode.h \
 	erasure-code/ErasureCodeInterface.h \
 	erasure-code/ErasureCodePlugin.h osdc/Filer.h osdc/Journaler.h \
 	osdc/ObjectCacher.h osdc/Objecter.h osdc/Striper.h \
-	osdc/WritebackHandler.h client/Client.h client/Dentry.h \
-	client/Dir.h client/Fh.h client/Inode.h client/MetaRequest.h \
-	client/MetaSession.h client/ClientSnapRealm.h \
-	client/SyntheticClient.h client/Trace.h client/ioctl.h \
-	client/ObjecterWriteback.h $(am__append_49) global/pidfile.h \
-	global/global_init.h global/global_context.h \
+	osdc/WritebackHandler.h $(am__append_59) $(am__append_61) \
+	global/pidfile.h global/global_init.h global/global_context.h \
 	global/signal_handler.h json_spirit/json_spirit.h \
 	json_spirit/json_spirit_error_position.h \
 	json_spirit/json_spirit_reader.h \
@@ -5053,7 +6445,7 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	common/linux_version.h common/module.h common/Continuation.h \
 	common/Readahead.h common/Cycles.h common/Initialize.h \
 	common/ContextCompletion.h common/bit_vector.hpp \
-	$(am__append_59) common/secret.h msg/Connection.h \
+	$(am__append_73) common/secret.h msg/Connection.h \
 	msg/Dispatcher.h msg/Message.h msg/Messenger.h \
 	msg/SimplePolicyMessenger.h msg/msg_types.h \
 	msg/simple/Accepter.h msg/simple/DispatchQueue.h \
@@ -5061,7 +6453,7 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	msg/simple/SimpleMessenger.h msg/async/AsyncConnection.h \
 	msg/async/AsyncMessenger.h msg/async/Event.h \
 	msg/async/EventEpoll.h msg/async/EventSelect.h \
-	msg/async/net_handler.h $(am__append_68) messages/MAuth.h \
+	msg/async/net_handler.h $(am__append_82) messages/MAuth.h \
 	messages/MAuthReply.h messages/MCacheExpire.h \
 	messages/MClientCaps.h messages/MClientCapRelease.h \
 	messages/MClientLease.h messages/MClientReconnect.h \
@@ -5121,95 +6513,33 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	include/Context.h include/CompatSet.h include/Distribution.h \
 	include/Spinlock.h include/addr_parsing.h include/assert.h \
 	include/atomic.h include/bitmapper.h include/blobhash.h \
-	include/buffer.h include/byteorder.h \
-	include/cephfs/libcephfs.h include/ceph_features.h \
-	include/ceph_frag.h include/ceph_fs.h include/ceph_hash.h \
-	include/cmp.h include/color.h include/compat.h \
-	include/crc32c.h include/encoding.h include/err.h \
-	include/error.h include/filepath.h include/frag.h \
-	include/hash.h include/intarith.h include/interval_set.h \
-	include/int_types.h include/ipaddr.h include/krbd.h \
-	include/linux_fiemap.h include/lru.h include/msgr.h \
-	include/object.h include/page.h include/rangeset.h \
-	include/rados.h include/rbd_types.h include/statlite.h \
-	include/str_list.h include/str_map.h include/stringify.h \
-	include/types.h include/utime.h include/elist.h include/uuid.h \
-	include/xlist.h include/rados/librados.h \
-	include/rados/rados_types.h include/rados/rados_types.hpp \
-	include/rados/librados.hpp include/rados/librgw.h \
-	include/rados/page.h include/rados/crc32c.h \
-	include/rados/buffer.h include/radosstriper/libradosstriper.h \
-	include/radosstriper/libradosstriper.hpp \
-	include/rbd/features.h include/rbd/librbd.h \
-	include/rbd/librbd.hpp include/util.h include/stat.h \
-	include/on_exit.h include/memory.h include/rados/memory.h \
-	include/hash_namespace.h include/unordered_set.h \
-	include/unordered_map.h librados/snap_set_diff.h \
-	librados/AioCompletionImpl.h librados/IoCtxImpl.h \
-	librados/PoolAsyncCompletionImpl.h librados/RadosClient.h \
-	librados/RadosXattrIter.h librados/ListObjectImpl.h \
-	libradosstriper/RadosStriperImpl.h \
-	libradosstriper/MultiAioCompletionImpl.h \
-	librbd/AioCompletion.h librbd/AioRequest.h \
-	librbd/AsyncFlattenRequest.h librbd/AsyncObjectThrottle.h \
-	librbd/AsyncOperation.h librbd/AsyncRequest.h \
-	librbd/AsyncResizeRequest.h librbd/AsyncTrimRequest.h \
-	librbd/CopyupRequest.h librbd/ImageCtx.h librbd/ImageWatcher.h \
-	librbd/internal.h librbd/LibrbdWriteback.h librbd/ObjectMap.h \
-	librbd/parent_types.h librbd/SnapInfo.h librbd/TaskFinisher.h \
-	librbd/WatchNotifyTypes.h rgw/logrotate.conf rgw/rgw_acl.h \
-	rgw/rgw_acl_s3.h rgw/rgw_acl_swift.h rgw/rgw_client_io.h \
-	rgw/rgw_fcgi.h rgw/rgw_xml.h rgw/rgw_cache.h rgw/rgw_common.h \
-	rgw/rgw_cors.h rgw/rgw_cors_s3.h rgw/rgw_cors_swift.h \
-	rgw/rgw_string.h rgw/rgw_formats.h rgw/rgw_http_errors.h \
-	rgw/rgw_log.h rgw/rgw_loadgen.h rgw/rgw_multi.h \
-	rgw/rgw_policy_s3.h rgw/rgw_gc.h rgw/rgw_metadata.h \
-	rgw/rgw_multi_del.h rgw/rgw_op.h rgw/rgw_http_client.h \
-	rgw/rgw_swift.h rgw/rgw_swift_auth.h rgw/rgw_quota.h \
-	rgw/rgw_rados.h rgw/rgw_replica_log.h rgw/rgw_resolve.h \
-	rgw/rgw_rest.h rgw/rgw_rest_swift.h rgw/rgw_rest_s3.h \
-	rgw/rgw_auth_s3.h rgw/rgw_rest_admin.h rgw/rgw_rest_usage.h \
-	rgw/rgw_rest_user.h rgw/rgw_rest_bucket.h \
-	rgw/rgw_rest_client.h rgw/rgw_rest_conn.h rgw/rgw_tools.h \
-	rgw/rgw_rest_metadata.h rgw/rgw_rest_log.h \
-	rgw/rgw_rest_opstate.h rgw/rgw_rest_replica_log.h \
-	rgw/rgw_rest_config.h rgw/rgw_usage.h rgw/rgw_user.h \
-	rgw/rgw_bucket.h rgw/rgw_keystone.h rgw/rgw_civetweb.h \
-	rgw/rgw_civetweb_log.h civetweb/civetweb.h \
-	civetweb/include/civetweb.h civetweb/src/md5.h \
-	cls/lock/cls_lock_types.h cls/lock/cls_lock_ops.h \
-	cls/lock/cls_lock_client.h cls/rbd/cls_rbd.h \
-	cls/rbd/cls_rbd_client.h cls/refcount/cls_refcount_ops.h \
-	cls/refcount/cls_refcount_client.h \
-	cls/version/cls_version_types.h cls/version/cls_version_ops.h \
-	cls/version/cls_version_client.h cls/log/cls_log_types.h \
-	cls/log/cls_log_ops.h cls/log/cls_log_client.h \
-	cls/statelog/cls_statelog_types.h \
-	cls/statelog/cls_statelog_ops.h \
-	cls/statelog/cls_statelog_client.h \
-	cls/replica_log/cls_replica_log_types.h \
-	cls/replica_log/cls_replica_log_ops.h \
-	cls/replica_log/cls_replica_log_client.h \
-	cls/rgw/cls_rgw_client.h cls/rgw/cls_rgw_ops.h \
-	cls/rgw/cls_rgw_types.h cls/user/cls_user_client.h \
-	cls/user/cls_user_ops.h cls/user/cls_user_types.h \
-	key_value_store/key_value_structure.h \
-	key_value_store/kv_flat_btree_async.h \
-	key_value_store/kvs_arg_types.h rbd_replay/BoundedBuffer.hpp \
-	rbd_replay/actions.hpp rbd_replay/Deser.hpp \
-	rbd_replay/ImageNameMap.hpp rbd_replay/ios.hpp \
-	rbd_replay/PendingIO.hpp rbd_replay/rbd_loc.hpp \
-	rbd_replay/rbd_replay_debug.hpp rbd_replay/Replayer.hpp \
-	rbd_replay/Ser.hpp \
-	test/erasure-code/ceph_erasure_code_benchmark.h \
-	test/erasure-code/ceph_erasure_code_benchmark.h \
-	test/erasure-code/ErasureCodeExample.h $(am__append_97) \
-	test/librados_test_stub/TestClassHandler.h \
-	test/librados_test_stub/TestRadosClient.h \
-	test/librados_test_stub/TestMemRadosClient.h \
-	test/librados_test_stub/TestWatchNotify.h \
-	test/librados_test_stub/TestMemIoCtxImpl.h \
-	test/librados_test_stub/TestIoCtxImpl.h test/bench/backend.h \
+	include/buffer.h include/byteorder.h \
+	include/cephfs/libcephfs.h include/ceph_features.h \
+	include/ceph_frag.h include/ceph_fs.h include/ceph_hash.h \
+	include/cmp.h include/color.h include/compat.h \
+	include/crc32c.h include/encoding.h include/err.h \
+	include/error.h include/filepath.h include/frag.h \
+	include/hash.h include/intarith.h include/interval_set.h \
+	include/int_types.h include/ipaddr.h include/krbd.h \
+	include/linux_fiemap.h include/lru.h include/msgr.h \
+	include/object.h include/page.h include/rangeset.h \
+	include/rados.h include/rbd_types.h include/statlite.h \
+	include/str_list.h include/str_map.h include/stringify.h \
+	include/types.h include/utime.h include/elist.h include/uuid.h \
+	include/xlist.h include/rados/librados.h \
+	include/rados/rados_types.h include/rados/rados_types.hpp \
+	include/rados/librados.hpp include/rados/librgw.h \
+	include/rados/page.h include/rados/crc32c.h \
+	include/rados/buffer.h include/radosstriper/libradosstriper.h \
+	include/radosstriper/libradosstriper.hpp \
+	include/rbd/features.h include/rbd/librbd.h \
+	include/rbd/librbd.hpp include/util.h include/stat.h \
+	include/on_exit.h include/memory.h include/rados/memory.h \
+	include/hash_namespace.h include/unordered_set.h \
+	include/unordered_map.h $(am__append_89) $(am__append_92) \
+	$(am__append_97) $(am__append_103) $(am__append_107) \
+	$(am__append_110) $(am__append_112) $(am__append_116) \
+	$(am__append_136) $(am__append_149) test/bench/backend.h \
 	test/bench/bencher.h test/bench/detailed_stat_collector.h \
 	test/bench/distribution.h test/bench/dumb_backend.h \
 	test/bench/rados_backend.h test/bench/rbd_backend.h \
@@ -5241,73 +6571,42 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \
 	bash_completion/ceph bash_completion/rados bash_completion/rbd \
 	bash_completion/radosgw-admin mount/canonicalize.c \
 	mount/mtab.c objclass/objclass.h
-bin_SCRIPTS = brag/client/ceph-brag ceph ceph-run ceph-rest-api \
-	ceph-clsinfo ceph-debugpack ceph-rbdnamer ceph-post-file \
-	ceph-crush-location rbd-replay-many ceph-coverage
+bin_SCRIPTS = $(am__append_19) $(am__append_202) $(am__append_211) \
+	$(am__append_219)
 sbin_SCRIPTS = 
-su_sbin_SCRIPTS = mount.fuse.ceph
+su_sbin_SCRIPTS = $(am__append_216)
 dist_bin_SCRIPTS = 
-lib_LTLIBRARIES = librados.la libradosstriper.la librbd.la \
-	libcephfs.la $(am__append_127)
+lib_LTLIBRARIES = $(am__append_88) $(am__append_91) $(am__append_96) \
+	$(am__append_209) $(am__append_210)
 noinst_LTLIBRARIES = libarch.la libauth.la libcrush.la libmon_types.la \
-	libmon.la libmds.la libos_types.la libos.la $(am__append_23) \
-	$(am__append_25) libosd_types.la libosd.la liberasure_code.la \
-	libosdc.la libclient.la $(am__append_48) libglobal.la \
+	$(am__append_21) $(am__append_23) libos_types.la \
+	$(am__append_29) $(am__append_31) $(am__append_33) \
+	libosd_types.la $(am__append_43) liberasure_code.la libosdc.la \
+	$(am__append_58) $(am__append_60) libglobal.la \
 	libjson_spirit.la liblog.la libperfglue.la \
 	libcommon_internal.la libcommon_api.la libcommon_crc.la \
-	libcommon.la $(am__append_60) libmsg.la librados_internal.la \
-	librados_api.la librbd_types.la librbd_internal.la \
-	librbd_api.la $(am__append_75) libcls_lock_client.la \
-	libcls_refcount_client.la libcls_rgw_client.la \
-	libcls_rbd_client.la librbd_replay.la librbd_replay_ios.la \
-	$(am__append_107) libradostest.la libradosstripertest.la \
-	librados_test_stub.la librbd_test.la $(am__append_124)
-noinst_LIBRARIES = $(am__append_27) libcls_version_client.a \
-	libcls_log_client.a libcls_statelog_client.a \
-	libcls_replica_log_client.a libcls_user_client.a
-radoslib_LTLIBRARIES = libcls_hello.la libcls_rbd.la libcls_lock.la \
-	libcls_refcount.la libcls_version.la libcls_log.la \
-	libcls_statelog.la libcls_replica_log.la libcls_user.la \
-	libcls_rgw.la $(am__append_80)
+	libcommon.la $(am__append_74) libmsg.la $(am__append_83) \
+	librbd_types.la $(am__append_93) $(am__append_98) \
+	$(am__append_104) $(am__append_111) $(am__append_142) \
+	$(am__append_152) $(am__append_156) $(am__append_180) \
+	$(am__append_204)
+noinst_LIBRARIES = $(am__append_35) $(am__append_106)
+radoslib_LTLIBRARIES = $(am__append_108) $(am__append_109)
 
 # like bin_PROGRAMS, but these targets are only built for debug builds
-bin_DEBUGPROGRAMS = ceph_test_ioctls $(am__append_78) \
-	ceph_erasure_code_benchmark ceph_erasure_code ceph_test_timers \
-	ceph_test_signal_handlers ceph_test_rados ceph_test_mutate \
-	ceph_test_rewrite_latency ceph_test_async_driver \
-	ceph_test_msgr ceph_streamtest ceph_test_trans \
-	ceph_test_crypto ceph_test_keys $(am__append_105) \
-	ceph_smalliobench ceph_smalliobenchfs ceph_smalliobenchdumb \
-	ceph_smalliobenchrbd ceph_tpbench ceph_omapbench \
-	$(am__append_106) ceph_bench_log $(am__append_112) \
-	ceph_multi_stress_watch ceph_test_librbd $(am__append_115) \
-	ceph_test_cls_rbd ceph_test_cls_refcount ceph_test_cls_version \
-	ceph_test_cls_log ceph_test_cls_statelog \
-	ceph_test_cls_replica_log ceph_test_cls_lock \
-	ceph_test_cls_hello $(am__append_116) \
-	ceph_test_mon_workloadgen ceph_test_mon_msg \
-	ceph_test_rados_api_cmd ceph_test_rados_api_io \
-	ceph_test_rados_api_c_write_operations \
-	ceph_test_rados_api_c_read_operations ceph_test_rados_api_aio \
-	ceph_test_rados_api_list ceph_test_rados_api_nlist \
-	ceph_test_rados_api_pool ceph_test_rados_api_stat \
-	ceph_test_rados_api_watch_notify ceph_test_rados_api_snapshots \
-	ceph_test_rados_api_cls ceph_test_rados_api_misc \
-	ceph_test_rados_api_tier ceph_test_rados_api_lock \
-	ceph_test_rados_striper_api_io ceph_test_rados_striper_api_aio \
-	ceph_test_rados_striper_api_striping ceph_test_libcephfs \
-	ceph_perf_objectstore $(am__append_117) \
-	ceph_test_objectstore_workloadgen \
-	ceph_test_filestore_idempotent \
-	ceph_test_filestore_idempotent_sequence ceph_xattr_bench \
-	ceph_test_filejournal ceph_test_stress_watch \
-	ceph_test_objectcacher_stress ceph_test_snap_mapper \
-	ceph_test_object_map ceph_test_keyvaluedb_atomicity \
-	ceph_test_keyvaluedb_iterators \
-	ceph_test_cfuse_cache_invalidate ceph_test_c_headers \
-	ceph_test_get_blkdev_size ceph-osdomap-tool ceph-monstore-tool \
-	ceph-kvstore-tool ceph_scratchtool ceph_scratchtoolpp \
-	ceph_psim ceph_radosacl ceph-client-debug
+bin_DEBUGPROGRAMS = $(am__append_62) $(am__append_101) \
+	$(am__append_118) $(am__append_143) $(am__append_144) \
+	$(am__append_145) $(am__append_146) $(am__append_148) \
+	$(am__append_150) $(am__append_155) $(am__append_157) \
+	$(am__append_158) $(am__append_160) $(am__append_161) \
+	$(am__append_162) $(am__append_163) $(am__append_164) \
+	$(am__append_165) $(am__append_166) $(am__append_167) \
+	$(am__append_173) ceph_test_timers ceph_test_signal_handlers \
+	ceph_test_rewrite_latency ceph_test_crypto $(am__append_179) \
+	ceph_bench_log ceph_test_objectcacher_stress \
+	ceph_test_cfuse_cache_invalidate ceph_test_get_blkdev_size \
+	$(am__append_183) $(am__append_185) $(am__append_186) \
+	ceph_psim
 
 # like sbin_SCRIPTS but can be used to install to e.g. /usr/sbin
 ceph_sbindir = $(sbindir)
@@ -5316,17 +6615,17 @@ ceph_sbindir = $(sbindir)
 su_sbindir = /sbin
 
 # tests scripts will be appended to this
-check_SCRIPTS = test/erasure-code/test-erasure-code.sh \
-	test/ceph_objectstore_tool.py test/test-ceph-helpers.sh \
-	test/cephtool-test-osd.sh test/cephtool-test-mon.sh \
-	test/cephtool-test-mds.sh unittest_bufferlist.sh \
-	test/encoding/check-generated.sh test/mon/osd-pool-create.sh \
-	test/mon/misc.sh test/mon/osd-crush.sh \
-	test/mon/osd-erasure-code-profile.sh test/mon/mkfs.sh \
-	test/osd/osd-scrub-repair.sh test/osd/osd-config.sh \
-	test/osd/osd-bench.sh test/osd/osd-copy-from.sh \
-	test/mon/mon-handle-forward.sh $(am__append_108) \
-	$(am__append_109) test/pybind/test_ceph_argparse.py
+check_SCRIPTS = $(am__append_115) test/ceph_objectstore_tool.py \
+	test/test-ceph-helpers.sh test/cephtool-test-osd.sh \
+	test/cephtool-test-mon.sh test/cephtool-test-mds.sh \
+	unittest_bufferlist.sh test/encoding/check-generated.sh \
+	test/mon/osd-pool-create.sh test/mon/misc.sh \
+	test/mon/osd-crush.sh test/mon/osd-erasure-code-profile.sh \
+	test/mon/mkfs.sh test/osd/osd-scrub-repair.sh \
+	test/osd/osd-config.sh test/osd/osd-bench.sh \
+	test/osd/osd-copy-from.sh test/mon/mon-handle-forward.sh \
+	$(am__append_181) $(am__append_182) \
+	test/pybind/test_ceph_argparse.py
 
 ##################################
 AM_COMMON_CPPFLAGS = \
@@ -5346,11 +6645,11 @@ AM_COMMON_CFLAGS = \
 	${WARN_IGNORED_QUALIFIERS} \
 	-Winit-self \
 	-Wpointer-arith \
-	-Werror=format-security \
+	${WARN_ERROR_FORMAT_SECURITY} \
 	-fno-strict-aliasing \
 	-fsigned-char
 
-AM_CFLAGS = $(AM_COMMON_CFLAGS) $(am__append_5) $(am__append_51)
+AM_CFLAGS = $(AM_COMMON_CFLAGS) $(am__append_5) $(am__append_64)
 AM_CPPFLAGS = $(AM_COMMON_CPPFLAGS)
 
 # note: this is position dependant, it affects the -l options that
@@ -5397,6 +6696,7 @@ LIBCLIENT_FUSE = libclient_fuse.la
 LIBRADOS = librados.la
 LIBRADOSSTRIPER = libradosstriper.la
 LIBRGW = librgw.la $(am__append_17)
+LIBCIVETWEB = libcivetweb.la
 LIBRBD = librbd.la
 LIBRBD_TYPES = librbd_types.la
 LIBKRBD = libkrbd.la
@@ -5415,16 +6715,13 @@ CEPH_GLOBAL = $(LIBGLOBAL) $(LIBCOMMON) $(PTHREAD_LIBS) -lm $(CRYPTO_LIBS) $(EXT
 # important; libmsg before libauth!
 LIBCOMMON_DEPS = libcommon_internal.la libcommon_crc.la \
 	$(LIBERASURE_CODE) $(LIBMSG) $(LIBAUTH) $(LIBCRUSH) \
-	$(LIBJSON_SPIRIT) $(LIBLOG) $(LIBARCH) $(am__append_58)
-LIBRADOS_DEPS = librados_internal.la libcls_lock_client.la $(LIBOSDC) \
-	$(LIBCOMMON_DEPS) $(am__append_69)
-LIBRGW_DEPS = $(am__append_76)
+	$(LIBJSON_SPIRIT) $(LIBLOG) $(LIBARCH) $(am__append_72)
+LIBRADOS_DEPS = $(am__append_84) $(am__append_85)
+LIBRGW_DEPS = $(am__append_99)
 
 # This is used by the dencoder test
-DENCODER_SOURCES = $(am__append_79)
-DENCODER_DEPS = libcls_lock_client.la libcls_refcount_client.la \
-	libcls_replica_log_client.a libcls_rgw_client.la \
-	libcls_user_client.a
+DENCODER_SOURCES = $(am__append_102)
+DENCODER_DEPS = $(am__append_105)
 radoslibdir = $(libdir)/rados-classes
 libarch_la_SOURCES = \
 	arch/intel.c \
@@ -5461,115 +6758,122 @@ libcrush_la_SOURCES = \
 libmon_types_la_SOURCES = \
 	mon/PGMap.cc
 
-libmon_la_SOURCES = \
-	mon/Monitor.cc \
-	mon/Paxos.cc \
-	mon/PaxosService.cc \
-	mon/OSDMonitor.cc \
-	mon/MDSMonitor.cc \
-	mon/MonmapMonitor.cc \
-	mon/PGMonitor.cc \
-	mon/LogMonitor.cc \
-	mon/AuthMonitor.cc \
-	mon/Elector.cc \
-	mon/MonitorStore.cc \
-	mon/HealthMonitor.cc \
-	mon/DataHealthService.cc \
-	mon/ConfigKeyService.cc
-
-libmon_la_LIBADD = $(LIBAUTH) $(LIBCOMMON) $(LIBOS) $(LIBMON_TYPES)
-libmds_la_SOURCES = \
-	mds/Capability.cc \
-	mds/MDS.cc \
-	mds/Beacon.cc \
-	mds/locks.c \
-	mds/journal.cc \
-	mds/Server.cc \
-	mds/Mutation.cc \
-	mds/MDCache.cc \
-	mds/RecoveryQueue.cc \
-	mds/Locker.cc \
-	mds/Migrator.cc \
-	mds/MDBalancer.cc \
-	mds/CDentry.cc \
-	mds/CDir.cc \
-	mds/CInode.cc \
-	mds/LogEvent.cc \
-	mds/MDSTable.cc \
-	mds/InoTable.cc \
-	mds/JournalPointer.cc \
-	mds/MDSTableClient.cc \
-	mds/MDSTableServer.cc \
-	mds/SnapRealm.cc \
-	mds/SnapServer.cc \
-	mds/snap.cc \
-	mds/SessionMap.cc \
-	mds/MDSContext.cc \
-	mds/MDSAuthCaps.cc \
-	mds/MDLog.cc \
-	common/TrackedOp.cc
-
-libmds_la_LIBADD = $(LIBOSDC)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at libmon_la_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Monitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Paxos.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PaxosService.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/OSDMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MDSMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonmapMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/PGMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/LogMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/AuthMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/Elector.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/MonitorStore.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/HealthMonitor.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/DataHealthService.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE@	mon/ConfigKeyService.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at libmon_la_LIBADD = $(LIBAUTH) $(LIBCOMMON) $(LIBOS) $(LIBMON_TYPES)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at libmds_la_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Capability.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDS.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Beacon.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/locks.c \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/journal.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Server.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Mutation.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDCache.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/RecoveryQueue.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Locker.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/Migrator.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDBalancer.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CDentry.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CDir.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/CInode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/LogEvent.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTable.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/InoTable.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/JournalPointer.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableClient.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSTableServer.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapRealm.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SnapServer.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/snap.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/SessionMap.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSContext.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDSAuthCaps.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	mds/MDLog.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	common/TrackedOp.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at libmds_la_LIBADD = $(LIBOSDC)
 libos_types_la_SOURCES = \
 	os/Transaction.cc
 
 libos_types_la_CXXFLAGS = ${AM_CXXFLAGS}
-libos_la_SOURCES = os/chain_xattr.cc os/DBObjectMap.cc \
-	os/GenericObjectMap.cc os/FileJournal.cc os/FileStore.cc \
-	os/FlatIndex.cc os/GenericFileStoreBackend.cc os/HashIndex.cc \
-	os/IndexManager.cc os/JournalingObjectStore.cc \
-	os/LevelDBStore.cc os/LFNIndex.cc os/MemStore.cc \
-	os/KeyValueDB.cc os/KeyValueStore.cc os/ObjectStore.cc \
-	os/WBThrottle.cc os/KeyValueDB.cc common/TrackedOp.cc \
-	$(am__append_19) $(am__append_20) $(am__append_21) \
-	$(am__append_29)
-libos_la_CXXFLAGS = ${AM_CXXFLAGS} $(am__append_30)
-libos_la_LIBADD = $(LIBOS_TYPES) $(am__append_22) $(am__append_31)
- at WITH_DLIBROCKSDB_TRUE@libos_rocksdb_la_SOURCES = os/RocksDBStore.cc
- at WITH_SLIBROCKSDB_TRUE@libos_rocksdb_la_SOURCES = os/RocksDBStore.cc
- at WITH_DLIBROCKSDB_TRUE@libos_rocksdb_la_CXXFLAGS = ${AM_CXXFLAGS} ${LIBROCKSDB_CFLAGS} -std=gnu++11
- at WITH_SLIBROCKSDB_TRUE@libos_rocksdb_la_CXXFLAGS = ${AM_CXXFLAGS} ${LIBROCKSDB_CFLAGS} -std=gnu++11 -I rocksdb/include
- at WITH_DLIBROCKSDB_TRUE@libos_rocksdb_la_LIBADD = -lrocksdb
- at WITH_SLIBROCKSDB_TRUE@libos_rocksdb_la_LIBADD = rocksdb/librocksdb.la
- at WITH_LIBZFS_TRUE@libos_zfs_a_SOURCES = os/ZFS.cc
- at WITH_LIBZFS_TRUE@libos_zfs_a_CXXFLAGS = ${AM_CXXFLAGS} ${LIBZFS_CFLAGS}
+ at ENABLE_SERVER_TRUE@libos_la_SOURCES = os/chain_xattr.cc \
+ at ENABLE_SERVER_TRUE@	os/DBObjectMap.cc os/GenericObjectMap.cc \
+ at ENABLE_SERVER_TRUE@	os/FileJournal.cc os/FileStore.cc \
+ at ENABLE_SERVER_TRUE@	os/FlatIndex.cc \
+ at ENABLE_SERVER_TRUE@	os/GenericFileStoreBackend.cc \
+ at ENABLE_SERVER_TRUE@	os/HashIndex.cc os/IndexManager.cc \
+ at ENABLE_SERVER_TRUE@	os/JournalingObjectStore.cc \
+ at ENABLE_SERVER_TRUE@	os/LevelDBStore.cc os/LFNIndex.cc \
+ at ENABLE_SERVER_TRUE@	os/MemStore.cc os/KeyValueDB.cc \
+ at ENABLE_SERVER_TRUE@	os/KeyValueStore.cc os/ObjectStore.cc \
+ at ENABLE_SERVER_TRUE@	os/WBThrottle.cc os/KeyValueDB.cc \
+ at ENABLE_SERVER_TRUE@	common/TrackedOp.cc $(am__append_25) \
+ at ENABLE_SERVER_TRUE@	$(am__append_26) $(am__append_27) \
+ at ENABLE_SERVER_TRUE@	$(am__append_37)
+ at ENABLE_SERVER_TRUE@libos_la_CXXFLAGS = ${AM_CXXFLAGS} \
+ at ENABLE_SERVER_TRUE@	$(am__append_38)
+ at ENABLE_SERVER_TRUE@libos_la_LIBADD = $(LIBOS_TYPES) $(am__append_28) \
+ at ENABLE_SERVER_TRUE@	$(am__append_39)
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at libos_rocksdb_la_SOURCES = os/RocksDBStore.cc
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at libos_rocksdb_la_SOURCES = os/RocksDBStore.cc
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at libos_rocksdb_la_CXXFLAGS = ${AM_CXXFLAGS} ${LIBROCKSDB_CFLAGS} -std=gnu++11
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at libos_rocksdb_la_CXXFLAGS = ${AM_CXXFLAGS} ${LIBROCKSDB_CFLAGS} -std=gnu++11 -I rocksdb/include
+ at ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE at libos_rocksdb_la_LIBADD = -lrocksdb
+ at ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE at libos_rocksdb_la_LIBADD = rocksdb/librocksdb.la
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at libos_zfs_a_SOURCES = os/ZFS.cc
+ at ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE at libos_zfs_a_CXXFLAGS = ${AM_CXXFLAGS} ${LIBZFS_CFLAGS}
 libosd_types_la_SOURCES = \
 	osd/PGLog.cc \
 	osd/osd_types.cc \
 	osd/ECUtil.cc
 
 libosd_types_la_CXXFLAGS = ${AM_CXXFLAGS}
-libosd_la_SOURCES = \
-	osd/PG.cc \
-	osd/ReplicatedPG.cc \
-	osd/ReplicatedBackend.cc \
-	osd/ECBackend.cc \
-	osd/ECMsgTypes.cc \
-	osd/ECTransaction.cc \
-	osd/PGBackend.cc \
-	osd/Ager.cc \
-	osd/HitSet.cc \
-	osd/OSD.cc \
-	osd/OSDCap.cc \
-	osd/Watch.cc \
-	osd/ClassHandler.cc \
-	osd/OpRequest.cc \
-	common/TrackedOp.cc \
-	osd/SnapMapper.cc \
-	objclass/class_api.cc
-
-libosd_la_CXXFLAGS = ${AM_CXXFLAGS} $(am__append_34)
-libosd_la_LIBADD = $(LIBOSDC) $(LIBOS) $(LIBOSD_TYPES) $(LIBOS_TYPES) \
-	$(am__append_33)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libosd_la_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/PG.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ReplicatedPG.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ReplicatedBackend.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECBackend.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECMsgTypes.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ECTransaction.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/PGBackend.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/Ager.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/HitSet.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OSD.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OSDCap.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/Watch.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/ClassHandler.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/OpRequest.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/TrackedOp.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	osd/SnapMapper.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	objclass/class_api.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libosd_la_CXXFLAGS =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${AM_CXXFLAGS} \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_41)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libosd_la_LIBADD = $(LIBOSDC) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOS) $(LIBOSD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOS_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_42)
 erasure_codelibdir = $(pkglibdir)/erasure-code
 erasure_codelib_LTLIBRARIES = libec_jerasure_generic.la \
-	$(am__append_37) $(am__append_39) $(am__append_41) \
-	libec_jerasure.la libec_lrc.la libec_shec.la $(am__append_47) \
-	libec_example.la libec_missing_entry_point.la \
-	libec_missing_version.la libec_hangs.la \
-	libec_fail_to_initialize.la libec_fail_to_register.la \
-	libec_test_jerasure_neon.la libec_test_jerasure_sse4.la \
-	libec_test_jerasure_sse3.la libec_test_jerasure_generic.la
+	$(am__append_47) $(am__append_49) $(am__append_51) \
+	libec_jerasure.la libec_lrc.la libec_shec.la $(am__append_57) \
+	$(am__append_122)
 jerasure_sources = \
   erasure-code/ErasureCode.cc \
   erasure-code/jerasure/jerasure/src/cauchy.c \
@@ -5602,7 +6906,7 @@ libec_jerasure_generic_la_CXXFLAGS = ${AM_CXXFLAGS} \
 
 libec_jerasure_generic_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 libec_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_35)
+	$(am__append_45)
 libec_jerasure_neon_la_SOURCES = ${jerasure_sources}                                       \
                                   erasure-code/jerasure/gf-complete/src/neon/gf_w4_neon.c  \
                                   erasure-code/jerasure/gf-complete/src/neon/gf_w8_neon.c  \
@@ -5622,7 +6926,7 @@ libec_jerasure_neon_la_CXXFLAGS = ${AM_CXXFLAGS} \
 
 libec_jerasure_neon_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 libec_jerasure_neon_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_36)
+	$(am__append_46)
 libec_jerasure_sse3_la_SOURCES = ${jerasure_sources}
 libec_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS}  \
 	${INTEL_SSE_FLAGS} \
@@ -5642,7 +6946,7 @@ libec_jerasure_sse3_la_CXXFLAGS = ${AM_CXXFLAGS} \
 
 libec_jerasure_sse3_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 libec_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_38)
+	$(am__append_48)
 libec_jerasure_sse4_la_SOURCES = ${jerasure_sources}
 libec_jerasure_sse4_la_CFLAGS = ${AM_CFLAGS}  \
 	${INTEL_SSE_FLAGS} \
@@ -5666,7 +6970,7 @@ libec_jerasure_sse4_la_CXXFLAGS = ${AM_CXXFLAGS} \
 
 libec_jerasure_sse4_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_40)
+	$(am__append_50)
 libec_jerasure_la_SOURCES = \
 	erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
 
@@ -5674,7 +6978,7 @@ libec_jerasure_la_CFLAGS = ${AM_CFLAGS}
 libec_jerasure_la_CXXFLAGS = ${AM_CXXFLAGS}
 libec_jerasure_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 libec_jerasure_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_42)
+	$(am__append_52)
 lrc_sources = \
   erasure-code/ErasureCode.cc \
   erasure-code/lrc/ErasureCodePluginLrc.cc \
@@ -5685,7 +6989,7 @@ libec_lrc_la_CFLAGS = ${AM_CFLAGS}
 libec_lrc_la_CXXFLAGS = ${AM_CXXFLAGS}
 libec_lrc_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(LIBJSON_SPIRIT)
 libec_lrc_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \
-	$(am__append_43)
+	$(am__append_53)
 libec_shec_la_SOURCES = \
 	erasure-code/ErasureCode.cc \
 	erasure-code/shec/ErasureCodePluginShec.cc \
@@ -5726,7 +7030,7 @@ libec_shec_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 #libec_shec_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
 #libec_shec_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '.*__erasure_code_.*'
 libec_shec_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \
-	$(am__append_44)
+	$(am__append_54)
 @WITH_BETTER_YASM_ELF64_TRUE at isa_sources = \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/ErasureCode.cc \
 @WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/isa/isa-l/erasure_code/ec_base.c \
@@ -5764,7 +7068,7 @@ libec_shec_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \
 @WITH_BETTER_YASM_ELF64_TRUE at libec_isa_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 @WITH_BETTER_YASM_ELF64_TRUE at libec_isa_la_LDFLAGS = ${AM_LDFLAGS} \
 @WITH_BETTER_YASM_ELF64_TRUE@	-version-info 2:10:0 \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__append_46)
+ at WITH_BETTER_YASM_ELF64_TRUE@	$(am__append_56)
 @WITH_BETTER_YASM_ELF64_TRUE at libec_isa_la_LIBTOOLFLAGS = --tag=CC
 liberasure_code_la_SOURCES = \
 	erasure-code/ErasureCodePlugin.cc
@@ -5778,19 +7082,19 @@ libosdc_la_SOURCES = \
 	osdc/Striper.cc \
 	osdc/Journaler.cc
 
-libclient_la_SOURCES = \
-	client/Client.cc \
-	client/Inode.cc \
-	client/Dentry.cc \
-	client/MetaRequest.cc \
-	client/ClientSnapRealm.cc \
-	client/MetaSession.cc \
-	client/Trace.cc
-
-libclient_la_LIBADD = $(LIBOSDC) $(LIBEDIT_LIBS)
- at WITH_FUSE_TRUE@libclient_fuse_la_SOURCES = client/fuse_ll.cc
- at WITH_FUSE_TRUE@libclient_fuse_la_LIBADD = libclient.la -lfuse
-ceph_test_ioctls_SOURCES = client/test_ioctls.c
+ at ENABLE_CLIENT_TRUE@libclient_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	client/Client.cc \
+ at ENABLE_CLIENT_TRUE@	client/Inode.cc \
+ at ENABLE_CLIENT_TRUE@	client/Dentry.cc \
+ at ENABLE_CLIENT_TRUE@	client/MetaRequest.cc \
+ at ENABLE_CLIENT_TRUE@	client/ClientSnapRealm.cc \
+ at ENABLE_CLIENT_TRUE@	client/MetaSession.cc \
+ at ENABLE_CLIENT_TRUE@	client/Trace.cc
+
+ at ENABLE_CLIENT_TRUE@libclient_la_LIBADD = $(LIBOSDC) $(LIBEDIT_LIBS)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at libclient_fuse_la_SOURCES = client/fuse_ll.cc
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE at libclient_fuse_la_LIBADD = libclient.la -lfuse
+ at ENABLE_CLIENT_TRUE@ceph_test_ioctls_SOURCES = client/test_ioctls.c
 libglobal_la_SOURCES = \
 	global/global_context.cc \
 	global/global_init.cc \
@@ -5807,8 +7111,8 @@ liblog_la_SOURCES = \
 	log/Log.cc \
 	log/SubsystemMap.cc
 
-libperfglue_la_SOURCES = $(am__append_50) $(am__append_53) \
-	$(am__append_54) $(am__append_55)
+libperfglue_la_SOURCES = $(am__append_63) $(am__append_66) \
+	$(am__append_67) $(am__append_68)
 @WITH_TCMALLOC_TRUE at libperfglue_la_LIBADD = -ltcmalloc
 
 # these should go out of libcommon_internal
@@ -5824,24 +7128,23 @@ libcommon_internal_la_SOURCES = ceph_ver.c common/DecayCounter.cc \
 	common/WorkQueue.cc common/ConfUtils.cc common/MemoryModel.cc \
 	common/armor.c common/fd.cc common/xattr.c common/safe_io.c \
 	common/snap_types.cc common/str_list.cc common/str_map.cc \
-	common/errno.cc common/RefCountedObj.cc common/blkdev.cc \
-	common/common_init.cc common/pipe.c common/ceph_argparse.cc \
-	common/ceph_context.cc common/types.cc \
-	common/code_environment.cc common/dout.cc common/histogram.cc \
-	common/signal.cc common/simple_spin.cc common/Thread.cc \
-	common/Formatter.cc common/HeartbeatMap.cc common/config.cc \
-	common/utf8.c common/mime.c common/strtol.cc common/page.cc \
-	common/lockdep.cc common/version.cc common/hex.cc \
-	common/entity_name.cc common/ceph_crypto.cc \
+	common/errno.cc common/RefCountedObj.cc common/common_init.cc \
+	common/pipe.c common/ceph_argparse.cc common/ceph_context.cc \
+	common/types.cc common/code_environment.cc common/dout.cc \
+	common/histogram.cc common/signal.cc common/simple_spin.cc \
+	common/Thread.cc common/Formatter.cc common/HeartbeatMap.cc \
+	common/config.cc common/utf8.c common/mime.c common/strtol.cc \
+	common/page.cc common/lockdep.cc common/version.cc \
+	common/hex.cc common/entity_name.cc common/ceph_crypto.cc \
 	common/ceph_crypto_cms.cc common/ceph_json.cc common/ipaddr.cc \
 	common/pick_address.cc common/util.cc common/TextTable.cc \
 	common/ceph_fs.cc common/ceph_hash.cc common/ceph_strings.cc \
 	common/ceph_frag.cc common/addr_parsing.c common/hobject.cc \
 	common/bloom_filter.cc common/linux_version.c common/module.c \
 	common/Readahead.cc common/Cycles.cc \
-	common/ContextCompletion.cc $(am__append_56) mon/MonCap.cc \
-	mon/MonClient.cc mon/MonMap.cc osd/OSDMap.cc osd/osd_types.cc \
-	osd/ECMsgTypes.cc osd/HitSet.cc mds/MDSMap.cc \
+	common/ContextCompletion.cc $(am__append_69) $(am__append_70) \
+	mon/MonCap.cc mon/MonClient.cc mon/MonMap.cc osd/OSDMap.cc \
+	osd/osd_types.cc osd/ECMsgTypes.cc osd/HitSet.cc mds/MDSMap.cc \
 	mds/inode_backtrace.cc mds/mdstypes.cc mds/flock.cc
 libcommon_api_la_SOURCES = \
 	common/buffer.cc
@@ -5851,7 +7154,7 @@ libcommon_api_la_SOURCES = \
 # inject crc in common
 libcommon_crc_la_SOURCES = common/sctp_crc32.c common/crc32c.cc \
 	common/crc32c_intel_baseline.c common/crc32c_intel_fast.c \
-	$(am__append_57)
+	$(am__append_71)
 @WITH_GOOD_YASM_ELF64_TRUE at libcommon_crc_la_LIBTOOLFLAGS = --tag=CC
 libcommon_la_SOURCES = 
 libcommon_la_LIBADD = $(LIBCOMMON_DEPS) libcommon_api.la
@@ -5863,525 +7166,1096 @@ libmsg_la_SOURCES = msg/Message.cc msg/Messenger.cc msg/msg_types.cc \
 	msg/simple/SimpleMessenger.cc msg/async/AsyncConnection.cc \
 	msg/async/AsyncMessenger.cc msg/async/Event.cc \
 	msg/async/net_handler.cc msg/async/EventSelect.cc \
-	$(am__append_61) $(am__append_62) $(am__append_63) \
-	$(am__append_64) $(am__append_65) $(am__append_66) \
-	$(am__append_67)
-libcephfs_includedir = $(includedir)/cephfs
-libcephfs_include_DATA = $(srcdir)/include/cephfs/libcephfs.h
-librbd_includedir = $(includedir)/rbd
-librbd_include_DATA = \
-	$(srcdir)/include/rbd/features.h \
-	$(srcdir)/include/rbd/librbd.h \
-	$(srcdir)/include/rbd/librbd.hpp
-
-rados_includedir = $(includedir)/rados
-rados_include_DATA = \
-	$(srcdir)/include/rados/librados.h \
-	$(srcdir)/include/rados/rados_types.h \
-	$(srcdir)/include/rados/rados_types.hpp \
-	$(srcdir)/include/rados/librados.hpp \
-	$(srcdir)/include/buffer.h \
-	$(srcdir)/include/page.h \
-	$(srcdir)/include/crc32c.h \
-	$(srcdir)/include/memory.h
-
-radosstriper_includedir = $(includedir)/radosstriper
-radosstriper_include_DATA = \
-	$(srcdir)/include/radosstriper/libradosstriper.h \
-	$(srcdir)/include/radosstriper/libradosstriper.hpp
-
-librados_internal_la_SOURCES = \
-	librados/RadosClient.cc \
-	librados/IoCtxImpl.cc \
-	librados/RadosXattrIter.cc \
-	librados/snap_set_diff.cc
-
-librados_api_la_SOURCES = \
-	common/buffer.cc \
-	librados/librados.cc
-
-librados_la_SOURCES = \
-	common/buffer.cc \
-	librados/librados.cc
+	$(am__append_75) $(am__append_76) $(am__append_77) \
+	$(am__append_78) $(am__append_79) $(am__append_80) \
+	$(am__append_81)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at rados_includedir = $(includedir)/rados
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at rados_include_DATA = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/rados/librados.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/rados/rados_types.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/rados/rados_types.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/rados/librados.hpp \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/buffer.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/page.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/crc32c.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/memory.h
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_includedir = $(includedir)/rbd
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_include_DATA = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(srcdir)/include/rbd/features.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(srcdir)/include/rbd/librbd.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(srcdir)/include/rbd/librbd.hpp
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at radosstriper_includedir = $(includedir)/radosstriper
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at radosstriper_include_DATA = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/radosstriper/libradosstriper.h \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(srcdir)/include/radosstriper/libradosstriper.hpp
+
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_includedir = $(includedir)/cephfs
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_include_DATA = $(srcdir)/include/cephfs/libcephfs.h
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_internal_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosClient.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/IoCtxImpl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/RadosXattrIter.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/snap_set_diff.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_api_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	common/buffer.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/librados.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	common/buffer.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	librados/librados.cc
 
 
 # We need this to avoid basename conflicts with the librados build tests in test/Makefile.am
-librados_la_CXXFLAGS = ${AM_CXXFLAGS} $(am__append_70)
-librados_la_LIBADD = $(LIBRADOS_DEPS) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-librados_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 \
-	$(am__append_71)
-libradosstriper_la_SOURCES = \
-	libradosstriper/libradosstriper.cc \
-	libradosstriper/RadosStriperImpl.cc \
-	libradosstriper/MultiAioCompletionImpl.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_la_CXXFLAGS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	${AM_CXXFLAGS} \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__append_86)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_la_LIBADD = $(LIBRADOS_DEPS) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_la_LDFLAGS =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	${AM_LDFLAGS} \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	-version-info 2:0:0 \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(am__append_87)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstriper_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/libradosstriper.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/RadosStriperImpl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	libradosstriper/MultiAioCompletionImpl.cc
 
 
 # We need this to avoid basename conflicts with the libradosstriper build tests in test/Makefile.am
-libradosstriper_la_CXXFLAGS = ${AM_CXXFLAGS}
-LIBRADOSSTRIPER_DEPS = $(LIBRADOS_DEPS)
-libradosstriper_la_LIBADD = $(LIBRADOSSTRIPER_DEPS)
-libradosstriper_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \
-	$(am__append_72)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstriper_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at LIBRADOSSTRIPER_DEPS = $(LIBRADOS_DEPS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstriper_la_LIBADD = $(LIBRADOSSTRIPER_DEPS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstriper_la_LDFLAGS = ${AM_LDFLAGS} \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	-version-info \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	1:0:0 \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(am__append_90)
 librbd_types_la_SOURCES = \
 	librbd/WatchNotifyTypes.cc
 
-librbd_internal_la_SOURCES = \
-	librbd/AioCompletion.cc \
-	librbd/AioRequest.cc \
-	librbd/AsyncFlattenRequest.cc \
-	librbd/AsyncObjectThrottle.cc \
-	librbd/AsyncOperation.cc \
-	librbd/AsyncRequest.cc \
-	librbd/AsyncResizeRequest.cc \
-	librbd/AsyncTrimRequest.cc \
-	librbd/CopyupRequest.cc \
-	librbd/ImageCtx.cc \
-	librbd/ImageWatcher.cc \
-	librbd/internal.cc \
-	librbd/LibrbdWriteback.cc \
-	librbd/ObjectMap.cc
-
-librbd_api_la_SOURCES = \
-	librbd/librbd.cc
-
-librbd_la_SOURCES = \
-	librbd/librbd.cc
-
-librbd_la_LIBADD = librbd_internal.la $(LIBRBD_TYPES) $(LIBRADOS) \
-	$(LIBCOMMON) $(LIBOSDC) librados_internal.la \
-	libcls_rbd_client.la libcls_lock_client.la $(PTHREAD_LIBS) \
-	$(EXTRALIBS) $(am__append_73)
-librbd_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 $(am__append_74)
- at LINUX_TRUE@librbd_la_CXXFLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
- at WITH_RADOSGW_TRUE@librgw_la_SOURCES = \
- at WITH_RADOSGW_TRUE@	rgw/librgw.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_acl.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_acl_s3.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_acl_swift.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_client_io.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_fcgi.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_xml.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_usage.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_json_enc.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_user.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_bucket.cc\
- at WITH_RADOSGW_TRUE@	rgw/rgw_tools.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rados.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_http_client.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_client.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_conn.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_op.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_common.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_cache.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_formats.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_log.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_multi.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_policy_s3.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_gc.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_multi_del.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_env.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_cors.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_cors_s3.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_auth_s3.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_metadata.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_replica_log.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_keystone.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_quota.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_dencoder.cc
-
- at WITH_RADOSGW_TRUE@librgw_la_CXXFLAGS = -Woverloaded-virtual ${AM_CXXFLAGS}
- at WITH_RADOSGW_TRUE@radosgw_SOURCES = \
- at WITH_RADOSGW_TRUE@	rgw/rgw_resolve.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_swift.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_s3.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_usage.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_user.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_bucket.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_metadata.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_replica_log.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_log.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_opstate.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_replica_log.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_rest_config.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_http_client.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_swift.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_swift_auth.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_loadgen.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_civetweb.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_civetweb_log.cc \
- at WITH_RADOSGW_TRUE@	civetweb/src/civetweb.c \
- at WITH_RADOSGW_TRUE@	rgw/rgw_main.cc
-
- at WITH_RADOSGW_TRUE@radosgw_CFLAGS = -I$(srcdir)/civetweb/include
- at WITH_RADOSGW_TRUE@radosgw_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL)
- at WITH_RADOSGW_TRUE@radosgw_admin_SOURCES = rgw/rgw_admin.cc
- at WITH_RADOSGW_TRUE@radosgw_admin_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
- at WITH_RADOSGW_TRUE@ceph_rgw_multiparser_SOURCES = rgw/rgw_multiparser.cc
- at WITH_RADOSGW_TRUE@ceph_rgw_multiparser_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
- at WITH_RADOSGW_TRUE@ceph_rgw_jsonparser_SOURCES = \
- at WITH_RADOSGW_TRUE@	rgw/rgw_jsonparser.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_common.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_env.cc \
- at WITH_RADOSGW_TRUE@	rgw/rgw_json_enc.cc
-
- at WITH_RADOSGW_TRUE@ceph_rgw_jsonparser_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
-libcls_hello_la_SOURCES = cls/hello/cls_hello.cc
-libcls_hello_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_hello_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_rbd_la_SOURCES = cls/rbd/cls_rbd.cc
-libcls_rbd_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_rbd_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_lock_la_SOURCES = cls/lock/cls_lock.cc
-libcls_lock_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_lock_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_refcount_la_SOURCES = \
-	cls/refcount/cls_refcount.cc \
-	cls/refcount/cls_refcount_ops.cc \
-	common/ceph_json.cc 
-
-libcls_refcount_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_refcount_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_version_la_SOURCES = cls/version/cls_version.cc
-libcls_version_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_version_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_log_la_SOURCES = cls/log/cls_log.cc
-libcls_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_statelog_la_SOURCES = cls/statelog/cls_statelog.cc
-libcls_statelog_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_statelog_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_replica_log_la_SOURCES = cls/replica_log/cls_replica_log.cc
-libcls_replica_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_replica_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_user_la_SOURCES = cls/user/cls_user.cc
-libcls_user_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_user_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '.*__cls_.*'
-libcls_rgw_la_SOURCES = \
-	cls/rgw/cls_rgw.cc \
-	cls/rgw/cls_rgw_ops.cc \
-	cls/rgw/cls_rgw_types.cc \
-	common/ceph_json.cc
-
-libcls_rgw_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_rgw_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-libcls_lock_client_la_SOURCES = \
-	cls/lock/cls_lock_client.cc \
-	cls/lock/cls_lock_types.cc \
-	cls/lock/cls_lock_ops.cc
-
-libcls_refcount_client_la_SOURCES = \
-	cls/refcount/cls_refcount_client.cc \
-	cls/refcount/cls_refcount_ops.cc
-
-libcls_version_client_a_SOURCES = \
-	cls/version/cls_version_client.cc \
-	cls/version/cls_version_types.cc
-
-libcls_log_client_a_SOURCES = cls/log/cls_log_client.cc
-libcls_statelog_client_a_SOURCES = cls/statelog/cls_statelog_client.cc
-libcls_replica_log_client_a_SOURCES = \
-	cls/replica_log/cls_replica_log_types.cc \
-	cls/replica_log/cls_replica_log_ops.cc \
-	cls/replica_log/cls_replica_log_client.cc
-
-libcls_rgw_client_la_SOURCES = \
-	cls/rgw/cls_rgw_client.cc \
-	cls/rgw/cls_rgw_types.cc \
-	cls/rgw/cls_rgw_ops.cc
-
-libcls_rbd_client_la_SOURCES = cls/rbd/cls_rbd_client.cc
-libcls_user_client_a_SOURCES = cls/user/cls_user_client.cc \
-	cls/user/cls_user_types.cc \
-	cls/user/cls_user_ops.cc
-
- at LINUX_TRUE@libcls_kvs_la_SOURCES = key_value_store/cls_kvs.cc
- at LINUX_TRUE@libcls_kvs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
- at LINUX_TRUE@libcls_kvs_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_internal_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AioCompletion.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AioRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncFlattenRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncObjectThrottle.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncOperation.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncResizeRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/AsyncTrimRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/CopyupRequest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageCtx.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ImageWatcher.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/internal.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/LibrbdWriteback.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/ObjectMap.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_api_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/librbd.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd/librbd.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_la_LIBADD = librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(PTHREAD_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(EXTRALIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_94)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_la_LDFLAGS = ${AM_LDFLAGS} \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	-version-info \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	1:0:0 \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_95)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_la_CXXFLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at librgw_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/librgw.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl_s3.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_acl_swift.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_client_io.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_fcgi.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_xml.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_usage.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_json_enc.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_user.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_bucket.cc\
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_tools.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rados.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_http_client.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_client.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_conn.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_op.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_common.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cache.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_formats.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_multi.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_policy_s3.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_gc.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_multi_del.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_env.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cors.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_cors_s3.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_auth_s3.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_metadata.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_replica_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_keystone.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_quota.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_dencoder.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at librgw_la_CXXFLAGS = -Woverloaded-virtual ${AM_CXXFLAGS}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at CIVETWEB_INCLUDE = --include civetweb/include/civetweb_conf.h
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at libcivetweb_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_civetweb.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_civetweb_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	civetweb/src/civetweb.c
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at libcivetweb_la_CXXFLAGS = ${CIVETWEB_INCLUDE} -Woverloaded-virtual ${AM_CXXFLAGS}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at libcivetweb_la_CFLAGS = -Icivetweb/include ${CIVETWEB_INCLUDE}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_resolve.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_swift.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_s3.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_usage.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_user.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_bucket.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_metadata.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_replica_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_opstate.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_replica_log.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_rest_config.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_http_client.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_swift_auth.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_loadgen.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_main.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_CFLAGS = -I$(srcdir)/civetweb/include
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_LDADD = $(LIBRGW) $(LIBCIVETWEB) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_admin_SOURCES = rgw/rgw_admin.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at radosgw_admin_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_multiparser_SOURCES = rgw/rgw_multiparser.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_multiparser_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_jsonparser_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_jsonparser.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_common.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_env.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	rgw/rgw_json_enc.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_rgw_jsonparser_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@libcls_lock_client_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_client.cc \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_types.cc \
+ at ENABLE_CLIENT_TRUE@	cls/lock/cls_lock_ops.cc
+
+ at ENABLE_CLIENT_TRUE@libcls_refcount_client_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_client.cc \
+ at ENABLE_CLIENT_TRUE@	cls/refcount/cls_refcount_ops.cc
+
+ at ENABLE_CLIENT_TRUE@libcls_version_client_a_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_client.cc \
+ at ENABLE_CLIENT_TRUE@	cls/version/cls_version_types.cc
+
+ at ENABLE_CLIENT_TRUE@libcls_log_client_a_SOURCES = cls/log/cls_log_client.cc
+ at ENABLE_CLIENT_TRUE@libcls_statelog_client_a_SOURCES = cls/statelog/cls_statelog_client.cc
+ at ENABLE_CLIENT_TRUE@libcls_replica_log_client_a_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_types.cc \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_ops.cc \
+ at ENABLE_CLIENT_TRUE@	cls/replica_log/cls_replica_log_client.cc
+
+ at ENABLE_CLIENT_TRUE@libcls_rgw_client_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_client.cc \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_types.cc \
+ at ENABLE_CLIENT_TRUE@	cls/rgw/cls_rgw_ops.cc
+
+ at ENABLE_CLIENT_TRUE@libcls_rbd_client_la_SOURCES = cls/rbd/cls_rbd_client.cc
+ at ENABLE_CLIENT_TRUE@libcls_user_client_a_SOURCES = cls/user/cls_user_client.cc \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_types.cc \
+ at ENABLE_CLIENT_TRUE@	cls/user/cls_user_ops.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_hello_la_SOURCES = cls/hello/cls_hello.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_hello_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_hello_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rbd_la_SOURCES = cls/rbd/cls_rbd.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rbd_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rbd_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_lock_la_SOURCES = cls/lock/cls_lock.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_lock_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_lock_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_refcount_la_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/refcount/cls_refcount.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/refcount/cls_refcount_ops.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/ceph_json.cc 
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_refcount_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_refcount_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_version_la_SOURCES = cls/version/cls_version.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_version_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_version_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_log_la_SOURCES = cls/log/cls_log.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_statelog_la_SOURCES = cls/statelog/cls_statelog.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_statelog_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_statelog_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_replica_log_la_SOURCES = cls/replica_log/cls_replica_log.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_replica_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_replica_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_user_la_SOURCES = cls/user/cls_user.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_user_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_user_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rgw_la_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw_ops.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	cls/rgw/cls_rgw_types.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	common/ceph_json.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rgw_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libcls_rgw_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at libcls_kvs_la_SOURCES = key_value_store/cls_kvs.cc
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at libcls_kvs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE at libcls_kvs_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
 
 # librbd_replay_la exists only to help with unit tests
-librbd_replay_la_SOURCES = rbd_replay/actions.cc \
-	rbd_replay/Deser.cc \
-	rbd_replay/ImageNameMap.cc \
-	rbd_replay/PendingIO.cc \
-	rbd_replay/rbd_loc.cc \
-	rbd_replay/Replayer.cc \
-	rbd_replay/Ser.cc
-
-librbd_replay_la_LIBADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL)
-
-rbd_replay_SOURCES = rbd_replay/rbd-replay.cc
-rbd_replay_LDADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL) \
-	librbd_replay.la
-
-librbd_replay_ios_la_SOURCES = rbd_replay/ios.cc
-librbd_replay_ios_la_LIBADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL) \
-	librbd_replay.la
-
-rbd_replay_prep_SOURCES = rbd_replay/rbd-replay-prep.cc
-rbd_replay_prep_LDADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL) \
-	librbd_replay.la \
-	librbd_replay_ios.la \
-	-lbabeltrace \
-	-lbabeltrace-ctf \
-	-lboost_date_time
-
-ceph_erasure_code_benchmark_SOURCES = \
-	erasure-code/ErasureCode.cc \
-	test/erasure-code/ceph_erasure_code_benchmark.cc
-
-ceph_erasure_code_benchmark_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL) $(am__append_83)
-ceph_erasure_code_non_regression_SOURCES = \
-	test/erasure-code/ceph_erasure_code_non_regression.cc
-
-ceph_erasure_code_non_regression_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL) $(am__append_84)
-ceph_erasure_code_SOURCES = \
-	test/erasure-code/ceph_erasure_code.cc
-
-ceph_erasure_code_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL) $(am__append_85)
-libec_example_la_SOURCES = test/erasure-code/ErasureCodePluginExample.cc
-libec_example_la_CFLAGS = ${AM_CFLAGS}
-libec_example_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_example_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_example_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_missing_entry_point_la_SOURCES = test/erasure-code/ErasureCodePluginMissingEntryPoint.cc
-libec_missing_entry_point_la_CFLAGS = ${AM_CFLAGS}
-libec_missing_entry_point_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_missing_entry_point_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_missing_entry_point_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_missing_version_la_SOURCES = test/erasure-code/ErasureCodePluginMissingVersion.cc
-libec_missing_version_la_CFLAGS = ${AM_CFLAGS}
-libec_missing_version_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_missing_version_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_missing_version_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_hangs_la_SOURCES = test/erasure-code/ErasureCodePluginHangs.cc
-libec_hangs_la_CFLAGS = ${AM_CFLAGS}
-libec_hangs_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_hangs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_hangs_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_fail_to_initialize_la_SOURCES = test/erasure-code/ErasureCodePluginFailToInitialize.cc
-libec_fail_to_initialize_la_CFLAGS = ${AM_CFLAGS}
-libec_fail_to_initialize_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_fail_to_initialize_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_fail_to_initialize_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_fail_to_register_la_SOURCES = test/erasure-code/ErasureCodePluginFailToRegister.cc
-libec_fail_to_register_la_CFLAGS = ${AM_CFLAGS}
-libec_fail_to_register_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_fail_to_register_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_fail_to_register_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_test_jerasure_neon_la_SOURCES = test/erasure-code/TestJerasurePluginNEON.cc
-libec_test_jerasure_neon_la_CFLAGS = ${AM_CFLAGS}
-libec_test_jerasure_neon_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_test_jerasure_neon_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_test_jerasure_neon_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_test_jerasure_sse4_la_SOURCES = test/erasure-code/TestJerasurePluginSSE4.cc
-libec_test_jerasure_sse4_la_CFLAGS = ${AM_CFLAGS}
-libec_test_jerasure_sse4_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_test_jerasure_sse4_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_test_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_test_jerasure_sse3_la_SOURCES = test/erasure-code/TestJerasurePluginSSE3.cc
-libec_test_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS}
-libec_test_jerasure_sse3_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_test_jerasure_sse3_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_test_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-libec_test_jerasure_generic_la_SOURCES = test/erasure-code/TestJerasurePluginGeneric.cc
-libec_test_jerasure_generic_la_CFLAGS = ${AM_CFLAGS}
-libec_test_jerasure_generic_la_CXXFLAGS = ${AM_CXXFLAGS}
-libec_test_jerasure_generic_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_test_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
-unittest_erasure_code_plugin_SOURCES = \
-	erasure-code/ErasureCode.cc \
-	test/erasure-code/TestErasureCodePlugin.cc 
-
-unittest_erasure_code_plugin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_plugin_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_86)
-unittest_erasure_code_SOURCES = \
-	erasure-code/ErasureCode.cc \
-	test/erasure-code/TestErasureCode.cc
-
-unittest_erasure_code_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_LDADD = $(LIBOSD) $(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_erasure_code_jerasure_SOURCES = \
-	test/erasure-code/TestErasureCodeJerasure.cc \
-	${jerasure_sources}
-
-unittest_erasure_code_jerasure_CFLAGS = $(AM_CFLAGS) \
-	-Ierasure-code/jerasure/gf-complete/include \
-	-Ierasure-code/jerasure/jerasure/include
-
-unittest_erasure_code_jerasure_CXXFLAGS = $(UNITTEST_CXXFLAGS) \
-	-Ierasure-code/jerasure/gf-complete/include \
-	-Ierasure-code/jerasure/jerasure/include
-
-unittest_erasure_code_jerasure_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_87)
-unittest_erasure_code_plugin_jerasure_SOURCES = \
-	test/erasure-code/TestErasureCodePluginJerasure.cc
-
-unittest_erasure_code_plugin_jerasure_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-unittest_erasure_code_plugin_jerasure_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_88)
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_isa_SOURCES = \
- at WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/ErasureCode.cc \
- at WITH_BETTER_YASM_ELF64_TRUE@	test/erasure-code/TestErasureCodeIsa.cc
-
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_isa_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_isa_LDADD =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBOSD) $(LIBCOMMON) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(UNITTEST_LDADD) $(CEPH_GLOBAL) \
- at WITH_BETTER_YASM_ELF64_TRUE@	.libs/libec_isa.la \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBERASURE_CODE) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__append_89)
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_plugin_isa_SOURCES = \
- at WITH_BETTER_YASM_ELF64_TRUE@	erasure-code/ErasureCode.cc \
- at WITH_BETTER_YASM_ELF64_TRUE@	test/erasure-code/TestErasureCodePluginIsa.cc
-
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_plugin_isa_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
- at WITH_BETTER_YASM_ELF64_TRUE@unittest_erasure_code_plugin_isa_LDADD =  \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBOSD) $(LIBCOMMON) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(UNITTEST_LDADD) $(CEPH_GLOBAL) \
- at WITH_BETTER_YASM_ELF64_TRUE@	.libs/libec_isa.la \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(LIBERASURE_CODE) \
- at WITH_BETTER_YASM_ELF64_TRUE@	$(am__append_91)
-unittest_erasure_code_lrc_SOURCES = \
-	test/erasure-code/TestErasureCodeLrc.cc \
-	${lrc_sources}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_la_SOURCES = rbd_replay/actions.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Deser.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/ImageNameMap.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/PendingIO.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/rbd_loc.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Replayer.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	rbd_replay/Ser.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_la_LIBADD = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_SOURCES = rbd_replay/rbd-replay.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_LDADD = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_ios_la_SOURCES = rbd_replay/ios.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_replay_ios_la_LIBADD = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_prep_SOURCES = rbd_replay/rbd-replay-prep.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_replay_prep_LDADD = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay_ios.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	-lbabeltrace \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	-lbabeltrace-ctf \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	-lboost_date_time
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_benchmark_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ceph_erasure_code_benchmark.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_benchmark_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(BOOST_PROGRAM_OPTIONS_LIBS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_117)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_non_regression_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ceph_erasure_code_non_regression.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_non_regression_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(BOOST_PROGRAM_OPTIONS_LIBS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_119)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/ceph_erasure_code.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_erasure_code_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(BOOST_PROGRAM_OPTIONS_LIBS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_121)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_SOURCES = test/erasure-code/ErasureCodePluginExample.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_example_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_SOURCES = test/erasure-code/ErasureCodePluginMissingEntryPoint.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_entry_point_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_SOURCES = test/erasure-code/ErasureCodePluginMissingVersion.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_missing_version_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_SOURCES = test/erasure-code/ErasureCodePluginHangs.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_hangs_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_SOURCES = test/erasure-code/ErasureCodePluginFailToInitialize.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_initialize_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_SOURCES = test/erasure-code/ErasureCodePluginFailToRegister.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_fail_to_register_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_SOURCES = test/erasure-code/TestJerasurePluginNEON.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_neon_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_SOURCES = test/erasure-code/TestJerasurePluginSSE4.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_SOURCES = test/erasure-code/TestJerasurePluginSSE3.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_SOURCES = test/erasure-code/TestJerasurePluginGeneric.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_CXXFLAGS = ${AM_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at libec_test_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*'
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodePlugin.cc 
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_123)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCode.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_LDADD = $(LIBOSD) $(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_jerasure_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeJerasure.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${jerasure_sources}
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_jerasure_CFLAGS = $(AM_CFLAGS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-Ierasure-code/jerasure/gf-complete/include \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-Ierasure-code/jerasure/jerasure/include
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_jerasure_CXXFLAGS = $(UNITTEST_CXXFLAGS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-Ierasure-code/jerasure/gf-complete/include \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	-Ierasure-code/jerasure/jerasure/include
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_jerasure_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_125)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_jerasure_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodePluginJerasure.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_jerasure_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_jerasure_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_126)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_isa_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeIsa.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_isa_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_isa_LDADD = $(LIBOSD) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	.libs/libec_isa.la \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBERASURE_CODE) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__append_127)
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_isa_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodePluginIsa.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_isa_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_isa_LDADD = $(LIBOSD) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	.libs/libec_isa.la \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(LIBERASURE_CODE) \
+ at ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@	$(am__append_129)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_lrc_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeLrc.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${lrc_sources}
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_lrc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_lrc_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_130)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_lrc_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodePluginLrc.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_lrc_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_plugin_lrc_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_132)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeShec.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${libec_shec_la_SOURCES}
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_CFLAGS = ${libec_shec_la_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_133)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_all_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeShec_all.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${libec_shec_la_SOURCES}
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_all_CFLAGS = ${libec_shec_la_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_all_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_all_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_134)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_thread_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeShec_thread.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	${libec_shec_la_SOURCES}
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_thread_CFLAGS = ${libec_shec_la_CFLAGS}
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_thread_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_shec_thread_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_135)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_example_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	erasure-code/ErasureCode.cc \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	test/erasure-code/TestErasureCodeExample.cc
+
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_example_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_erasure_code_example_LDADD = $(LIBOSD) $(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_server_SOURCES = \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_server.cc \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.cc
+
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_server_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_server_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_server_LDADD = $(LIBOS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(PTHREAD_LIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(EXTRALIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__append_137)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_client_SOURCES = \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_client.cc \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.cc
+
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_client_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_client_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at simple_client_LDADD = $(LIBOS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(PTHREAD_LIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(EXTRALIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__append_138)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_server_SOURCES = \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_server.cc \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.cc
+
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_server_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_server_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_server_LDADD = $(LIBOS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(PTHREAD_LIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(EXTRALIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__append_140)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_client_SOURCES = \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_client.cc \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.cc
+
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_client_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_client_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE at xio_client_LDADD = $(LIBOS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(LIBCOMMON) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(PTHREAD_LIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(EXTRALIBS) \
+ at ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@	$(am__append_141)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at libradostest_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/test.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/TestCase.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at libradostest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at RADOS_TEST_LDADD = libradostest.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/TestRados.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/TestOpStat.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/Object.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/osd/RadosModel.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_mutate_SOURCES = test/test_mutate.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_mutate_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	test/buildtest_skeleton.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(librados_la_SOURCES)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS_DEPS) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_LDFLAGS = -static-libtool-libs
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE at test_build_librados_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_smalliobench_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/small_io_bench.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/rados_backend.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_smalliobench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_omapbench_SOURCES = test/omap_bench.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_omapbench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_kvstorebench_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/kv_store_bench.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	key_value_store/kv_flat_btree_async.cc
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_kvstorebench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_list_parallel_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/rados_list_parallel.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_list_objects.cc
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_list_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_open_pools_parallel_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/rados_open_pools_parallel.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.cc
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_open_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_delete_pools_parallel_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/rados_delete_pools_parallel.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_pool.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_list_objects.cc
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_delete_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_watch_notify_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/rados_watch_notify.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_create_pool.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_pool.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_delete_objs.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_watch.cc \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@	test/system/st_rados_notify.cc
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_watch_notify_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_SOURCES = test/librados/librados.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_config_SOURCES = test/librados/librados_config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at unittest_librados_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_multi_stress_watch_SOURCES = test/multi_stress_watch.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_multi_stress_watch_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rbd_SOURCES = test/cls_rbd/test_cls_rbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rbd_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) libcls_rbd_client.la libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_refcount_SOURCES = test/cls_refcount/test_cls_refcount.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_refcount_LDADD = $(LIBRADOS) libcls_refcount_client.la $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_refcount_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_version_SOURCES = test/cls_version/test_cls_version.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_version_LDADD = $(LIBRADOS) libcls_version_client.a $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_version_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_log_SOURCES = test/cls_log/test_cls_log.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_log_LDADD = $(LIBRADOS) libcls_log_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_statelog_SOURCES = test/cls_statelog/test_cls_statelog.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_statelog_LDADD = $(LIBRADOS) libcls_statelog_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_statelog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_replica_log_SOURCES = test/cls_replica_log/test_cls_replica_log.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_replica_log_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) libcls_replica_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_replica_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_lock_SOURCES = test/cls_lock/test_cls_lock.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_lock_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_hello_SOURCES = test/cls_hello/test_cls_hello.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_hello_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_hello_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cmd_SOURCES = test/librados/cmd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cmd_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) $(LIBRADOS) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(RADOS_TEST_LDADD) -luuid
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_io_SOURCES = test/librados/io.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_io_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_write_operations_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/c_write_operations.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_write_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_write_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_read_operations_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/c_read_operations.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_read_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_c_read_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_aio_SOURCES = test/librados/aio.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_aio_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_list_SOURCES = test/librados/list.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_list_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_list_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_nlist_SOURCES = test/librados/nlist.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_nlist_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_nlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_pool_SOURCES = test/librados/pool.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_pool_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_pool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_stat_SOURCES = test/librados/stat.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_stat_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_stat_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_watch_notify_SOURCES = test/librados/watch_notify.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_watch_notify_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_watch_notify_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_snapshots_SOURCES = test/librados/snapshots.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_snapshots_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_snapshots_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cls_SOURCES = test/librados/cls.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cls_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_cls_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_misc_SOURCES = test/librados/misc.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_misc_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_misc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_tier_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados/tier.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	osd/HitSet.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_tier_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_tier_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_lock_SOURCES = test/librados/lock.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_lock_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_api_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_stress_watch_SOURCES = test/test_stress_watch.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_stress_watch_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_test_stress_watch_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_test_stub_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/LibradosTestStub.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestClassHandler.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestIoCtxImpl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemIoCtxImpl.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestMemRadosClient.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestRadosClient.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	test/librados_test_stub/TestWatchNotify.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_smalliobenchrbd_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/small_io_bench_rbd.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/rbd_backend.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/detailed_stat_collector.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/bench/bencher.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_smalliobenchrbd_LDADD = $(LIBRBD) $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_rbd_replay_SOURCES = test/test_rbd_replay.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_rbd_replay_LDADD = $(LIBRBD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_replay_ios.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(UNITTEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_rbd_replay_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_test_la_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/test_fixture.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/test_librbd.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/test_ImageWatcher.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/test_internal.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	test/librbd/test_main.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at librbd_test_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_librbd_SOURCES = 
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at nodist_EXTRA_unittest_librbd_SOURCES = dummy.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at unittest_librbd_LDADD = librbd_test.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_test_stub.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBOSDC) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(RADOS_TEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_153)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_SOURCES = 
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at nodist_EXTRA_ceph_test_librbd_SOURCES = dummy.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_LDADD = librbd_test.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librbd_internal.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_rbd_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	libcls_lock_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	librados_api.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBRADOS_DEPS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(RADOS_TEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(am__append_154)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 
-unittest_erasure_code_lrc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_lrc_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_92)
-unittest_erasure_code_plugin_lrc_SOURCES = \
-	test/erasure-code/TestErasureCodePluginLrc.cc
+# Force use of C++ linker with dummy.cc - LIBKRBD is a C++ library
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.c common/dummy.cc
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_fsx_LDADD = \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(LIBKRBD) $(LIBRBD) $(LIBRADOS) \
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@	$(CRYPTO_LIBS) $(PTHREAD_LIBS) -luuid
+
+ at ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at ceph_test_librbd_fsx_CFLAGS = ${AM_CFLAGS}
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstripertest_la_SOURCES = test/libradosstriper/TestCase.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstripertest_la_LIBADD = $(RADOS_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at libradosstripertest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at RADOS_STRIPER_TEST_LDADD = libradosstripertest.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_io_SOURCES = test/libradosstriper/io.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_io_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRADOSSTRIPER) $(LIBCOMMON) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_aio_SOURCES = test/libradosstriper/aio.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_aio_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_striping_SOURCES = test/libradosstriper/striping.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_striping_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE at ceph_test_rados_striper_api_striping_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 
-unittest_erasure_code_plugin_lrc_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-unittest_erasure_code_plugin_lrc_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_93)
-unittest_erasure_code_shec_SOURCES = \
-	test/erasure-code/TestErasureCodeShec.cc \
-	${libec_shec_la_SOURCES}
+# I dont get this one... testing the osdc build but link in libcephfs?
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/buildtest_skeleton.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(libosdc_la_SOURCES)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(LIBCEPHFS) -lexpat \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_LDFLAGS = -static-libtool-libs
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at test_build_libcephfs_CXXFLAGS = $(AM_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_encoding_LDADD = $(LIBCEPHFS) $(LIBRADOS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_encoding_CXXFLAGS = $(UNITTEST_CXXFLAGS) -fno-strict-aliasing
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_base64_SOURCES = test/base64.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_base64_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_base64_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_run_cmd_SOURCES = test/run_cmd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_run_cmd_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_run_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_simple_spin_SOURCES = test/simple_spin.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_simple_spin_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_simple_spin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_libcephfs_config_SOURCES = test/libcephfs_config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_libcephfs_config_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_libcephfs_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_libcephfs_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/test.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/readdir_r_cb.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/caps.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	test/libcephfs/multiclient.cc
+
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_libcephfs_LDADD = $(LIBCEPHFS) $(UNITTEST_LDADD)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_libcephfs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at unittest_encoding_SOURCES = test/encoding.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_c_headers_SOURCES = test/test_c_headers.c
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_c_headers_LDADD = $(LIBRADOS) $(LIBCEPHFS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_test_c_headers_CFLAGS = $(AM_CFLAGS) \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Werror \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wstrict-prototypes \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wredundant-decls \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wall \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wundef \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wwrite-strings \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wmissing-prototypes \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wendif-labels \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wmissing-include-dirs \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wempty-body \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wnested-externs \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wformat-security \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wformat-y2k \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Winit-self \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wignored-qualifiers \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wold-style-declaration \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wold-style-definition \
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	-Wtype-limits
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	test/buildtest_skeleton.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(librgw_la_SOURCES)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRGW_DEPS) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(CEPH_GLOBAL)
+
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_LDFLAGS = -static-libtool-libs
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_CFLAGS = $(AM_CFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at test_build_librgw_CXXFLAGS = $(AM_CXXFLAGS)
 
-unittest_erasure_code_shec_CFLAGS = ${libec_shec_la_CFLAGS}
-unittest_erasure_code_shec_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_shec_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_94)
-unittest_erasure_code_shec_all_SOURCES = \
-	test/erasure-code/TestErasureCodeShec_all.cc \
-	${libec_shec_la_SOURCES}
+#unittest_librgw_link_SOURCES = test/librgw_link.cc
+#unittest_librgw_link_LDFLAGS = $(PTHREAD_CFLAGS) ${AM_LDFLAGS}
+#unittest_librgw_link_LDADD = $(LIBRGW) ${UNITTEST_LDADD}
+#unittest_librgw_link_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+#check_PROGRAMS += unittest_librgw_link
 
-unittest_erasure_code_shec_all_CFLAGS = ${libec_shec_la_CFLAGS}
-unittest_erasure_code_shec_all_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_shec_all_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_95)
-unittest_erasure_code_shec_thread_SOURCES = \
-	test/erasure-code/TestErasureCodeShec_thread.cc \
-	${libec_shec_la_SOURCES}
+#unittest_librgw_SOURCES = test/librgw.cc
+#unittest_librgw_LDFLAGS = -lrt $(PTHREAD_CFLAGS) -lcurl ${AM_LDFLAGS}
+#unittest_librgw_LDADD =  librgw.la $(LIBRADOS) ${UNITTEST_LDADD} -lexpat $(CEPH_GLOBAL)
+#unittest_librgw_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+#check_PROGRAMS += unittest_librgw
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cors_SOURCES = test/test_cors.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cors_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl -luuid -lexpat
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cors_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_rgw_manifest_SOURCES = test/rgw/test_rgw_manifest.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_rgw_manifest_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl -luuid -lexpat
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_rgw_manifest_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_meta_SOURCES = test/test_rgw_admin_meta.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_meta_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl -luuid -lexpat \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_meta_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_log_SOURCES = test/test_rgw_admin_log.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_log_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl -luuid -lexpat \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_opstate_SOURCES = test/test_rgw_admin_opstate.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_opstate_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	-lcurl -luuid -lexpat \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_version_client.a libcls_log_client.a \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_opstate_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_SOURCES = test/cls_rgw/test_cls_rgw.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_LDADD = \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBRADOS) $(CRYPTO_LIBS) libcls_rgw_client.la \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@	$(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+
+ at ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE at ceph_test_cls_rgw_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_async_driver_SOURCES = test/msgr/test_async_driver.cc
+ at ENABLE_SERVER_TRUE@ceph_test_async_driver_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_async_driver_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_msgr_SOURCES = test/msgr/test_msgr.cc
+ at ENABLE_SERVER_TRUE@ceph_test_msgr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_msgr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_streamtest_SOURCES = test/streamtest.cc
+ at ENABLE_SERVER_TRUE@ceph_streamtest_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_trans_SOURCES = test/test_trans.cc
+ at ENABLE_SERVER_TRUE@ceph_test_trans_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_mon_workloadgen_SOURCES = test/mon/test_mon_workloadgen.cc
+ at ENABLE_SERVER_TRUE@ceph_test_mon_workloadgen_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_mon_msg_SOURCES = test/mon/test-mon-msg.cc
+ at ENABLE_SERVER_TRUE@ceph_test_mon_msg_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ at ENABLE_SERVER_TRUE@ceph_test_mon_msg_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_perf_objectstore_SOURCES = test/objectstore/ObjectStoreTransactionBenchmark.cc
+ at ENABLE_SERVER_TRUE@ceph_perf_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_perf_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_objectstore_SOURCES = test/objectstore/store_test.cc
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_filestore_SOURCES = test/filestore/TestFileStore.cc
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_filestore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@LINUX_TRUE at ceph_test_filestore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_objectstore_workloadgen_SOURCES = \
+ at ENABLE_SERVER_TRUE@	test/objectstore/workload_generator.cc \
+ at ENABLE_SERVER_TRUE@	test/objectstore/TestObjectStoreState.cc
+
+ at ENABLE_SERVER_TRUE@ceph_test_objectstore_workloadgen_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_SOURCES = \
+ at ENABLE_SERVER_TRUE@	test/objectstore/test_idempotent.cc \
+ at ENABLE_SERVER_TRUE@	test/objectstore/FileStoreTracker.cc \
+ at ENABLE_SERVER_TRUE@	test/common/ObjectContents.cc
+
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_sequence_SOURCES = \
+ at ENABLE_SERVER_TRUE@	test/objectstore/test_idempotent_sequence.cc \
+ at ENABLE_SERVER_TRUE@	test/objectstore/DeterministicOpSequence.cc \
+ at ENABLE_SERVER_TRUE@	test/objectstore/TestObjectStoreState.cc \
+ at ENABLE_SERVER_TRUE@	test/objectstore/FileStoreDiff.cc
+
+ at ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_sequence_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_xattr_bench_SOURCES = test/xattr_bench.cc
+ at ENABLE_SERVER_TRUE@ceph_xattr_bench_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_xattr_bench_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_filejournal_SOURCES = test/test_filejournal.cc
+ at ENABLE_SERVER_TRUE@ceph_test_filejournal_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_filejournal_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_object_map_SOURCES = \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/test_object_map.cc \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/KeyValueDBMemory.cc
+
+ at ENABLE_SERVER_TRUE@ceph_test_object_map_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_object_map_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_atomicity_SOURCES = test/ObjectMap/test_keyvaluedb_atomicity.cc
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_atomicity_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_atomicity_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_iterators_SOURCES = \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/test_keyvaluedb_iterators.cc \
+ at ENABLE_SERVER_TRUE@	test/ObjectMap/KeyValueDBMemory.cc
+
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_iterators_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_iterators_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchfs_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/small_io_bench_fs.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/testfilestore_backend.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.cc
+
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchfs_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchdumb_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/small_io_bench_dumb.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/dumb_backend.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/bencher.cc
+
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_smalliobenchdumb_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_tpbench_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/tp_bench.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@	test/bench/detailed_stat_collector.cc
+
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE at ceph_tpbench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_test_keys_SOURCES = test/testkeys.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_test_keys_LDADD = $(LIBMON) $(CEPH_GLOBAL) 
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at get_command_descriptions_SOURCES = test/common/get_command_descriptions.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at get_command_descriptions_LDADD = $(LIBMON) $(LIBCOMMON) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_moncap_SOURCES = test/mon/moncap.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_moncap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_moncap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_pgmap_SOURCES = test/mon/PGMap.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_pgmap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at unittest_mon_pgmap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_ecbackend_SOURCES = test/osd/TestECBackend.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_ecbackend_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_ecbackend_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osdscrub_SOURCES = test/osd/TestOSDScrub.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osdscrub_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osdscrub_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_171)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_pglog_SOURCES = test/osd/TestPGLog.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_pglog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_pglog_LDADD = $(LIBOSD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(UNITTEST_LDADD) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_172)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_hitset_SOURCES = test/osd/hitset.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_hitset_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_hitset_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osd_osdcap_SOURCES = test/osd/osdcap.cc 
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osd_osdcap_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at unittest_osd_osdcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_test_snap_mapper_SOURCES = test/test_snap_mapper.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_test_snap_mapper_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_test_snap_mapper_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@unittest_chain_xattr_SOURCES = test/objectstore/chain_xattr.cc
+ at ENABLE_SERVER_TRUE@unittest_chain_xattr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@unittest_chain_xattr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@unittest_flatindex_SOURCES = test/os/TestFlatIndex.cc
+ at ENABLE_SERVER_TRUE@unittest_flatindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@unittest_flatindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@unittest_lfnindex_SOURCES = test/os/TestLFNIndex.cc
+ at ENABLE_SERVER_TRUE@unittest_lfnindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@unittest_lfnindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+
+# This should go to client once LIBMDS_TYPES exists
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_dencoder_SOURCES = \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	test/encoding/ceph_dencoder.cc \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(DENCODER_SOURCES)
+
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_dencoder_LDADD = \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBRBD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOSD_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBOS_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBMDS) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(LIBMON_TYPES) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(DENCODER_DEPS) \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(CEPH_GLOBAL)
 
-unittest_erasure_code_shec_thread_CFLAGS = ${libec_shec_la_CFLAGS}
-unittest_erasure_code_shec_thread_CXXFLAGS = ${libec_shec_la_CXXFLAGS} $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_shec_thread_LDADD = $(LIBOSD) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(am__append_96)
-unittest_erasure_code_example_SOURCES = \
-	erasure-code/ErasureCode.cc \
-	test/erasure-code/TestErasureCodeExample.cc
 
-unittest_erasure_code_example_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_erasure_code_example_LDADD = $(LIBOSD) $(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
- at ENABLE_XIO_TRUE@simple_server_SOURCES = \
- at ENABLE_XIO_TRUE@	test/messenger/simple_server.cc \
- at ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.cc
-
- at ENABLE_XIO_TRUE@simple_server_CFLAGS = $(AM_CFLAGS)
- at ENABLE_XIO_TRUE@simple_server_CXXFLAGS = $(AM_CXXFLAGS)
- at ENABLE_XIO_TRUE@simple_server_LDADD = $(LIBOS) $(LIBCOMMON) \
- at ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) $(PTHREAD_LIBS) $(EXTRALIBS) \
- at ENABLE_XIO_TRUE@	$(am__append_98)
- at ENABLE_XIO_TRUE@simple_client_SOURCES = \
- at ENABLE_XIO_TRUE@	test/messenger/simple_client.cc \
- at ENABLE_XIO_TRUE@	test/messenger/simple_dispatcher.cc
-
- at ENABLE_XIO_TRUE@simple_client_CFLAGS = $(AM_CFLAGS)
- at ENABLE_XIO_TRUE@simple_client_CXXFLAGS = $(AM_CXXFLAGS)
- at ENABLE_XIO_TRUE@simple_client_LDADD = $(LIBOS) $(LIBCOMMON) \
- at ENABLE_XIO_TRUE@	$(CEPH_GLOBAL) $(PTHREAD_LIBS) $(EXTRALIBS) \
- at ENABLE_XIO_TRUE@	$(am__append_99)
- at ENABLE_XIO_TRUE@xio_server_SOURCES = \
- at ENABLE_XIO_TRUE@	test/messenger/xio_server.cc \
- at ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.cc
-
- at ENABLE_XIO_TRUE@xio_server_CFLAGS = $(AM_CFLAGS)
- at ENABLE_XIO_TRUE@xio_server_CXXFLAGS = $(AM_CXXFLAGS)
- at ENABLE_XIO_TRUE@xio_server_LDADD = $(LIBOS) $(CEPH_GLOBAL) \
- at ENABLE_XIO_TRUE@	$(LIBCOMMON) $(PTHREAD_LIBS) $(EXTRALIBS) \
- at ENABLE_XIO_TRUE@	$(am__append_101)
- at ENABLE_XIO_TRUE@xio_client_SOURCES = \
- at ENABLE_XIO_TRUE@	test/messenger/xio_client.cc \
- at ENABLE_XIO_TRUE@	test/messenger/xio_dispatcher.cc
-
- at ENABLE_XIO_TRUE@xio_client_CFLAGS = $(AM_CFLAGS)
- at ENABLE_XIO_TRUE@xio_client_CXXFLAGS = $(AM_CXXFLAGS)
- at ENABLE_XIO_TRUE@xio_client_LDADD = $(LIBOS) $(CEPH_GLOBAL) \
- at ENABLE_XIO_TRUE@	$(LIBCOMMON) $(PTHREAD_LIBS) $(EXTRALIBS) \
- at ENABLE_XIO_TRUE@	$(am__append_102)
+# These should always use explicit _CFLAGS/_CXXFLAGS so avoid basename conflicts
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_dencoder_CFLAGS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	${AM_CFLAGS} \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__append_175)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_dencoder_CXXFLAGS =  \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	${AM_CXXFLAGS} \
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@	$(am__append_176)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at unittest_mds_authcap_SOURCES = test/mds/TestMDSAuthCaps.cc 
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at unittest_mds_authcap_LDADD = $(LIBMDS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at unittest_mds_authcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 ceph_test_timers_SOURCES = test/TestTimers.cc
 ceph_test_timers_LDADD = $(CEPH_GLOBAL)
 ceph_test_signal_handlers_SOURCES = test/TestSignalHandlers.cc
 ceph_test_signal_handlers_LDADD = $(CEPH_GLOBAL)
-ceph_test_rados_SOURCES = \
-	test/osd/TestRados.cc \
-	test/osd/TestOpStat.cc \
-	test/osd/Object.cc \
-	test/osd/RadosModel.cc
-
-ceph_test_rados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-ceph_test_mutate_SOURCES = test/test_mutate.cc
-ceph_test_mutate_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
 ceph_test_rewrite_latency_SOURCES = test/test_rewrite_latency.cc
 ceph_test_rewrite_latency_LDADD = $(LIBCOMMON) $(PTHREAD_LIBS) -lm $(CRYPTO_LIBS) $(EXTRALIBS)
-ceph_test_async_driver_SOURCES = test/msgr/test_async_driver.cc
-ceph_test_async_driver_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_async_driver_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_msgr_SOURCES = test/msgr/test_msgr.cc
-ceph_test_msgr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_msgr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_streamtest_SOURCES = test/streamtest.cc
-ceph_streamtest_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_test_trans_SOURCES = test/test_trans.cc
-ceph_test_trans_LDADD = $(LIBOS) $(CEPH_GLOBAL)
 ceph_test_crypto_SOURCES = test/testcrypto.cc
 ceph_test_crypto_LDADD = $(CEPH_GLOBAL)
-ceph_test_keys_SOURCES = test/testkeys.cc
-ceph_test_keys_LDADD = $(LIBMON) $(CEPH_GLOBAL) 
-ceph_dencoder_SOURCES = \
-	test/encoding/ceph_dencoder.cc \
-	$(DENCODER_SOURCES)
-
-ceph_dencoder_LDADD = \
-	$(LIBRBD_TYPES) \
-	$(LIBOSD_TYPES) \
-	$(LIBOS_TYPES) \
-	$(LIBMDS) \
-	$(LIBMON_TYPES) \
-	$(DENCODER_DEPS) \
-	$(CEPH_GLOBAL)
-
-
-# These should always use explicit _CFLAGS/_CXXFLAGS so avoid basename conflicts
-ceph_dencoder_CFLAGS = ${AM_CFLAGS} $(am__append_103)
-ceph_dencoder_CXXFLAGS = ${AM_CXXFLAGS} $(am__append_104)
-get_command_descriptions_SOURCES = test/common/get_command_descriptions.cc
-get_command_descriptions_LDADD = $(LIBMON) $(LIBCOMMON) $(CEPH_GLOBAL)
 
 # These should all use explicit _CXXFLAGS so avoid basename conflicts
 @WITH_BUILD_TESTS_TRUE at test_build_libcommon_SOURCES = \
@@ -6395,115 +8269,12 @@ get_command_descriptions_LDADD = $(LIBMON) $(LIBCOMMON) $(CEPH_GLOBAL)
 @WITH_BUILD_TESTS_TRUE at test_build_libcommon_LDFLAGS = -static-libtool-libs
 @WITH_BUILD_TESTS_TRUE at test_build_libcommon_CFLAGS = $(AM_CFLAGS)
 @WITH_BUILD_TESTS_TRUE at test_build_libcommon_CXXFLAGS = $(AM_CXXFLAGS)
- at WITH_BUILD_TESTS_TRUE@test_build_librados_SOURCES = \
- at WITH_BUILD_TESTS_TRUE@	test/buildtest_skeleton.cc \
- at WITH_BUILD_TESTS_TRUE@	$(librados_la_SOURCES)
-
- at WITH_BUILD_TESTS_TRUE@test_build_librados_LDADD = \
- at WITH_BUILD_TESTS_TRUE@	$(LIBRADOS_DEPS) \
- at WITH_BUILD_TESTS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-
- at WITH_BUILD_TESTS_TRUE@test_build_librados_LDFLAGS = -static-libtool-libs
- at WITH_BUILD_TESTS_TRUE@test_build_librados_CFLAGS = $(AM_CFLAGS)
- at WITH_BUILD_TESTS_TRUE@test_build_librados_CXXFLAGS = $(AM_CXXFLAGS)
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_SOURCES = \
- at WITH_BUILD_TESTS_TRUE@	test/buildtest_skeleton.cc \
- at WITH_BUILD_TESTS_TRUE@	$(librgw_la_SOURCES)
-
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_LDADD = \
- at WITH_BUILD_TESTS_TRUE@	$(LIBRGW_DEPS) \
- at WITH_BUILD_TESTS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) \
- at WITH_BUILD_TESTS_TRUE@	$(CEPH_GLOBAL)
-
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_LDFLAGS = -static-libtool-libs
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_CFLAGS = $(AM_CFLAGS)
- at WITH_BUILD_TESTS_TRUE@test_build_librgw_CXXFLAGS = $(AM_CXXFLAGS)
-
-# I dont get this one... testing the osdc build but link in libcephfs?
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_SOURCES = \
- at WITH_BUILD_TESTS_TRUE@	test/buildtest_skeleton.cc \
- at WITH_BUILD_TESTS_TRUE@	$(libosdc_la_SOURCES)
-
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_LDADD = \
- at WITH_BUILD_TESTS_TRUE@	$(LIBCEPHFS) -lexpat \
- at WITH_BUILD_TESTS_TRUE@	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_LDFLAGS = -static-libtool-libs
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_CFLAGS = $(AM_CFLAGS)
- at WITH_BUILD_TESTS_TRUE@test_build_libcephfs_CXXFLAGS = $(AM_CXXFLAGS)
-ceph_smalliobench_SOURCES = \
-	test/bench/small_io_bench.cc \
-	test/bench/rados_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-
-ceph_smalliobench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
-ceph_smalliobenchfs_SOURCES = \
-	test/bench/small_io_bench_fs.cc \
-	test/bench/testfilestore_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-
-ceph_smalliobenchfs_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-ceph_smalliobenchdumb_SOURCES = \
-	test/bench/small_io_bench_dumb.cc \
-	test/bench/dumb_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-
-ceph_smalliobenchdumb_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-ceph_smalliobenchrbd_SOURCES = \
-	test/bench/small_io_bench_rbd.cc \
-	test/bench/rbd_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-
-ceph_smalliobenchrbd_LDADD = $(LIBRBD) $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
-ceph_tpbench_SOURCES = \
-	test/bench/tp_bench.cc \
-	test/bench/detailed_stat_collector.cc
-
-ceph_tpbench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-ceph_omapbench_SOURCES = test/omap_bench.cc
-ceph_omapbench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
- at LINUX_TRUE@ceph_kvstorebench_SOURCES = \
- at LINUX_TRUE@	test/kv_store_bench.cc \
- at LINUX_TRUE@	key_value_store/kv_flat_btree_async.cc
-
- at LINUX_TRUE@ceph_kvstorebench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
 @LINUX_TRUE at libsystest_la_SOURCES = \
 @LINUX_TRUE@	test/system/cross_process_sem.cc \
 @LINUX_TRUE@	test/system/systest_runnable.cc \
 @LINUX_TRUE@	test/system/systest_settings.cc
 
 @LINUX_TRUE at libsystest_la_LIBADD = $(CEPH_GLOBAL)
- at LINUX_TRUE@ceph_test_rados_list_parallel_SOURCES = \
- at LINUX_TRUE@	test/system/rados_list_parallel.cc \
- at LINUX_TRUE@	test/system/st_rados_create_pool.cc \
- at LINUX_TRUE@	test/system/st_rados_list_objects.cc
-
- at LINUX_TRUE@ceph_test_rados_list_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
- at LINUX_TRUE@ceph_test_rados_open_pools_parallel_SOURCES = \
- at LINUX_TRUE@	test/system/rados_open_pools_parallel.cc \
- at LINUX_TRUE@	test/system/st_rados_create_pool.cc
-
- at LINUX_TRUE@ceph_test_rados_open_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
- at LINUX_TRUE@ceph_test_rados_delete_pools_parallel_SOURCES = \
- at LINUX_TRUE@	test/system/rados_delete_pools_parallel.cc \
- at LINUX_TRUE@	test/system/st_rados_create_pool.cc \
- at LINUX_TRUE@	test/system/st_rados_delete_pool.cc \
- at LINUX_TRUE@	test/system/st_rados_list_objects.cc
-
- at LINUX_TRUE@ceph_test_rados_delete_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
- at LINUX_TRUE@ceph_test_rados_watch_notify_SOURCES = \
- at LINUX_TRUE@	test/system/rados_watch_notify.cc \
- at LINUX_TRUE@	test/system/st_rados_create_pool.cc \
- at LINUX_TRUE@	test/system/st_rados_delete_pool.cc \
- at LINUX_TRUE@	test/system/st_rados_delete_objs.cc \
- at LINUX_TRUE@	test/system/st_rados_watch.cc \
- at LINUX_TRUE@	test/system/st_rados_notify.cc
-
- at LINUX_TRUE@ceph_test_rados_watch_notify_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
 ceph_bench_log_SOURCES = test/bench_log.cc
 ceph_bench_log_LDADD = $(CEPH_GLOBAL)
 UNITTEST_CXXFLAGS = \
@@ -6519,9 +8290,6 @@ UNITTEST_LDADD = \
 	$(top_builddir)/src/gmock/gtest/lib/libgtest.la \
 	$(PTHREAD_LIBS)
 
-unittest_encoding_SOURCES = test/encoding.cc
-unittest_encoding_LDADD = $(LIBCEPHFS) $(LIBRADOS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
-unittest_encoding_CXXFLAGS = $(UNITTEST_CXXFLAGS) -fno-strict-aliasing
 unittest_addrs_SOURCES = test/test_addrs.cc
 unittest_addrs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_addrs_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
@@ -6576,9 +8344,6 @@ unittest_log_CXXFLAGS = $(UNITTEST_CXXFLAGS) -O2
 unittest_throttle_SOURCES = test/common/Throttle.cc
 unittest_throttle_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_throttle_CXXFLAGS = $(UNITTEST_CXXFLAGS) -O2
-unittest_base64_SOURCES = test/base64.cc
-unittest_base64_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
-unittest_base64_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_ceph_argparse_SOURCES = test/ceph_argparse.cc
 unittest_ceph_argparse_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_ceph_argparse_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -6591,20 +8356,6 @@ unittest_mds_types_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_osd_types_SOURCES = test/osd/types.cc
 unittest_osd_types_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_osd_types_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL) 
-unittest_pglog_SOURCES = test/osd/TestPGLog.cc
-unittest_pglog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_pglog_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL) \
-	$(am__append_110)
-unittest_osdscrub_SOURCES = test/osd/TestOSDScrub.cc
-unittest_osdscrub_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_osdscrub_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL) \
-	$(am__append_111)
-unittest_ecbackend_SOURCES = test/osd/TestECBackend.cc
-unittest_ecbackend_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_ecbackend_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_hitset_SOURCES = test/osd/hitset.cc
-unittest_hitset_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_hitset_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_lru_SOURCES = test/common/test_lru.cc
 unittest_lru_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_lru_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
@@ -6614,18 +8365,9 @@ unittest_io_priority_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_gather_SOURCES = test/gather.cc
 unittest_gather_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_gather_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_run_cmd_SOURCES = test/run_cmd.cc
-unittest_run_cmd_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_run_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_signals_SOURCES = test/signals.cc
 unittest_signals_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_signals_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_simple_spin_SOURCES = test/simple_spin.cc
-unittest_simple_spin_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_simple_spin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_librados_SOURCES = test/librados/librados.cc
-unittest_librados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_librados_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_bufferlist_SOURCES = test/bufferlist.cc
 unittest_bufferlist_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL) 
 unittest_bufferlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -6659,12 +8401,6 @@ unittest_mime_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_escape_SOURCES = test/escape.cc
 unittest_escape_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_escape_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_chain_xattr_SOURCES = test/objectstore/chain_xattr.cc
-unittest_chain_xattr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_chain_xattr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_flatindex_SOURCES = test/os/TestFlatIndex.cc
-unittest_flatindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_flatindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_strtol_SOURCES = test/strtol.cc
 unittest_strtol_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_strtol_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -6691,44 +8427,9 @@ unittest_formatter_SOURCES = \
 
 unittest_formatter_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_formatter_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_libcephfs_config_SOURCES = test/libcephfs_config.cc
-unittest_libcephfs_config_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_libcephfs_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_lfnindex_SOURCES = test/os/TestLFNIndex.cc
-unittest_lfnindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_lfnindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_librados_config_SOURCES = test/librados/librados_config.cc
-unittest_librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_librados_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-
-#unittest_librgw_link_SOURCES = test/librgw_link.cc
-#unittest_librgw_link_LDFLAGS = $(PTHREAD_CFLAGS) ${AM_LDFLAGS}
-#unittest_librgw_link_LDADD = $(LIBRGW) ${UNITTEST_LDADD}
-#unittest_librgw_link_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-#check_PROGRAMS += unittest_librgw_link
 unittest_daemon_config_SOURCES = test/daemon_config.cc
 unittest_daemon_config_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_daemon_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_osd_osdcap_SOURCES = test/osd/osdcap.cc 
-unittest_osd_osdcap_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_osd_osdcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_mds_authcap_SOURCES = test/mds/TestMDSAuthCaps.cc 
-unittest_mds_authcap_LDADD = $(LIBMDS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mds_authcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_mon_moncap_SOURCES = test/mon/moncap.cc
-unittest_mon_moncap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mon_moncap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_mon_pgmap_SOURCES = test/mon/PGMap.cc
-unittest_mon_pgmap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mon_pgmap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-
-#if WITH_RADOSGW
-#unittest_librgw_SOURCES = test/librgw.cc
-#unittest_librgw_LDFLAGS = -lrt $(PTHREAD_CFLAGS) -lcurl ${AM_LDFLAGS}
-#unittest_librgw_LDADD =  librgw.la $(LIBRADOS) ${UNITTEST_LDADD} -lexpat $(CEPH_GLOBAL)
-#unittest_librgw_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-#check_PROGRAMS += unittest_librgw
-#endif # WITH_RADOSGW
 unittest_ipaddr_SOURCES = test/test_ipaddr.cc
 unittest_ipaddr_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_ipaddr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -6737,15 +8438,6 @@ unittest_texttable_LDADD = $(LIBCOMMON) $(UNITTEST_LDADD)
 unittest_texttable_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_on_exit_SOURCES = test/on_exit.cc
 unittest_on_exit_LDADD = $(PTHREAD_LIBS)
-unittest_rbd_replay_SOURCES = test/test_rbd_replay.cc
-unittest_rbd_replay_LDADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL) \
-	librbd_replay.la \
-	librbd_replay_ios.la \
-	$(UNITTEST_LDADD)
-
-unittest_rbd_replay_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_readahead_SOURCES = test/common/Readahead.cc
 unittest_readahead_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_readahead_CXXFLAGS = $(UNITTEST_CXXFLAGS) -O2
@@ -6755,365 +8447,75 @@ unittest_tableformatter_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_bit_vector_SOURCES = test/common/test_bit_vector.cc
 unittest_bit_vector_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_bit_vector_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
- at WITH_RADOSGW_TRUE@ceph_test_cors_SOURCES = test/test_cors.cc
- at WITH_RADOSGW_TRUE@ceph_test_cors_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
- at WITH_RADOSGW_TRUE@	$(UNITTEST_LDADD) \
- at WITH_RADOSGW_TRUE@	-lcurl -luuid -lexpat
-
- at WITH_RADOSGW_TRUE@ceph_test_cors_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at WITH_RADOSGW_TRUE@ceph_test_rgw_manifest_SOURCES = test/rgw/test_rgw_manifest.cc
- at WITH_RADOSGW_TRUE@ceph_test_rgw_manifest_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL) \
- at WITH_RADOSGW_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
- at WITH_RADOSGW_TRUE@	-lcurl -luuid -lexpat
-
- at WITH_RADOSGW_TRUE@ceph_test_rgw_manifest_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_meta_SOURCES = test/test_rgw_admin_meta.cc
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_meta_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
- at WITH_RADOSGW_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
- at WITH_RADOSGW_TRUE@	-lcurl -luuid -lexpat \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_meta_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_log_SOURCES = test/test_rgw_admin_log.cc
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_log_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
- at WITH_RADOSGW_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
- at WITH_RADOSGW_TRUE@	-lcurl -luuid -lexpat \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_opstate_SOURCES = test/test_rgw_admin_opstate.cc
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_opstate_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
- at WITH_RADOSGW_TRUE@	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
- at WITH_RADOSGW_TRUE@	-lcurl -luuid -lexpat \
- at WITH_RADOSGW_TRUE@	libcls_version_client.a libcls_log_client.a \
- at WITH_RADOSGW_TRUE@	libcls_statelog_client.a libcls_refcount_client.la \
- at WITH_RADOSGW_TRUE@	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_opstate_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-libradostest_la_SOURCES = \
-	test/librados/test.cc \
-	test/librados/TestCase.cc
-
-libradostest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-RADOS_TEST_LDADD = libradostest.la
-libradosstripertest_la_SOURCES = test/libradosstriper/TestCase.cc
-libradosstripertest_la_LIBADD = $(RADOS_TEST_LDADD)
-libradosstripertest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-RADOS_STRIPER_TEST_LDADD = libradosstripertest.la
-ceph_multi_stress_watch_SOURCES = test/multi_stress_watch.cc
-ceph_multi_stress_watch_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-librados_test_stub_la_SOURCES = \
-	test/librados_test_stub/LibradosTestStub.cc \
-	test/librados_test_stub/TestClassHandler.cc \
-	test/librados_test_stub/TestIoCtxImpl.cc \
-	test/librados_test_stub/TestMemIoCtxImpl.cc \
-	test/librados_test_stub/TestMemRadosClient.cc \
-	test/librados_test_stub/TestRadosClient.cc \
-	test/librados_test_stub/TestWatchNotify.cc
-
-librbd_test_la_SOURCES = \
-	test/librbd/test_fixture.cc \
-	test/librbd/test_librbd.cc \
-	test/librbd/test_ImageWatcher.cc \
-	test/librbd/test_internal.cc \
-	test/librbd/test_main.cc
-
-librbd_test_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_librbd_SOURCES = 
-nodist_EXTRA_unittest_librbd_SOURCES = dummy.cc
-unittest_librbd_LDADD = librbd_test.la librbd_api.la \
-	librbd_internal.la $(LIBRBD_TYPES) libcls_rbd_client.la \
-	libcls_lock_client.la librados_test_stub.la \
-	librados_internal.la $(LIBOSDC) $(UNITTEST_LDADD) \
-	$(CEPH_GLOBAL) $(RADOS_TEST_LDADD) $(am__append_113)
-ceph_test_librbd_SOURCES = 
-nodist_EXTRA_ceph_test_librbd_SOURCES = dummy.cc
-ceph_test_librbd_LDADD = librbd_test.la librbd_api.la \
-	librbd_internal.la $(LIBRBD_TYPES) libcls_rbd_client.la \
-	libcls_lock_client.la librados_api.la $(LIBRADOS_DEPS) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD) \
-	$(am__append_114)
-ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-
-# Force use of C++ linker with dummy.cc - LIBKRBD is a C++ library
- at LINUX_TRUE@ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.c common/dummy.cc
- at LINUX_TRUE@ceph_test_librbd_fsx_LDADD = \
- at LINUX_TRUE@	$(LIBKRBD) $(LIBRBD) $(LIBRADOS) \
- at LINUX_TRUE@	$(CRYPTO_LIBS) $(PTHREAD_LIBS) -luuid
-
- at LINUX_TRUE@ceph_test_librbd_fsx_CFLAGS = ${AM_CFLAGS}
-ceph_test_cls_rbd_SOURCES = test/cls_rbd/test_cls_rbd.cc
-ceph_test_cls_rbd_LDADD = \
-	$(LIBRADOS) libcls_rbd_client.la libcls_lock_client.la \
-	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-
-ceph_test_cls_rbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_refcount_SOURCES = test/cls_refcount/test_cls_refcount.cc
-ceph_test_cls_refcount_LDADD = $(LIBRADOS) libcls_refcount_client.la $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_refcount_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_version_SOURCES = test/cls_version/test_cls_version.cc
-ceph_test_cls_version_LDADD = $(LIBRADOS) libcls_version_client.a $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_version_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_log_SOURCES = test/cls_log/test_cls_log.cc
-ceph_test_cls_log_LDADD = $(LIBRADOS) libcls_log_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_statelog_SOURCES = test/cls_statelog/test_cls_statelog.cc
-ceph_test_cls_statelog_LDADD = $(LIBRADOS) libcls_statelog_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_statelog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_replica_log_SOURCES = test/cls_replica_log/test_cls_replica_log.cc
-ceph_test_cls_replica_log_LDADD = \
-	$(LIBRADOS) libcls_replica_log_client.a \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-
-ceph_test_cls_replica_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_lock_SOURCES = test/cls_lock/test_cls_lock.cc
-ceph_test_cls_lock_LDADD = \
-	$(LIBRADOS) libcls_lock_client.la \
-	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-
-ceph_test_cls_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_cls_hello_SOURCES = test/cls_hello/test_cls_hello.cc
-ceph_test_cls_hello_LDADD = \
-	$(LIBRADOS) $(CRYPTO_LIBS) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-
-ceph_test_cls_hello_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_SOURCES = test/cls_rgw/test_cls_rgw.cc
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_LDADD = \
- at WITH_RADOSGW_TRUE@	$(LIBRADOS) $(CRYPTO_LIBS) libcls_rgw_client.la \
- at WITH_RADOSGW_TRUE@	$(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-
- at WITH_RADOSGW_TRUE@ceph_test_cls_rgw_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_mon_workloadgen_SOURCES = test/mon/test_mon_workloadgen.cc
-ceph_test_mon_workloadgen_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL)
-ceph_test_mon_msg_SOURCES = test/mon/test-mon-msg.cc
-ceph_test_mon_msg_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-ceph_test_mon_msg_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_cmd_SOURCES = test/librados/cmd.cc
-ceph_test_rados_api_cmd_LDADD = \
-	$(LIBCOMMON) $(LIBRADOS) $(CRYPTO_LIBS) \
-	$(UNITTEST_LDADD) $(RADOS_TEST_LDADD) -luuid
-
-ceph_test_rados_api_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_io_SOURCES = test/librados/io.cc
-ceph_test_rados_api_io_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_c_write_operations_SOURCES = \
-	test/librados/c_write_operations.cc
-
-ceph_test_rados_api_c_write_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_c_write_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_c_read_operations_SOURCES = \
-	test/librados/c_read_operations.cc
-
-ceph_test_rados_api_c_read_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_c_read_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_aio_SOURCES = test/librados/aio.cc
-ceph_test_rados_api_aio_LDADD = \
-	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-
-ceph_test_rados_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_list_SOURCES = test/librados/list.cc
-ceph_test_rados_api_list_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_list_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_nlist_SOURCES = test/librados/nlist.cc
-ceph_test_rados_api_nlist_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_nlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_pool_SOURCES = test/librados/pool.cc
-ceph_test_rados_api_pool_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_pool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_stat_SOURCES = test/librados/stat.cc
-ceph_test_rados_api_stat_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_stat_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_watch_notify_SOURCES = test/librados/watch_notify.cc
-ceph_test_rados_api_watch_notify_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_watch_notify_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_snapshots_SOURCES = test/librados/snapshots.cc
-ceph_test_rados_api_snapshots_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_snapshots_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_cls_SOURCES = test/librados/cls.cc
-ceph_test_rados_api_cls_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_cls_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_misc_SOURCES = test/librados/misc.cc
-ceph_test_rados_api_misc_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_misc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_tier_SOURCES = \
-	test/librados/tier.cc \
-	osd/HitSet.cc
-
-ceph_test_rados_api_tier_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_tier_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_api_lock_SOURCES = test/librados/lock.cc
-ceph_test_rados_api_lock_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_striper_api_io_SOURCES = test/libradosstriper/io.cc
-ceph_test_rados_striper_api_io_LDADD = \
-	$(LIBRADOS) $(LIBRADOSSTRIPER) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-
-ceph_test_rados_striper_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_striper_api_aio_SOURCES = test/libradosstriper/aio.cc
-ceph_test_rados_striper_api_aio_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-ceph_test_rados_striper_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_rados_striper_api_striping_SOURCES = test/libradosstriper/striping.cc
-ceph_test_rados_striper_api_striping_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-ceph_test_rados_striper_api_striping_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_libcephfs_SOURCES = \
-	test/libcephfs/test.cc \
-	test/libcephfs/readdir_r_cb.cc \
-	test/libcephfs/caps.cc \
-	test/libcephfs/multiclient.cc
-
-ceph_test_libcephfs_LDADD = $(LIBCEPHFS) $(UNITTEST_LDADD)
-ceph_test_libcephfs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_perf_objectstore_SOURCES = test/objectstore/ObjectStoreTransactionBenchmark.cc
-ceph_perf_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_perf_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at LINUX_TRUE@ceph_test_objectstore_SOURCES = test/objectstore/store_test.cc
- at LINUX_TRUE@ceph_test_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
- at LINUX_TRUE@ceph_test_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
- at LINUX_TRUE@ceph_test_filestore_SOURCES = test/filestore/TestFileStore.cc
- at LINUX_TRUE@ceph_test_filestore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
- at LINUX_TRUE@ceph_test_filestore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_objectstore_workloadgen_SOURCES = \
-	test/objectstore/workload_generator.cc \
-	test/objectstore/TestObjectStoreState.cc
-
-ceph_test_objectstore_workloadgen_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_test_filestore_idempotent_SOURCES = \
-	test/objectstore/test_idempotent.cc \
-	test/objectstore/FileStoreTracker.cc \
-	test/common/ObjectContents.cc
-
-ceph_test_filestore_idempotent_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_test_filestore_idempotent_sequence_SOURCES = \
-	test/objectstore/test_idempotent_sequence.cc \
-	test/objectstore/DeterministicOpSequence.cc \
-	test/objectstore/TestObjectStoreState.cc \
-	test/objectstore/FileStoreDiff.cc
-
-ceph_test_filestore_idempotent_sequence_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_xattr_bench_SOURCES = test/xattr_bench.cc
-ceph_xattr_bench_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_xattr_bench_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_filejournal_SOURCES = test/test_filejournal.cc
-ceph_test_filejournal_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_filejournal_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_stress_watch_SOURCES = test/test_stress_watch.cc
-ceph_test_stress_watch_LDADD = \
-	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-
-ceph_test_stress_watch_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 ceph_test_objectcacher_stress_SOURCES = \
 	test/osdc/object_cacher_stress.cc \
 	test/osdc/FakeWriteback.cc
 
 ceph_test_objectcacher_stress_LDADD = $(LIBOSDC) $(CEPH_GLOBAL)
-ceph_test_snap_mapper_SOURCES = test/test_snap_mapper.cc
-ceph_test_snap_mapper_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_snap_mapper_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_object_map_SOURCES = \
-	test/ObjectMap/test_object_map.cc \
-	test/ObjectMap/KeyValueDBMemory.cc
-
-ceph_test_object_map_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_object_map_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_keyvaluedb_atomicity_SOURCES = test/ObjectMap/test_keyvaluedb_atomicity.cc
-ceph_test_keyvaluedb_atomicity_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_keyvaluedb_atomicity_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_test_keyvaluedb_iterators_SOURCES = \
-	test/ObjectMap/test_keyvaluedb_iterators.cc \
-	test/ObjectMap/KeyValueDBMemory.cc
-
-ceph_test_keyvaluedb_iterators_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_keyvaluedb_iterators_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 ceph_test_cfuse_cache_invalidate_SOURCES = test/test_cfuse_cache_invalidate.cc
-ceph_test_c_headers_SOURCES = test/test_c_headers.c
-ceph_test_c_headers_LDADD = $(LIBRADOS) $(LIBCEPHFS)
-ceph_test_c_headers_CFLAGS = $(AM_CFLAGS) \
-	-Werror \
-	-Wstrict-prototypes \
-	-Wredundant-decls \
-	-Wall \
-	-Wundef \
-	-Wwrite-strings \
-	-Wmissing-prototypes \
-	-Wendif-labels \
-	-Wmissing-include-dirs \
-	-Wempty-body \
-	-Wnested-externs \
-	-Wformat-security \
-	-Wformat-y2k \
-	-Winit-self \
-	-Wignored-qualifiers \
-	-Wold-style-declaration \
-	-Wold-style-definition \
-	-Wtype-limits
-
 ceph_test_get_blkdev_size_SOURCES = test/test_get_blkdev_size.cc
 ceph_test_get_blkdev_size_LDADD = $(LIBCOMMON)
-ceph_osdomap_tool_SOURCES = tools/ceph_osdomap_tool.cc
-ceph_osdomap_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
-ceph_monstore_tool_SOURCES = tools/ceph_monstore_tool.cc
-ceph_monstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
-ceph_kvstore_tool_SOURCES = tools/ceph_kvstore_tool.cc
-ceph_kvstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_kvstore_tool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-ceph_objectstore_tool_SOURCES = tools/ceph_objectstore_tool.cc
-ceph_objectstore_tool_LDADD = $(LIBOSD) $(LIBOS) $(CEPH_GLOBAL) \
-	$(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBRADOS) $(am__append_118)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtool_SOURCES = tools/scratchtool.c
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtool_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtoolpp_SOURCES = tools/scratchtoolpp.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_scratchtoolpp_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_radosacl_SOURCES = tools/radosacl.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at ceph_radosacl_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at rados_SOURCES =  \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_import.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_export.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	tools/rados/rados_sync.cc \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	common/obj_bencher.cc # \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	needs cleanup so it can \
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@	go in libcommon.la
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at rados_LDADD = libcls_lock_client.la $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_client_debug_SOURCES = tools/ceph-client-debug.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at ceph_client_debug_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(LIBCOMMON)
+ at ENABLE_SERVER_TRUE@ceph_osdomap_tool_SOURCES = tools/ceph_osdomap_tool.cc
+ at ENABLE_SERVER_TRUE@ceph_osdomap_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
+ at ENABLE_SERVER_TRUE@ceph_monstore_tool_SOURCES = tools/ceph_monstore_tool.cc
+ at ENABLE_SERVER_TRUE@ceph_monstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
+ at ENABLE_SERVER_TRUE@ceph_kvstore_tool_SOURCES = tools/ceph_kvstore_tool.cc
+ at ENABLE_SERVER_TRUE@ceph_kvstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ at ENABLE_SERVER_TRUE@ceph_kvstore_tool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_objectstore_tool_SOURCES = tools/ceph_objectstore_tool.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_objectstore_tool_LDADD =  \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBOSD) $(LIBOS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(CEPH_GLOBAL) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(BOOST_PROGRAM_OPTIONS_LIBS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(LIBRADOS) \
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@	$(am__append_187)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_journal_tool_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/cephfs-journal-tool.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalTool.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalFilter.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/JournalScanner.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/EventOutput.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/Dumper.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/Resetter.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/MDSUtility.cc
+
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_journal_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_table_tool_SOURCES = \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/cephfs-table-tool.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/TableTool.cc \
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@	tools/cephfs/MDSUtility.cc
+
+ at ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE at cephfs_table_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
 monmaptool_SOURCES = tools/monmaptool.cc
 monmaptool_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON)
 crushtool_SOURCES = tools/crushtool.cc
 crushtool_LDADD = $(CEPH_GLOBAL)
 osdmaptool_SOURCES = tools/osdmaptool.cc
 osdmaptool_LDADD = $(CEPH_GLOBAL)
-ceph_scratchtool_SOURCES = tools/scratchtool.c
-ceph_scratchtool_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-ceph_scratchtoolpp_SOURCES = tools/scratchtoolpp.cc
-ceph_scratchtoolpp_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
 ceph_psim_SOURCES = tools/psim.cc
 ceph_psim_LDADD = $(CEPH_GLOBAL)
-ceph_radosacl_SOURCES = tools/radosacl.cc
-ceph_radosacl_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-ceph_client_debug_SOURCES = tools/ceph-client-debug.cc
-ceph_client_debug_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(LIBCOMMON)
-rados_SOURCES = tools/rados/rados.cc tools/rados/rados_import.cc \
-	tools/rados/rados_export.cc tools/rados/rados_sync.cc \
-	common/obj_bencher.cc # needs cleanup so it can go in \
-	libcommon.la
-rados_LDADD = libcls_lock_client.la $(LIBRADOS) $(CEPH_GLOBAL)
-cephfs_journal_tool_SOURCES = \
-	tools/cephfs/cephfs-journal-tool.cc \
-	tools/cephfs/JournalTool.cc \
-	tools/cephfs/JournalFilter.cc \
-	tools/cephfs/JournalScanner.cc \
-	tools/cephfs/EventOutput.cc \
-	tools/cephfs/Dumper.cc \
-	tools/cephfs/Resetter.cc \
-	tools/cephfs/MDSUtility.cc
-
-cephfs_journal_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
-cephfs_table_tool_SOURCES = \
-	tools/cephfs/cephfs-table-tool.cc \
-	tools/cephfs/TableTool.cc \
-	tools/cephfs/MDSUtility.cc
-
-cephfs_table_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
 @WITH_REST_BENCH_TRUE at rest_bench_SOURCES = tools/rest_bench.cc \
 @WITH_REST_BENCH_TRUE@	common/obj_bencher.cc # needs cleanup so \
 @WITH_REST_BENCH_TRUE@	it can go in libcommon.la
 @WITH_REST_BENCH_TRUE at rest_bench_LDADD = $(CEPH_GLOBAL) \
- at WITH_REST_BENCH_TRUE@	$(am__append_120) $(am__append_121)
+ at WITH_REST_BENCH_TRUE@	$(am__append_191) $(am__append_192)
 @WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE at rest_bench_CXXFLAGS = ${AM_CXXFLAGS} -I$(top_srcdir)/src/libs3/inc
 ceph_conf_SOURCES = tools/ceph_conf.cc
 ceph_conf_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON)
@@ -7122,53 +8524,6 @@ ceph_authtool_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON)
 
 # subdirs
 
-# core daemons
-ceph_mon_SOURCES = ceph_mon.cc
-ceph_mon_LDADD = $(LIBMON) $(LIBOS) $(CEPH_GLOBAL) $(LIBCOMMON)
-ceph_osd_SOURCES = ceph_osd.cc
-ceph_osd_LDADD = $(LIBOSD) $(CEPH_GLOBAL) $(LIBCOMMON)
-ceph_mds_SOURCES = ceph_mds.cc
-ceph_mds_LDADD = $(LIBMDS) $(LIBOSDC) $(CEPH_GLOBAL) $(LIBCOMMON)
-
-# admin tools
-
-# user tools
-mount_ceph_SOURCES = mount/mount.ceph.c
-mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON)
-cephfs_SOURCES = cephfs.cc
-cephfs_LDADD = $(LIBCOMMON)
-librados_config_SOURCES = librados-config.cc
-librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-ceph_syn_SOURCES = ceph_syn.cc client/SyntheticClient.cc # uses \
-	g_conf.. needs cleanup
-ceph_syn_LDADD = $(LIBCLIENT) $(CEPH_GLOBAL)
-libkrbd_la_SOURCES = krbd.cc
-libkrbd_la_LIBADD = $(LIBSECRET) $(LIBCOMMON) -lblkid -ludev
-rbd_SOURCES = rbd.cc
-rbd_LDADD = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-
-# Fuse targets
- at WITH_FUSE_TRUE@ceph_fuse_SOURCES = ceph_fuse.cc
- at WITH_FUSE_TRUE@ceph_fuse_LDADD = $(LIBCLIENT_FUSE) $(CEPH_GLOBAL)
- at WITH_FUSE_TRUE@rbd_fuse_SOURCES = rbd_fuse/rbd-fuse.cc
- at WITH_FUSE_TRUE@rbd_fuse_LDADD = -lfuse $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
-
-# libcephfs (this should go somewhere else in the future)
-libcephfs_la_SOURCES = libcephfs.cc
-libcephfs_la_LIBADD = $(LIBCLIENT) $(LIBCOMMON) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-libcephfs_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
-
-# jni library (java source is in src/java)
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs_jni_la_SOURCES = \
- at ENABLE_CEPHFS_JAVA_TRUE@	java/native/libcephfs_jni.cc \
- at ENABLE_CEPHFS_JAVA_TRUE@	java/native/ScopedLocalRef.h \
- at ENABLE_CEPHFS_JAVA_TRUE@	java/native/JniConstants.cpp \
- at ENABLE_CEPHFS_JAVA_TRUE@	java/native/JniConstants.h
-
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs_jni_la_LIBADD = $(LIBCEPHFS) $(EXTRALIBS)
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS)
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0
-
 # shell scripts
 editpaths = sed \
 	-e 's|@bindir[@]|$(bindir)|g' \
@@ -7179,10 +8534,8 @@ editpaths = sed \
 	-e 's|@prefix[@]|$(prefix)|g' \
 	-e 's|@@GCOV_PREFIX_STRIP[@][@]|$(GCOV_PREFIX_STRIP)|g'
 
-
-# coverage
 shell_scripts = ceph-debugpack ceph-post-file ceph-crush-location \
-	init-ceph ceph-coverage
+	$(am__append_213)
 doc_DATA = $(srcdir)/sample.ceph.conf sample.fetch_config
 
 # various scripts
@@ -7190,19 +8543,6 @@ shell_commondir = $(libdir)/ceph
 shell_common_SCRIPTS = ceph_common.sh
 ceph_libexecdir = $(libexecdir)/ceph
 ceph_libexec_SCRIPTS = ceph-osd-prestart.sh
-bash_completiondir = $(sysconfdir)/bash_completion.d
-bash_completion_DATA = $(srcdir)/bash_completion/ceph \
-               $(srcdir)/bash_completion/rados \
-               $(srcdir)/bash_completion/rbd \
-               $(srcdir)/bash_completion/radosgw-admin
-
-ceph_sbin_SCRIPTS = \
-	ceph-disk \
-	ceph-disk-prepare \
-	ceph-disk-activate \
-	ceph-disk-udev \
-	ceph-create-keys
-
 
 # tests to actually run on "make check"; if you need extra, non-test,
 # executables built, you need to replace this with manual assignments
@@ -7218,21 +8558,65 @@ TESTS = \
 @WITH_LTTNG_TRUE at TESTS_ENVIRONMENT = LD_PRELOAD=liblttng-ust-fork.so; export LD_PRELOAD; echo "LD_PRELOAD=$${LD_PRELOAD}";
 
 # pybind
-python_PYTHON = pybind/rados.py \
-		pybind/rbd.py \
-		pybind/cephfs.py \
-		pybind/ceph_argparse.py \
-		pybind/ceph_rest_api.py
-
- at ENABLE_COVERAGE_TRUE@COV_DIR = $(DESTDIR)$(libdir)/ceph/coverage
- at ENABLE_COVERAGE_TRUE@COV_FILES = $(srcdir)/*.gcno
- at ENABLE_COVERAGE_TRUE@COV_LIB_FILES = $(srcdir)/.libs/*.gcno
+python_PYTHON = $(am__append_196) $(am__append_199) $(am__append_203) \
+	$(am__append_208) $(am__append_212)
+ at ENABLE_CLIENT_TRUE@bash_completiondir = $(sysconfdir)/bash_completion.d
+ at ENABLE_CLIENT_TRUE@bash_completion_DATA =  \
+ at ENABLE_CLIENT_TRUE@	$(srcdir)/bash_completion/ceph \
+ at ENABLE_CLIENT_TRUE@	$(am__append_198) $(am__append_201)
+ at ENABLE_CLIENT_TRUE@ceph_syn_SOURCES = ceph_syn.cc \
+ at ENABLE_CLIENT_TRUE@	client/SyntheticClient.cc # uses g_conf.. \
+ at ENABLE_CLIENT_TRUE@	needs cleanup
+ at ENABLE_CLIENT_TRUE@ceph_syn_LDADD = $(LIBCLIENT) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_config_SOURCES = librados-config.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE at librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at libkrbd_la_SOURCES = krbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at libkrbd_la_LIBADD = $(LIBSECRET) $(LIBCOMMON) -lblkid -ludev
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_SOURCES = rbd.cc
+ at ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE at rbd_LDADD = $(LIBKRBD) $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
+
+# Fuse targets
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at ceph_fuse_SOURCES = ceph_fuse.cc
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at ceph_fuse_LDADD = $(LIBCLIENT_FUSE) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at rbd_fuse_SOURCES = rbd_fuse/rbd-fuse.cc
+ at ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE at rbd_fuse_LDADD = -lfuse $(LIBRBD) $(LIBRADOS) $(CEPH_GLOBAL)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at cephfs_SOURCES = cephfs.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at cephfs_LDADD = $(LIBCOMMON)
+
+# libcephfs (this should go somewhere else in the future)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_la_SOURCES = libcephfs.cc
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_la_LIBADD = $(LIBCLIENT) $(LIBCOMMON) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+ at ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
+
+# jni library (java source is in src/java)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_jni_la_SOURCES = \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/native/libcephfs_jni.cc \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/native/ScopedLocalRef.h \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/native/JniConstants.cpp \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/native/JniConstants.h
+
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_jni_la_LIBADD = $(LIBCEPHFS) $(EXTRALIBS)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0
+ at ENABLE_SERVER_TRUE@ceph_sbin_SCRIPTS = ceph-create-keys \
+ at ENABLE_SERVER_TRUE@	$(am__append_218)
+ at ENABLE_SERVER_TRUE@mount_ceph_SOURCES = mount/mount.ceph.c
+ at ENABLE_SERVER_TRUE@mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON)
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_mon_SOURCES = ceph_mon.cc
+ at ENABLE_SERVER_TRUE@@WITH_MON_TRUE at ceph_mon_LDADD = $(LIBMON) $(LIBOS) $(CEPH_GLOBAL) $(LIBCOMMON)
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_osd_SOURCES = ceph_osd.cc
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at ceph_osd_LDADD = $(LIBOSD) $(CEPH_GLOBAL) $(LIBCOMMON)
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_mds_SOURCES = ceph_mds.cc
+ at ENABLE_SERVER_TRUE@@WITH_MDS_TRUE at ceph_mds_LDADD = $(LIBMDS) $(LIBOSDC) $(CEPH_GLOBAL) $(LIBCOMMON)
+ at ENABLE_COVERAGE_TRUE@@ENABLE_SERVER_TRUE at COV_DIR = $(DESTDIR)$(libdir)/ceph/coverage
+ at ENABLE_COVERAGE_TRUE@@ENABLE_SERVER_TRUE at COV_FILES = $(srcdir)/*.gcno
+ at ENABLE_COVERAGE_TRUE@@ENABLE_SERVER_TRUE at COV_LIB_FILES = $(srcdir)/.libs/*.gcno
 all: $(BUILT_SOURCES) acconfig.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .S .c .cc .cpp .lo .o .obj .s
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makefile-env.am $(srcdir)/arch/Makefile.am $(srcdir)/auth/Makefile.am $(srcdir)/brag/Makefile.am $(srcdir)/crush/Makefile.am $(srcdir)/mon/Makefile.am $(srcdir)/mds/Makefile.am $(srcdir)/os/Makefile.am $(srcdir)/osd/Makefile.am $(srcdir)/erasure-code/Makefile.am $(srcdir)/erasure-code/jerasure/Makefile.am $(srcdir)/erasure-code/lrc/Makefile.am $(srcdir)/erasure-code/shec/Makefile.am $(srcdir)/erasure-code/isa/Makefile.am $(srcdir)/o [...]
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makefile-env.am $(srcdir)/arch/Makefile.am $(srcdir)/auth/Makefile.am $(srcdir)/brag/Makefile.am $(srcdir)/crush/Makefile.am $(srcdir)/mon/Makefile.am $(srcdir)/mds/Makefile.am $(srcdir)/os/Makefile.am $(srcdir)/osd/Makefile.am $(srcdir)/erasure-code/Makefile.am $(srcdir)/erasure-code/jerasure/Makefile.am $(srcdir)/erasure-code/lrc/Makefile.am $(srcdir)/erasure-code/shec/Makefile.am $(srcdir)/erasure-code/isa/Makefile.am $(srcdir)/o [...]
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -7253,7 +8637,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/Makefile-env.am $(srcdir)/arch/Makefile.am $(srcdir)/auth/Makefile.am $(srcdir)/brag/Makefile.am $(srcdir)/crush/Makefile.am $(srcdir)/mon/Makefile.am $(srcdir)/mds/Makefile.am $(srcdir)/os/Makefile.am $(srcdir)/osd/Makefile.am $(srcdir)/erasure-code/Makefile.am $(srcdir)/erasure-code/jerasure/Makefile.am $(srcdir)/erasure-code/lrc/Makefile.am $(srcdir)/erasure-code/shec/Makefile.am $(srcdir)/erasure-code/isa/Makefile.am $(srcdir)/osdc/Makefile.am $(srcdir)/client/Makefile.am $ [...]
+$(srcdir)/Makefile-env.am $(srcdir)/arch/Makefile.am $(srcdir)/auth/Makefile.am $(srcdir)/brag/Makefile.am $(srcdir)/crush/Makefile.am $(srcdir)/mon/Makefile.am $(srcdir)/mds/Makefile.am $(srcdir)/os/Makefile.am $(srcdir)/osd/Makefile.am $(srcdir)/erasure-code/Makefile.am $(srcdir)/erasure-code/jerasure/Makefile.am $(srcdir)/erasure-code/lrc/Makefile.am $(srcdir)/erasure-code/shec/Makefile.am $(srcdir)/erasure-code/isa/Makefile.am $(srcdir)/osdc/Makefile.am $(srcdir)/client/Makefile.am $ [...]
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -7538,7 +8922,7 @@ auth/RotatingKeyRing.lo: auth/$(am__dirstamp) \
 libauth.la: $(libauth_la_OBJECTS) $(libauth_la_DEPENDENCIES) $(EXTRA_libauth_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK)  $(libauth_la_OBJECTS) $(libauth_la_LIBADD) $(LIBS)
 libcephfs.la: $(libcephfs_la_OBJECTS) $(libcephfs_la_DEPENDENCIES) $(EXTRA_libcephfs_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcephfs_la_LINK) -rpath $(libdir) $(libcephfs_la_OBJECTS) $(libcephfs_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcephfs_la_LINK) $(am_libcephfs_la_rpath) $(libcephfs_la_OBJECTS) $(libcephfs_la_LIBADD) $(LIBS)
 java/native/$(am__dirstamp):
 	@$(MKDIR_P) java/native
 	@: > java/native/$(am__dirstamp)
@@ -7553,6 +8937,26 @@ java/native/libcephfs_jni_la-JniConstants.lo:  \
 	java/native/$(DEPDIR)/$(am__dirstamp)
 libcephfs_jni.la: $(libcephfs_jni_la_OBJECTS) $(libcephfs_jni_la_DEPENDENCIES) $(EXTRA_libcephfs_jni_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(libcephfs_jni_la_LINK) $(am_libcephfs_jni_la_rpath) $(libcephfs_jni_la_OBJECTS) $(libcephfs_jni_la_LIBADD) $(LIBS)
+rgw/$(am__dirstamp):
+	@$(MKDIR_P) rgw
+	@: > rgw/$(am__dirstamp)
+rgw/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) rgw/$(DEPDIR)
+	@: > rgw/$(DEPDIR)/$(am__dirstamp)
+rgw/libcivetweb_la-rgw_civetweb.lo: rgw/$(am__dirstamp) \
+	rgw/$(DEPDIR)/$(am__dirstamp)
+rgw/libcivetweb_la-rgw_civetweb_log.lo: rgw/$(am__dirstamp) \
+	rgw/$(DEPDIR)/$(am__dirstamp)
+civetweb/src/$(am__dirstamp):
+	@$(MKDIR_P) civetweb/src
+	@: > civetweb/src/$(am__dirstamp)
+civetweb/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) civetweb/src/$(DEPDIR)
+	@: > civetweb/src/$(DEPDIR)/$(am__dirstamp)
+civetweb/src/libcivetweb_la-civetweb.lo: civetweb/src/$(am__dirstamp) \
+	civetweb/src/$(DEPDIR)/$(am__dirstamp)
+libcivetweb.la: $(libcivetweb_la_OBJECTS) $(libcivetweb_la_DEPENDENCIES) $(EXTRA_libcivetweb_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcivetweb_la_LINK) $(am_libcivetweb_la_rpath) $(libcivetweb_la_OBJECTS) $(libcivetweb_la_LIBADD) $(LIBS)
 client/$(am__dirstamp):
 	@$(MKDIR_P) client
 	@: > client/$(am__dirstamp)
@@ -7574,7 +8978,7 @@ client/MetaSession.lo: client/$(am__dirstamp) \
 client/Trace.lo: client/$(am__dirstamp) \
 	client/$(DEPDIR)/$(am__dirstamp)
 libclient.la: $(libclient_la_OBJECTS) $(libclient_la_DEPENDENCIES) $(EXTRA_libclient_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libclient_la_OBJECTS) $(libclient_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libclient_la_rpath) $(libclient_la_OBJECTS) $(libclient_la_LIBADD) $(LIBS)
 client/fuse_ll.lo: client/$(am__dirstamp) \
 	client/$(DEPDIR)/$(am__dirstamp)
 libclient_fuse.la: $(libclient_fuse_la_OBJECTS) $(libclient_fuse_la_DEPENDENCIES) $(EXTRA_libclient_fuse_la_DEPENDENCIES) 
@@ -7588,7 +8992,7 @@ cls/hello/$(DEPDIR)/$(am__dirstamp):
 cls/hello/cls_hello.lo: cls/hello/$(am__dirstamp) \
 	cls/hello/$(DEPDIR)/$(am__dirstamp)
 libcls_hello.la: $(libcls_hello_la_OBJECTS) $(libcls_hello_la_DEPENDENCIES) $(EXTRA_libcls_hello_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_hello_la_LINK) -rpath $(radoslibdir) $(libcls_hello_la_OBJECTS) $(libcls_hello_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_hello_la_LINK) $(am_libcls_hello_la_rpath) $(libcls_hello_la_OBJECTS) $(libcls_hello_la_LIBADD) $(LIBS)
 key_value_store/$(am__dirstamp):
 	@$(MKDIR_P) key_value_store
 	@: > key_value_store/$(am__dirstamp)
@@ -7608,7 +9012,7 @@ cls/lock/$(DEPDIR)/$(am__dirstamp):
 cls/lock/cls_lock.lo: cls/lock/$(am__dirstamp) \
 	cls/lock/$(DEPDIR)/$(am__dirstamp)
 libcls_lock.la: $(libcls_lock_la_OBJECTS) $(libcls_lock_la_DEPENDENCIES) $(EXTRA_libcls_lock_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_lock_la_LINK) -rpath $(radoslibdir) $(libcls_lock_la_OBJECTS) $(libcls_lock_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_lock_la_LINK) $(am_libcls_lock_la_rpath) $(libcls_lock_la_OBJECTS) $(libcls_lock_la_LIBADD) $(LIBS)
 cls/lock/cls_lock_client.lo: cls/lock/$(am__dirstamp) \
 	cls/lock/$(DEPDIR)/$(am__dirstamp)
 cls/lock/cls_lock_types.lo: cls/lock/$(am__dirstamp) \
@@ -7616,11 +9020,11 @@ cls/lock/cls_lock_types.lo: cls/lock/$(am__dirstamp) \
 cls/lock/cls_lock_ops.lo: cls/lock/$(am__dirstamp) \
 	cls/lock/$(DEPDIR)/$(am__dirstamp)
 libcls_lock_client.la: $(libcls_lock_client_la_OBJECTS) $(libcls_lock_client_la_DEPENDENCIES) $(EXTRA_libcls_lock_client_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libcls_lock_client_la_OBJECTS) $(libcls_lock_client_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libcls_lock_client_la_rpath) $(libcls_lock_client_la_OBJECTS) $(libcls_lock_client_la_LIBADD) $(LIBS)
 cls/log/cls_log.lo: cls/log/$(am__dirstamp) \
 	cls/log/$(DEPDIR)/$(am__dirstamp)
 libcls_log.la: $(libcls_log_la_OBJECTS) $(libcls_log_la_DEPENDENCIES) $(EXTRA_libcls_log_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_log_la_LINK) -rpath $(radoslibdir) $(libcls_log_la_OBJECTS) $(libcls_log_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_log_la_LINK) $(am_libcls_log_la_rpath) $(libcls_log_la_OBJECTS) $(libcls_log_la_LIBADD) $(LIBS)
 cls/rbd/$(am__dirstamp):
 	@$(MKDIR_P) cls/rbd
 	@: > cls/rbd/$(am__dirstamp)
@@ -7630,11 +9034,11 @@ cls/rbd/$(DEPDIR)/$(am__dirstamp):
 cls/rbd/cls_rbd.lo: cls/rbd/$(am__dirstamp) \
 	cls/rbd/$(DEPDIR)/$(am__dirstamp)
 libcls_rbd.la: $(libcls_rbd_la_OBJECTS) $(libcls_rbd_la_DEPENDENCIES) $(EXTRA_libcls_rbd_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_rbd_la_LINK) -rpath $(radoslibdir) $(libcls_rbd_la_OBJECTS) $(libcls_rbd_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_rbd_la_LINK) $(am_libcls_rbd_la_rpath) $(libcls_rbd_la_OBJECTS) $(libcls_rbd_la_LIBADD) $(LIBS)
 cls/rbd/cls_rbd_client.lo: cls/rbd/$(am__dirstamp) \
 	cls/rbd/$(DEPDIR)/$(am__dirstamp)
 libcls_rbd_client.la: $(libcls_rbd_client_la_OBJECTS) $(libcls_rbd_client_la_DEPENDENCIES) $(EXTRA_libcls_rbd_client_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libcls_rbd_client_la_OBJECTS) $(libcls_rbd_client_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libcls_rbd_client_la_rpath) $(libcls_rbd_client_la_OBJECTS) $(libcls_rbd_client_la_LIBADD) $(LIBS)
 cls/refcount/$(am__dirstamp):
 	@$(MKDIR_P) cls/refcount
 	@: > cls/refcount/$(am__dirstamp)
@@ -7654,15 +9058,15 @@ common/$(DEPDIR)/$(am__dirstamp):
 common/ceph_json.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 libcls_refcount.la: $(libcls_refcount_la_OBJECTS) $(libcls_refcount_la_DEPENDENCIES) $(EXTRA_libcls_refcount_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_refcount_la_LINK) -rpath $(radoslibdir) $(libcls_refcount_la_OBJECTS) $(libcls_refcount_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_refcount_la_LINK) $(am_libcls_refcount_la_rpath) $(libcls_refcount_la_OBJECTS) $(libcls_refcount_la_LIBADD) $(LIBS)
 cls/refcount/cls_refcount_client.lo: cls/refcount/$(am__dirstamp) \
 	cls/refcount/$(DEPDIR)/$(am__dirstamp)
 libcls_refcount_client.la: $(libcls_refcount_client_la_OBJECTS) $(libcls_refcount_client_la_DEPENDENCIES) $(EXTRA_libcls_refcount_client_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libcls_refcount_client_la_OBJECTS) $(libcls_refcount_client_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libcls_refcount_client_la_rpath) $(libcls_refcount_client_la_OBJECTS) $(libcls_refcount_client_la_LIBADD) $(LIBS)
 cls/replica_log/cls_replica_log.lo: cls/replica_log/$(am__dirstamp) \
 	cls/replica_log/$(DEPDIR)/$(am__dirstamp)
 libcls_replica_log.la: $(libcls_replica_log_la_OBJECTS) $(libcls_replica_log_la_DEPENDENCIES) $(EXTRA_libcls_replica_log_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_replica_log_la_LINK) -rpath $(radoslibdir) $(libcls_replica_log_la_OBJECTS) $(libcls_replica_log_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_replica_log_la_LINK) $(am_libcls_replica_log_la_rpath) $(libcls_replica_log_la_OBJECTS) $(libcls_replica_log_la_LIBADD) $(LIBS)
 cls/rgw/$(am__dirstamp):
 	@$(MKDIR_P) cls/rgw
 	@: > cls/rgw/$(am__dirstamp)
@@ -7676,23 +9080,23 @@ cls/rgw/cls_rgw_ops.lo: cls/rgw/$(am__dirstamp) \
 cls/rgw/cls_rgw_types.lo: cls/rgw/$(am__dirstamp) \
 	cls/rgw/$(DEPDIR)/$(am__dirstamp)
 libcls_rgw.la: $(libcls_rgw_la_OBJECTS) $(libcls_rgw_la_DEPENDENCIES) $(EXTRA_libcls_rgw_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_rgw_la_LINK) -rpath $(radoslibdir) $(libcls_rgw_la_OBJECTS) $(libcls_rgw_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_rgw_la_LINK) $(am_libcls_rgw_la_rpath) $(libcls_rgw_la_OBJECTS) $(libcls_rgw_la_LIBADD) $(LIBS)
 cls/rgw/cls_rgw_client.lo: cls/rgw/$(am__dirstamp) \
 	cls/rgw/$(DEPDIR)/$(am__dirstamp)
 libcls_rgw_client.la: $(libcls_rgw_client_la_OBJECTS) $(libcls_rgw_client_la_DEPENDENCIES) $(EXTRA_libcls_rgw_client_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libcls_rgw_client_la_OBJECTS) $(libcls_rgw_client_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libcls_rgw_client_la_rpath) $(libcls_rgw_client_la_OBJECTS) $(libcls_rgw_client_la_LIBADD) $(LIBS)
 cls/statelog/cls_statelog.lo: cls/statelog/$(am__dirstamp) \
 	cls/statelog/$(DEPDIR)/$(am__dirstamp)
 libcls_statelog.la: $(libcls_statelog_la_OBJECTS) $(libcls_statelog_la_DEPENDENCIES) $(EXTRA_libcls_statelog_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_statelog_la_LINK) -rpath $(radoslibdir) $(libcls_statelog_la_OBJECTS) $(libcls_statelog_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_statelog_la_LINK) $(am_libcls_statelog_la_rpath) $(libcls_statelog_la_OBJECTS) $(libcls_statelog_la_LIBADD) $(LIBS)
 cls/user/cls_user.lo: cls/user/$(am__dirstamp) \
 	cls/user/$(DEPDIR)/$(am__dirstamp)
 libcls_user.la: $(libcls_user_la_OBJECTS) $(libcls_user_la_DEPENDENCIES) $(EXTRA_libcls_user_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_user_la_LINK) -rpath $(radoslibdir) $(libcls_user_la_OBJECTS) $(libcls_user_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_user_la_LINK) $(am_libcls_user_la_rpath) $(libcls_user_la_OBJECTS) $(libcls_user_la_LIBADD) $(LIBS)
 cls/version/cls_version.lo: cls/version/$(am__dirstamp) \
 	cls/version/$(DEPDIR)/$(am__dirstamp)
 libcls_version.la: $(libcls_version_la_OBJECTS) $(libcls_version_la_DEPENDENCIES) $(EXTRA_libcls_version_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcls_version_la_LINK) -rpath $(radoslibdir) $(libcls_version_la_OBJECTS) $(libcls_version_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libcls_version_la_LINK) $(am_libcls_version_la_rpath) $(libcls_version_la_OBJECTS) $(libcls_version_la_LIBADD) $(LIBS)
 libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) $(EXTRA_libcommon_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK)  $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS)
 common/libcommon_api_la-buffer.lo: common/$(am__dirstamp) \
@@ -7778,8 +9182,6 @@ common/errno.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 common/RefCountedObj.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
-common/blkdev.lo: common/$(am__dirstamp) \
-	common/$(DEPDIR)/$(am__dirstamp)
 common/common_init.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 common/pipe.lo: common/$(am__dirstamp) \
@@ -7859,6 +9261,8 @@ common/Cycles.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 common/ContextCompletion.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
+common/blkdev.lo: common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
 common/address_helper.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 mon/$(am__dirstamp):
@@ -7922,22 +9326,22 @@ test/erasure-code/libec_example_la-ErasureCodePluginExample.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_example.la: $(libec_example_la_OBJECTS) $(libec_example_la_DEPENDENCIES) $(EXTRA_libec_example_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_example_la_LINK) -rpath $(erasure_codelibdir) $(libec_example_la_OBJECTS) $(libec_example_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_example_la_LINK) $(am_libec_example_la_rpath) $(libec_example_la_OBJECTS) $(libec_example_la_LIBADD) $(LIBS)
 test/erasure-code/libec_fail_to_initialize_la-ErasureCodePluginFailToInitialize.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_fail_to_initialize.la: $(libec_fail_to_initialize_la_OBJECTS) $(libec_fail_to_initialize_la_DEPENDENCIES) $(EXTRA_libec_fail_to_initialize_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_fail_to_initialize_la_LINK) -rpath $(erasure_codelibdir) $(libec_fail_to_initialize_la_OBJECTS) $(libec_fail_to_initialize_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_fail_to_initialize_la_LINK) $(am_libec_fail_to_initialize_la_rpath) $(libec_fail_to_initialize_la_OBJECTS) $(libec_fail_to_initialize_la_LIBADD) $(LIBS)
 test/erasure-code/libec_fail_to_register_la-ErasureCodePluginFailToRegister.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_fail_to_register.la: $(libec_fail_to_register_la_OBJECTS) $(libec_fail_to_register_la_DEPENDENCIES) $(EXTRA_libec_fail_to_register_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_fail_to_register_la_LINK) -rpath $(erasure_codelibdir) $(libec_fail_to_register_la_OBJECTS) $(libec_fail_to_register_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_fail_to_register_la_LINK) $(am_libec_fail_to_register_la_rpath) $(libec_fail_to_register_la_OBJECTS) $(libec_fail_to_register_la_LIBADD) $(LIBS)
 test/erasure-code/libec_hangs_la-ErasureCodePluginHangs.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_hangs.la: $(libec_hangs_la_OBJECTS) $(libec_hangs_la_DEPENDENCIES) $(EXTRA_libec_hangs_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_hangs_la_LINK) -rpath $(erasure_codelibdir) $(libec_hangs_la_OBJECTS) $(libec_hangs_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_hangs_la_LINK) $(am_libec_hangs_la_rpath) $(libec_hangs_la_OBJECTS) $(libec_hangs_la_LIBADD) $(LIBS)
 erasure-code/$(am__dirstamp):
 	@$(MKDIR_P) erasure-code
 	@: > erasure-code/$(am__dirstamp)
@@ -8345,12 +9749,12 @@ test/erasure-code/libec_missing_entry_point_la-ErasureCodePluginMissingEntryPoin
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_missing_entry_point.la: $(libec_missing_entry_point_la_OBJECTS) $(libec_missing_entry_point_la_DEPENDENCIES) $(EXTRA_libec_missing_entry_point_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_missing_entry_point_la_LINK) -rpath $(erasure_codelibdir) $(libec_missing_entry_point_la_OBJECTS) $(libec_missing_entry_point_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_missing_entry_point_la_LINK) $(am_libec_missing_entry_point_la_rpath) $(libec_missing_entry_point_la_OBJECTS) $(libec_missing_entry_point_la_LIBADD) $(LIBS)
 test/erasure-code/libec_missing_version_la-ErasureCodePluginMissingVersion.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_missing_version.la: $(libec_missing_version_la_OBJECTS) $(libec_missing_version_la_DEPENDENCIES) $(EXTRA_libec_missing_version_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_missing_version_la_LINK) -rpath $(erasure_codelibdir) $(libec_missing_version_la_OBJECTS) $(libec_missing_version_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_missing_version_la_LINK) $(am_libec_missing_version_la_rpath) $(libec_missing_version_la_OBJECTS) $(libec_missing_version_la_LIBADD) $(LIBS)
 erasure-code/libec_shec_la-ErasureCode.lo:  \
 	erasure-code/$(am__dirstamp) \
 	erasure-code/$(DEPDIR)/$(am__dirstamp)
@@ -8429,22 +9833,22 @@ test/erasure-code/libec_test_jerasure_generic_la-TestJerasurePluginGeneric.lo:
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_test_jerasure_generic.la: $(libec_test_jerasure_generic_la_OBJECTS) $(libec_test_jerasure_generic_la_DEPENDENCIES) $(EXTRA_libec_test_jerasure_generic_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_test_jerasure_generic_la_LINK) -rpath $(erasure_codelibdir) $(libec_test_jerasure_generic_la_OBJECTS) $(libec_test_jerasure_generic_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_test_jerasure_generic_la_LINK) $(am_libec_test_jerasure_generic_la_rpath) $(libec_test_jerasure_generic_la_OBJECTS) $(libec_test_jerasure_generic_la_LIBADD) $(LIBS)
 test/erasure-code/libec_test_jerasure_neon_la-TestJerasurePluginNEON.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_test_jerasure_neon.la: $(libec_test_jerasure_neon_la_OBJECTS) $(libec_test_jerasure_neon_la_DEPENDENCIES) $(EXTRA_libec_test_jerasure_neon_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_test_jerasure_neon_la_LINK) -rpath $(erasure_codelibdir) $(libec_test_jerasure_neon_la_OBJECTS) $(libec_test_jerasure_neon_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_test_jerasure_neon_la_LINK) $(am_libec_test_jerasure_neon_la_rpath) $(libec_test_jerasure_neon_la_OBJECTS) $(libec_test_jerasure_neon_la_LIBADD) $(LIBS)
 test/erasure-code/libec_test_jerasure_sse3_la-TestJerasurePluginSSE3.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_test_jerasure_sse3.la: $(libec_test_jerasure_sse3_la_OBJECTS) $(libec_test_jerasure_sse3_la_DEPENDENCIES) $(EXTRA_libec_test_jerasure_sse3_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_test_jerasure_sse3_la_LINK) -rpath $(erasure_codelibdir) $(libec_test_jerasure_sse3_la_OBJECTS) $(libec_test_jerasure_sse3_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_test_jerasure_sse3_la_LINK) $(am_libec_test_jerasure_sse3_la_rpath) $(libec_test_jerasure_sse3_la_OBJECTS) $(libec_test_jerasure_sse3_la_LIBADD) $(LIBS)
 test/erasure-code/libec_test_jerasure_sse4_la-TestJerasurePluginSSE4.lo:  \
 	test/erasure-code/$(am__dirstamp) \
 	test/erasure-code/$(DEPDIR)/$(am__dirstamp)
 libec_test_jerasure_sse4.la: $(libec_test_jerasure_sse4_la_OBJECTS) $(libec_test_jerasure_sse4_la_DEPENDENCIES) $(EXTRA_libec_test_jerasure_sse4_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libec_test_jerasure_sse4_la_LINK) -rpath $(erasure_codelibdir) $(libec_test_jerasure_sse4_la_OBJECTS) $(libec_test_jerasure_sse4_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libec_test_jerasure_sse4_la_LINK) $(am_libec_test_jerasure_sse4_la_rpath) $(libec_test_jerasure_sse4_la_OBJECTS) $(libec_test_jerasure_sse4_la_LIBADD) $(LIBS)
 erasure-code/ErasureCodePlugin.lo: erasure-code/$(am__dirstamp) \
 	erasure-code/$(DEPDIR)/$(am__dirstamp)
 liberasure_code.la: $(liberasure_code_la_OBJECTS) $(liberasure_code_la_DEPENDENCIES) $(EXTRA_liberasure_code_la_DEPENDENCIES) 
@@ -8524,7 +9928,7 @@ mds/MDLog.lo: mds/$(am__dirstamp) mds/$(DEPDIR)/$(am__dirstamp)
 common/TrackedOp.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 libmds.la: $(libmds_la_OBJECTS) $(libmds_la_DEPENDENCIES) $(EXTRA_libmds_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libmds_la_OBJECTS) $(libmds_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libmds_la_rpath) $(libmds_la_OBJECTS) $(libmds_la_LIBADD) $(LIBS)
 mon/Monitor.lo: mon/$(am__dirstamp) mon/$(DEPDIR)/$(am__dirstamp)
 mon/Paxos.lo: mon/$(am__dirstamp) mon/$(DEPDIR)/$(am__dirstamp)
 mon/PaxosService.lo: mon/$(am__dirstamp) mon/$(DEPDIR)/$(am__dirstamp)
@@ -8544,7 +9948,7 @@ mon/DataHealthService.lo: mon/$(am__dirstamp) \
 mon/ConfigKeyService.lo: mon/$(am__dirstamp) \
 	mon/$(DEPDIR)/$(am__dirstamp)
 libmon.la: $(libmon_la_OBJECTS) $(libmon_la_DEPENDENCIES) $(EXTRA_libmon_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libmon_la_OBJECTS) $(libmon_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libmon_la_rpath) $(libmon_la_OBJECTS) $(libmon_la_LIBADD) $(LIBS)
 mon/PGMap.lo: mon/$(am__dirstamp) mon/$(DEPDIR)/$(am__dirstamp)
 libmon_types.la: $(libmon_types_la_OBJECTS) $(libmon_types_la_DEPENDENCIES) $(EXTRA_libmon_types_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK)  $(libmon_types_la_OBJECTS) $(libmon_types_la_LIBADD) $(LIBS)
@@ -8658,7 +10062,7 @@ os/libos_la-ZFSFileStoreBackend.lo: os/$(am__dirstamp) \
 os/libos_la-KineticStore.lo: os/$(am__dirstamp) \
 	os/$(DEPDIR)/$(am__dirstamp)
 libos.la: $(libos_la_OBJECTS) $(libos_la_DEPENDENCIES) $(EXTRA_libos_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libos_la_LINK)  $(libos_la_OBJECTS) $(libos_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libos_la_LINK) $(am_libos_la_rpath) $(libos_la_OBJECTS) $(libos_la_LIBADD) $(LIBS)
 os/libos_rocksdb_la-RocksDBStore.lo: os/$(am__dirstamp) \
 	os/$(DEPDIR)/$(am__dirstamp)
 libos_rocksdb.la: $(libos_rocksdb_la_OBJECTS) $(libos_rocksdb_la_DEPENDENCIES) $(EXTRA_libos_rocksdb_la_DEPENDENCIES) 
@@ -8707,7 +10111,7 @@ objclass/$(DEPDIR)/$(am__dirstamp):
 objclass/libosd_la-class_api.lo: objclass/$(am__dirstamp) \
 	objclass/$(DEPDIR)/$(am__dirstamp)
 libosd.la: $(libosd_la_OBJECTS) $(libosd_la_DEPENDENCIES) $(EXTRA_libosd_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libosd_la_LINK)  $(libosd_la_OBJECTS) $(libosd_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libosd_la_LINK) $(am_libosd_la_rpath) $(libosd_la_OBJECTS) $(libosd_la_LIBADD) $(LIBS)
 osd/libosd_types_la-PGLog.lo: osd/$(am__dirstamp) \
 	osd/$(DEPDIR)/$(am__dirstamp)
 osd/libosd_types_la-osd_types.lo: osd/$(am__dirstamp) \
@@ -8757,13 +10161,13 @@ librados/$(DEPDIR)/$(am__dirstamp):
 librados/librados_la-librados.lo: librados/$(am__dirstamp) \
 	librados/$(DEPDIR)/$(am__dirstamp)
 librados.la: $(librados_la_OBJECTS) $(librados_la_DEPENDENCIES) $(EXTRA_librados_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(librados_la_LINK) -rpath $(libdir) $(librados_la_OBJECTS) $(librados_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(librados_la_LINK) $(am_librados_la_rpath) $(librados_la_OBJECTS) $(librados_la_LIBADD) $(LIBS)
 common/buffer.lo: common/$(am__dirstamp) \
 	common/$(DEPDIR)/$(am__dirstamp)
 librados/librados.lo: librados/$(am__dirstamp) \
 	librados/$(DEPDIR)/$(am__dirstamp)
 librados_api.la: $(librados_api_la_OBJECTS) $(librados_api_la_DEPENDENCIES) $(EXTRA_librados_api_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librados_api_la_OBJECTS) $(librados_api_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librados_api_la_rpath) $(librados_api_la_OBJECTS) $(librados_api_la_LIBADD) $(LIBS)
 librados/RadosClient.lo: librados/$(am__dirstamp) \
 	librados/$(DEPDIR)/$(am__dirstamp)
 librados/IoCtxImpl.lo: librados/$(am__dirstamp) \
@@ -8773,7 +10177,7 @@ librados/RadosXattrIter.lo: librados/$(am__dirstamp) \
 librados/snap_set_diff.lo: librados/$(am__dirstamp) \
 	librados/$(DEPDIR)/$(am__dirstamp)
 librados_internal.la: $(librados_internal_la_OBJECTS) $(librados_internal_la_DEPENDENCIES) $(EXTRA_librados_internal_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librados_internal_la_OBJECTS) $(librados_internal_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librados_internal_la_rpath) $(librados_internal_la_OBJECTS) $(librados_internal_la_LIBADD) $(LIBS)
 test/librados_test_stub/$(am__dirstamp):
 	@$(MKDIR_P) test/librados_test_stub
 	@: > test/librados_test_stub/$(am__dirstamp)
@@ -8802,7 +10206,7 @@ test/librados_test_stub/TestWatchNotify.lo:  \
 	test/librados_test_stub/$(am__dirstamp) \
 	test/librados_test_stub/$(DEPDIR)/$(am__dirstamp)
 librados_test_stub.la: $(librados_test_stub_la_OBJECTS) $(librados_test_stub_la_DEPENDENCIES) $(EXTRA_librados_test_stub_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librados_test_stub_la_OBJECTS) $(librados_test_stub_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librados_test_stub_la_rpath) $(librados_test_stub_la_OBJECTS) $(librados_test_stub_la_LIBADD) $(LIBS)
 libradosstriper/$(am__dirstamp):
 	@$(MKDIR_P) libradosstriper
 	@: > libradosstriper/$(am__dirstamp)
@@ -8819,7 +10223,7 @@ libradosstriper/libradosstriper_la-MultiAioCompletionImpl.lo:  \
 	libradosstriper/$(am__dirstamp) \
 	libradosstriper/$(DEPDIR)/$(am__dirstamp)
 libradosstriper.la: $(libradosstriper_la_OBJECTS) $(libradosstriper_la_DEPENDENCIES) $(EXTRA_libradosstriper_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libradosstriper_la_LINK) -rpath $(libdir) $(libradosstriper_la_OBJECTS) $(libradosstriper_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libradosstriper_la_LINK) $(am_libradosstriper_la_rpath) $(libradosstriper_la_OBJECTS) $(libradosstriper_la_LIBADD) $(LIBS)
 test/libradosstriper/$(am__dirstamp):
 	@$(MKDIR_P) test/libradosstriper
 	@: > test/libradosstriper/$(am__dirstamp)
@@ -8830,7 +10234,7 @@ test/libradosstriper/libradosstripertest_la-TestCase.lo:  \
 	test/libradosstriper/$(am__dirstamp) \
 	test/libradosstriper/$(DEPDIR)/$(am__dirstamp)
 libradosstripertest.la: $(libradosstripertest_la_OBJECTS) $(libradosstripertest_la_DEPENDENCIES) $(EXTRA_libradosstripertest_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libradosstripertest_la_LINK)  $(libradosstripertest_la_OBJECTS) $(libradosstripertest_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libradosstripertest_la_LINK) $(am_libradosstripertest_la_rpath) $(libradosstripertest_la_OBJECTS) $(libradosstripertest_la_LIBADD) $(LIBS)
 test/librados/$(am__dirstamp):
 	@$(MKDIR_P) test/librados
 	@: > test/librados/$(am__dirstamp)
@@ -8843,7 +10247,7 @@ test/librados/libradostest_la-TestCase.lo:  \
 	test/librados/$(am__dirstamp) \
 	test/librados/$(DEPDIR)/$(am__dirstamp)
 libradostest.la: $(libradostest_la_OBJECTS) $(libradostest_la_DEPENDENCIES) $(EXTRA_libradostest_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libradostest_la_LINK)  $(libradostest_la_OBJECTS) $(libradostest_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libradostest_la_LINK) $(am_libradostest_la_rpath) $(libradostest_la_OBJECTS) $(libradostest_la_LIBADD) $(LIBS)
 librbd/$(am__dirstamp):
 	@$(MKDIR_P) librbd
 	@: > librbd/$(am__dirstamp)
@@ -8853,11 +10257,11 @@ librbd/$(DEPDIR)/$(am__dirstamp):
 librbd/librbd_la-librbd.lo: librbd/$(am__dirstamp) \
 	librbd/$(DEPDIR)/$(am__dirstamp)
 librbd.la: $(librbd_la_OBJECTS) $(librbd_la_DEPENDENCIES) $(EXTRA_librbd_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(librbd_la_LINK) -rpath $(libdir) $(librbd_la_OBJECTS) $(librbd_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(librbd_la_LINK) $(am_librbd_la_rpath) $(librbd_la_OBJECTS) $(librbd_la_LIBADD) $(LIBS)
 librbd/librbd.lo: librbd/$(am__dirstamp) \
 	librbd/$(DEPDIR)/$(am__dirstamp)
 librbd_api.la: $(librbd_api_la_OBJECTS) $(librbd_api_la_DEPENDENCIES) $(EXTRA_librbd_api_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librbd_api_la_OBJECTS) $(librbd_api_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librbd_api_la_rpath) $(librbd_api_la_OBJECTS) $(librbd_api_la_LIBADD) $(LIBS)
 librbd/AioCompletion.lo: librbd/$(am__dirstamp) \
 	librbd/$(DEPDIR)/$(am__dirstamp)
 librbd/AioRequest.lo: librbd/$(am__dirstamp) \
@@ -8887,7 +10291,7 @@ librbd/LibrbdWriteback.lo: librbd/$(am__dirstamp) \
 librbd/ObjectMap.lo: librbd/$(am__dirstamp) \
 	librbd/$(DEPDIR)/$(am__dirstamp)
 librbd_internal.la: $(librbd_internal_la_OBJECTS) $(librbd_internal_la_DEPENDENCIES) $(EXTRA_librbd_internal_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librbd_internal_la_OBJECTS) $(librbd_internal_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librbd_internal_la_rpath) $(librbd_internal_la_OBJECTS) $(librbd_internal_la_LIBADD) $(LIBS)
 rbd_replay/$(am__dirstamp):
 	@$(MKDIR_P) rbd_replay
 	@: > rbd_replay/$(am__dirstamp)
@@ -8909,11 +10313,11 @@ rbd_replay/Replayer.lo: rbd_replay/$(am__dirstamp) \
 rbd_replay/Ser.lo: rbd_replay/$(am__dirstamp) \
 	rbd_replay/$(DEPDIR)/$(am__dirstamp)
 librbd_replay.la: $(librbd_replay_la_OBJECTS) $(librbd_replay_la_DEPENDENCIES) $(EXTRA_librbd_replay_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librbd_replay_la_OBJECTS) $(librbd_replay_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librbd_replay_la_rpath) $(librbd_replay_la_OBJECTS) $(librbd_replay_la_LIBADD) $(LIBS)
 rbd_replay/ios.lo: rbd_replay/$(am__dirstamp) \
 	rbd_replay/$(DEPDIR)/$(am__dirstamp)
 librbd_replay_ios.la: $(librbd_replay_ios_la_OBJECTS) $(librbd_replay_ios_la_DEPENDENCIES) $(EXTRA_librbd_replay_ios_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(librbd_replay_ios_la_OBJECTS) $(librbd_replay_ios_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_librbd_replay_ios_la_rpath) $(librbd_replay_ios_la_OBJECTS) $(librbd_replay_ios_la_LIBADD) $(LIBS)
 test/librbd/$(am__dirstamp):
 	@$(MKDIR_P) test/librbd
 	@: > test/librbd/$(am__dirstamp)
@@ -8935,17 +10339,11 @@ test/librbd/librbd_test_la-test_internal.lo:  \
 test/librbd/librbd_test_la-test_main.lo: test/librbd/$(am__dirstamp) \
 	test/librbd/$(DEPDIR)/$(am__dirstamp)
 librbd_test.la: $(librbd_test_la_OBJECTS) $(librbd_test_la_DEPENDENCIES) $(EXTRA_librbd_test_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(librbd_test_la_LINK)  $(librbd_test_la_OBJECTS) $(librbd_test_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(librbd_test_la_LINK) $(am_librbd_test_la_rpath) $(librbd_test_la_OBJECTS) $(librbd_test_la_LIBADD) $(LIBS)
 librbd/WatchNotifyTypes.lo: librbd/$(am__dirstamp) \
 	librbd/$(DEPDIR)/$(am__dirstamp)
 librbd_types.la: $(librbd_types_la_OBJECTS) $(librbd_types_la_DEPENDENCIES) $(EXTRA_librbd_types_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK)  $(librbd_types_la_OBJECTS) $(librbd_types_la_LIBADD) $(LIBS)
-rgw/$(am__dirstamp):
-	@$(MKDIR_P) rgw
-	@: > rgw/$(am__dirstamp)
-rgw/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) rgw/$(DEPDIR)
-	@: > rgw/$(DEPDIR)/$(am__dirstamp)
 rgw/librgw_la-librgw.lo: rgw/$(am__dirstamp) \
 	rgw/$(DEPDIR)/$(am__dirstamp)
 rgw/librgw_la-rgw_acl.lo: rgw/$(am__dirstamp) \
@@ -10076,18 +11474,6 @@ rgw/rgw_swift_auth.$(OBJEXT): rgw/$(am__dirstamp) \
 	rgw/$(DEPDIR)/$(am__dirstamp)
 rgw/rgw_loadgen.$(OBJEXT): rgw/$(am__dirstamp) \
 	rgw/$(DEPDIR)/$(am__dirstamp)
-rgw/rgw_civetweb.$(OBJEXT): rgw/$(am__dirstamp) \
-	rgw/$(DEPDIR)/$(am__dirstamp)
-rgw/rgw_civetweb_log.$(OBJEXT): rgw/$(am__dirstamp) \
-	rgw/$(DEPDIR)/$(am__dirstamp)
-civetweb/src/$(am__dirstamp):
-	@$(MKDIR_P) civetweb/src
-	@: > civetweb/src/$(am__dirstamp)
-civetweb/src/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) civetweb/src/$(DEPDIR)
-	@: > civetweb/src/$(DEPDIR)/$(am__dirstamp)
-civetweb/src/radosgw-civetweb.$(OBJEXT): civetweb/src/$(am__dirstamp) \
-	civetweb/src/$(DEPDIR)/$(am__dirstamp)
 rgw/rgw_main.$(OBJEXT): rgw/$(am__dirstamp) \
 	rgw/$(DEPDIR)/$(am__dirstamp)
 radosgw$(EXEEXT): $(radosgw_OBJECTS) $(radosgw_DEPENDENCIES) $(EXTRA_radosgw_DEPENDENCIES) 
@@ -11290,7 +12676,8 @@ mostlyclean-compile:
 	-rm -f auth/none/AuthNoneAuthorizeHandler.lo
 	-rm -f auth/unknown/AuthUnknownAuthorizeHandler.$(OBJEXT)
 	-rm -f auth/unknown/AuthUnknownAuthorizeHandler.lo
-	-rm -f civetweb/src/radosgw-civetweb.$(OBJEXT)
+	-rm -f civetweb/src/libcivetweb_la-civetweb.$(OBJEXT)
+	-rm -f civetweb/src/libcivetweb_la-civetweb.lo
 	-rm -f client/Client.$(OBJEXT)
 	-rm -f client/Client.lo
 	-rm -f client/ClientSnapRealm.$(OBJEXT)
@@ -12282,6 +13669,10 @@ mostlyclean-compile:
 	-rm -f rgw/ceph_dencoder-rgw_dencoder.$(OBJEXT)
 	-rm -f rgw/ceph_dencoder-rgw_env.$(OBJEXT)
 	-rm -f rgw/ceph_dencoder-rgw_json_enc.$(OBJEXT)
+	-rm -f rgw/libcivetweb_la-rgw_civetweb.$(OBJEXT)
+	-rm -f rgw/libcivetweb_la-rgw_civetweb.lo
+	-rm -f rgw/libcivetweb_la-rgw_civetweb_log.$(OBJEXT)
+	-rm -f rgw/libcivetweb_la-rgw_civetweb_log.lo
 	-rm -f rgw/librgw_la-librgw.$(OBJEXT)
 	-rm -f rgw/librgw_la-librgw.lo
 	-rm -f rgw/librgw_la-rgw_acl.$(OBJEXT)
@@ -12351,8 +13742,6 @@ mostlyclean-compile:
 	-rm -f rgw/librgw_la-rgw_xml.$(OBJEXT)
 	-rm -f rgw/librgw_la-rgw_xml.lo
 	-rm -f rgw/rgw_admin.$(OBJEXT)
-	-rm -f rgw/rgw_civetweb.$(OBJEXT)
-	-rm -f rgw/rgw_civetweb_log.$(OBJEXT)
 	-rm -f rgw/rgw_common.$(OBJEXT)
 	-rm -f rgw/rgw_env.$(OBJEXT)
 	-rm -f rgw/rgw_http_client.$(OBJEXT)
@@ -12733,7 +14122,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at auth/cephx/$(DEPDIR)/CephxSessionHandler.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at auth/none/$(DEPDIR)/AuthNoneAuthorizeHandler.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at auth/unknown/$(DEPDIR)/AuthUnknownAuthorizeHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at civetweb/src/$(DEPDIR)/radosgw-civetweb.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at civetweb/src/$(DEPDIR)/libcivetweb_la-civetweb.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at client/$(DEPDIR)/Client.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at client/$(DEPDIR)/ClientSnapRealm.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at client/$(DEPDIR)/Dentry.Plo at am__quote@
@@ -13273,6 +14662,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/ceph_dencoder-rgw_dencoder.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/ceph_dencoder-rgw_env.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/ceph_dencoder-rgw_json_enc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb_log.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/librgw_la-librgw.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/librgw_la-rgw_acl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/librgw_la-rgw_acl_s3.Plo at am__quote@
@@ -13308,8 +14699,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/librgw_la-rgw_user.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/librgw_la-rgw_xml.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_admin.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_civetweb.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_civetweb_log.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_common.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_env.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at rgw/$(DEPDIR)/rgw_http_client.Po at am__quote@
@@ -13689,6 +15078,13 @@ common/libcommon_crc_la-crc32c_intel_fast_zero_asm.lo: common/crc32c_intel_fast_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+civetweb/src/libcivetweb_la-civetweb.lo: civetweb/src/civetweb.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CFLAGS) $(CFLAGS) -MT civetweb/src/libcivetweb_la-civetweb.lo -MD -MP -MF civetweb/src/$(DEPDIR)/libcivetweb_la-civetweb.Tpo -c -o civetweb/src/libcivetweb_la-civetweb.lo `test -f 'civetweb/src/civetweb.c' || echo '$(srcdir)/'`civetweb/src/civetweb.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) civetweb/src/$(DEPDIR)/libcivetweb_la-civetweb.Tpo civetweb/src/$(DEPDIR)/libcivetweb_la-civetweb.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='civetweb/src/civetweb.c' object='civetweb/src/libcivetweb_la-civetweb.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CFLAGS) $(CFLAGS) -c -o civetweb/src/libcivetweb_la-civetweb.lo `test -f 'civetweb/src/civetweb.c' || echo '$(srcdir)/'`civetweb/src/civetweb.c
+
 common/libcommon_crc_la-sctp_crc32.lo: common/sctp_crc32.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libcommon_crc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/libcommon_crc_la-sctp_crc32.lo -MD -MP -MF common/$(DEPDIR)/libcommon_crc_la-sctp_crc32.Tpo -c -o common/libcommon_crc_la-sctp_crc32.lo `test -f 'common/sctp_crc32.c' || echo '$(srcdir)/'`common/sctp_crc32.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/libcommon_crc_la-sctp_crc32.Tpo common/$(DEPDIR)/libcommon_crc_la-sctp_crc32.Plo
@@ -14354,20 +15750,6 @@ test/librbd/ceph_test_librbd_fsx-fsx.obj: test/librbd/fsx.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ceph_test_librbd_fsx_CFLAGS) $(CFLAGS) -c -o test/librbd/ceph_test_librbd_fsx-fsx.obj `if test -f 'test/librbd/fsx.c'; then $(CYGPATH_W) 'test/librbd/fsx.c'; else $(CYGPATH_W) '$(srcdir)/test/librbd/fsx.c'; fi`
 
-civetweb/src/radosgw-civetweb.o: civetweb/src/civetweb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(radosgw_CFLAGS) $(CFLAGS) -MT civetweb/src/radosgw-civetweb.o -MD -MP -MF civetweb/src/$(DEPDIR)/radosgw-civetweb.Tpo -c -o civetweb/src/radosgw-civetweb.o `test -f 'civetweb/src/civetweb.c' || echo '$(srcdir)/'`civetweb/src/civetweb.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) civetweb/src/$(DEPDIR)/radosgw-civetweb.Tpo civetweb/src/$(DEPDIR)/radosgw-civetweb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='civetweb/src/civetweb.c' object='civetweb/src/radosgw-civetweb.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(radosgw_CFLAGS) $(CFLAGS) -c -o civetweb/src/radosgw-civetweb.o `test -f 'civetweb/src/civetweb.c' || echo '$(srcdir)/'`civetweb/src/civetweb.c
-
-civetweb/src/radosgw-civetweb.obj: civetweb/src/civetweb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(radosgw_CFLAGS) $(CFLAGS) -MT civetweb/src/radosgw-civetweb.obj -MD -MP -MF civetweb/src/$(DEPDIR)/radosgw-civetweb.Tpo -c -o civetweb/src/radosgw-civetweb.obj `if test -f 'civetweb/src/civetweb.c'; then $(CYGPATH_W) 'civetweb/src/civetweb.c'; else $(CYGPATH_W) '$(srcdir)/civetweb/src/civetweb.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) civetweb/src/$(DEPDIR)/radosgw-civetweb.Tpo civetweb/src/$(DEPDIR)/radosgw-civetweb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='civetweb/src/civetweb.c' object='civetweb/src/radosgw-civetweb.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(radosgw_CFLAGS) $(CFLAGS) -c -o civetweb/src/radosgw-civetweb.obj `if test -f 'civetweb/src/civetweb.c'; then $(CYGPATH_W) 'civetweb/src/civetweb.c'; else $(CYGPATH_W) '$(srcdir)/civetweb/src/civetweb.c'; fi`
-
 erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-cauchy.o: erasure-code/jerasure/jerasure/src/cauchy.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unittest_erasure_code_jerasure_CFLAGS) $(CFLAGS) -MT erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-cauchy.o -MD -MP -MF erasure-code/jerasure/jerasure/src/$(DEPDIR)/unittest_erasure_code_jerasure-cauchy.Tpo -c -o erasure-code/jerasure/jerasure/src/unittest_erasure_code_jerasure-cauchy.o `test -f 'erasure-code/jerasure/jerasure/src/cauchy.c' || echo '$(srcdir)/'`er [...]
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) erasure-code/jerasure/jerasure/src/$(DEPDIR)/unittest_erasure_code_jerasure-cauchy.Tpo erasure-code/jerasure/jerasure/src/$(DEPDIR)/unittest_erasure_code_jerasure-cauchy.Po
@@ -15358,6 +16740,20 @@ java/native/libcephfs_jni_la-JniConstants.lo: java/native/JniConstants.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcephfs_jni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o java/native/libcephfs_jni_la-JniConstants.lo `test -f 'java/native/JniConstants.cpp' || echo '$(srcdir)/'`java/native/JniConstants.cpp
 
+rgw/libcivetweb_la-rgw_civetweb.lo: rgw/rgw_civetweb.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CXXFLAGS) $(CXXFLAGS) -MT rgw/libcivetweb_la-rgw_civetweb.lo -MD -MP -MF rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb.Tpo -c -o rgw/libcivetweb_la-rgw_civetweb.lo `test -f 'rgw/rgw_civetweb.cc' || echo '$(srcdir)/'`rgw/rgw_civetweb.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb.Tpo rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='rgw/rgw_civetweb.cc' object='rgw/libcivetweb_la-rgw_civetweb.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CXXFLAGS) $(CXXFLAGS) -c -o rgw/libcivetweb_la-rgw_civetweb.lo `test -f 'rgw/rgw_civetweb.cc' || echo '$(srcdir)/'`rgw/rgw_civetweb.cc
+
+rgw/libcivetweb_la-rgw_civetweb_log.lo: rgw/rgw_civetweb_log.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CXXFLAGS) $(CXXFLAGS) -MT rgw/libcivetweb_la-rgw_civetweb_log.lo -MD -MP -MF rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb_log.Tpo -c -o rgw/libcivetweb_la-rgw_civetweb_log.lo `test -f 'rgw/rgw_civetweb_log.cc' || echo '$(srcdir)/'`rgw/rgw_civetweb_log.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb_log.Tpo rgw/$(DEPDIR)/libcivetweb_la-rgw_civetweb_log.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='rgw/rgw_civetweb_log.cc' object='rgw/libcivetweb_la-rgw_civetweb_log.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcivetweb_la_CXXFLAGS) $(CXXFLAGS) -c -o rgw/libcivetweb_la-rgw_civetweb_log.lo `test -f 'rgw/rgw_civetweb_log.cc' || echo '$(srcdir)/'`rgw/rgw_civetweb_log.cc
+
 common/libcommon_api_la-buffer.lo: common/buffer.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcommon_api_la_CXXFLAGS) $(CXXFLAGS) -MT common/libcommon_api_la-buffer.lo -MD -MP -MF common/$(DEPDIR)/libcommon_api_la-buffer.Tpo -c -o common/libcommon_api_la-buffer.lo `test -f 'common/buffer.cc' || echo '$(srcdir)/'`common/buffer.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/libcommon_api_la-buffer.Tpo common/$(DEPDIR)/libcommon_api_la-buffer.Plo
@@ -19503,6 +20899,7 @@ clean-libtool:
 	-rm -rf auth/cephx/.libs auth/cephx/_libs
 	-rm -rf auth/none/.libs auth/none/_libs
 	-rm -rf auth/unknown/.libs auth/unknown/_libs
+	-rm -rf civetweb/src/.libs civetweb/src/_libs
 	-rm -rf client/.libs client/_libs
 	-rm -rf cls/hello/.libs cls/hello/_libs
 	-rm -rf cls/lock/.libs cls/lock/_libs
@@ -20369,15 +21766,15 @@ erasure-code/shec/ErasureCodePluginShec.cc: ./ceph_ver.h
 
 @WITH_BETTER_YASM_ELF64_TRUE at erasure-code/isa/ErasureCodePluginIsa.cc: ./ceph_ver.h
 erasure-code/ErasureCodePlugin.cc: ./ceph_ver.h
-test/erasure-code/ErasureCodePluginExample.cc: ./ceph_ver.h
-test/erasure-code/ErasureCodePluginMissingEntryPoint.cc: ./ceph_ver.h
-test/erasure-code/ErasureCodePluginHangs.cc: ./ceph_ver.h
-test/erasure-code/ErasureCodePluginFailToInitialize.cc: ./ceph_ver.h
-test/erasure-code/ErasureCodePluginFailToRegister.cc: ./ceph_ver.h
-test/erasure-code/TestJerasurePluginNEON.cc: ./ceph_ver.h
-test/erasure-code/TestJerasurePluginSSE4.cc: ./ceph_ver.h
-test/erasure-code/TestJerasurePluginSSE3.cc: ./ceph_ver.h
-test/erasure-code/TestJerasurePluginGeneric.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/ErasureCodePluginExample.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/ErasureCodePluginMissingEntryPoint.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/ErasureCodePluginHangs.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/ErasureCodePluginFailToInitialize.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/ErasureCodePluginFailToRegister.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/TestJerasurePluginNEON.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/TestJerasurePluginSSE4.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/TestJerasurePluginSSE3.cc: ./ceph_ver.h
+ at ENABLE_SERVER_TRUE@@WITH_OSD_TRUE at test/erasure-code/TestJerasurePluginGeneric.cc: ./ceph_ver.h
 
 docker-check:
 	$(srcdir)/test/container-make-check-ubuntu-14.04.sh
@@ -20441,21 +21838,6 @@ sample.fetch_config: fetch_config
 dist-hook:
 	$(srcdir)/check_version $(srcdir)/.git_version
 
-# assemble Python script with global version variables
-# NB: depends on format of ceph_ver.h
-
-ceph: ceph.in ./ceph_ver.h Makefile
-	rm -f $@ $@.tmp
-	echo "#!/usr/bin/env python" >$@.tmp
-	grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \
-		sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp
-	grep "#define CEPH_GIT_VER" ./ceph_ver.h | \
-	  sed -e 's/#define \(.*VER\) /\1=/' -e 's/=\(.*\)$$/="\1"/' >>$@.tmp
-	cat $(srcdir)/$@.in >>$@.tmp
-	chmod a+x $@.tmp
-	chmod a-w $@.tmp
-	mv $@.tmp $@
-
 # cleaning
 
 clean-local:
@@ -20463,6 +21845,8 @@ clean-local:
 	find . -name '*.gcno' -o -name '*.gcda' -o -name '*.lcov' -o -name "*.o" -o -name "*.lo" | xargs rm -f
 	rm -f ceph java/java/com/ceph/crush/Bucket.class
 
+# coverage
+
 install-coverage:
 @ENABLE_COVERAGE_TRUE@	-mkdir -p $(COV_DIR)/.libs
 @ENABLE_COVERAGE_TRUE@	-$(INSTALL_DATA) $(COV_FILES) $(COV_DIR)
@@ -20504,6 +21888,21 @@ coverity-submit:
 	scp project.tgz ceph.com:/home/ceph_site/ceph.com/coverity/`git describe`.tgz
 	curl --data "project=ceph&password=`cat ~/coverity.build.pass.txt`&email=sage at newdream.net&url=http://ceph.com/coverity/`git describe`.tgz" http://scan5.coverity.com/cgi-bin/submit_build.py
 
+# assemble Python script with global version variables
+# NB: depends on format of ceph_ver.h
+
+ at ENABLE_CLIENT_TRUE@ceph: ceph.in ./ceph_ver.h Makefile
+ at ENABLE_CLIENT_TRUE@	rm -f $@ $@.tmp
+ at ENABLE_CLIENT_TRUE@	echo "#!/usr/bin/env python" >$@.tmp
+ at ENABLE_CLIENT_TRUE@	grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \
+ at ENABLE_CLIENT_TRUE@		sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp
+ at ENABLE_CLIENT_TRUE@	grep "#define CEPH_GIT_VER" ./ceph_ver.h | \
+ at ENABLE_CLIENT_TRUE@	  sed -e 's/#define \(.*VER\) /\1=/' -e 's/=\(.*\)$$/="\1"/' >>$@.tmp
+ at ENABLE_CLIENT_TRUE@	cat $(srcdir)/$@.in >>$@.tmp
+ at ENABLE_CLIENT_TRUE@	chmod a+x $@.tmp
+ at ENABLE_CLIENT_TRUE@	chmod a-w $@.tmp
+ at ENABLE_CLIENT_TRUE@	mv $@.tmp $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/src/brag/Makefile.am b/src/brag/Makefile.am
index 35c735b..32456b0 100644
--- a/src/brag/Makefile.am
+++ b/src/brag/Makefile.am
@@ -1,3 +1,4 @@
-
+if ENABLE_CLIENT
 bin_SCRIPTS += brag/client/ceph-brag
 EXTRA_DIST += brag/server brag/README.md brag/client
+endif # ENABLE_CLIENT
diff --git a/src/ceph-create-keys b/src/ceph-create-keys
index 0359228..57eaf17 100755
--- a/src/ceph-create-keys
+++ b/src/ceph-create-keys
@@ -219,6 +219,10 @@ def main():
         )
     bootstrap_key(
         cluster=args.cluster,
+        type_='rgw',
+        )
+    bootstrap_key(
+        cluster=args.cluster,
         type_='mds',
         )
 
diff --git a/src/civetweb/include/civetweb_conf.h b/src/civetweb/include/civetweb_conf.h
new file mode 100644
index 0000000..578143f
--- /dev/null
+++ b/src/civetweb/include/civetweb_conf.h
@@ -0,0 +1,6 @@
+#ifndef CIVETWEB_CONF_H
+#define CIVETWEB_CONF_H
+
+#define USE_IPV6 1
+
+#endif
diff --git a/src/client/Client.cc b/src/client/Client.cc
index 1158fa6..5c4654d 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -3453,7 +3453,7 @@ public:
       client_t whoami = client->get_nodeid();
       lderr(client->cct) << "tried to remount (to trim kernel dentries) and got error "
 			 << r << dendl;
-      if (client->require_remount) {
+      if (client->require_remount && !client->unmounting) {
 	assert(0 == "failed to remount for kernel dentry trimming");
       }
     }
diff --git a/src/client/Client.h b/src/client/Client.h
index 8576488..d1dbebb 100644
--- a/src/client/Client.h
+++ b/src/client/Client.h
@@ -421,6 +421,7 @@ protected:
   friend class C_C_Tick; // Asserts on client_lock
   friend class C_Client_SyncCommit; // Asserts on client_lock
   friend class C_Client_RequestInterrupt;
+  friend class C_Client_Remount;
 
   //int get_cache_size() { return lru.lru_get_size(); }
   //void set_cache_size(int m) { lru.lru_set_max(m); }
diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index 53107eb..60dd227 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -1,3 +1,4 @@
+if ENABLE_CLIENT
 libclient_la_SOURCES = \
 	client/Client.cc \
 	client/Inode.cc \
@@ -33,3 +34,4 @@ endif
 ceph_test_ioctls_SOURCES = client/test_ioctls.c
 bin_DEBUGPROGRAMS += ceph_test_ioctls
 
+endif # ENABLE_CLIENT
diff --git a/src/cls/Makefile-client.am b/src/cls/Makefile-client.am
new file mode 100644
index 0000000..70a76da
--- /dev/null
+++ b/src/cls/Makefile-client.am
@@ -0,0 +1,76 @@
+## Rados object client classes
+
+libcls_lock_client_la_SOURCES = \
+	cls/lock/cls_lock_client.cc \
+	cls/lock/cls_lock_types.cc \
+	cls/lock/cls_lock_ops.cc
+noinst_LTLIBRARIES += libcls_lock_client.la
+DENCODER_DEPS += libcls_lock_client.la
+
+libcls_refcount_client_la_SOURCES = \
+	cls/refcount/cls_refcount_client.cc \
+	cls/refcount/cls_refcount_ops.cc
+noinst_LTLIBRARIES += libcls_refcount_client.la
+DENCODER_DEPS += libcls_refcount_client.la
+
+libcls_version_client_a_SOURCES =  \
+	cls/version/cls_version_client.cc \
+	cls/version/cls_version_types.cc
+noinst_LIBRARIES += libcls_version_client.a
+
+libcls_log_client_a_SOURCES = cls/log/cls_log_client.cc
+noinst_LIBRARIES += libcls_log_client.a
+
+libcls_statelog_client_a_SOURCES = cls/statelog/cls_statelog_client.cc
+noinst_LIBRARIES += libcls_statelog_client.a
+
+libcls_replica_log_client_a_SOURCES = \
+	cls/replica_log/cls_replica_log_types.cc \
+	cls/replica_log/cls_replica_log_ops.cc \
+	cls/replica_log/cls_replica_log_client.cc
+noinst_LIBRARIES += libcls_replica_log_client.a
+DENCODER_DEPS += libcls_replica_log_client.a
+
+libcls_rgw_client_la_SOURCES = \
+	cls/rgw/cls_rgw_client.cc \
+	cls/rgw/cls_rgw_types.cc \
+	cls/rgw/cls_rgw_ops.cc
+noinst_LTLIBRARIES += libcls_rgw_client.la
+DENCODER_DEPS += libcls_rgw_client.la
+
+libcls_rbd_client_la_SOURCES = cls/rbd/cls_rbd_client.cc
+noinst_LTLIBRARIES += libcls_rbd_client.la
+
+libcls_user_client_a_SOURCES = cls/user/cls_user_client.cc \
+	cls/user/cls_user_types.cc \
+	cls/user/cls_user_ops.cc
+DENCODER_DEPS += libcls_user_client.a
+
+noinst_LIBRARIES += libcls_user_client.a
+
+noinst_HEADERS += \
+	cls/lock/cls_lock_types.h \
+	cls/lock/cls_lock_ops.h \
+	cls/lock/cls_lock_client.h \
+	cls/rbd/cls_rbd.h \
+	cls/rbd/cls_rbd_client.h \
+	cls/refcount/cls_refcount_ops.h \
+	cls/refcount/cls_refcount_client.h \
+	cls/version/cls_version_types.h \
+	cls/version/cls_version_ops.h \
+	cls/version/cls_version_client.h \
+	cls/log/cls_log_types.h \
+	cls/log/cls_log_ops.h \
+	cls/log/cls_log_client.h \
+	cls/statelog/cls_statelog_types.h \
+	cls/statelog/cls_statelog_ops.h \
+	cls/statelog/cls_statelog_client.h \
+	cls/replica_log/cls_replica_log_types.h \
+	cls/replica_log/cls_replica_log_ops.h \
+	cls/replica_log/cls_replica_log_client.h \
+	cls/rgw/cls_rgw_client.h \
+	cls/rgw/cls_rgw_ops.h \
+	cls/rgw/cls_rgw_types.h \
+	cls/user/cls_user_client.h \
+	cls/user/cls_user_ops.h \
+	cls/user/cls_user_types.h
diff --git a/src/cls/Makefile.am b/src/cls/Makefile-server.am
similarity index 53%
copy from src/cls/Makefile.am
copy to src/cls/Makefile-server.am
index ea44fe7..ee4cb2b 100644
--- a/src/cls/Makefile.am
+++ b/src/cls/Makefile-server.am
@@ -1,5 +1,6 @@
 ## Rados object classes
 
+if WITH_OSD
 libcls_hello_la_SOURCES = cls/hello/cls_hello.cc
 libcls_hello_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
 libcls_hello_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
@@ -56,81 +57,4 @@ libcls_rgw_la_SOURCES = \
 libcls_rgw_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
 libcls_rgw_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
 radoslib_LTLIBRARIES += libcls_rgw.la
-
-## Rados object client classes
-
-libcls_lock_client_la_SOURCES = \
-	cls/lock/cls_lock_client.cc \
-	cls/lock/cls_lock_types.cc \
-	cls/lock/cls_lock_ops.cc
-noinst_LTLIBRARIES += libcls_lock_client.la
-DENCODER_DEPS += libcls_lock_client.la
-
-libcls_refcount_client_la_SOURCES = \
-	cls/refcount/cls_refcount_client.cc \
-	cls/refcount/cls_refcount_ops.cc
-noinst_LTLIBRARIES += libcls_refcount_client.la
-DENCODER_DEPS += libcls_refcount_client.la
-
-libcls_version_client_a_SOURCES =  \
-	cls/version/cls_version_client.cc \
-	cls/version/cls_version_types.cc
-noinst_LIBRARIES += libcls_version_client.a
-
-libcls_log_client_a_SOURCES = cls/log/cls_log_client.cc
-noinst_LIBRARIES += libcls_log_client.a
-
-libcls_statelog_client_a_SOURCES = cls/statelog/cls_statelog_client.cc
-noinst_LIBRARIES += libcls_statelog_client.a
-
-libcls_replica_log_client_a_SOURCES = \
-	cls/replica_log/cls_replica_log_types.cc \
-	cls/replica_log/cls_replica_log_ops.cc \
-	cls/replica_log/cls_replica_log_client.cc
-noinst_LIBRARIES += libcls_replica_log_client.a
-DENCODER_DEPS += libcls_replica_log_client.a
-
-libcls_rgw_client_la_SOURCES = \
-	cls/rgw/cls_rgw_client.cc \
-	cls/rgw/cls_rgw_types.cc \
-	cls/rgw/cls_rgw_ops.cc
-noinst_LTLIBRARIES += libcls_rgw_client.la
-DENCODER_DEPS += libcls_rgw_client.la
-
-libcls_rbd_client_la_SOURCES = cls/rbd/cls_rbd_client.cc
-noinst_LTLIBRARIES += libcls_rbd_client.la
-
-libcls_user_client_a_SOURCES = cls/user/cls_user_client.cc \
-	cls/user/cls_user_types.cc \
-	cls/user/cls_user_ops.cc
-DENCODER_DEPS += libcls_user_client.a
-
-noinst_LIBRARIES += libcls_user_client.a
-
-noinst_HEADERS += \
-	cls/lock/cls_lock_types.h \
-	cls/lock/cls_lock_ops.h \
-	cls/lock/cls_lock_client.h \
-	cls/rbd/cls_rbd.h \
-	cls/rbd/cls_rbd_client.h \
-	cls/refcount/cls_refcount_ops.h \
-	cls/refcount/cls_refcount_client.h \
-	cls/version/cls_version_types.h \
-	cls/version/cls_version_ops.h \
-	cls/version/cls_version_client.h \
-	cls/log/cls_log_types.h \
-	cls/log/cls_log_ops.h \
-	cls/log/cls_log_client.h \
-	cls/statelog/cls_statelog_types.h \
-	cls/statelog/cls_statelog_ops.h \
-	cls/statelog/cls_statelog_client.h \
-	cls/replica_log/cls_replica_log_types.h \
-	cls/replica_log/cls_replica_log_ops.h \
-	cls/replica_log/cls_replica_log_client.h \
-	cls/rgw/cls_rgw_client.h \
-	cls/rgw/cls_rgw_ops.h \
-	cls/rgw/cls_rgw_types.h \
-	cls/user/cls_user_client.h \
-	cls/user/cls_user_ops.h \
-	cls/user/cls_user_types.h
-
+endif # WITH_OSD
diff --git a/src/cls/Makefile.am b/src/cls/Makefile.am
index ea44fe7..bac67e9 100644
--- a/src/cls/Makefile.am
+++ b/src/cls/Makefile.am
@@ -1,136 +1,7 @@
-## Rados object classes
-
-libcls_hello_la_SOURCES = cls/hello/cls_hello.cc
-libcls_hello_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_hello_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_hello.la
-
-libcls_rbd_la_SOURCES = cls/rbd/cls_rbd.cc
-libcls_rbd_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_rbd_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_rbd.la
-
-libcls_lock_la_SOURCES = cls/lock/cls_lock.cc
-libcls_lock_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_lock_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_lock.la
-
-libcls_refcount_la_SOURCES = \
-	cls/refcount/cls_refcount.cc \
-	cls/refcount/cls_refcount_ops.cc \
-	common/ceph_json.cc 
-libcls_refcount_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_refcount_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_refcount.la
-
-libcls_version_la_SOURCES = cls/version/cls_version.cc
-libcls_version_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_version_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_version.la
-
-libcls_log_la_SOURCES = cls/log/cls_log.cc
-libcls_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_log.la
-
-libcls_statelog_la_SOURCES = cls/statelog/cls_statelog.cc
-libcls_statelog_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_statelog_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_statelog.la
-
-libcls_replica_log_la_SOURCES = cls/replica_log/cls_replica_log.cc
-libcls_replica_log_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_replica_log_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_replica_log.la
-
-libcls_user_la_SOURCES = cls/user/cls_user.cc
-libcls_user_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_user_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_user.la
-
-libcls_rgw_la_SOURCES = \
-	cls/rgw/cls_rgw.cc \
-	cls/rgw/cls_rgw_ops.cc \
-	cls/rgw/cls_rgw_types.cc \
-	common/ceph_json.cc
-libcls_rgw_la_LIBADD = libjson_spirit.la $(PTHREAD_LIBS) $(EXTRALIBS)
-libcls_rgw_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*'
-radoslib_LTLIBRARIES += libcls_rgw.la
-
-## Rados object client classes
-
-libcls_lock_client_la_SOURCES = \
-	cls/lock/cls_lock_client.cc \
-	cls/lock/cls_lock_types.cc \
-	cls/lock/cls_lock_ops.cc
-noinst_LTLIBRARIES += libcls_lock_client.la
-DENCODER_DEPS += libcls_lock_client.la
-
-libcls_refcount_client_la_SOURCES = \
-	cls/refcount/cls_refcount_client.cc \
-	cls/refcount/cls_refcount_ops.cc
-noinst_LTLIBRARIES += libcls_refcount_client.la
-DENCODER_DEPS += libcls_refcount_client.la
-
-libcls_version_client_a_SOURCES =  \
-	cls/version/cls_version_client.cc \
-	cls/version/cls_version_types.cc
-noinst_LIBRARIES += libcls_version_client.a
-
-libcls_log_client_a_SOURCES = cls/log/cls_log_client.cc
-noinst_LIBRARIES += libcls_log_client.a
-
-libcls_statelog_client_a_SOURCES = cls/statelog/cls_statelog_client.cc
-noinst_LIBRARIES += libcls_statelog_client.a
-
-libcls_replica_log_client_a_SOURCES = \
-	cls/replica_log/cls_replica_log_types.cc \
-	cls/replica_log/cls_replica_log_ops.cc \
-	cls/replica_log/cls_replica_log_client.cc
-noinst_LIBRARIES += libcls_replica_log_client.a
-DENCODER_DEPS += libcls_replica_log_client.a
-
-libcls_rgw_client_la_SOURCES = \
-	cls/rgw/cls_rgw_client.cc \
-	cls/rgw/cls_rgw_types.cc \
-	cls/rgw/cls_rgw_ops.cc
-noinst_LTLIBRARIES += libcls_rgw_client.la
-DENCODER_DEPS += libcls_rgw_client.la
-
-libcls_rbd_client_la_SOURCES = cls/rbd/cls_rbd_client.cc
-noinst_LTLIBRARIES += libcls_rbd_client.la
-
-libcls_user_client_a_SOURCES = cls/user/cls_user_client.cc \
-	cls/user/cls_user_types.cc \
-	cls/user/cls_user_ops.cc
-DENCODER_DEPS += libcls_user_client.a
-
-noinst_LIBRARIES += libcls_user_client.a
-
-noinst_HEADERS += \
-	cls/lock/cls_lock_types.h \
-	cls/lock/cls_lock_ops.h \
-	cls/lock/cls_lock_client.h \
-	cls/rbd/cls_rbd.h \
-	cls/rbd/cls_rbd_client.h \
-	cls/refcount/cls_refcount_ops.h \
-	cls/refcount/cls_refcount_client.h \
-	cls/version/cls_version_types.h \
-	cls/version/cls_version_ops.h \
-	cls/version/cls_version_client.h \
-	cls/log/cls_log_types.h \
-	cls/log/cls_log_ops.h \
-	cls/log/cls_log_client.h \
-	cls/statelog/cls_statelog_types.h \
-	cls/statelog/cls_statelog_ops.h \
-	cls/statelog/cls_statelog_client.h \
-	cls/replica_log/cls_replica_log_types.h \
-	cls/replica_log/cls_replica_log_ops.h \
-	cls/replica_log/cls_replica_log_client.h \
-	cls/rgw/cls_rgw_client.h \
-	cls/rgw/cls_rgw_ops.h \
-	cls/rgw/cls_rgw_types.h \
-	cls/user/cls_user_client.h \
-	cls/user/cls_user_ops.h \
-	cls/user/cls_user_types.h
+if ENABLE_CLIENT
+include cls/Makefile-client.am
+endif
 
+if ENABLE_SERVER
+include cls/Makefile-server.am
+endif
diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc
index 25ce93f..ae2a432 100644
--- a/src/cls/rbd/cls_rbd.cc
+++ b/src/cls/rbd/cls_rbd.cc
@@ -768,6 +768,7 @@ int get_flags(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
  * Input:
  * @params flags image flags
  * @params mask image flag mask
+ * @params snap_id which snapshot to update, or CEPH_NOSNAP (uint64_t)
  *
  * Output:
  * none
@@ -778,33 +779,61 @@ int set_flags(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
 {
   uint64_t flags;
   uint64_t mask;
+  uint64_t snap_id = CEPH_NOSNAP;
   bufferlist::iterator iter = in->begin();
   try {
     ::decode(flags, iter);
     ::decode(mask, iter);
+    if (!iter.end()) {
+      ::decode(snap_id, iter);
+    }
   } catch (const buffer::error &err) {
     return -EINVAL;
   }
 
   // check that size exists to make sure this is a header object
   // that was created correctly
+  int r;
   uint64_t orig_flags = 0;
-  int r = read_key(hctx, "flags", &orig_flags);
-  if (r < 0 && r != -ENOENT) {
-    CLS_ERR("Could not read image's flags off disk: %s",
-            cpp_strerror(r).c_str());
-    return r;
+  cls_rbd_snap snap_meta;
+  string snap_meta_key;
+  if (snap_id == CEPH_NOSNAP) {
+    r = read_key(hctx, "flags", &orig_flags);
+    if (r < 0 && r != -ENOENT) {
+      CLS_ERR("Could not read image's flags off disk: %s",
+              cpp_strerror(r).c_str());
+      return r;
+    }
+  } else {
+    key_from_snap_id(snap_id, &snap_meta_key);
+    r = read_key(hctx, snap_meta_key, &snap_meta);
+    if (r < 0) {
+      CLS_ERR("Could not read snapshot: snap_id=%" PRIu64 ": %s",
+              snap_id, cpp_strerror(r).c_str());
+      return r;
+    }
+    orig_flags = snap_meta.flags;
   }
 
   flags = (orig_flags & ~mask) | (flags & mask);
-  CLS_LOG(20, "set_flags flags=%llu orig_flags=%llu", (unsigned long long)flags,
-          (unsigned long long)orig_flags);
+  CLS_LOG(20, "set_flags snap_id=%" PRIu64 ", orig_flags=%" PRIu64 ", "
+              "new_flags=%" PRIu64 ", mask=%" PRIu64, snap_id, orig_flags,
+              flags, mask);
+
+  if (snap_id == CEPH_NOSNAP) {
+    bufferlist bl;
+    ::encode(flags, bl);
+    r = cls_cxx_map_set_val(hctx, "flags", &bl);
+  } else {
+    snap_meta.flags = flags;
+
+    bufferlist bl;
+    ::encode(snap_meta, bl);
+    r = cls_cxx_map_set_val(hctx, snap_meta_key, &bl);
+  }
 
-  bufferlist flagsbl;
-  ::encode(flags, flagsbl);
-  r = cls_cxx_map_set_val(hctx, "flags", &flagsbl);
   if (r < 0) {
-    CLS_ERR("error updating flags: %d", r);
+    CLS_ERR("error updating flags: %s", cpp_strerror(r).c_str());
     return r;
   }
   return 0;
diff --git a/src/cls/rbd/cls_rbd_client.cc b/src/cls/rbd/cls_rbd_client.cc
index 0ccf405..bef87ab 100644
--- a/src/cls/rbd/cls_rbd_client.cc
+++ b/src/cls/rbd/cls_rbd_client.cc
@@ -280,12 +280,13 @@ namespace librbd {
       return 0;
     }
 
-    void set_flags(librados::ObjectWriteOperation *op, uint64_t flags,
-		   uint64_t mask)
+    void set_flags(librados::ObjectWriteOperation *op, snapid_t snap_id,
+                   uint64_t flags, uint64_t mask)
     {
       bufferlist inbl;
       ::encode(flags, inbl);
       ::encode(mask, inbl);
+      ::encode(snap_id, inbl);
       op->exec("rbd", "set_flags", inbl);
     }
 
diff --git a/src/cls/rbd/cls_rbd_client.h b/src/cls/rbd/cls_rbd_client.h
index bf5b969..419ff85 100644
--- a/src/cls/rbd/cls_rbd_client.h
+++ b/src/cls/rbd/cls_rbd_client.h
@@ -50,7 +50,7 @@ namespace librbd {
     int get_flags(librados::IoCtx *ioctx, const std::string &oid,
 		  uint64_t *flags, const std::vector<snapid_t> &snap_ids,
 		  vector<uint64_t> *snap_flags);
-    void set_flags(librados::ObjectWriteOperation *op,
+    void set_flags(librados::ObjectWriteOperation *op, snapid_t snap_id,
                    uint64_t flags, uint64_t mask);
     int remove_parent(librados::IoCtx *ioctx, const std::string &oid);
     void remove_parent(librados::ObjectWriteOperation *op);
diff --git a/src/common/LogClient.cc b/src/common/LogClient.cc
index 85350e2..756297b 100644
--- a/src/common/LogClient.cc
+++ b/src/common/LogClient.cc
@@ -49,28 +49,28 @@ int parse_log_client_options(CephContext *cct,
   ostringstream oss;
 
   int r = get_conf_str_map_helper(cct->_conf->clog_to_monitors, oss,
-                                  &log_to_monitors, CLOG_CHANNEL_DEFAULT);
+                                  &log_to_monitors, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_monitors'" << dendl;
     return r;
   }
 
   r = get_conf_str_map_helper(cct->_conf->clog_to_syslog, oss,
-                              &log_to_syslog, CLOG_CHANNEL_DEFAULT);
+                              &log_to_syslog, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog'" << dendl;
     return r;
   }
 
   r = get_conf_str_map_helper(cct->_conf->clog_to_syslog_facility, oss,
-                              &log_channels, CLOG_CHANNEL_DEFAULT);
+                              &log_channels, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog_facility'" << dendl;
     return r;
   }
 
   r = get_conf_str_map_helper(cct->_conf->clog_to_syslog_level, oss,
-                              &log_prios, CLOG_CHANNEL_DEFAULT);
+                              &log_prios, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog_level'" << dendl;
     return r;
@@ -132,13 +132,19 @@ void LogChannel::update_config(map<string,string> &log_to_monitors,
 			       map<string,string> &log_channels,
 			       map<string,string> &log_prios)
 {
+  ldout(cct, 20) << __func__ << " log_to_monitors " << log_to_monitors
+		 << " log_to_syslog " << log_to_syslog
+		 << " log_channels " << log_channels
+		 << " log_prios " << log_prios
+		 << dendl;
   bool to_monitors = (get_str_map_key(log_to_monitors, log_channel,
-                                      &CLOG_CHANNEL_DEFAULT) == "true");
+                                      &CLOG_CONFIG_DEFAULT_KEY) == "true");
   bool to_syslog = (get_str_map_key(log_to_syslog, log_channel,
-                                    &CLOG_CHANNEL_DEFAULT) == "true");
+                                    &CLOG_CONFIG_DEFAULT_KEY) == "true");
   string syslog_facility = get_str_map_key(log_channels, log_channel,
-                                           &CLOG_CHANNEL_DEFAULT);
-  string prio = get_str_map_key(log_prios, log_channel, &CLOG_CHANNEL_DEFAULT);
+					   &CLOG_CONFIG_DEFAULT_KEY);
+  string prio = get_str_map_key(log_prios, log_channel,
+				&CLOG_CONFIG_DEFAULT_KEY);
 
   set_log_to_monitors(to_monitors);
   set_log_to_syslog(to_syslog);
diff --git a/src/common/LogEntry.h b/src/common/LogEntry.h
index 63badff..71d3acd 100644
--- a/src/common/LogEntry.h
+++ b/src/common/LogEntry.h
@@ -34,10 +34,14 @@ typedef enum {
 } clog_type;
 
 static const std::string CLOG_CHANNEL_NONE    = "none";
-static const std::string CLOG_CHANNEL_DEFAULT = "default";
+static const std::string CLOG_CHANNEL_DEFAULT = "cluster";
 static const std::string CLOG_CHANNEL_CLUSTER = "cluster";
 static const std::string CLOG_CHANNEL_AUDIT   = "audit";
 
+// this is the key name used in the config options for the default, e.g.
+//   default=true foo=false bar=false
+static const std::string CLOG_CONFIG_DEFAULT_KEY = "default";
+
 /*
  * Given a clog log_type, return the equivalent syslog priority
  */
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index a0736ba..78afd5e 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -33,7 +33,6 @@ libcommon_internal_la_SOURCES = \
 	common/str_map.cc \
 	common/errno.cc \
 	common/RefCountedObj.cc \
-	common/blkdev.cc \
 	common/common_init.cc \
 	common/pipe.c \
 	common/ceph_argparse.cc \
@@ -76,6 +75,11 @@ libcommon_internal_la_SOURCES = \
 	common/Cycles.cc \
 	common/ContextCompletion.cc
 
+if WITH_RBD
+libcommon_internal_la_SOURCES += \
+	common/blkdev.cc
+endif
+
 if ENABLE_XIO
 libcommon_internal_la_SOURCES += \
 	common/address_helper.cc
diff --git a/src/common/config_opts.h b/src/common/config_opts.h
index 6f3fca8..8e817e1 100644
--- a/src/common/config_opts.h
+++ b/src/common/config_opts.h
@@ -251,6 +251,7 @@ OPTION(mon_osd_min_down_reporters, OPT_INT, 1)   // number of OSDs who need to r
 OPTION(mon_osd_min_down_reports, OPT_INT, 3)     // number of times a down OSD must be reported for it to count
 OPTION(mon_osd_force_trim_to, OPT_INT, 0)   // force mon to trim maps to this point, regardless of min_last_epoch_clean (dangerous, use with care)
 OPTION(mon_mds_force_trim_to, OPT_INT, 0)   // force mon to trim mdsmaps to this point (dangerous, use with care)
+OPTION(crushtool, OPT_STR, "crushtool")
 
 // dump transactions
 OPTION(mon_debug_dump_transactions, OPT_BOOL, false)
@@ -467,6 +468,9 @@ OPTION(osd_agent_min_evict_effort, OPT_FLOAT, .1)
 OPTION(osd_agent_quantize_effort, OPT_FLOAT, .1)
 OPTION(osd_agent_delay_time, OPT_FLOAT, 5.0)
 
+// osd ignore history.last_epoch_started in find_best_info
+OPTION(osd_find_best_info_ignore_history_les, OPT_BOOL, false)
+
 // decay atime and hist histograms after how many objects go by
 OPTION(osd_agent_hist_halflife, OPT_INT, 1000)
 
@@ -638,6 +642,7 @@ OPTION(osd_debug_drop_pg_create_probability, OPT_DOUBLE, 0)
 OPTION(osd_debug_drop_pg_create_duration, OPT_INT, 1)
 OPTION(osd_debug_drop_op_probability, OPT_DOUBLE, 0)   // probability of stalling/dropping a client op
 OPTION(osd_debug_op_order, OPT_BOOL, false)
+OPTION(osd_debug_scrub_chance_rewrite_digest, OPT_U64, 0)
 OPTION(osd_debug_verify_snaps_on_info, OPT_BOOL, false)
 OPTION(osd_debug_verify_stray_on_activate, OPT_BOOL, false)
 OPTION(osd_debug_skip_full_check_in_backfill_reservation, OPT_BOOL, false)
@@ -652,7 +657,6 @@ OPTION(osd_failsafe_full_ratio, OPT_FLOAT, .97) // what % full makes an OSD "ful
 OPTION(osd_failsafe_nearfull_ratio, OPT_FLOAT, .90) // what % full makes an OSD near full (failsafe)
 
 OPTION(osd_pg_object_context_cache_count, OPT_INT, 64)
-OPTION(osd_enable_degraded_writes, OPT_BOOL, true)
 
 // determines whether PGLog::check() compares written out log to stored log
 OPTION(osd_debug_pg_log_writeout, OPT_BOOL, false)
diff --git a/src/crush/CrushTester.cc b/src/crush/CrushTester.cc
index 33ec0e0..5ca4978 100644
--- a/src/crush/CrushTester.cc
+++ b/src/crush/CrushTester.cc
@@ -1,4 +1,5 @@
 
+#include "include/stringify.h"
 #include "CrushTester.h"
 
 #include <algorithm>
@@ -355,14 +356,17 @@ void CrushTester::write_integer_indexed_scalar_data_string(vector<string> &dst,
   dst.push_back( data_buffer.str() );
 }
 
-int CrushTester::test_with_crushtool()
+int CrushTester::test_with_crushtool(const string& crushtool,
+                                     int timeout)
 {
+  string timeout_string = stringify(timeout);
   vector<const char *> cmd_args;
-  cmd_args.push_back("crushtool");
+  cmd_args.push_back("timeout");
+  cmd_args.push_back(timeout_string.c_str());
+  cmd_args.push_back(crushtool.c_str());
   cmd_args.push_back("-i");
   cmd_args.push_back("-");
   cmd_args.push_back("--test");
-  cmd_args.push_back("--output-csv");
   cmd_args.push_back(NULL);
 
   int pipefds[2];
@@ -413,9 +417,13 @@ int CrushTester::test_with_crushtool()
     // major success!
     return 0;
   }
+  if (r == 124) {
+    // the test takes longer than timeout and was interrupted
+    return -EINTR;
+  }
 
   if (r == ENOENT) {
-    err << "unable to find 'crushtool' to test the map";
+    err << "unable to find " << cmd_args << " to test the map";
     return -ENOENT;
   }
 
diff --git a/src/crush/CrushTester.h b/src/crush/CrushTester.h
index 8fdb1aa..09936ce 100644
--- a/src/crush/CrushTester.h
+++ b/src/crush/CrushTester.h
@@ -334,7 +334,8 @@ public:
   }
 
   int test();
-  int test_with_crushtool();
+  int test_with_crushtool(const string& crushtool,
+			  int timeout);
 };
 
 #endif
diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc
index a18f7f5..497c219 100644
--- a/src/crush/CrushWrapper.cc
+++ b/src/crush/CrushWrapper.cc
@@ -72,7 +72,7 @@ bool CrushWrapper::has_v4_buckets() const
     crush_bucket *b = crush->buckets[i];
     if (!b)
       continue;
-    if (b->type == CRUSH_BUCKET_STRAW2)
+    if (b->alg == CRUSH_BUCKET_STRAW2)
       return true;
   }
   return false;
@@ -1438,6 +1438,7 @@ void CrushWrapper::dump_tunables(Formatter *f) const
   f->dump_int("require_feature_tunables3", (int)has_nondefault_tunables3());
   f->dump_int("has_v2_rules", (int)has_v2_rules());
   f->dump_int("has_v3_rules", (int)has_v3_rules());
+  f->dump_int("has_v4_buckets", (int)has_v4_buckets());
 }
 
 void CrushWrapper::dump_rules(Formatter *f) const
diff --git a/src/crush/crush.c b/src/crush/crush.c
index c45b6f5..c0bcdb7 100644
--- a/src/crush/crush.c
+++ b/src/crush/crush.c
@@ -42,6 +42,8 @@ int crush_get_bucket_item_weight(const struct crush_bucket *b, int p)
 		return ((struct crush_bucket_tree *)b)->node_weights[crush_calc_tree_node(p)];
 	case CRUSH_BUCKET_STRAW:
 		return ((struct crush_bucket_straw *)b)->item_weights[p];
+	case CRUSH_BUCKET_STRAW2:
+		return ((struct crush_bucket_straw2 *)b)->item_weights[p];
 	}
 	return 0;
 }
@@ -79,6 +81,14 @@ void crush_destroy_bucket_straw(struct crush_bucket_straw *b)
 	kfree(b);
 }
 
+void crush_destroy_bucket_straw2(struct crush_bucket_straw2 *b)
+{
+	kfree(b->item_weights);
+	kfree(b->h.perm);
+	kfree(b->h.items);
+	kfree(b);
+}
+
 void crush_destroy_bucket(struct crush_bucket *b)
 {
 	switch (b->alg) {
@@ -94,6 +104,9 @@ void crush_destroy_bucket(struct crush_bucket *b)
 	case CRUSH_BUCKET_STRAW:
 		crush_destroy_bucket_straw((struct crush_bucket_straw *)b);
 		break;
+	case CRUSH_BUCKET_STRAW2:
+		crush_destroy_bucket_straw2((struct crush_bucket_straw2 *)b);
+		break;
 	}
 }
 
diff --git a/src/crush/grammar.h b/src/crush/grammar.h
index 6170918..de77696 100644
--- a/src/crush/grammar.h
+++ b/src/crush/grammar.h
@@ -113,11 +113,7 @@ struct crush_grammar : public grammar<crush_grammar>
 
       // buckets
       bucket_id = str_p("id") >> negint;
-      bucket_alg = str_p("alg") >> ( str_p("uniform") |
-				     str_p("list") |
-				     str_p("tree") |
-				     str_p("straw") |
-				     str_p("straw2"));
+      bucket_alg = str_p("alg") >> name;
       bucket_hash = str_p("hash") >> ( integer |
 				       str_p("rjenkins1") );
       bucket_item = str_p("item") >> name
diff --git a/src/crush/mapper.c b/src/crush/mapper.c
index b2e0bfd..251ab4a 100644
--- a/src/crush/mapper.c
+++ b/src/crush/mapper.c
@@ -307,28 +307,38 @@ static int bucket_straw2_choose(struct crush_bucket_straw2 *bucket,
 {
 	unsigned i, high = 0;
 	unsigned u;
+	unsigned w;
 	__s64 ln, draw, high_draw = 0;
 
 	for (i = 0; i < bucket->h.size; i++) {
-		u = crush_hash32_3(bucket->h.hash, x, bucket->h.items[i], r);
-		u &= 0xffff;
-
-		/*
-		 * for some reason slightly less than 0x10000 produces
-		 * a slightly more accurate distribution... probably a
-		 * rounding effect.
-		 *
-		 * the natural log lookup table maps [0,0xffff]
-		 * (corresponding to real numbers [1/0x10000, 1] to
-		 * [0, 0xffffffffffff] (corresponding to real numbers
-		 * [-11.090355,0]).
-		 */
-		ln = crush_ln(u) - 0x1000000000000ll;
-
-		/*
-		 * divide by 16.16 fixed-point weight
-		 */
-		draw = ln / bucket->item_weights[i];
+		w = bucket->item_weights[i];
+		if (w) {
+			u = crush_hash32_3(bucket->h.hash, x,
+					   bucket->h.items[i], r);
+			u &= 0xffff;
+
+			/*
+			 * for some reason slightly less than 0x10000 produces
+			 * a slightly more accurate distribution... probably a
+			 * rounding effect.
+			 *
+			 * the natural log lookup table maps [0,0xffff]
+			 * (corresponding to real numbers [1/0x10000, 1] to
+			 * [0, 0xffffffffffff] (corresponding to real numbers
+			 * [-11.090355,0]).
+			 */
+			ln = crush_ln(u) - 0x1000000000000ll;
+
+			/*
+			 * divide by 16.16 fixed-point weight.  note
+			 * that the ln value is negative, so a larger
+			 * weight means a larger (less negative) value
+			 * for draw.
+			 */
+			draw = ln / w;
+		} else {
+			draw = INT64_MIN;
+		}
 
 		if (i == 0 || draw > high_draw) {
 			high = i;
diff --git a/src/erasure-code/shec/ErasureCodeShec.h b/src/erasure-code/shec/ErasureCodeShec.h
index 937d72f..7eaccf5 100644
--- a/src/erasure-code/shec/ErasureCodeShec.h
+++ b/src/erasure-code/shec/ErasureCodeShec.h
@@ -52,11 +52,11 @@ public:
 		  ErasureCodeShecTableCache &_tcache) :
     tcache(_tcache),
     k(0),
-    DEFAULT_K(2),
+    DEFAULT_K(4),
     m(0),
-    DEFAULT_M(1),
+    DEFAULT_M(3),
     c(0),
-    DEFAULT_C(1),
+    DEFAULT_C(2),
     w(0),
     DEFAULT_W(8),
     technique(_technique),
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index e0952d9..5f57ee0 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -1,11 +1,6 @@
-libcephfs_includedir = $(includedir)/cephfs
-libcephfs_include_DATA = $(srcdir)/include/cephfs/libcephfs.h
+if ENABLE_CLIENT
 
-librbd_includedir = $(includedir)/rbd
-librbd_include_DATA = \
-	$(srcdir)/include/rbd/features.h \
-	$(srcdir)/include/rbd/librbd.h \
-	$(srcdir)/include/rbd/librbd.hpp
+if WITH_RADOS
 
 rados_includedir = $(includedir)/rados
 rados_include_DATA = \
@@ -18,10 +13,33 @@ rados_include_DATA = \
 	$(srcdir)/include/crc32c.h \
 	$(srcdir)/include/memory.h
 
+
+if WITH_RBD
+librbd_includedir = $(includedir)/rbd
+librbd_include_DATA = \
+	$(srcdir)/include/rbd/features.h \
+	$(srcdir)/include/rbd/librbd.h \
+	$(srcdir)/include/rbd/librbd.hpp
+endif # WITH_RBD
+
+
+if WITH_RADOSSTRIPER
 radosstriper_includedir = $(includedir)/radosstriper
 radosstriper_include_DATA = \
 	$(srcdir)/include/radosstriper/libradosstriper.h \
 	$(srcdir)/include/radosstriper/libradosstriper.hpp
+endif # WITH_RADOSSTRIPER
+
+
+if WITH_CEPHFS
+libcephfs_includedir = $(includedir)/cephfs
+libcephfs_include_DATA = $(srcdir)/include/cephfs/libcephfs.h
+endif # WITH_CEPHFS
+
+
+endif # WITH_RADOS
+
+endif # ENABLE_CLIENT
 
 noinst_HEADERS += \
 	include/Context.h \
diff --git a/src/include/ceph_features.h b/src/include/ceph_features.h
index ef5d3f2..7f03616 100644
--- a/src/include/ceph_features.h
+++ b/src/include/ceph_features.h
@@ -62,7 +62,6 @@
 #define CEPH_FEATURE_CRUSH_V4      (1ULL<<48)  /* straw2 buckets */
 #define CEPH_FEATURE_OSD_MIN_SIZE_RECOVERY (1ULL<<49)
 // duplicated since it was introduced at the same time as MIN_SIZE_RECOVERY
-#define CEPH_FEATURE_OSD_DEGRADED_WRITES (1ULL<<49)
 #define CEPH_FEATURE_OSD_PROXY_FEATURES (1ULL<<49)  /* overlap w/ above */
 
 #define CEPH_FEATURE_RESERVED2 (1ULL<<61)  /* slow down, we are almost out... */
@@ -149,7 +148,6 @@ static inline unsigned long long ceph_sanitize_features(unsigned long long f) {
 	 CEPH_FEATURE_MDS_QUOTA | \
          CEPH_FEATURE_CRUSH_V4 |	     \
          CEPH_FEATURE_OSD_MIN_SIZE_RECOVERY |		 \
-         CEPH_FEATURE_OSD_DEGRADED_WRITES |		 \
 	 0ULL)
 
 #define CEPH_FEATURES_SUPPORTED_DEFAULT  CEPH_FEATURES_ALL
diff --git a/src/include/util.h b/src/include/util.h
index 4e4476a..87f6499 100644
--- a/src/include/util.h
+++ b/src/include/util.h
@@ -30,6 +30,13 @@ struct ceph_data_stats
   uint64_t byte_avail;
   int avail_percent;
 
+  ceph_data_stats() :
+    byte_total(0),
+    byte_used(0),
+    byte_avail(0),
+    avail_percent(0)
+  { }
+
   void dump(Formatter *f) const {
     assert(f != NULL);
     f->dump_int("total", byte_total);
@@ -37,6 +44,33 @@ struct ceph_data_stats
     f->dump_int("avail", byte_avail);
     f->dump_int("avail_percent", avail_percent);
   }
+
+  void encode(bufferlist &bl) const {
+    ENCODE_START(1, 1, bl);
+    ::encode(byte_total, bl);
+    ::encode(byte_used, bl);
+    ::encode(byte_avail, bl);
+    ::encode(avail_percent, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::iterator &p) {
+    DECODE_START(1, p);
+    ::decode(byte_total, p);
+    ::decode(byte_used, p);
+    ::decode(byte_avail, p);
+    ::decode(avail_percent, p);
+    DECODE_FINISH(p);
+  }
+
+  static void generate_test_instances(list<ceph_data_stats*>& ls) {
+    ls.push_back(new ceph_data_stats);
+    ls.push_back(new ceph_data_stats);
+    ls.back()->byte_total = 1024*1024;
+    ls.back()->byte_used = 512*1024;
+    ls.back()->byte_avail = 512*1024;
+    ls.back()->avail_percent = 50;
+  }
 };
 typedef struct ceph_data_stats ceph_data_stats_t;
 
diff --git a/src/include/xlist.h b/src/include/xlist.h
index 1cbadc0..dcde225 100644
--- a/src/include/xlist.h
+++ b/src/include/xlist.h
@@ -137,7 +137,10 @@ public:
   }
 
   T front() { return static_cast<T>(_front->_item); }
+  const T front() const { return static_cast<const T>(_front->_item); }
+
   T back() { return static_cast<T>(_back->_item); }
+  const T back() const { return static_cast<const T>(_back->_item); }
 
   void pop_front() {
     assert(!empty());
diff --git a/src/init-radosgw b/src/init-radosgw
index 1ef71c4..8e8a539 100644
--- a/src/init-radosgw
+++ b/src/init-radosgw
@@ -52,12 +52,6 @@ case "$1" in
                 continue
             fi
 
-            # is the socket defined?  if it's not, this instance shouldn't run as a daemon.
-            rgw_socket=`$RADOSGW -n $name --show-config-value rgw_socket_path`
-            if [ -z "$rgw_socket" ]; then
-                continue
-            fi
-
             # mapped to this host?
             host=`ceph-conf -n $name host`
             hostname=`hostname -s`
diff --git a/src/init-radosgw.sysv b/src/init-radosgw.sysv
index e210b79..f4eda14 100644
--- a/src/init-radosgw.sysv
+++ b/src/init-radosgw.sysv
@@ -59,12 +59,6 @@ case "$1" in
                 continue
             fi
 
-            # is the socket defined?  if it's not, this instance shouldn't run as a daemon.
-            rgw_socket=`$RADOSGW -n $name --show-config-value rgw_socket_path`
-            if [ -z "$rgw_socket" ]; then
-                continue
-            fi
-
             # mapped to this host?
             host=`ceph-conf -n $name host`
             hostname=`hostname -s`
diff --git a/src/java/Makefile.am b/src/java/Makefile.am
index 4b3d1fb..5481e64 100644
--- a/src/java/Makefile.am
+++ b/src/java/Makefile.am
@@ -22,6 +22,9 @@ JAVA_TEST_SRC = \
 
 EXTRA_DIST = $(JAVA_SRC) $(JAVA_TEST_SRC)
 
+if ENABLE_CLIENT
+if WITH_RADOS
+if WITH_CEPHFS
 if ENABLE_CEPHFS_JAVA
 
 JAVA_CLASSES = $(JAVA_SRC:java/%.java=%.class)
@@ -78,4 +81,7 @@ java_DATA += libcephfs-test.jar
 
 CLEANFILES += test/com/ceph/fs/*.class libcephfs-test.jar
 endif # HAVE_JUNIT4 (includes WITH_DEBUG)
-endif #ENABLE_CEPHFS_JAVA
+endif # ENABLE_CEPHFS_JAVA
+endif # WITH_CEPHFS
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/java/Makefile.in b/src/java/Makefile.in
index 95e1888..f229d42 100644
--- a/src/java/Makefile.in
+++ b/src/java/Makefile.in
@@ -37,8 +37,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE at am__append_1 = libcephfs-test.jar
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE at am__append_2 = test/com/ceph/fs/*.class libcephfs-test.jar
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_1 = libcephfs-test.jar
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at am__append_2 = test/com/ceph/fs/*.class libcephfs-test.jar
 subdir = src/java
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -222,6 +222,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@
@@ -310,25 +311,28 @@ JAVA_TEST_SRC = \
   test/com/ceph/fs/CephAllTests.java
 
 EXTRA_DIST = $(JAVA_SRC) $(JAVA_TEST_SRC)
- at ENABLE_CEPHFS_JAVA_TRUE@JAVA_CLASSES = $(JAVA_SRC:java/%.java=%.class)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at JAVA_CLASSES = $(JAVA_SRC:java/%.java=%.class)
 # This is dumb -- It might be better to split some work
 # between Make and Ant or Maven
 #ESCAPED_JAVA_CLASSES = \
 #	com/ceph/fs/CephMount\$$State.class
- at ENABLE_CEPHFS_JAVA_TRUE@JAVA_H = native/com_ceph_fs_CephMount.h
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at JAVA_H = native/com_ceph_fs_CephMount.h
 
 # target to make automake happy
- at ENABLE_CEPHFS_JAVA_TRUE@CEPH_PROXY = java/com/ceph/fs/CephMount.class
- at ENABLE_CEPHFS_JAVA_TRUE@javadir = $(datadir)/java
- at ENABLE_CEPHFS_JAVA_TRUE@java_DATA = libcephfs.jar $(am__append_1)
- at ENABLE_CEPHFS_JAVA_TRUE@CLEANFILES = -rf java/com/ceph/fs/*.class \
- at ENABLE_CEPHFS_JAVA_TRUE@	$(JAVA_H) libcephfs.jar \
- at ENABLE_CEPHFS_JAVA_TRUE@	$(am__append_2)
- at ENABLE_CEPHFS_JAVA_TRUE@BUILT_SOURCES = $(JAVA_H)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at CEPH_PROXY = java/com/ceph/fs/CephMount.class
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at javadir = $(datadir)/java
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at java_DATA = libcephfs.jar \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__append_1)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at CLEANFILES = -rf \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	java/com/ceph/fs/*.class \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAVA_H) \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	libcephfs.jar \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(am__append_2)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at BUILT_SOURCES = $(JAVA_H)
 
 # build the tests if *both* --enable-cephfs-java and --with-debug were specifed
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE at JAVA_TEST_CLASSES = $(JAVA_TEST_SRC:test/%.java=%.class)
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE at CEPH_TEST_PROXY = test/com/ceph/fs/CephMountTest.class
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at JAVA_TEST_CLASSES = $(JAVA_TEST_SRC:test/%.java=%.class)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at CEPH_TEST_PROXY = test/com/ceph/fs/CephMountTest.class
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -553,23 +557,23 @@ uninstall-am: uninstall-javaDATA
 # as per
 #   https://blogs.oracle.com/darcy/entry/bootclasspath_older_source
 
- at ENABLE_CEPHFS_JAVA_TRUE@$(CEPH_PROXY): $(JAVA_SRC)
- at ENABLE_CEPHFS_JAVA_TRUE@	export CLASSPATH=java/ ; \
- at ENABLE_CEPHFS_JAVA_TRUE@	$(JAVAC) -classpath java -source 1.5 -target 1.5 -Xlint:-options java/com/ceph/fs/*.java
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@$(CEPH_PROXY): $(JAVA_SRC)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	export CLASSPATH=java/ ; \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAVAC) -classpath java -source 1.5 -target 1.5 -Xlint:-options java/com/ceph/fs/*.java
 
- at ENABLE_CEPHFS_JAVA_TRUE@$(JAVA_H): $(CEPH_PROXY)
- at ENABLE_CEPHFS_JAVA_TRUE@	export CLASSPATH=java/ ; \
- at ENABLE_CEPHFS_JAVA_TRUE@	$(JAVAH) -classpath java -jni -o $@ com.ceph.fs.CephMount
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@$(JAVA_H): $(CEPH_PROXY)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	export CLASSPATH=java/ ; \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAVAH) -classpath java -jni -o $@ com.ceph.fs.CephMount
 
- at ENABLE_CEPHFS_JAVA_TRUE@libcephfs.jar: $(CEPH_PROXY)
- at ENABLE_CEPHFS_JAVA_TRUE@	$(JAR) cf $@ $(JAVA_CLASSES:%=-C java %) 
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs.jar: $(CEPH_PROXY)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAR) cf $@ $(JAVA_CLASSES:%=-C java %) 
 
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE@$(CEPH_TEST_PROXY): $(JAVA_TEST_SRC) $(CEPH_PROXY)
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE@	export CLASSPATH=$(CLASSPATH):$(EXTRA_CLASSPATH_JAR):java/:test/ ; \
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE@	$(JAVAC) -source 1.5 -target 1.5 -Xlint:-options test/com/ceph/fs/*.java
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@$(CEPH_TEST_PROXY): $(JAVA_TEST_SRC) $(CEPH_PROXY)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	export CLASSPATH=$(CLASSPATH):$(EXTRA_CLASSPATH_JAR):java/:test/ ; \
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAVAC) -source 1.5 -target 1.5 -Xlint:-options test/com/ceph/fs/*.java
 
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE at libcephfs-test.jar: $(CEPH_TEST_PROXY)
- at ENABLE_CEPHFS_JAVA_TRUE@@HAVE_JUNIT4_TRUE@	$(JAR) cf $@ $(JAVA_TEST_CLASSES:%=-C test %) 
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE at libcephfs-test.jar: $(CEPH_TEST_PROXY)
+ at ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@HAVE_JUNIT4_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@	$(JAR) cf $@ $(JAVA_TEST_CLASSES:%=-C test %) 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/key_value_store/Makefile.am b/src/key_value_store/Makefile.am
index c4b854f..1ccf50e 100644
--- a/src/key_value_store/Makefile.am
+++ b/src/key_value_store/Makefile.am
@@ -1,3 +1,6 @@
+if ENABLE_SERVER
+if WITH_OSD
+
 if LINUX
 libcls_kvs_la_SOURCES = key_value_store/cls_kvs.cc
 libcls_kvs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
@@ -10,3 +13,5 @@ noinst_HEADERS += \
 	key_value_store/kv_flat_btree_async.h \
 	key_value_store/kvs_arg_types.h
 
+endif # WITH_OSD
+endif # ENABLE_SERVER
diff --git a/src/librados/Makefile.am b/src/librados/Makefile.am
index 8e6de3f..103ffd8 100644
--- a/src/librados/Makefile.am
+++ b/src/librados/Makefile.am
@@ -1,3 +1,6 @@
+if ENABLE_CLIENT
+if WITH_RADOS
+
 librados_internal_la_SOURCES = \
 	librados/RadosClient.cc \
 	librados/IoCtxImpl.cc \
@@ -40,3 +43,6 @@ noinst_HEADERS += \
 	librados/RadosClient.h \
 	librados/RadosXattrIter.h \
 	librados/ListObjectImpl.h
+
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/libradosstriper/Makefile.am b/src/libradosstriper/Makefile.am
index ad0ebb5..bd4c1d1 100644
--- a/src/libradosstriper/Makefile.am
+++ b/src/libradosstriper/Makefile.am
@@ -1,3 +1,7 @@
+if ENABLE_CLIENT
+if WITH_RADOS
+if WITH_RADOSSTRIPER
+
 libradosstriper_la_SOURCES = \
 	libradosstriper/libradosstriper.cc \
 	libradosstriper/RadosStriperImpl.cc \
@@ -17,3 +21,7 @@ lib_LTLIBRARIES += libradosstriper.la
 noinst_HEADERS += \
 	libradosstriper/RadosStriperImpl.h \
 	libradosstriper/MultiAioCompletionImpl.h
+
+endif # WITH_RADOSSTRIPER
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/librbd/AioCompletion.cc b/src/librbd/AioCompletion.cc
index 4ead667..8c38e1c 100644
--- a/src/librbd/AioCompletion.cc
+++ b/src/librbd/AioCompletion.cc
@@ -26,14 +26,7 @@ namespace librbd {
   void AioCompletion::finish_adding_requests(CephContext *cct)
   {
     ldout(cct, 20) << "AioCompletion::finish_adding_requests " << (void*)this << " pending " << pending_count << dendl;
-    lock.Lock();
-    assert(building);
-    building = false;
-    if (!pending_count) {
-      finalize(cct, rval);
-      complete();
-    }
-    lock.Unlock();
+    unblock(cct);
   }
 
   int AioCompletion::wait_for_complete() {
@@ -89,6 +82,7 @@ namespace librbd {
       break;
     }
 
+    // note: possible for image to be closed after op marked finished
     async_op.finish_op();
 
     if (complete_cb) {
@@ -113,7 +107,7 @@ namespace librbd {
     }
     assert(pending_count);
     int count = --pending_count;
-    if (!count && !building) {
+    if (!count && blockers == 0) {
       finalize(cct, rval);
       complete();
     }
diff --git a/src/librbd/AioCompletion.h b/src/librbd/AioCompletion.h
index 41c89f2..cef8388 100644
--- a/src/librbd/AioCompletion.h
+++ b/src/librbd/AioCompletion.h
@@ -50,7 +50,7 @@ namespace librbd {
     void *complete_arg;
     rbd_completion_t rbd_comp;
     int pending_count;   ///< number of requests
-    bool building;       ///< true if we are still building this completion
+    uint32_t blockers;
     int ref;
     bool released;
     ImageCtx *ictx;
@@ -67,7 +67,7 @@ namespace librbd {
     AioCompletion() : lock("AioCompletion::lock", true),
 		      done(false), rval(0), complete_cb(NULL),
 		      complete_arg(NULL), rbd_comp(NULL),
-		      pending_count(0), building(true),
+		      pending_count(0), blockers(1),
 		      ref(1), released(false), ictx(NULL),
 		      aio_type(AIO_TYPE_NONE),
 		      read_bl(NULL), read_buf(NULL), read_buf_len(0) {
@@ -134,6 +134,20 @@ namespace librbd {
       if (!n)
 	delete this;
     }
+
+    void block() {
+      Mutex::Locker l(lock);
+      ++blockers;
+    }
+    void unblock(CephContext *cct) {
+      Mutex::Locker l(lock);
+      assert(blockers > 0);
+      --blockers;
+      if (pending_count == 0 && blockers == 0) {
+        finalize(cct, rval);
+        complete();
+      }
+    }
   };
 
   class C_AioRead : public Context {
diff --git a/src/librbd/AioRequest.cc b/src/librbd/AioRequest.cc
index dff7709..3bbbab9 100644
--- a/src/librbd/AioRequest.cc
+++ b/src/librbd/AioRequest.cc
@@ -48,16 +48,43 @@ namespace librbd {
     }
   }
 
-  void AioRequest::read_from_parent(vector<pair<uint64_t,uint64_t> >& image_extents)
+  void AioRequest::complete(int r)
+  {
+    if (should_complete(r)) {
+      ldout(m_ictx->cct, 20) << "complete " << this << dendl;
+      if (m_hide_enoent && r == -ENOENT) {
+	r = 0;
+      }
+      m_completion->complete(r);
+      delete this;
+    }
+  }
+
+  void AioRequest::read_from_parent(vector<pair<uint64_t,uint64_t> >& image_extents,
+                                    bool block_completion)
   {
     assert(!m_parent_completion);
     m_parent_completion = aio_create_completion_internal(this, rbd_req_cb);
+    if (block_completion) {
+      // prevent the parent image from being deleted while this
+      // request is still in-progress
+      m_parent_completion->get();
+      m_parent_completion->block();
+    }
+
     ldout(m_ictx->cct, 20) << "read_from_parent this = " << this
 			   << " parent completion " << m_parent_completion
 			   << " extents " << image_extents
 			   << dendl;
-    aio_read(m_ictx->parent, image_extents, NULL, &m_read_data,
-	     m_parent_completion, 0);
+    int r = aio_read(m_ictx->parent, image_extents, NULL, &m_read_data,
+	             m_parent_completion, 0);
+    if (r < 0) {
+      lderr(m_ictx->cct) << "read_from_parent " << this
+                         << ": error reading from parent: "
+                         << cpp_strerror(r) << dendl;
+      m_parent_completion->release();
+      complete(r);
+    }
   }
 
   static inline bool is_copy_on_read(ImageCtx *ictx, librados::snap_t snap_id) {
@@ -116,36 +143,46 @@ namespace librbd {
 
       // This is the step to read from parent
       if (!m_tried_parent && r == -ENOENT) {
-        RWLock::RLocker l(m_ictx->snap_lock);
-        RWLock::RLocker l2(m_ictx->parent_lock);
-
-        if (m_ictx->parent == NULL) {
-	  ldout(m_ictx->cct, 20) << "parent is gone; do nothing" << dendl;
-	  m_state = LIBRBD_AIO_READ_FLAT;
-	  finished = false;
-	  break;
-	}
+        {
+          RWLock::RLocker l(m_ictx->snap_lock);
+          RWLock::RLocker l2(m_ictx->parent_lock);
+          if (m_ictx->parent == NULL) {
+	    ldout(m_ictx->cct, 20) << "parent is gone; do nothing" << dendl;
+	    m_state = LIBRBD_AIO_READ_FLAT;
+	    finished = false;
+	    break;
+	  }
 
-        // calculate reverse mapping onto the image
-        vector<pair<uint64_t,uint64_t> > image_extents;
-        Striper::extent_to_file(m_ictx->cct, &m_ictx->layout,
-			        m_object_no, m_object_off, m_object_len,
-			        image_extents);
+          // calculate reverse mapping onto the image
+          vector<pair<uint64_t,uint64_t> > image_extents;
+          Striper::extent_to_file(m_ictx->cct, &m_ictx->layout,
+			          m_object_no, m_object_off, m_object_len,
+			          image_extents);
 
-        uint64_t image_overlap = 0;
-        r = m_ictx->get_parent_overlap(m_snap_id, &image_overlap);
-        if (r < 0) {
-          assert(0 == "FIXME");
+          uint64_t image_overlap = 0;
+          r = m_ictx->get_parent_overlap(m_snap_id, &image_overlap);
+          if (r < 0) {
+            assert(0 == "FIXME");
+          }
+          uint64_t object_overlap = m_ictx->prune_parent_extents(image_extents,
+                                                                 image_overlap);
+          if (object_overlap) {
+            m_tried_parent = true;
+            if (is_copy_on_read(m_ictx, m_snap_id)) {
+              m_state = LIBRBD_AIO_READ_COPYUP;
+	    }
+
+            read_from_parent(image_extents, true);
+            finished = false;
+          }
         }
-        uint64_t object_overlap = m_ictx->prune_parent_extents(image_extents, image_overlap);
-        if (object_overlap) {
-          m_tried_parent = true;
-          if (is_copy_on_read(m_ictx, m_snap_id)) {
-            m_state = LIBRBD_AIO_READ_COPYUP; 
-	  }
 
-          read_from_parent(image_extents);
-          finished = false;
+        if (m_tried_parent) {
+          // release reference to the parent read completion.  this request
+          // might be completed after unblock is invoked.
+          AioCompletion *parent_completion = m_parent_completion;
+          parent_completion->unblock(m_ictx->cct);
+          parent_completion->put();
         }
       }
       break;
@@ -172,8 +209,12 @@ namespace librbd {
           }
 
           // If parent still exists, overlap might also have changed.
+          uint64_t parent_overlap;
+          r = m_ictx->get_parent_overlap(CEPH_NOSNAP, &parent_overlap);
+          assert(r == 0);
+
           uint64_t newlen = m_ictx->prune_parent_extents(
-            m_image_extents, m_ictx->parent_md.overlap);
+            m_image_extents, parent_overlap);
           if (newlen != 0) {
             // create and kick off a CopyupRequest
             CopyupRequest *new_req = new CopyupRequest(m_ictx, m_oid,
@@ -303,13 +344,17 @@ namespace librbd {
 	}
 
 	// If parent still exists, overlap might also have changed.
+	uint64_t parent_overlap;
+        r = m_ictx->get_parent_overlap(CEPH_NOSNAP, &parent_overlap);
+        assert(r == 0);
+
 	uint64_t newlen = m_ictx->prune_parent_extents(
-	  m_object_image_extents, m_ictx->parent_md.overlap);
+	  m_object_image_extents, parent_overlap);
 
 	// copyup the entire object up to the overlap point, if any
 	if (newlen != 0) {
 	  ldout(m_ictx->cct, 20) << "should_complete(" << this << ") overlap "
-				 << m_ictx->parent_md.overlap << " newlen "
+				 << parent_overlap << " newlen "
 				 << newlen << " image_extents"
 				 << m_object_image_extents << dendl;
 
@@ -336,7 +381,7 @@ namespace librbd {
               m_ictx->copyup_list_lock.Unlock();
             }
           } else {
-            read_from_parent(m_object_image_extents);
+            read_from_parent(m_object_image_extents, false);
           }
 	} else {
 	  ldout(m_ictx->cct, 20) << "should_complete(" << this
@@ -427,17 +472,18 @@ namespace librbd {
         boost::optional<uint8_t> current_state;
         pre_object_map_update(&new_state);
 
-        m_state = LIBRBD_AIO_WRITE_PRE; 
+        m_state = LIBRBD_AIO_WRITE_PRE;
         FunctionContext *ctx = new FunctionContext(
           boost::bind(&AioRequest::complete, this, _1));
         if (!m_ictx->object_map.aio_update(m_object_no, new_state,
 					    current_state, ctx)) {
 	  // no object map update required
+	  delete ctx;
 	  return false;
 	}
       }
     }
-    
+
     if (lost_exclusive_lock) {
       complete(-ERESTART);
     }
@@ -466,10 +512,11 @@ namespace librbd {
     if (!m_ictx->object_map.aio_update(m_object_no, OBJECT_NONEXISTENT,
 					OBJECT_PENDING, ctx)) {
       // no object map update required
+      delete ctx;
       return true;
     }
-    return false;  
-  } 
+    return false;
+  }
 
   void AbstractWrite::send_write() {
     ldout(m_ictx->cct, 20) << "send_write " << this << " " << m_oid << " "
diff --git a/src/librbd/AioRequest.h b/src/librbd/AioRequest.h
index 6da04b8..60be8fc 100644
--- a/src/librbd/AioRequest.h
+++ b/src/librbd/AioRequest.h
@@ -34,21 +34,14 @@ namespace librbd {
                Context *completion, bool hide_enoent);
     virtual ~AioRequest();
 
-    void complete(int r)
-    {
-      if (should_complete(r)) {
-	if (m_hide_enoent && r == -ENOENT)
-	  r = 0;
-	m_completion->complete(r);
-	delete this;
-      }
-    }
+    void complete(int r);
 
     virtual bool should_complete(int r) = 0;
     virtual int send() = 0;
 
   protected:
-    void read_from_parent(vector<pair<uint64_t,uint64_t> >& image_extents);
+    void read_from_parent(vector<pair<uint64_t,uint64_t> >& image_extents,
+                          bool block_completion);
 
     ImageCtx *m_ictx;
     std::string m_oid;
diff --git a/src/librbd/AsyncFlattenRequest.cc b/src/librbd/AsyncFlattenRequest.cc
index 88afe5f..87c2655 100644
--- a/src/librbd/AsyncFlattenRequest.cc
+++ b/src/librbd/AsyncFlattenRequest.cc
@@ -49,7 +49,10 @@ public:
       }
 
       // resize might have occurred while flatten is running
-      overlap = min(m_image_ctx.size, m_image_ctx.parent_md.overlap);
+      uint64_t parent_overlap;
+      int r = m_image_ctx.get_parent_overlap(CEPH_NOSNAP, &parent_overlap);
+      assert(r == 0);
+      overlap = min(m_image_ctx.size, parent_overlap);
     }
 
     // map child object onto the parent
diff --git a/src/librbd/AsyncOperation.cc b/src/librbd/AsyncOperation.cc
index 2f0ef81..dfb1e61 100644
--- a/src/librbd/AsyncOperation.cc
+++ b/src/librbd/AsyncOperation.cc
@@ -29,7 +29,7 @@ void AsyncOperation::finish_op() {
     assert(m_xlist_item.remove_myself());
 
     // linked list stored newest -> oldest ops
-    if (!iter.end()) {
+    if (!iter.end() && !m_flush_contexts.empty()) {
       ldout(m_image_ctx->cct, 20) << "moving flush contexts to previous op: "
                                   << *iter << dendl;
       (*iter)->m_flush_contexts.insert((*iter)->m_flush_contexts.end(),
diff --git a/src/librbd/AsyncRequest.h b/src/librbd/AsyncRequest.h
index 25be0ed..f81840a 100644
--- a/src/librbd/AsyncRequest.h
+++ b/src/librbd/AsyncRequest.h
@@ -19,7 +19,7 @@ public:
   virtual ~AsyncRequest();
 
   void complete(int r) {
-    if (m_canceled) {
+    if (m_canceled && safely_cancel(r)) {
       m_on_finish->complete(-ERESTART);
       delete this;
     } else if (should_complete(r)) {
@@ -44,6 +44,9 @@ protected:
   librados::AioCompletion *create_callback_completion();
   Context *create_callback_context();
 
+  virtual bool safely_cancel(int r) {
+    return true;
+  }
   virtual bool should_complete(int r) = 0;
 
 private:
diff --git a/src/librbd/AsyncResizeRequest.cc b/src/librbd/AsyncResizeRequest.cc
index 3edc332..621d59d 100644
--- a/src/librbd/AsyncResizeRequest.cc
+++ b/src/librbd/AsyncResizeRequest.cc
@@ -16,27 +16,74 @@
 namespace librbd
 {
 
-bool AsyncResizeRequest::should_complete(int r)
+AsyncResizeRequest::AsyncResizeRequest(ImageCtx &image_ctx, Context *on_finish,
+                                       uint64_t new_size,
+                                       ProgressContext &prog_ctx)
+  : AsyncRequest(image_ctx, on_finish),
+    m_original_size(0), m_new_size(new_size),
+    m_prog_ctx(prog_ctx), m_new_parent_overlap(0),
+    m_xlist_item(this)
 {
+  RWLock::WLocker l(m_image_ctx.snap_lock);
+  m_image_ctx.async_resize_reqs.push_back(&m_xlist_item);
+  m_original_size = m_image_ctx.size;
+  compute_parent_overlap();
+}
+
+AsyncResizeRequest::~AsyncResizeRequest() {
+  AsyncResizeRequest *next_req = NULL;
+  {
+    RWLock::WLocker l(m_image_ctx.snap_lock);
+    assert(m_xlist_item.remove_myself());
+    if (!m_image_ctx.async_resize_reqs.empty()) {
+      next_req = m_image_ctx.async_resize_reqs.front();
+      next_req->m_original_size = m_image_ctx.size;
+      next_req->compute_parent_overlap();
+    }
+  }
+
+  if (next_req != NULL) {
+    next_req->send();
+  }
+}
+
+bool AsyncResizeRequest::safely_cancel(int r) {
+  CephContext *cct = m_image_ctx.cct;
+  ldout(cct, 5) << this << " safely_cancel: " << " r=" << r << dendl;
+
+  // avoid interrupting the object map / header updates
+  switch (m_state) {
+  case STATE_GROW_OBJECT_MAP:
+  case STATE_UPDATE_HEADER:
+  case STATE_SHRINK_OBJECT_MAP:
+    ldout(cct, 5) << "delaying cancel request" << dendl;
+    return false;
+  default:
+    break;
+  }
+  return true;
+}
+
+bool AsyncResizeRequest::should_complete(int r) {
   CephContext *cct = m_image_ctx.cct;
   ldout(cct, 5) << this << " should_complete: " << " r=" << r << dendl;
 
   if (r < 0) {
     lderr(cct) << "resize encountered an error: " << cpp_strerror(r) << dendl;
-    RWLock::WLocker l(m_image_ctx.snap_lock);
-    if (m_image_ctx.size == m_new_size) {
-      m_image_ctx.size = m_original_size;
-    }
-
-    RWLock::WLocker l2(m_image_ctx.parent_lock);
-    if (m_image_ctx.parent != NULL &&
-	m_image_ctx.parent_md.overlap == m_new_parent_overlap) {
-      m_image_ctx.parent_md.overlap = m_original_parent_overlap;
-    }
     return true;
   }
 
   switch (m_state) {
+  case STATE_FLUSH:
+    ldout(cct, 5) << "FLUSH" << dendl;
+    send_invalidate_cache();
+    break;
+
+  case STATE_INVALIDATE_CACHE:
+    ldout(cct, 5) << "INVALIDATE_CACHE" << dendl;
+    send_trim_image();
+    break;
+
   case STATE_TRIM_IMAGE:
     ldout(cct, 5) << "TRIM_IMAGE" << dendl;
     send_update_header();
@@ -50,12 +97,16 @@ bool AsyncResizeRequest::should_complete(int r)
   case STATE_UPDATE_HEADER:
     ldout(cct, 5) << "UPDATE_HEADER" << dendl;
     if (send_shrink_object_map()) {
+      update_size_and_overlap();
+      increment_refresh_seq();
       return true;
     }
     break;
 
   case STATE_SHRINK_OBJECT_MAP:
     ldout(cct, 5) << "SHRINK_OBJECT_MAP" << dendl;
+    update_size_and_overlap();
+    increment_refresh_seq();
     return true;
 
   case STATE_FINISHED:
@@ -71,42 +122,63 @@ bool AsyncResizeRequest::should_complete(int r)
 }
 
 void AsyncResizeRequest::send() {
+  {
+    RWLock::RLocker l(m_image_ctx.snap_lock);
+    assert(!m_image_ctx.async_resize_reqs.empty());
+
+    // only allow a single concurrent resize request
+    if (m_image_ctx.async_resize_reqs.front() != this) {
+      return;
+    }
+  }
+
   CephContext *cct = m_image_ctx.cct;
-  if (m_original_size == m_new_size) {
+  if (is_canceled()) {
+    complete(-ERESTART);
+  } else if (m_original_size == m_new_size) {
     ldout(cct, 2) << this << " no change in size (" << m_original_size
-		  << " -> " << m_new_size << ")" << dendl; 
+		  << " -> " << m_new_size << ")" << dendl;
     m_state = STATE_FINISHED;
     complete(0);
   } else if (m_new_size > m_original_size) {
     ldout(cct, 2) << this << " expanding image (" << m_original_size
-		  << " -> " << m_new_size << ")" << dendl; 
+		  << " -> " << m_new_size << ")" << dendl;
     send_grow_object_map();
   } else {
     ldout(cct, 2) << this << " shrinking image (" << m_original_size
-		  << " -> " << m_new_size << ")" << dendl; 
-    send_trim_image();
+		  << " -> " << m_new_size << ")" << dendl;
+    send_flush();
   }
 }
 
+void AsyncResizeRequest::send_flush() {
+  ldout(m_image_ctx.cct, 5) << this << " send_flush: "
+                            << " original_size=" << m_original_size
+                            << " new_size=" << m_new_size << dendl;
+  m_state = STATE_FLUSH;
+
+  // with clipping adjusted, ensure that write / copy-on-read operations won't
+  // (re-)create objects that we just removed
+  m_image_ctx.flush_async_operations(create_callback_context());
+}
+
+void AsyncResizeRequest::send_invalidate_cache() {
+  ldout(m_image_ctx.cct, 5) << this << " send_invalidate_cache: "
+                            << " original_size=" << m_original_size
+                            << " new_size=" << m_new_size << dendl;
+  m_state = STATE_INVALIDATE_CACHE;
+
+  // need to invalidate since we're deleting objects, and
+  // ObjectCacher doesn't track non-existent objects
+  m_image_ctx.invalidate_cache(create_callback_context());
+}
+
 void AsyncResizeRequest::send_trim_image() {
   ldout(m_image_ctx.cct, 5) << this << " send_trim_image: "
                             << " original_size=" << m_original_size
                             << " new_size=" << m_new_size << dendl;
   m_state = STATE_TRIM_IMAGE;
 
-  {
-    // update in-memory size to clip concurrent IO operations
-    RWLock::WLocker l(m_image_ctx.snap_lock);
-    m_image_ctx.size = m_new_size;
-
-    RWLock::WLocker l2(m_image_ctx.parent_lock);
-    if (m_image_ctx.parent != NULL) {
-      m_original_parent_overlap = m_image_ctx.parent_md.overlap;
-      m_new_parent_overlap = MIN(m_new_size, m_original_parent_overlap);
-      m_image_ctx.parent_md.overlap = m_new_parent_overlap;
-    }
-  }
-
   AsyncTrimRequest *req = new AsyncTrimRequest(m_image_ctx,
 					       create_callback_context(),
 					       m_original_size, m_new_size,
@@ -151,8 +223,7 @@ bool AsyncResizeRequest::send_shrink_object_map() {
   bool lost_exclusive_lock = false;
   {
     RWLock::RLocker l(m_image_ctx.owner_lock);
-    if (!m_image_ctx.object_map.enabled() ||
-	m_new_size > m_original_size) {
+    if (!m_image_ctx.object_map.enabled() || m_new_size > m_original_size) {
       return true;
     }
 
@@ -187,16 +258,12 @@ void AsyncResizeRequest::send_update_header() {
   m_state = STATE_UPDATE_HEADER;
 
   {
-    RWLock::RLocker l(m_image_ctx.owner_lock); 
+    RWLock::RLocker l(m_image_ctx.owner_lock);
     if (m_image_ctx.image_watcher->is_lock_supported() &&
 	!m_image_ctx.image_watcher->is_lock_owner()) {
       ldout(m_image_ctx.cct, 1) << "lost exclusive lock during header update" << dendl;
       lost_exclusive_lock = true;
     } else {
-      m_image_ctx.snap_lock.get_write();
-      m_image_ctx.size = m_new_size;
-      m_image_ctx.snap_lock.put_write();
-
       librados::ObjectWriteOperation op;
       if (m_image_ctx.old_format) {
 	// rewrite header
@@ -225,4 +292,29 @@ void AsyncResizeRequest::send_update_header() {
   }
 }
 
+void AsyncResizeRequest::compute_parent_overlap() {
+  RWLock::RLocker l2(m_image_ctx.parent_lock);
+  if (m_image_ctx.parent == NULL) {
+    m_new_parent_overlap = 0;
+  } else {
+    m_new_parent_overlap = MIN(m_new_size, m_image_ctx.parent_md.overlap);
+  }
+}
+
+void AsyncResizeRequest::increment_refresh_seq() {
+  m_image_ctx.refresh_lock.Lock();
+  ++m_image_ctx.refresh_seq;
+  m_image_ctx.refresh_lock.Unlock();
+}
+
+void AsyncResizeRequest::update_size_and_overlap() {
+  RWLock::WLocker snap_locker(m_image_ctx.snap_lock);
+  m_image_ctx.size = m_new_size;
+
+  RWLock::WLocker parent_locker(m_image_ctx.parent_lock);
+  if (m_image_ctx.parent != NULL && m_new_size < m_original_size) {
+    m_image_ctx.parent_md.overlap = m_new_parent_overlap;
+  }
+}
+
 } // namespace librbd
diff --git a/src/librbd/AsyncResizeRequest.h b/src/librbd/AsyncResizeRequest.h
index 6884abf..a719c9d 100644
--- a/src/librbd/AsyncResizeRequest.h
+++ b/src/librbd/AsyncResizeRequest.h
@@ -4,6 +4,7 @@
 #define CEPH_LIBRBD_ASYNC_RESIZE_REQUEST_H
 
 #include "librbd/AsyncRequest.h"
+#include "include/xlist.h"
 
 namespace librbd
 {
@@ -14,42 +15,58 @@ class ProgressContext;
 class AsyncResizeRequest : public AsyncRequest
 {
 public:
-  AsyncResizeRequest(ImageCtx &image_ctx, Context *on_finish,
-		     uint64_t original_size, uint64_t new_size,
-		     ProgressContext &prog_ctx)
-    : AsyncRequest(image_ctx, on_finish),
-      m_original_size(original_size), m_new_size(new_size),
-      m_prog_ctx(prog_ctx), m_original_parent_overlap(0),
-      m_new_parent_overlap(0)
-  {
-  }
+  AsyncResizeRequest(ImageCtx &image_ctx, Context *on_finish, uint64_t new_size,
+                     ProgressContext &prog_ctx);
+  virtual ~AsyncResizeRequest();
 
   virtual void send();
 
-protected:
+  inline bool shrinking() const {
+    return m_new_size < m_original_size;
+  }
+
+  inline uint64_t get_image_size() const {
+    return m_new_size;
+  }
+
+  inline uint64_t get_parent_overlap() const {
+    return m_new_parent_overlap;
+  }
+
+private:
   /**
    * Resize goes through the following state machine to resize the image
    * and update the object map:
    *
-   * <start> ----> STATE_FINISHED --------------------------------\
-   *  |  .                                                        |
-   *  |  . . . . . . . . . . . . . . . . . .                      |
-   *  |                                    .                      |
-   *  |                                    v                      |
-   *  |---> STATE_GROW_OBJECT_MAP ---> STATE_UPDATE_HEADER -------|
-   *  |                                                           |
-   *  |                                                           |
-   *  \---> STATE_TRIM_IMAGE --------> STATE_UPDATE_HEADER . . .  |
-   *                                       |                   .  |
-   *                                       |                   .  |
-   *                                       v                   v  v
-   *                            STATE_SHRINK_OBJECT_MAP ---> <finish>
+   * <start> -------------> STATE_FINISHED -----------------------------\
+   *  |  .    (no change)                                               |
+   *  |  .                                                              |
+   *  |  . . . . . . . . . . . . . . . . . . . . .                      |
+   *  |                                          .                      |
+   *  |                                          v                      |
+   *  |----------> STATE_GROW_OBJECT_MAP ---> STATE_UPDATE_HEADER ------|
+   *  | (grow)                                                          |
+   *  |                                                                 |
+   *  |                                                                 |
+   *  \----------> STATE_FLUSH -------------> STATE_INVALIDATE_CACHE    |
+   *    (shrink)                                 |                      |
+   *                                             |                      |
+   *                      /----------------------/                      |
+   *                      |                                             |
+   *                      v                                             |
+   *              STATE_TRIM_IMAGE --------> STATE_UPDATE_HEADER . . .  |
+   *                                             |                   .  |
+   *                                             |                   .  |
+   *                                             v                   v  v
+   *                                  STATE_SHRINK_OBJECT_MAP ---> <finish>
    *
    * The _OBJECT_MAP states are skipped if the object map isn't enabled.
    * The state machine will immediately transition to _FINISHED if there
    * are no objects to trim.
-   */ 
+   */
   enum State {
+    STATE_FLUSH,
+    STATE_INVALIDATE_CACHE,
     STATE_TRIM_IMAGE,
     STATE_GROW_OBJECT_MAP,
     STATE_UPDATE_HEADER,
@@ -61,16 +78,24 @@ protected:
   uint64_t m_original_size;
   uint64_t m_new_size;
   ProgressContext &m_prog_ctx;
-  uint64_t m_original_parent_overlap;
   uint64_t m_new_parent_overlap;
 
+  xlist<AsyncResizeRequest *>::item m_xlist_item;
+
+  virtual bool safely_cancel(int r);
   virtual bool should_complete(int r);
 
+  void send_flush();
+  void send_invalidate_cache();
   void send_trim_image();
   void send_grow_object_map();
   bool send_shrink_object_map();
   void send_update_header();
 
+  void compute_parent_overlap();
+  void increment_refresh_seq();
+  void update_size_and_overlap();
+
 };
 
 } // namespace librbd
diff --git a/src/librbd/AsyncTrimRequest.cc b/src/librbd/AsyncTrimRequest.cc
index 4f37348..d3dcd81 100644
--- a/src/librbd/AsyncTrimRequest.cc
+++ b/src/librbd/AsyncTrimRequest.cc
@@ -172,9 +172,11 @@ void AsyncTrimRequest::send_pre_remove() {
         lost_exclusive_lock = true;
       } else {
         // flag the objects as pending deletion
+        Context *ctx = create_callback_context();
         if (!m_image_ctx.object_map.aio_update(m_delete_start, m_num_objects,
-						OBJECT_PENDING, OBJECT_EXISTS,
-						create_callback_context())) {
+					       OBJECT_PENDING, OBJECT_EXISTS,
+                                               ctx)) {
+          delete ctx;
           remove_objects = true;
         }
       }
@@ -207,10 +209,11 @@ bool AsyncTrimRequest::send_post_remove() {
         ldout(m_image_ctx.cct, 1) << "lost exclusive lock during trim" << dendl;
       } else {
         // flag the pending objects as removed
+        Context *ctx = create_callback_context();
         if (!m_image_ctx.object_map.aio_update(m_delete_start, m_num_objects,
-						OBJECT_NONEXISTENT,
-						OBJECT_PENDING,
-						create_callback_context())) {
+					       OBJECT_NONEXISTENT,
+					       OBJECT_PENDING, ctx)) {
+          delete ctx;
 	  clean_boundary = true;
 	}
       }
@@ -251,9 +254,11 @@ bool AsyncTrimRequest::send_clean_boundary() {
       uint64_t parent_overlap;
       {
         RWLock::RLocker l2(m_image_ctx.snap_lock);
-        RWLock::RLocker l3(m_image_ctx.parent_lock);
         snapc = m_image_ctx.snapc;
-        parent_overlap = m_image_ctx.parent_md.overlap;
+
+        RWLock::RLocker l3(m_image_ctx.parent_lock);
+        int r = m_image_ctx.get_parent_overlap(CEPH_NOSNAP, &parent_overlap);
+        assert(r == 0);
       }
 
       // discard the weird boundary, if any
diff --git a/src/librbd/CopyupRequest.cc b/src/librbd/CopyupRequest.cc
index 68708e8..a58ec84 100644
--- a/src/librbd/CopyupRequest.cc
+++ b/src/librbd/CopyupRequest.cc
@@ -94,10 +94,11 @@ namespace librbd {
     int r = aio_read(m_ictx->parent, m_image_extents, NULL, &m_copyup_data,
 		     comp, 0);
     if (r < 0) {
+      lderr(m_ictx->cct) << __func__ << " " << this
+                         << ": error reading from parent: "
+                         << cpp_strerror(r) << dendl;
       comp->release();
-
-      remove_from_list();
-      complete_requests(r);
+      complete(r);
     }
   }
 
@@ -139,7 +140,7 @@ namespace librbd {
 	// nothing to copyup
 	return true;
       } else if (send_object_map()) {
-	return true; 
+	return true;
       }
       break;
 
@@ -169,6 +170,11 @@ namespace librbd {
   }
 
   bool CopyupRequest::send_object_map() {
+    ldout(m_ictx->cct, 20) << __func__ << " " << this
+			   << ": oid " << m_oid
+                           << ", extents " << m_image_extents
+                           << dendl;
+
     bool copyup = false;
     {
       RWLock::RLocker l(m_ictx->owner_lock);
@@ -177,12 +183,13 @@ namespace librbd {
       } else if (!m_ictx->image_watcher->is_lock_owner()) {
 	ldout(m_ictx->cct, 20) << "exclusive lock not held for copy-on-read"
 			       << dendl;
-	return true; 
+	return true;
       } else {
 	m_state = STATE_OBJECT_MAP;
+        Context *ctx = create_callback_context();
         if (!m_ictx->object_map.aio_update(m_object_no, OBJECT_EXISTS,
-					    boost::optional<uint8_t>(),
-					    create_callback_context())) {
+					   boost::optional<uint8_t>(), ctx)) {
+          delete ctx;
 	  copyup = true;
 	}
       }
diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc
index 24ef415..564f343 100644
--- a/src/librbd/ImageCtx.cc
+++ b/src/librbd/ImageCtx.cc
@@ -9,11 +9,14 @@
 
 #include "librbd/AsyncOperation.h"
 #include "librbd/AsyncRequest.h"
+#include "librbd/AsyncResizeRequest.h"
 #include "librbd/internal.h"
 #include "librbd/ImageCtx.h"
 #include "librbd/ImageWatcher.h"
 #include "librbd/ObjectMap.h"
 
+#include <boost/bind.hpp>
+
 #define dout_subsys ceph_subsys_rbd
 #undef dout_prefix
 #define dout_prefix *_dout << "librbd::ImageCtx: "
@@ -431,6 +434,10 @@ namespace librbd {
   {
     assert(snap_lock.is_locked());
     if (in_snap_id == CEPH_NOSNAP) {
+      if (!async_resize_reqs.empty() &&
+          async_resize_reqs.front()->shrinking()) {
+        return async_resize_reqs.front()->get_image_size();
+      }
       return size;
     }
 
@@ -487,6 +494,28 @@ namespace librbd {
     return ((snap_flags & test_flags) == test_flags);
   }
 
+  int ImageCtx::update_flags(snap_t in_snap_id, uint64_t flag, bool enabled)
+  {
+    assert(snap_lock.is_wlocked());
+    uint64_t *_flags;
+    if (in_snap_id == CEPH_NOSNAP) {
+      _flags = &flags;
+    } else {
+      map<snap_t, SnapInfo>::iterator it = snap_info.find(in_snap_id);
+      if (it == snap_info.end()) {
+        return -ENOENT;
+      }
+      _flags = &it->second.flags;
+    }
+
+    if (enabled) {
+      (*_flags) |= flag;
+    } else {
+      (*_flags) &= ~flag;
+    }
+    return 0;
+  }
+
   const parent_info* ImageCtx::get_parent_info(snap_t in_snap_id) const
   {
     assert(snap_lock.is_locked());
@@ -525,6 +554,13 @@ namespace librbd {
 
   int ImageCtx::get_parent_overlap(snap_t in_snap_id, uint64_t *overlap) const
   {
+    assert(snap_lock.is_locked());
+    if (in_snap_id == CEPH_NOSNAP && !async_resize_reqs.empty() &&
+        async_resize_reqs.front()->shrinking()) {
+      *overlap = async_resize_reqs.front()->get_parent_overlap();
+      return 0;
+    }
+
     const parent_info *info = get_parent_info(in_snap_id);
     if (info) {
       *overlap = info->overlap;
@@ -628,34 +664,49 @@ namespace librbd {
   }
 
   void ImageCtx::shutdown_cache() {
+    flush_async_operations();
     invalidate_cache();
     object_cacher->stop();
   }
 
   int ImageCtx::invalidate_cache() {
-    if (!object_cacher)
-      return 0;
-    flush_async_operations();
+    C_SaferCond ctx;
+    invalidate_cache(&ctx);
+    return ctx.wait();
+  }
+
+  void ImageCtx::invalidate_cache(Context *on_finish) {
+    if (object_cacher == NULL) {
+      on_finish->complete(0);
+      return;
+    }
+
     cache_lock.Lock();
     object_cacher->release_set(object_set);
     cache_lock.Unlock();
-    int r = flush_cache();
+
+    flush_cache_aio(new FunctionContext(boost::bind(
+      &ImageCtx::invalidate_cache_completion, this, _1, on_finish)));
+  }
+
+  void ImageCtx::invalidate_cache_completion(int r, Context *on_finish) {
+    assert(cache_lock.is_locked());
     if (r == -EBLACKLISTED) {
-      Mutex::Locker l(cache_lock);
       lderr(cct) << "Blacklisted during flush!  Purging cache..." << dendl;
       object_cacher->purge_set(object_set);
-    } else if (r) {
+    } else if (r != 0) {
       lderr(cct) << "flush_cache returned " << r << dendl;
     }
-    cache_lock.Lock();
+
     loff_t unclean = object_cacher->release_set(object_set);
-    cache_lock.Unlock();
-    if (unclean) {
+    if (unclean == 0) {
+      r = 0;
+    } else {
       lderr(cct) << "could not release all objects from cache: "
                  << unclean << " bytes remain" << dendl;
-      return -EBUSY;
+      r = -EBUSY;
     }
-    return r;
+    on_finish->complete(r);
   }
 
   void ImageCtx::clear_nonexistence_cache() {
@@ -718,21 +769,27 @@ namespace librbd {
   }
 
   void ImageCtx::flush_async_operations() {
-    C_SaferCond *ctx = new C_SaferCond();
-    flush_async_operations(ctx);
-    ctx->wait();
+    C_SaferCond ctx;
+    flush_async_operations(&ctx);
+    ctx.wait();
   }
 
   void ImageCtx::flush_async_operations(Context *on_finish) {
-    Mutex::Locker l(async_ops_lock);
-    if (async_ops.empty()) {
-      on_finish->complete(0);
-      return;
+    bool complete = false;
+    {
+      Mutex::Locker l(async_ops_lock);
+      if (async_ops.empty()) {
+        complete = true;
+      } else {
+        ldout(cct, 20) << "flush async operations: " << on_finish << " "
+                       << "count=" << async_ops.size() << dendl;
+        async_ops.front()->add_flush_context(on_finish);
+      }
     }
 
-    ldout(cct, 20) << "flush async operations: " << on_finish << " "
-                   << "count=" << async_ops.size() << dendl;
-    async_ops.front()->add_flush_context(on_finish);
+    if (complete) {
+      on_finish->complete(0);
+    }
   }
 
   void ImageCtx::cancel_async_requests() {
diff --git a/src/librbd/ImageCtx.h b/src/librbd/ImageCtx.h
index c8efc03..22f3b80 100644
--- a/src/librbd/ImageCtx.h
+++ b/src/librbd/ImageCtx.h
@@ -38,6 +38,7 @@ namespace librbd {
 
   class AsyncOperation;
   class AsyncRequest;
+  class AsyncResizeRequest;
   class CopyupRequest;
   class ImageWatcher;
 
@@ -89,7 +90,7 @@ namespace librbd {
     RWLock parent_lock; // protects parent_md and parent
     Mutex refresh_lock; // protects refresh_seq and last_refresh
     RWLock object_map_lock; // protects object map updates and object_map itself
-    Mutex async_ops_lock; // protects async_ops
+    Mutex async_ops_lock; // protects async_ops and async_requests
     Mutex copyup_list_lock; // protects copyup_waiting_list
 
     unsigned extra_read_flags;
@@ -127,6 +128,8 @@ namespace librbd {
 
     atomic_t async_request_seq;
 
+    xlist<AsyncResizeRequest*> async_resize_reqs;
+
     /**
      * Either image_name or image_id must be set.
      * If id is not known, pass the empty std::string,
@@ -171,6 +174,7 @@ namespace librbd {
     bool test_features(uint64_t test_features) const;
     int get_flags(librados::snap_t in_snap_id, uint64_t *flags) const;
     bool test_flags(uint64_t test_flags) const;
+    int update_flags(librados::snap_t in_snap_id, uint64_t flag, bool enabled);
 
     const parent_info* get_parent_info(librados::snap_t in_snap_id) const;
     int64_t get_parent_pool_id(librados::snap_t in_snap_id) const;
@@ -190,6 +194,8 @@ namespace librbd {
     int flush_cache();
     void shutdown_cache();
     int invalidate_cache();
+    void invalidate_cache(Context *on_finish);
+    void invalidate_cache_completion(int r, Context *on_finish);
     void clear_nonexistence_cache();
     int register_watch();
     void unregister_watch();
diff --git a/src/librbd/ImageWatcher.cc b/src/librbd/ImageWatcher.cc
index 3e0b522..142c2db 100644
--- a/src/librbd/ImageWatcher.cc
+++ b/src/librbd/ImageWatcher.cc
@@ -100,7 +100,6 @@ int ImageWatcher::unregister_watch() {
   int r = 0;
   {
     RWLock::WLocker l(m_watch_lock);
-    assert(m_watch_state != WATCH_STATE_UNREGISTERED);
     if (m_watch_state == WATCH_STATE_REGISTERED) {
       r = m_image_ctx.md_ctx.unwatch2(m_watch_handle);
     }
@@ -308,7 +307,7 @@ int ImageWatcher::lock() {
       unlock();
       return r;
     }
-    RWLock::RLocker l2(m_image_ctx.snap_lock);
+    RWLock::WLocker l2(m_image_ctx.snap_lock);
     m_image_ctx.object_map.refresh(CEPH_NOSNAP);
   }
 
diff --git a/src/librbd/Makefile.am b/src/librbd/Makefile.am
index a4b21d9..96d0a00 100644
--- a/src/librbd/Makefile.am
+++ b/src/librbd/Makefile.am
@@ -2,6 +2,10 @@ librbd_types_la_SOURCES = \
 	librbd/WatchNotifyTypes.cc
 noinst_LTLIBRARIES += librbd_types.la
 
+if ENABLE_CLIENT
+if WITH_RADOS
+if WITH_RBD
+
 librbd_internal_la_SOURCES = \
 	librbd/AioCompletion.cc \
 	librbd/AioRequest.cc \
@@ -63,3 +67,7 @@ noinst_HEADERS += \
 	librbd/SnapInfo.h \
 	librbd/TaskFinisher.h \
 	librbd/WatchNotifyTypes.h
+
+endif # WITH_RBD
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/librbd/ObjectMap.cc b/src/librbd/ObjectMap.cc
index 4aa3c3b..8099a91 100644
--- a/src/librbd/ObjectMap.cc
+++ b/src/librbd/ObjectMap.cc
@@ -147,7 +147,7 @@ bool ObjectMap::object_may_exist(uint64_t object_no) const
 
 void ObjectMap::refresh(uint64_t snap_id)
 {
-  assert(m_image_ctx.snap_lock.is_locked());
+  assert(m_image_ctx.snap_lock.is_wlocked());
   RWLock::WLocker l(m_image_ctx.object_map_lock);
 
   uint64_t features;
@@ -166,24 +166,27 @@ void ObjectMap::refresh(uint64_t snap_id)
   std::string oid(object_map_name(m_image_ctx.id, snap_id));
   int r = cls_client::object_map_load(&m_image_ctx.md_ctx, oid,
                                       &m_object_map);
-  if (r < 0) { 
+  if (r < 0) {
     lderr(cct) << "error refreshing object map: " << cpp_strerror(r)
                << dendl;
     invalidate();
     m_object_map.clear();
     return;
   }
-  
+
   ldout(cct, 20) << "refreshed object map: " << m_object_map.size()
                  << dendl;
-  
+
   uint64_t num_objs = Striper::get_num_objects(
     m_image_ctx.layout, m_image_ctx.get_image_size(snap_id));
-  if (m_object_map.size() != num_objs) {
-    // resize op might have been interrupted
-    lderr(cct) << "incorrect object map size: " << m_object_map.size()
-               << " != " << num_objs << dendl;
+  if (m_object_map.size() < num_objs) {
+    lderr(cct) << "object map smaller than current object count: "
+               << m_object_map.size() << " != " << num_objs << dendl;
     invalidate();
+  } else if (m_object_map.size() > num_objs) {
+    // resize op might have been interrupted
+    ldout(cct, 1) << "object map larger than current object count: "
+                  << m_object_map.size() << " != " << num_objs << dendl;
   }
 }
 
@@ -332,10 +335,12 @@ void ObjectMap::invalidate() {
 
   CephContext *cct = m_image_ctx.cct;
   lderr(cct) << &m_image_ctx << " invalidating object map" << dendl;
-  m_image_ctx.flags |= RBD_FLAG_OBJECT_MAP_INVALID;
+  m_image_ctx.update_flags(m_image_ctx.snap_id, RBD_FLAG_OBJECT_MAP_INVALID,
+                           true);
 
   librados::ObjectWriteOperation op;
-  cls_client::set_flags(&op, m_image_ctx.flags, RBD_FLAG_OBJECT_MAP_INVALID);
+  cls_client::set_flags(&op, m_image_ctx.snap_id, m_image_ctx.flags,
+                        RBD_FLAG_OBJECT_MAP_INVALID);
 
   int r = m_image_ctx.md_ctx.operate(m_image_ctx.header_oid, &op);
   if (r < 0) {
@@ -390,12 +395,16 @@ bool ObjectMap::Request::invalidate() {
   CephContext *cct = m_image_ctx.cct;
   RWLock::WLocker snap_locker(m_image_ctx.snap_lock);
 
+  // requests shouldn't be running while using snapshots
+  assert(m_image_ctx.snap_id == CEPH_NOSNAP);
+
   lderr(cct) << &m_image_ctx << " invalidating object map" << dendl;
   m_state = STATE_INVALIDATE;
   m_image_ctx.flags |= RBD_FLAG_OBJECT_MAP_INVALID;
 
   librados::ObjectWriteOperation op;
-  cls_client::set_flags(&op, m_image_ctx.flags, RBD_FLAG_OBJECT_MAP_INVALID);
+  cls_client::set_flags(&op, CEPH_NOSNAP, m_image_ctx.flags,
+                        RBD_FLAG_OBJECT_MAP_INVALID);
 
   librados::AioCompletion *rados_completion = create_callback_completion();
   int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid,
diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc
index 7fa2012..c356c79 100644
--- a/src/librbd/internal.cc
+++ b/src/librbd/internal.cc
@@ -160,14 +160,14 @@ namespace librbd {
     assert(!ictx->image_watcher->is_lock_supported() ||
 	   ictx->image_watcher->is_lock_owner());
 
-    C_SaferCond *ctx = new C_SaferCond();
+    C_SaferCond ctx;
     ictx->snap_lock.get_read();
-    AsyncTrimRequest *req = new AsyncTrimRequest(*ictx, ctx, ictx->size,
+    AsyncTrimRequest *req = new AsyncTrimRequest(*ictx, &ctx, ictx->size,
 						 newsize, prog_ctx);
     ictx->snap_lock.put_read();
     req->send();
 
-    int r = ctx->wait();
+    int r = ctx.wait();
     if (r < 0) {
       lderr(ictx->cct) << "warning: failed to remove some object(s): "
 		       << cpp_strerror(r) << dendl;
@@ -454,13 +454,20 @@ namespace librbd {
 
     // need to upgrade to a write lock
     int r = 0;
+    bool acquired_lock = false;
     ictx->owner_lock.put_read();
     {
       RWLock::WLocker l(ictx->owner_lock);
       if (!ictx->image_watcher->is_lock_owner()) {
 	r = ictx->image_watcher->try_lock();
+        acquired_lock = ictx->image_watcher->is_lock_owner();
       }
     }
+    if (acquired_lock) {
+      // finish any AIO that was previously waiting on acquiring the
+      // exclusive lock
+      ictx->flush_async_operations();
+    }
     ictx->owner_lock.get_read();
     return r;
   }
@@ -577,8 +584,11 @@ namespace librbd {
 	  (scan_for_parents(ictx, our_pspec, snap_id) == -ENOENT)) {
 	  r = cls_client::remove_child(&ictx->md_ctx, RBD_CHILDREN,
 				       our_pspec, ictx->id);
-	  if (r < 0)
+	  if (r < 0 && r != -ENOENT) {
+            lderr(ictx->cct) << "snap_remove: failed to deregister from parent "
+                                "image" << dendl;
 	    return r;
+          }
       }
     }
 
@@ -1419,6 +1429,9 @@ reprotect_and_return_err:
 
     RWLock::RLocker l(ictx->snap_lock);
     RWLock::RLocker l2(ictx->parent_lock);
+    if (ictx->parent == NULL) {
+      return -ENOENT;
+    }
 
     parent_spec parent_spec;
 
@@ -1615,13 +1628,20 @@ reprotect_and_return_err:
   int resize(ImageCtx *ictx, uint64_t size, ProgressContext& prog_ctx)
   {
     CephContext *cct = ictx->cct;
+
+    ictx->snap_lock.get_read();
     ldout(cct, 20) << "resize " << ictx << " " << ictx->size << " -> "
 		   << size << dendl;
+    ictx->snap_lock.put_read();
+
+    int r = ictx_check(ictx);
+    if (r < 0) {
+      return r;
+    }
 
     uint64_t request_id = ictx->async_request_seq.inc();
-    int r;
     do {
-      C_SaferCond *ctx;
+      C_SaferCond ctx;
       {
 	RWLock::RLocker l(ictx->owner_lock);
 	while (ictx->image_watcher->is_lock_supported()) {
@@ -1632,22 +1652,26 @@ reprotect_and_return_err:
 	    break;
 	  }
 
+          RWLock::RLocker snap_locker(ictx->snap_lock);
+          if (ictx->snap_id != CEPH_NOSNAP || ictx->read_only) {
+            return -EROFS;
+          }
+
 	  r = ictx->image_watcher->notify_resize(request_id, size, prog_ctx);
 	  if (r != -ETIMEDOUT && r != -ERESTART) {
 	    return r;
 	  }
-	  ldout(ictx->cct, 5) << "resize timed out notifying lock owner" << dendl;
+	  ldout(ictx->cct, 5) << "resize timed out notifying lock owner"
+                              << dendl;
 	}
 
-	ctx = new C_SaferCond();
-	r = async_resize(ictx, ctx, size, prog_ctx);
+	r = async_resize(ictx, &ctx, size, prog_ctx);
 	if (r < 0) {
-	  delete ctx;
 	  return r;
 	}
       }
 
-      r = ctx->wait();
+      r = ctx.wait();
       if (r == -ERESTART) {
 	ldout(ictx->cct, 5) << "resize interrupted: restarting" << dendl;
       }
@@ -1658,6 +1682,7 @@ reprotect_and_return_err:
     ldout(cct, 2) << "resize finished" << dendl;
     return r;
   }
+
   int async_resize(ImageCtx *ictx, Context *ctx, uint64_t size,
 		   ProgressContext &prog_ctx)
   {
@@ -1666,45 +1691,33 @@ reprotect_and_return_err:
 	   ictx->image_watcher->is_lock_owner());
 
     CephContext *cct = ictx->cct;
+    ictx->snap_lock.get_read();
     ldout(cct, 20) << "async_resize " << ictx << " " << ictx->size << " -> "
 		   << size << dendl;
-
-    if (ictx->snap_id != CEPH_NOSNAP || ictx->read_only) {
-      return -EROFS;
-    }
+    ictx->snap_lock.put_read();
 
     int r = ictx_check(ictx);
     if (r < 0) {
       return r;
     }
 
-    uint64_t original_size;
     {
-      ictx->snap_lock.get_read();
-      original_size = ictx->size;
-      ictx->snap_lock.put_read();
-      if (size < original_size) {
-	if (ictx->object_cacher) {
-	  // need to invalidate since we're deleting objects, and
-	  // ObjectCacher doesn't track non-existent objects
-	  r = ictx->invalidate_cache();
-	  if (r < 0) {
-	    return r;
-	  }
-	}
+      RWLock::RLocker snap_locker(ictx->snap_lock);
+      if (ictx->snap_id != CEPH_NOSNAP || ictx->read_only) {
+        return -EROFS;
       }
     }
 
-    async_resize_helper(ictx, ctx, original_size, size, prog_ctx);
+    async_resize_helper(ictx, ctx, size, prog_ctx);
     return 0;
   }
 
-  void async_resize_helper(ImageCtx *ictx, Context *ctx, uint64_t original_size,
-		           uint64_t new_size, ProgressContext& prog_ctx)
+  void async_resize_helper(ImageCtx *ictx, Context *ctx, uint64_t new_size,
+                           ProgressContext& prog_ctx)
   {
     assert(ictx->owner_lock.is_locked());
-    AsyncResizeRequest *req = new AsyncResizeRequest(*ictx, ctx, original_size,
-						     new_size, prog_ctx);
+    AsyncResizeRequest *req = new AsyncResizeRequest(*ictx, ctx, new_size,
+                                                     prog_ctx);
     req->send();
   }
 
@@ -2071,7 +2084,6 @@ reprotect_and_return_err:
 
     RWLock::RLocker l(ictx->owner_lock);
     snap_t snap_id;
-    uint64_t original_size;
     uint64_t new_size;
     {
       RWLock::WLocker l2(ictx->md_lock);
@@ -2103,13 +2115,13 @@ reprotect_and_return_err:
       }
 
       ictx->snap_lock.get_read();
-      original_size = ictx->size;
       new_size = ictx->get_image_size(snap_id);
       ictx->snap_lock.put_read();
 
       // need to flush any pending writes before resizing and rolling back -
       // writes might create new snapshots. Rolling back will replace
       // the current version, so we have to invalidate that too.
+      ictx->flush_async_operations();
       r = ictx->invalidate_cache();
       if (r < 0) {
 	return r;
@@ -2118,10 +2130,10 @@ reprotect_and_return_err:
 
     ldout(cct, 2) << "resizing to snapshot size..." << dendl;
     NoOpProgressContext no_op;
-    C_SaferCond *ctx = new C_SaferCond();
-    async_resize_helper(ictx, ctx, original_size, new_size, no_op);
+    C_SaferCond ctx;
+    async_resize_helper(ictx, &ctx, new_size, no_op);
 
-    r = ctx->wait();
+    r = ctx.wait();
     if (r < 0) {
       lderr(cct) << "Error resizing to snapshot size: "
 		 << cpp_strerror(r) << dendl;
@@ -2453,14 +2465,21 @@ reprotect_and_return_err:
     CephContext *cct = ictx->cct;
     ldout(cct, 20) << "flatten" << dendl;
 
-    if (ictx->read_only || ictx->snap_id != CEPH_NOSNAP) {
-      return -EROFS;
+    int r = ictx_check(ictx);
+    if (r < 0) {
+      return r;
+    }
+
+    {
+      RWLock::RLocker snap_locker(ictx->snap_lock);
+      if (ictx->read_only || ictx->snap_id != CEPH_NOSNAP) {
+        return -EROFS;
+      }
     }
 
     uint64_t request_id = ictx->async_request_seq.inc();
-    int r;
     do {
-      C_SaferCond *ctx;
+      C_SaferCond ctx;
       {
         RWLock::RLocker l(ictx->owner_lock);
         while (ictx->image_watcher->is_lock_supported()) {
@@ -2475,18 +2494,17 @@ reprotect_and_return_err:
           if (r != -ETIMEDOUT && r != -ERESTART) {
             return r;
           }
-          ldout(ictx->cct, 5) << "flatten timed out notifying lock owner" << dendl;
+          ldout(ictx->cct, 5) << "flatten timed out notifying lock owner"
+                              << dendl;
         }
 
-	ctx = new C_SaferCond();
-        r = async_flatten(ictx, ctx, prog_ctx);
+        r = async_flatten(ictx, &ctx, prog_ctx);
         if (r < 0) {
-	  delete ctx;
 	  return r;
         }
       }
 
-      r = ctx->wait();
+      r = ctx.wait();
       if (r == -ERESTART) {
 	ldout(ictx->cct, 5) << "flatten interrupted: restarting" << dendl;
       }
@@ -2506,10 +2524,6 @@ reprotect_and_return_err:
     CephContext *cct = ictx->cct;
     ldout(cct, 20) << "flatten" << dendl;
 
-    if (ictx->read_only || ictx->snap_id != CEPH_NOSNAP) {
-      return -EROFS;
-    }
-
     int r;
     // ictx_check also updates parent data
     if ((r = ictx_check(ictx)) < 0) {
@@ -2526,6 +2540,10 @@ reprotect_and_return_err:
       RWLock::RLocker l(ictx->snap_lock);
       RWLock::RLocker l2(ictx->parent_lock);
 
+      if (ictx->read_only || ictx->snap_id != CEPH_NOSNAP) {
+        return -EROFS;
+      }
+
       // can't flatten a non-clone
       if (ictx->parent_md.spec.pool_id == -1) {
 	lderr(cct) << "image has no parent" << dendl;
@@ -2538,11 +2556,12 @@ reprotect_and_return_err:
 
       snapc = ictx->snapc;
       assert(ictx->parent != NULL);
-      assert(ictx->parent_md.overlap <= ictx->size);
+      r = ictx->get_parent_overlap(CEPH_NOSNAP, &overlap);
+      assert(r == 0);
+      assert(overlap <= ictx->size);
 
       object_size = ictx->get_object_size();
-      overlap = ictx->parent_md.overlap;
-      overlap_objects = Striper::get_num_objects(ictx->layout, overlap); 
+      overlap_objects = Striper::get_num_objects(ictx->layout, overlap);
     }
 
     AsyncFlattenRequest *req =
@@ -2715,7 +2734,9 @@ reprotect_and_return_err:
       return r;
 
     uint64_t mylen = len;
+    ictx->snap_lock.get_read();
     r = clip_io(ictx, off, &mylen);
+    ictx->snap_lock.put_read();
     if (r < 0)
       return r;
 
@@ -2797,7 +2818,9 @@ reprotect_and_return_err:
     if (r < 0)
       return r;
 
+    ictx->snap_lock.get_read();
     r = clip_io(ictx, off, &len);
+    ictx->snap_lock.put_read();
     if (r < 0)
       return r;
 
@@ -3001,7 +3024,9 @@ reprotect_and_return_err:
     int ret;
 
     uint64_t mylen = len;
+    ictx->snap_lock.get_read();
     int r = clip_io(ictx, off, &mylen);
+    ictx->snap_lock.put_read();
     if (r < 0) {
       return r;
     }
@@ -3144,10 +3169,9 @@ reprotect_and_return_err:
   // validate extent against image size; clip to image size if necessary
   int clip_io(ImageCtx *ictx, uint64_t off, uint64_t *len)
   {
-    ictx->snap_lock.get_read();
+    assert(ictx->snap_lock.is_locked());
     uint64_t image_size = ictx->get_image_size(ictx->snap_id);
     bool snap_exists = ictx->snap_exists;
-    ictx->snap_lock.put_read();
 
     if (!snap_exists)
       return -ENOENT;
@@ -3266,32 +3290,37 @@ reprotect_and_return_err:
       return r;
     }
 
-    uint64_t mylen = len;
-    r = clip_io(ictx, off, &mylen);
-    if (r < 0) {
-      return r;
-    }
-
     RWLock::RLocker owner_locker(ictx->owner_lock);
     RWLock::RLocker md_locker(ictx->md_lock);
 
-    ictx->snap_lock.get_read();
-    snapid_t snap_id = ictx->snap_id;
-    ::SnapContext snapc = ictx->snapc;
-    ictx->parent_lock.get_read();
+    uint64_t clip_len = len;
+    snapid_t snap_id;
+    ::SnapContext snapc;
     uint64_t overlap = 0;
-    ictx->get_parent_overlap(ictx->snap_id, &overlap);
-    ictx->parent_lock.put_read();
-    ictx->snap_lock.put_read();
+    {
+      // prevent image size from changing between computing clip and recording
+      // pending async operation
+      RWLock::RLocker snap_locker(ictx->snap_lock);
+      r = clip_io(ictx, off, &clip_len);
+      if (r < 0) {
+        return r;
+      }
 
-    if (snap_id != CEPH_NOSNAP || ictx->read_only) {
-      return -EROFS;
-    }
+      snap_id = ictx->snap_id;
+      snapc = ictx->snapc;
+      ictx->parent_lock.get_read();
+      ictx->get_parent_overlap(ictx->snap_id, &overlap);
+      ictx->parent_lock.put_read();
 
-    ldout(cct, 20) << "  parent overlap " << overlap << dendl;
+      if (snap_id != CEPH_NOSNAP || ictx->read_only) {
+        return -EROFS;
+      }
 
-    c->get();
-    c->init_time(ictx, AIO_TYPE_WRITE);
+      ldout(cct, 20) << "  parent overlap " << overlap << dendl;
+
+      c->get();
+      c->init_time(ictx, AIO_TYPE_WRITE);
+    }
 
     if (ictx->image_watcher->is_lock_supported() &&
 	!ictx->image_watcher->is_lock_owner()) {
@@ -3304,7 +3333,7 @@ reprotect_and_return_err:
     vector<ObjectExtent> extents;
     if (len > 0) {
       Striper::file_to_extents(ictx->cct, ictx->format_string,
-			       &ictx->layout, off, mylen, 0, extents);
+			       &ictx->layout, off, clip_len, 0, extents);
     }
 
     for (vector<ObjectExtent>::iterator p = extents.begin(); p != extents.end(); ++p) {
@@ -3348,7 +3377,7 @@ reprotect_and_return_err:
     c->put();
 
     ictx->perfcounter->inc(l_librbd_aio_wr);
-    ictx->perfcounter->inc(l_librbd_aio_wr_bytes, mylen);
+    ictx->perfcounter->inc(l_librbd_aio_wr_bytes, clip_len);
     return r;
   }
 
@@ -3363,30 +3392,36 @@ reprotect_and_return_err:
       return r;
     }
 
-    r = clip_io(ictx, off, &len);
-    if (r < 0) {
-      return r;
-    }
-
     RWLock::RLocker owner_locker(ictx->owner_lock);
     RWLock::RLocker md_locker(ictx->md_lock);
 
-    // TODO: check for snap
-    ictx->snap_lock.get_read();
-    snapid_t snap_id = ictx->snap_id;
-    ::SnapContext snapc = ictx->snapc;
-    ictx->parent_lock.get_read();
-    uint64_t overlap = 0;
-    ictx->get_parent_overlap(ictx->snap_id, &overlap);
-    ictx->parent_lock.put_read();
-    ictx->snap_lock.put_read();
+    uint64_t clip_len = len;
+    snapid_t snap_id;
+    ::SnapContext snapc;
+    uint64_t overlap;
+    {
+      // prevent image size from changing between computing clip and recording
+      // pending async operation
+      RWLock::RLocker snap_locker(ictx->snap_lock);
+      r = clip_io(ictx, off, &clip_len);
+      if (r < 0) {
+        return r;
+      }
 
-    if (snap_id != CEPH_NOSNAP || ictx->read_only) {
-      return -EROFS;
-    }
+      // TODO: check for snap
+      snap_id = ictx->snap_id;
+      snapc = ictx->snapc;
+      ictx->parent_lock.get_read();
+      ictx->get_parent_overlap(ictx->snap_id, &overlap);
+      ictx->parent_lock.put_read();
 
-    c->get();
-    c->init_time(ictx, AIO_TYPE_DISCARD);
+      if (snap_id != CEPH_NOSNAP || ictx->read_only) {
+        return -EROFS;
+      }
+
+      c->get();
+      c->init_time(ictx, AIO_TYPE_DISCARD);
+    }
 
     if (ictx->image_watcher->is_lock_supported() &&
 	!ictx->image_watcher->is_lock_owner()) {
@@ -3399,7 +3434,7 @@ reprotect_and_return_err:
     vector<ObjectExtent> extents;
     if (len > 0) {
       Striper::file_to_extents(ictx->cct, ictx->format_string,
-			       &ictx->layout, off, len, 0, extents);
+			       &ictx->layout, off, clip_len, 0, extents);
     }
 
     for (vector<ObjectExtent>::iterator p = extents.begin(); p != extents.end(); ++p) {
@@ -3448,7 +3483,7 @@ reprotect_and_return_err:
     c->put();
 
     ictx->perfcounter->inc(l_librbd_aio_discard);
-    ictx->perfcounter->inc(l_librbd_aio_discard_bytes, len);
+    ictx->perfcounter->inc(l_librbd_aio_discard_bytes, clip_len);
     return r;
   }
 
@@ -3537,11 +3572,6 @@ reprotect_and_return_err:
       return r;
     }
 
-    ictx->snap_lock.get_read();
-    snap_t snap_id = ictx->snap_id;
-    ::SnapContext snapc = ictx->snapc;
-    ictx->snap_lock.put_read();
-
     // readahead
     const md_config_t *conf = ictx->cct->_conf;
     if (ictx->object_cacher && conf->rbd_readahead_max_bytes > 0 &&
@@ -3549,34 +3579,44 @@ reprotect_and_return_err:
       readahead(ictx, image_extents, conf);
     }
 
-    // map
+    snap_t snap_id;
+    ::SnapContext snapc;
     map<object_t,vector<ObjectExtent> > object_extents;
-
     uint64_t buffer_ofs = 0;
-    for (vector<pair<uint64_t,uint64_t> >::const_iterator p = image_extents.begin();
-	 p != image_extents.end();
-	 ++p) {
-      uint64_t len = p->second;
-      r = clip_io(ictx, p->first, &len);
-      if (r < 0) {
-	return r;
+    {
+      // prevent image size from changing between computing clip and recording
+      // pending async operation
+      RWLock::RLocker snap_locker(ictx->snap_lock);
+      snap_id = ictx->snap_id;
+      snapc = ictx->snapc;
+
+      // map
+      for (vector<pair<uint64_t,uint64_t> >::const_iterator p =
+             image_extents.begin();
+	   p != image_extents.end(); ++p) {
+        uint64_t len = p->second;
+        r = clip_io(ictx, p->first, &len);
+        if (r < 0) {
+	  return r;
+        }
+        if (len == 0) {
+	  continue;
+        }
+
+        Striper::file_to_extents(ictx->cct, ictx->format_string, &ictx->layout,
+			         p->first, len, 0, object_extents, buffer_ofs);
+        buffer_ofs += len;
       }
-      if (len == 0)
-	continue;
 
-      Striper::file_to_extents(ictx->cct, ictx->format_string, &ictx->layout,
-			       p->first, len, 0, object_extents, buffer_ofs);
-      buffer_ofs += len;
+      c->get();
+      c->init_time(ictx, AIO_TYPE_READ);
     }
 
     int64_t ret;
-
     c->read_buf = buf;
     c->read_buf_len = buffer_ofs;
     c->read_bl = pbl;
 
-    c->get();
-    c->init_time(ictx, AIO_TYPE_READ);
     for (map<object_t,vector<ObjectExtent> >::iterator p = object_extents.begin(); p != object_extents.end(); ++p) {
       for (vector<ObjectExtent>::iterator q = p->second.begin(); q != p->second.end(); ++q) {
 	ldout(ictx->cct, 20) << " oid " << q->oid << " " << q->offset << "~" << q->length
diff --git a/src/librbd/internal.h b/src/librbd/internal.h
index d164f02..64395ca 100644
--- a/src/librbd/internal.h
+++ b/src/librbd/internal.h
@@ -193,8 +193,8 @@ namespace librbd {
   int async_flatten(ImageCtx *ictx, Context *ctx, ProgressContext &prog_ctx);
   int async_resize(ImageCtx *ictx, Context *ctx, uint64_t size,
 		   ProgressContext &prog_ctx);
-  void async_resize_helper(ImageCtx *ictx, Context *ctx, uint64_t original_size,
-			   uint64_t new_size, ProgressContext& prog_ctx);
+  void async_resize_helper(ImageCtx *ictx, Context *ctx, uint64_t new_size,
+                           ProgressContext& prog_ctx);
 
   int aio_write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf,
 		AioCompletion *c, int op_flags);
diff --git a/src/mds/Makefile.am b/src/mds/Makefile.am
index f64318e..f00b3f1 100644
--- a/src/mds/Makefile.am
+++ b/src/mds/Makefile.am
@@ -1,3 +1,6 @@
+if ENABLE_SERVER
+if WITH_MDS
+
 libmds_la_SOURCES = \
 	mds/Capability.cc \
 	mds/MDS.cc \
@@ -91,4 +94,5 @@ noinst_HEADERS += \
 	mds/events/ETableServer.h \
 	mds/events/EUpdate.h
 
-
+endif # WITH_MDS
+endif # ENABLE_SERVER
diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc
index 05bb73f..aa1f674 100644
--- a/src/mon/LogMonitor.cc
+++ b/src/mon/LogMonitor.cc
@@ -596,7 +596,7 @@ void LogMonitor::update_log_channels()
 
   int r = get_conf_str_map_helper(g_conf->mon_cluster_log_to_syslog,
                                   oss, &channels.log_to_syslog,
-                                  CLOG_CHANNEL_DEFAULT);
+                                  CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog'" << dendl;
     return;
@@ -604,7 +604,7 @@ void LogMonitor::update_log_channels()
 
   r = get_conf_str_map_helper(g_conf->mon_cluster_log_to_syslog_level,
                               oss, &channels.syslog_level,
-                              CLOG_CHANNEL_DEFAULT);
+                              CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog_level'"
          << dendl;
@@ -613,7 +613,7 @@ void LogMonitor::update_log_channels()
 
   r = get_conf_str_map_helper(g_conf->mon_cluster_log_to_syslog_facility,
                               oss, &channels.syslog_facility,
-                              CLOG_CHANNEL_DEFAULT);
+                              CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog_facility'"
          << dendl;
@@ -622,7 +622,7 @@ void LogMonitor::update_log_channels()
 
   r = get_conf_str_map_helper(g_conf->mon_cluster_log_file, oss,
                               &channels.log_file,
-                              CLOG_CHANNEL_DEFAULT);
+                              CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_file'" << dendl;
     return;
@@ -630,7 +630,7 @@ void LogMonitor::update_log_channels()
 
   r = get_conf_str_map_helper(g_conf->mon_cluster_log_file_level, oss,
                               &channels.log_file_level,
-                              CLOG_CHANNEL_DEFAULT);
+                              CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_file_level'"
          << dendl;
diff --git a/src/mon/LogMonitor.h b/src/mon/LogMonitor.h
index cf87013..4cbeb6e 100644
--- a/src/mon/LogMonitor.h
+++ b/src/mon/LogMonitor.h
@@ -71,17 +71,17 @@ private:
 
     bool do_log_to_syslog(const string &channel) {
       return (get_str_map_key(log_to_syslog, channel,
-                              &CLOG_CHANNEL_DEFAULT) == "true");
+                              &CLOG_CONFIG_DEFAULT_KEY) == "true");
     }
 
     string get_facility(const string &channel) {
       return get_str_map_key(syslog_facility, channel,
-                             &CLOG_CHANNEL_DEFAULT);
+                             &CLOG_CONFIG_DEFAULT_KEY);
     }
 
     string get_level(const string &channel) {
       return get_str_map_key(syslog_level, channel,
-                             &CLOG_CHANNEL_DEFAULT);
+                             &CLOG_CONFIG_DEFAULT_KEY);
     }
 
     string get_log_file(const string &channel) {
@@ -90,8 +90,7 @@ private:
 
       if (expanded_log_file.count(channel) == 0) {
         string fname = expand_channel_meta(
-            get_str_map_key(log_file, channel,
-              &CLOG_CHANNEL_DEFAULT),
+            get_str_map_key(log_file, channel, &CLOG_CONFIG_DEFAULT_KEY),
             channel);
         expanded_log_file[channel] = fname;
 
@@ -104,7 +103,7 @@ private:
 
     string get_log_file_level(const string &channel) {
       return get_str_map_key(log_file_level, channel,
-                             &CLOG_CHANNEL_DEFAULT);
+                             &CLOG_CONFIG_DEFAULT_KEY);
     }
   } channels;
 
diff --git a/src/mon/Makefile.am b/src/mon/Makefile.am
index 6016355..8c96944 100644
--- a/src/mon/Makefile.am
+++ b/src/mon/Makefile.am
@@ -2,6 +2,9 @@ libmon_types_la_SOURCES = \
 	mon/PGMap.cc
 noinst_LTLIBRARIES += libmon_types.la
 
+if ENABLE_SERVER
+if WITH_MON
+
 libmon_la_SOURCES = \
 	mon/Monitor.cc \
 	mon/Paxos.cc \
@@ -47,3 +50,5 @@ noinst_HEADERS += \
 	mon/Session.h \
 	mon/mon_types.h
 
+endif # WITH_MON
+endif # ENABLE_SERVER
diff --git a/src/mon/MonCap.cc b/src/mon/MonCap.cc
index 059eeab..989893b 100644
--- a/src/mon/MonCap.cc
+++ b/src/mon/MonCap.cc
@@ -13,10 +13,10 @@
  */
 
 #include <boost/config/warning_disable.hpp>
+#include <boost/spirit/include/qi_uint.hpp>
 #include <boost/spirit/include/qi.hpp>
 #include <boost/fusion/include/std_pair.hpp>
 #include <boost/spirit/include/phoenix.hpp>
-#include <boost/spirit/include/qi_uint.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
 
@@ -163,6 +163,15 @@ void MonCapGrant::expand_profile(EntityName name) const
     profile_grants.back().command_args["caps_osd"] = StringConstraint("allow rwx", "");
     profile_grants.back().command_args["caps_mds"] = StringConstraint("allow", "");
   }
+  if (profile == "bootstrap-rgw") {
+    profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));  // read monmap
+    profile_grants.push_back(MonCapGrant("osd", MON_CAP_R));  // read osdmap
+    profile_grants.push_back(MonCapGrant("mon getmap"));
+    profile_grants.push_back(MonCapGrant("auth get-or-create"));  // FIXME: this can expose other mds keys
+    profile_grants.back().command_args["entity"] = StringConstraint("", "client.rgw.");
+    profile_grants.back().command_args["caps_mon"] = StringConstraint("allow rw", "");
+    profile_grants.back().command_args["caps_osd"] = StringConstraint("allow rwx", "");
+  }
   if (profile == "fs-client") {
     profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));
     profile_grants.push_back(MonCapGrant("mds", MON_CAP_R));
diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc
index aafc56c..70cb798 100644
--- a/src/mon/Monitor.cc
+++ b/src/mon/Monitor.cc
@@ -437,6 +437,7 @@ void Monitor::write_features(MonitorDBStore::TransactionRef t)
 const char** Monitor::get_tracked_conf_keys() const
 {
   static const char* KEYS[] = {
+    "crushtool", // helpful for testing
     "mon_lease",
     "mon_lease_renew_interval",
     "mon_lease_ack_timeout",
@@ -3667,7 +3668,7 @@ void Monitor::timecheck_start_round()
     dout(10) << __func__ << " there's a timecheck going on" << dendl;
     utime_t curr_time = ceph_clock_now(g_ceph_context);
     double max = g_conf->mon_timecheck_interval*3;
-    if (curr_time - timecheck_round_start > max) {
+    if (curr_time - timecheck_round_start < max) {
       dout(10) << __func__ << " keep current round going" << dendl;
       goto out;
     } else {
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
index 71bea3f..261d21e 100644
--- a/src/mon/OSDMonitor.cc
+++ b/src/mon/OSDMonitor.cc
@@ -4526,12 +4526,17 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
     dout(10) << " testing map" << dendl;
     stringstream ess;
     CrushTester tester(crush, ess);
-    int r = tester.test_with_crushtool();
+    int r = tester.test_with_crushtool(g_conf->crushtool,
+				       g_conf->mon_lease);
     if (r < 0) {
-      derr << "error on crush map: " << ess.str() << dendl;
-      ss << "Failed to parse crushmap: " << ess.str();
-      err = r;
-      goto reply;
+      if (r == -EINTR) {
+	ss << "(note: crushtool tests not run because they took too long) ";
+      } else {
+	derr << "error on crush map: " << ess.str() << dendl;
+	ss << "Failed to parse crushmap: " << ess.str();
+	err = r;
+	goto reply;
+      }
     }
 
     dout(10) << " result " << ess.str() << dendl;
@@ -5138,7 +5143,11 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
       }
       if (!force) {
 	err = -EPERM;
-	ss << "will not override erasure code profile " << name;
+	ss << "will not override erasure code profile " << name
+	   << " because the existing profile "
+	   << osdmap.get_erasure_code_profile(name)
+	   << " is different from the proposed profile "
+	   << profile_map;
 	goto reply;
       }
     }
@@ -6450,6 +6459,7 @@ done:
       return true;
     }
     np->tiers.insert(tierpool_id);
+    np->read_tier = np->write_tier = tierpool_id;
     np->set_snap_epoch(pending_inc.epoch); // tier will update to our snap info
     ntp->tier_of = pool_id;
     ntp->cache_mode = mode;
diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc
index 86671df..4c90d9a 100644
--- a/src/mon/PGMap.cc
+++ b/src/mon/PGMap.cc
@@ -852,53 +852,51 @@ void PGMap::dump_osd_sum_stats(ostream& ss) const
      << std::endl;
 }
 
-void PGMap::get_stuck_stats(PGMap::StuckPG type, utime_t cutoff,
+void PGMap::get_stuck_stats(int types, utime_t cutoff,
 			    ceph::unordered_map<pg_t, pg_stat_t>& stuck_pgs) const
 {
+  assert(types != 0);
   for (ceph::unordered_map<pg_t, pg_stat_t>::const_iterator i = pg_stat.begin();
        i != pg_stat.end();
        ++i) {
-    utime_t val;
-    switch (type) {
-    case STUCK_INACTIVE:
-      if (i->second.state & PG_STATE_ACTIVE)
-	continue;
-      val = i->second.last_active;
-      break;
-    case STUCK_UNCLEAN:
-      if (i->second.state & PG_STATE_CLEAN)
-	continue;
-      val = i->second.last_clean;
-      break;
-    case STUCK_DEGRADED:
-      if ((i->second.state & PG_STATE_DEGRADED) == 0)
-	continue;
-      val = i->second.last_undegraded;
-      break;
-    case STUCK_UNDERSIZED:
-      if ((i->second.state & PG_STATE_UNDERSIZED) == 0)
-	continue;
-      val = i->second.last_fullsized;
-      break;
-    case STUCK_STALE:
-      if ((i->second.state & PG_STATE_STALE) == 0)
-	continue;
-      val = i->second.last_unstale;
-      break;
-    default:
-      assert(0 == "invalid type");
+    utime_t val = cutoff; // don't care about >= cutoff so that is infinity
+
+    if ((types & STUCK_INACTIVE) && ! (i->second.state & PG_STATE_ACTIVE)) {
+      if (i->second.last_active < val)
+        val = i->second.last_active;
+    }
+
+    if ((types & STUCK_UNCLEAN) && ! (i->second.state & PG_STATE_CLEAN)) {
+      if (i->second.last_clean < val)
+        val = i->second.last_clean;
+    }
+
+    if ((types & STUCK_DEGRADED) && (i->second.state & PG_STATE_DEGRADED)) {
+      if (i->second.last_undegraded < val)
+        val = i->second.last_undegraded;
+    }
+
+    if ((types & STUCK_UNDERSIZED) && (i->second.state & PG_STATE_UNDERSIZED)) {
+      if (i->second.last_fullsized < val)
+        val = i->second.last_fullsized;
+    }
+
+    if ((types & STUCK_STALE) && (i->second.state & PG_STATE_STALE)) {
+      if (i->second.last_unstale < val)
+        val = i->second.last_unstale;
     }
 
+    // val is now the earliest any of the requested stuck states began
     if (val < cutoff) {
       stuck_pgs[i->first] = i->second;
     }
   }
 }
 
-void PGMap::dump_stuck(Formatter *f, PGMap::StuckPG type, utime_t cutoff) const
+void PGMap::dump_stuck(Formatter *f, int types, utime_t cutoff) const
 {
   ceph::unordered_map<pg_t, pg_stat_t> stuck_pg_stats;
-  get_stuck_stats(type, cutoff, stuck_pg_stats);
+  get_stuck_stats(types, cutoff, stuck_pg_stats);
   f->open_array_section("stuck_pg_stats");
   for (ceph::unordered_map<pg_t,pg_stat_t>::const_iterator i = stuck_pg_stats.begin();
        i != stuck_pg_stats.end();
@@ -911,10 +909,10 @@ void PGMap::dump_stuck(Formatter *f, PGMap::StuckPG type, utime_t cutoff) const
   f->close_section();
 }
 
-void PGMap::dump_stuck_plain(ostream& ss, PGMap::StuckPG type, utime_t cutoff) const
+void PGMap::dump_stuck_plain(ostream& ss, int types, utime_t cutoff) const
 {
   ceph::unordered_map<pg_t, pg_stat_t> stuck_pg_stats;
-  get_stuck_stats(type, cutoff, stuck_pg_stats);
+  get_stuck_stats(types, cutoff, stuck_pg_stats);
   if (!stuck_pg_stats.empty())
     dump_pg_stats_plain(ss, stuck_pg_stats, true);
 }
diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h
index 1e86225..f151bf6 100644
--- a/src/mon/PGMap.h
+++ b/src/mon/PGMap.h
@@ -183,14 +183,12 @@ public:
   set<pg_t> creating_pgs;   // lru: front = new additions, back = recently pinged
   map<int,set<pg_t> > creating_pgs_by_osd;
 
-  enum StuckPG {
-    STUCK_INACTIVE,
-    STUCK_UNCLEAN,
-    STUCK_UNDERSIZED,
-    STUCK_DEGRADED,
-    STUCK_STALE,
-    STUCK_NONE
-  };
+  // Bits that use to be enum StuckPG
+  static const int STUCK_INACTIVE = (1<<0);
+  static const int STUCK_UNCLEAN = (1<<1);
+  static const int STUCK_UNDERSIZED = (1<<2);
+  static const int STUCK_DEGRADED = (1<<3);
+  static const int STUCK_STALE = (1<<4);
   
   PGMap()
     : version(0),
@@ -272,10 +270,10 @@ public:
   void dump_pg_stats_plain(ostream& ss,
 			   const ceph::unordered_map<pg_t, pg_stat_t>& pg_stats,
 			   bool brief) const;
-  void get_stuck_stats(StuckPG type, utime_t cutoff,
+  void get_stuck_stats(int types, utime_t cutoff,
 		       ceph::unordered_map<pg_t, pg_stat_t>& stuck_pgs) const;
-  void dump_stuck(Formatter *f, StuckPG type, utime_t cutoff) const;
-  void dump_stuck_plain(ostream& ss, StuckPG type, utime_t cutoff) const;
+  void dump_stuck(Formatter *f, int types, utime_t cutoff) const;
+  void dump_stuck_plain(ostream& ss, int types, utime_t cutoff) const;
 
   void dump(ostream& ss) const;
   void dump_basic(ostream& ss) const;
diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc
index 528c6bc..e699efb 100644
--- a/src/mon/PGMonitor.cc
+++ b/src/mon/PGMonitor.cc
@@ -1867,7 +1867,8 @@ bool PGMonitor::prepare_command(MMonCommand *m)
   return true;
 }
 
-static void note_stuck_detail(enum PGMap::StuckPG what,
+// Only called with a single bit set in "what"
+static void note_stuck_detail(int what,
 			      ceph::unordered_map<pg_t,pg_stat_t>& stuck_pgs,
 			      list<pair<health_status_t,string> > *detail)
 {
@@ -2240,31 +2241,32 @@ int PGMonitor::dump_stuck_pg_stats(stringstream &ds,
 				   int threshold,
 				   vector<string>& args) const
 {
-  PGMap::StuckPG stuck_type;
-  string type = args[0];
-
-  if (type == "inactive")
-    stuck_type = PGMap::STUCK_INACTIVE;
-  else if (type == "unclean")
-    stuck_type = PGMap::STUCK_UNCLEAN;
-  else if (type == "undersized")
-    stuck_type = PGMap::STUCK_UNDERSIZED;
-  else if (type == "degraded")
-    stuck_type = PGMap::STUCK_DEGRADED;
-  else if (type == "stale")
-    stuck_type = PGMap::STUCK_STALE;
-  else {
-    ds << "Unknown type: " << type << std::endl;
-    return 0;
+  int stuck_types = 0;
+
+  for (vector<string>::iterator i = args.begin() ; i != args.end(); ++i) {
+    if (*i == "inactive")
+      stuck_types |= PGMap::STUCK_INACTIVE;
+    else if (*i == "unclean")
+      stuck_types |= PGMap::STUCK_UNCLEAN;
+    else if (*i == "undersized")
+      stuck_types |= PGMap::STUCK_UNDERSIZED;
+    else if (*i == "degraded")
+      stuck_types |= PGMap::STUCK_DEGRADED;
+    else if (*i == "stale")
+      stuck_types |= PGMap::STUCK_STALE;
+    else {
+      ds << "Unknown type: " << *i << std::endl;
+      return 0;
+    }
   }
 
   utime_t now(ceph_clock_now(g_ceph_context));
   utime_t cutoff = now - utime_t(threshold, 0);
 
   if (!f) {
-    pg_map.dump_stuck_plain(ds, stuck_type, cutoff);
+    pg_map.dump_stuck_plain(ds, stuck_types, cutoff);
   } else {
-    pg_map.dump_stuck(f, stuck_type, cutoff);
+    pg_map.dump_stuck(f, stuck_types, cutoff);
     f->flush(ds);
   }
 
diff --git a/src/mon/mon_types.h b/src/mon/mon_types.h
index c3a3997..d7346cf 100644
--- a/src/mon/mon_types.h
+++ b/src/mon/mon_types.h
@@ -56,6 +56,13 @@ struct LevelDBStoreStats {
   uint64_t bytes_misc;
   utime_t last_update;
 
+  LevelDBStoreStats() :
+    bytes_total(0),
+    bytes_sst(0),
+    bytes_log(0),
+    bytes_misc(0)
+  {}
+
   void dump(Formatter *f) const {
     assert(f != NULL);
     f->dump_int("bytes_total", bytes_total);
@@ -84,6 +91,16 @@ struct LevelDBStoreStats {
     ::decode(last_update, p);
     DECODE_FINISH(p);
   }
+
+  static void generate_test_instances(list<LevelDBStoreStats*>& ls) {
+    ls.push_back(new LevelDBStoreStats);
+    ls.push_back(new LevelDBStoreStats);
+    ls.back()->bytes_total = 1024*1024;
+    ls.back()->bytes_sst = 512*1024;
+    ls.back()->bytes_log = 256*1024;
+    ls.back()->bytes_misc = 256*1024;
+    ls.back()->last_update = utime_t();
+  }
 };
 WRITE_CLASS_ENCODER(LevelDBStoreStats)
 
diff --git a/src/msg/xio/XioConnection.h b/src/msg/xio/XioConnection.h
index 21b19d0..6ab116d 100644
--- a/src/msg/xio/XioConnection.h
+++ b/src/msg/xio/XioConnection.h
@@ -352,6 +352,6 @@ public:
   }
 };
 
-typedef boost::intrusive_ptr<XioLoopbackConnection> LoopbackConnectionRef;
+typedef boost::intrusive_ptr<XioLoopbackConnection> XioLoopbackConnectionRef;
 
 #endif /* XIO_CONNECTION_H */
diff --git a/src/msg/xio/XioMessenger.cc b/src/msg/xio/XioMessenger.cc
index f5c6506..de292c2 100644
--- a/src/msg/xio/XioMessenger.cc
+++ b/src/msg/xio/XioMessenger.cc
@@ -251,7 +251,7 @@ XioMessenger::XioMessenger(CephContext *cct, entity_name_t name,
     shutdown_called(false),
     portals(this, cct->_conf->xio_portal_threads),
     dispatch_strategy(ds),
-    loop_con(this),
+    loop_con(new XioLoopbackConnection(this)),
     special_handling(0),
     sh_mtx("XioMessenger session mutex"),
     sh_cond()
@@ -726,11 +726,10 @@ static inline XioMsg* pool_alloc_xio_msg(Message *m, XioConnection *xcon,
 
 int XioMessenger::_send_message(Message *m, Connection *con)
 {
-  if (con == &loop_con) {
+  if (con == loop_con.get() /* intrusive_ptr get() */) {
     m->set_connection(con);
     m->set_src(get_myinst().name);
-    XioLoopbackConnection *xlcon = static_cast<XioLoopbackConnection*>(con);
-    m->set_seq(xlcon->next_seq());
+    m->set_seq(loop_con->next_seq());
     ds_dispatch(m);
     return 0;
   }
diff --git a/src/msg/xio/XioMessenger.h b/src/msg/xio/XioMessenger.h
index 8cec6d9..fe947fa 100644
--- a/src/msg/xio/XioMessenger.h
+++ b/src/msg/xio/XioMessenger.h
@@ -39,7 +39,7 @@ private:
   XioConnection::EntitySet conns_entity_map;
   XioPortals portals;
   DispatchStrategy* dispatch_strategy;
-  XioLoopbackConnection loop_con;
+  XioLoopbackConnectionRef loop_con;
   uint32_t special_handling;
   Mutex sh_mtx;
   Cond sh_cond;
@@ -57,7 +57,7 @@ public:
 
   virtual void set_myaddr(const entity_addr_t& a) {
     Messenger::set_myaddr(a);
-    loop_con.set_peer_addr(a);
+    loop_con->set_peer_addr(a);
   }
 
   int _send_message(Message *m, const entity_inst_t &dest);
diff --git a/src/msg/xio/XioPortal.h b/src/msg/xio/XioPortal.h
index 148f09b..aaa26f9 100644
--- a/src/msg/xio/XioPortal.h
+++ b/src/msg/xio/XioPortal.h
@@ -201,8 +201,7 @@ public:
     submit_q.enq(xcon, send_q);
   }
 
-  void requeue_all_xcon(XioMsg* xmsg,
-			XioConnection* xcon,
+  void requeue_all_xcon(XioConnection* xcon,
 			XioSubmit::Queue::iterator& q_iter,
 			XioSubmit::Queue& send_q) {
     // XXX gather all already-dequeued outgoing messages for xcon
@@ -210,8 +209,8 @@ public:
     // and mark the connection as flow-controlled
     XioSubmit::Queue requeue_q;
     XioSubmit *xs;
-    requeue_q.push_back(*xmsg);
-    ++q_iter;
+    XioMsg *xmsg;
+
     while (q_iter != send_q.end()) {
       xs = &(*q_iter);
       // skip retires and anything for other connections
@@ -273,7 +272,7 @@ public:
 		xio_qdepth_high = xcon->xio_qdepth_high_mark();
 		if (unlikely((xcon->send_ctr + xmsg->hdr.msg_cnt) >
 			     xio_qdepth_high)) {
-		  requeue_all_xcon(xmsg, xcon, q_iter, send_q);
+		  requeue_all_xcon(xcon, q_iter, send_q);
 		  goto restart;
 		}
 
@@ -292,7 +291,7 @@ public:
 		switch (code) {
 		case XIO_E_TX_QUEUE_OVERFLOW:
 		{
-		  requeue_all_xcon(xmsg, xcon, q_iter, send_q);
+		  requeue_all_xcon(xcon, q_iter, send_q);
 		  goto restart;
 		}
 		  break;
diff --git a/src/ocf/Makefile.in b/src/ocf/Makefile.in
index f9a4070..e5b58a1 100644
--- a/src/ocf/Makefile.in
+++ b/src/ocf/Makefile.in
@@ -219,6 +219,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@
diff --git a/src/os/DBObjectMap.cc b/src/os/DBObjectMap.cc
index 6e96bc8..b856849 100644
--- a/src/os/DBObjectMap.cc
+++ b/src/os/DBObjectMap.cc
@@ -984,6 +984,8 @@ int DBObjectMap::upgrade_to_v2()
   }
 
   state.v = 2;
+
+  Mutex::Locker l(header_lock);
   KeyValueDB::Transaction t = db->get_transaction();
   write_state(t);
   db->submit_transaction_sync(t);
@@ -1031,7 +1033,6 @@ int DBObjectMap::init(bool do_upgrade)
 int DBObjectMap::sync(const ghobject_t *oid,
 		      const SequencerPosition *spos) {
   KeyValueDB::Transaction t = db->get_transaction();
-  write_state(t);
   if (oid) {
     assert(spos);
     MapHeaderLock hl(this, *oid);
@@ -1042,11 +1043,18 @@ int DBObjectMap::sync(const ghobject_t *oid,
       header->spos = *spos;
       set_map_header(hl, *oid, *header, t);
     }
+    Mutex::Locker l(header_lock);
+    write_state(t);
+    return db->submit_transaction_sync(t);
+  } else {
+    Mutex::Locker l(header_lock);
+    write_state(t);
+    return db->submit_transaction_sync(t);
   }
-  return db->submit_transaction_sync(t);
 }
 
 int DBObjectMap::write_state(KeyValueDB::Transaction _t) {
+  assert(header_lock.is_locked_by_me());
   dout(20) << "dbobjectmap: seq is " << state.seq << dendl;
   KeyValueDB::Transaction t = _t ? _t : db->get_transaction();
   bufferlist bl;
diff --git a/src/os/Makefile.am b/src/os/Makefile.am
index d12adba..2638810 100644
--- a/src/os/Makefile.am
+++ b/src/os/Makefile.am
@@ -3,6 +3,8 @@ libos_types_la_SOURCES = \
 libos_types_la_CXXFLAGS = ${AM_CXXFLAGS}
 noinst_LTLIBRARIES += libos_types.la
 
+if ENABLE_SERVER
+
 libos_la_SOURCES = \
 	os/chain_xattr.cc \
 	os/DBObjectMap.cc \
@@ -99,3 +101,5 @@ libos_la_CXXFLAGS += -std=gnu++11
 libos_la_LIBADD += -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a
 noinst_HEADERS += os/KineticStore.h
 endif
+
+endif # ENABLE_SERVER
diff --git a/src/os/MemStore.cc b/src/os/MemStore.cc
index 66ad557..a1e1b27 100644
--- a/src/os/MemStore.cc
+++ b/src/os/MemStore.cc
@@ -1243,6 +1243,7 @@ int MemStore::_omap_clear(coll_t cid, const ghobject_t &oid)
   if (!o)
     return -ENOENT;
   o->omap.clear();
+  o->omap_header.clear();
   return 0;
 }
 
diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc
index 951b249..845ea83 100644
--- a/src/osd/ECBackend.cc
+++ b/src/osd/ECBackend.cc
@@ -805,6 +805,7 @@ void ECBackend::handle_sub_write(
 {
   if (msg)
     msg->mark_started();
+  assert(!get_parent()->get_log().get_missing().is_missing(op.soid));
   if (!get_parent()->pgb_is_primary())
     get_parent()->update_stats(op.stats);
   ObjectStore::Transaction *localt = new ObjectStore::Transaction;
@@ -1542,13 +1543,6 @@ void ECBackend::start_write(Op *op) {
       trans.find(i->shard);
     assert(iter != trans.end());
     bool should_send = get_parent()->should_send_op(*i, op->hoid);
-    if (should_send) {
-      dout(10) << __func__ << ": sending transaction for object "
-	       << op->hoid << " to shard " << *i << dendl;
-    } else {
-      dout(10) << __func__ << ": NOT sending transaction for object "
-	       << op->hoid << " to shard " << *i << dendl;
-    }
     pg_stat_t stats =
       should_send ?
       get_info().stats :
diff --git a/src/osd/ECTransaction.cc b/src/osd/ECTransaction.cc
index 0a2af7d..e1cf386 100644
--- a/src/osd/ECTransaction.cc
+++ b/src/osd/ECTransaction.cc
@@ -28,7 +28,9 @@ struct AppendObjectsGenerator: public boost::static_visitor<void> {
   void operator()(const ECTransaction::AppendOp &op) {
     out->insert(op.oid);
   }
-  void operator()(const ECTransaction::TouchOp &op) {}
+  void operator()(const ECTransaction::TouchOp &op) {
+    out->insert(op.oid);
+  }
   void operator()(const ECTransaction::CloneOp &op) {
     out->insert(op.source);
     out->insert(op.target);
@@ -114,6 +116,20 @@ struct TransGenerator : public boost::static_visitor<void> {
       i->second.touch(
 	get_coll_ct(i->first, op.oid),
 	ghobject_t(op.oid, ghobject_t::NO_GEN, i->first));
+
+      /* No change, but write it out anyway in case the object did not
+       * previously exist. */
+      assert(hash_infos.count(op.oid));
+      ECUtil::HashInfoRef hinfo = hash_infos[op.oid];
+      bufferlist hbuf;
+      ::encode(
+	*hinfo,
+	hbuf);
+      i->second.setattr(
+	get_coll_ct(i->first, op.oid),
+	ghobject_t(op.oid, ghobject_t::NO_GEN, i->first),
+	ECUtil::get_hinfo_key(),
+	hbuf);
     }
   }
   void operator()(const ECTransaction::AppendOp &op) {
diff --git a/src/osd/Makefile.am b/src/osd/Makefile.am
index 2338f18..7998d4d 100644
--- a/src/osd/Makefile.am
+++ b/src/osd/Makefile.am
@@ -5,6 +5,9 @@ libosd_types_la_SOURCES = \
 libosd_types_la_CXXFLAGS = ${AM_CXXFLAGS}
 noinst_LTLIBRARIES += libosd_types.la
 
+if ENABLE_SERVER
+if WITH_OSD
+
 libosd_la_SOURCES = \
 	osd/PG.cc \
 	osd/ReplicatedPG.cc \
@@ -25,6 +28,9 @@ libosd_la_SOURCES = \
 	objclass/class_api.cc
 
 libosd_la_CXXFLAGS = ${AM_CXXFLAGS}
+if WITH_KINETIC
+libosd_la_CXXFLAGS += -std=gnu++11
+endif
 libosd_la_LIBADD = $(LIBOSDC) $(LIBOS) $(LIBOSD_TYPES) $(LIBOS_TYPES)
 if WITH_LTTNG
 libosd_la_LIBADD += $(LIBOSD_TP)
@@ -54,6 +60,5 @@ noinst_HEADERS += \
 	osd/Watch.h \
 	osd/osd_types.h
 
-if WITH_KINETIC
-libosd_la_CXXFLAGS += -std=gnu++11
-endif
+endif # WITH_OSD
+endif # ENABLE_SERVER
diff --git a/src/osd/OSD.h b/src/osd/OSD.h
index a8e6990..c8e5b8f 100644
--- a/src/osd/OSD.h
+++ b/src/osd/OSD.h
@@ -2173,21 +2173,20 @@ protected:
     void _process(
       MOSDRepScrub *msg,
       ThreadPool::TPHandle &handle) {
-      osd->osd_lock.Lock();
-      if (osd->is_stopping()) {
-	osd->osd_lock.Unlock();
-	return;
-      }
-      if (osd->_have_pg(msg->pgid)) {
-	PG *pg = osd->_lookup_lock_pg(msg->pgid);
-	osd->osd_lock.Unlock();
-	pg->replica_scrub(msg, handle);
-	msg->put();
-	pg->unlock();
-      } else {
-	msg->put();
-	osd->osd_lock.Unlock();
+      PG *pg = NULL;
+      {
+	Mutex::Locker lock(osd->osd_lock);
+	if (osd->is_stopping() ||
+	    !osd->_have_pg(msg->pgid)) {
+	  msg->put();
+	  return;
+	}
+	pg = osd->_lookup_lock_pg(msg->pgid);
       }
+      assert(pg);
+      pg->replica_scrub(msg, handle);
+      msg->put();
+      pg->unlock();
     }
     void _clear() {
       while (!rep_scrub_queue.empty()) {
diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc
index 40b88c0..1700f6b 100644
--- a/src/osd/OSDMap.cc
+++ b/src/osd/OSDMap.cc
@@ -1325,6 +1325,11 @@ int OSDMap::apply_incremental(const Incremental &inc)
   }
 
   // erasure_code_profiles
+  for (vector<string>::const_iterator i = inc.old_erasure_code_profiles.begin();
+       i != inc.old_erasure_code_profiles.end();
+       ++i)
+    erasure_code_profiles.erase(*i);
+  
   for (map<string,map<string,string> >::const_iterator i =
 	 inc.new_erasure_code_profiles.begin();
        i != inc.new_erasure_code_profiles.end();
@@ -1332,11 +1337,6 @@ int OSDMap::apply_incremental(const Incremental &inc)
     set_erasure_code_profile(i->first, i->second);
   }
   
-  for (vector<string>::const_iterator i = inc.old_erasure_code_profiles.begin();
-       i != inc.old_erasure_code_profiles.end();
-       ++i)
-    erasure_code_profiles.erase(*i);
-  
   // up/down
   for (map<int32_t,uint8_t>::const_iterator i = inc.new_state.begin();
        i != inc.new_state.end();
diff --git a/src/osd/PG.cc b/src/osd/PG.cc
index c124f7f..7301094 100644
--- a/src/osd/PG.cc
+++ b/src/osd/PG.cc
@@ -280,8 +280,12 @@ void PG::proc_master_log(
   peer_info[from] = oinfo;
   dout(10) << " peer osd." << from << " now " << oinfo << " " << omissing << dendl;
   might_have_unfound.insert(from);
-  info.last_epoch_started = oinfo.last_epoch_started;
+
+  // See doc/dev/osd_internals/last_epoch_started
+  if (oinfo.last_epoch_started > info.last_epoch_started)
+    info.last_epoch_started = oinfo.last_epoch_started;
   info.history.merge(oinfo.history);
+  assert(info.last_epoch_started >= info.history.last_epoch_started);
 
   peer_missing[from].swap(omissing);
 }
@@ -893,7 +897,8 @@ map<pg_shard_t, pg_info_t>::const_iterator PG::find_best_info(
   for (map<pg_shard_t, pg_info_t>::const_iterator i = infos.begin();
        i != infos.end();
        ++i) {
-    if (max_last_epoch_started_found < i->second.history.last_epoch_started) {
+    if (!cct->_conf->osd_find_best_info_ignore_history_les &&
+	max_last_epoch_started_found < i->second.history.last_epoch_started) {
       min_last_update_acceptable = eversion_t::max();
       max_last_epoch_started_found = i->second.history.last_epoch_started;
     }
@@ -920,6 +925,9 @@ map<pg_shard_t, pg_info_t>::const_iterator PG::find_best_info(
     // Only consider peers with last_update >= min_last_update_acceptable
     if (p->second.last_update < min_last_update_acceptable)
       continue;
+    // disqualify anyone with a too old last_epoch_started
+    if (p->second.last_epoch_started < max_last_epoch_started_found)
+      continue;
     // Disquality anyone who is incomplete (not fully backfilled)
     if (p->second.is_incomplete())
       continue;
@@ -1479,11 +1487,17 @@ void PG::activate(ObjectStore::Transaction& t,
 
   if (is_primary()) {
     // only update primary last_epoch_started if we will go active
-    if (acting.size() >= pool.info.min_size)
+    if (acting.size() >= pool.info.min_size) {
+      assert(cct->_conf->osd_find_best_info_ignore_history_les ||
+	     info.last_epoch_started <= activation_epoch);
       info.last_epoch_started = activation_epoch;
+    }
   } else if (is_acting(pg_whoami)) {
-    // update last_epoch_started on acting replica to whatever the primary sent
-    info.last_epoch_started = activation_epoch;
+    /* update last_epoch_started on acting replica to whatever the primary sent
+     * unless it's smaller (could happen if we are going peered rather than
+     * active, see doc/dev/osd_internals/last_epoch_started.rst) */
+    if (info.last_epoch_started < activation_epoch)
+      info.last_epoch_started = activation_epoch;
   }
 
   const pg_missing_t &missing = pg_log.get_missing();
@@ -2298,7 +2312,7 @@ void PG::_update_calc_stats()
 
     // a degraded objects has fewer replicas or EC shards than the
     // pool specifies
-    uint64_t degraded = 0;
+    int64_t degraded = 0;
 
     // if acting is smaller than desired, add in those missing replicas
     if (actingset.size() < target)
@@ -2320,7 +2334,9 @@ void PG::_update_calc_stats()
       degraded += peer_missing[*i].num_missing();
 
       // not yet backfilled
-      degraded += num_objects - peer_info[*i].stats.stats.sum.num_objects;
+      int64_t diff = num_objects - peer_info[*i].stats.stats.sum.num_objects;
+      if (diff > 0)
+        degraded += diff;
     }
     info.stats.stats.sum.num_objects_degraded = degraded;
     info.stats.stats.sum.num_objects_unfound = get_num_unfound();
@@ -2910,38 +2926,21 @@ void PG::append_log(
 {
   if (transaction_applied)
     update_snap_map(logv, t);
+
+  /* The primary has sent an info updating the history, but it may not
+   * have arrived yet.  We want to make sure that we cannot remember this
+   * write without remembering that it happened in an interval which went
+   * active in epoch history.last_epoch_started.
+   */
+  if (info.last_epoch_started != info.history.last_epoch_started) {
+    info.history.last_epoch_started = info.last_epoch_started;
+  }
   dout(10) << "append_log " << pg_log.get_log() << " " << logv << dendl;
 
   map<string,bufferlist> keys;
   for (vector<pg_log_entry_t>::const_iterator p = logv.begin();
        p != logv.end();
        ++p) {
-    // we might get log entries for missing objects since we can write to
-    // degraded objects
-    if (!transaction_applied) {
-      if (p->is_delete())
-	remove_snap_mapped_object(
-	  t,
-	  p->soid);
-
-      assert(
-	p->soid > info.last_backfill ||
-	pg_log.get_missing().is_missing(p->soid) ||
-	(p->is_clone() || p->is_promote() ||
-	 (p->is_modify() && (p->prior_version == eversion_t())))
-	);
-
-      if (p->soid <= info.last_backfill) {
-	dout(10) << __func__ << ": transaction empty, adding event "
-		 << *p << " to missing"
-		 << dendl;
-	pg_log.missing_add_event(*p);
-      } else {
-	dout(10) << __func__ << ": transaction empty, backfill, "
-		 << "not adding event " << *p << " to missing"
-		 << dendl;
-      }
-    }
     add_log_entry(*p, keys[p->get_key_name()]);
   }
 
@@ -4722,12 +4721,6 @@ void PG::start_peering_interval(
 
   reg_next_scrub();
 
-  // set CREATING bit until we have peered for the first time.
-  if (is_primary() && info.history.last_epoch_started == 0)
-    state_set(PG_STATE_CREATING);
-  else
-    state_clear(PG_STATE_CREATING);
-
   // did acting, up, primary|acker change?
   if (!lastmap) {
     dout(10) << " no lastmap" << dendl;
@@ -5575,6 +5568,10 @@ PG::RecoveryState::Primary::Primary(my_context ctx)
   context< RecoveryMachine >().log_enter(state_name);
   PG *pg = context< RecoveryMachine >().pg;
   assert(pg->want_acting.empty());
+
+  // set CREATING bit until we have peered for the first time.
+  if (pg->info.history.last_epoch_started == 0)
+    pg->state_set(PG_STATE_CREATING);
 }
 
 boost::statechart::result PG::RecoveryState::Primary::react(const MNotifyRec& notevt)
@@ -5608,6 +5605,7 @@ void PG::RecoveryState::Primary::exit()
   utime_t dur = ceph_clock_now(pg->cct) - enter_time;
   pg->osd->recoverystate_perf->tinc(rs_primary_latency, dur);
   pg->clear_primary_state();
+  pg->state_clear(PG_STATE_CREATING);
 }
 
 /*---------Peering--------*/
diff --git a/src/osd/PG.h b/src/osd/PG.h
index a1202c6..f69d431 100644
--- a/src/osd/PG.h
+++ b/src/osd/PG.h
@@ -395,44 +395,6 @@ public:
       assert(needs_recovery(hoid));
       needs_recovery_map[hoid].need = need;
     }
-    void rebuild_object_location(
-      const hobject_t &hoid,
-      const set<pg_shard_t> &actingbackfill,
-      const map<pg_shard_t, const pg_missing_t *> &all_missing,
-      const map<pg_shard_t, const pg_info_t *> &all_info) {
-      needs_recovery_map.erase(hoid);
-      missing_loc.erase(hoid);
-      eversion_t need;
-      for (set<pg_shard_t>::const_iterator peer = actingbackfill.begin();
-	   peer != actingbackfill.end();
-	   ++peer) {
-	map<pg_shard_t, const pg_missing_t *>::const_iterator pm =
-	  all_missing.find(*peer);
-	assert(pm != all_missing.end());
-	if (pm->second->is_missing(hoid)) {
-	  need = pm->second->missing.find(hoid)->second.need;
-	  break;
-	}
-      }
-      if (need == eversion_t())
-	return;
-
-      set<pg_shard_t> have;
-      for (map<pg_shard_t, const pg_missing_t *>::const_iterator pm =
-	     all_missing.begin();
-	   pm != all_missing.end();
-	   ++pm) {
-	map<pg_shard_t, const pg_info_t *>::const_iterator pi =
-	  all_info.find(pm->first);
-	assert(pi != all_info.end());
-	if (pi->second->last_update >= need &&
-	    !pm->second->is_missing(hoid)) {
-	  have.insert(pm->first);
-	}
-      }
-      missing_loc[hoid].swap(have);
-      add_missing(hoid, need, eversion_t());
-    }
 
     /// Adds info about a possible recovery source
     bool add_source_info(
diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc
index a3f2b89..cb856eb 100644
--- a/src/osd/PGBackend.cc
+++ b/src/osd/PGBackend.cc
@@ -622,8 +622,12 @@ void PGBackend::be_compare_scrubmaps(
       authoritative[*k] = auth_list;
     }
     if (okseed &&
+	parent->get_pool().is_replicated() &&
 	auth_object.digest_present && auth_object.omap_digest_present &&
-	(!auth_oi.is_data_digest() || !auth_oi.is_omap_digest())) {
+	(!auth_oi.is_data_digest() || !auth_oi.is_omap_digest() ||
+	 (g_conf->osd_debug_scrub_chance_rewrite_digest &&
+	  (((unsigned)rand() % 100) >
+	    g_conf->osd_debug_scrub_chance_rewrite_digest)))) {
       if (!cur_inconsistent.empty() || !cur_missing.empty()) {
 	dout(20) << __func__ << " not updating oi digest on "
 		 << *k << " since it is inconsistent" << dendl;
diff --git a/src/osd/PGLog.cc b/src/osd/PGLog.cc
index 4052c00..8c02309 100644
--- a/src/osd/PGLog.cc
+++ b/src/osd/PGLog.cc
@@ -45,6 +45,17 @@ void PGLog::IndexedLog::advance_rollback_info_trimmed_to(
   }
 }
 
+void PGLog::IndexedLog::filter_log(spg_t pgid, const OSDMap &map, const string &hit_set_namespace)
+{
+  IndexedLog out;
+  pg_log_t reject;
+
+  pg_log_t::filter_log(pgid, map, hit_set_namespace, *this, out, reject);
+
+  *this = out;
+  index();
+}
+
 void PGLog::IndexedLog::split_into(
   pg_t child_pgid,
   unsigned split_bits,
@@ -551,7 +562,6 @@ void PGLog::merge_log(ObjectStore::Transaction& t,
   //  missing set, as that should already be consistent with our
   //  current log.
   if (olog.tail < log.tail) {
-    mark_dirty_to(log.log.begin()->version); // last clean entry
     dout(10) << "merge_log extending tail to " << olog.tail << dendl;
     list<pg_log_entry_t>::iterator from = olog.log.begin();
     list<pg_log_entry_t>::iterator to;
@@ -564,6 +574,10 @@ void PGLog::merge_log(ObjectStore::Transaction& t,
       dout(15) << *to << dendl;
     }
       
+    if (to == olog.log.end())
+      mark_dirty_to(oinfo.last_update);
+    else
+      mark_dirty_to(to->version);
     // splice into our log.
     log.log.splice(log.log.begin(),
 		   olog.log, from, to);
@@ -681,6 +695,32 @@ void PGLog::merge_log(ObjectStore::Transaction& t,
   }
 }
 
+void PGLog::check() {
+  if (!pg_log_debug)
+    return;
+  if (log.log.size() != log_keys_debug.size()) {
+    derr << "log.log.size() != log_keys_debug.size()" << dendl;
+    derr << "actual log:" << dendl;
+    for (list<pg_log_entry_t>::iterator i = log.log.begin();
+	 i != log.log.end();
+	 ++i) {
+      derr << "    " << *i << dendl;
+    }
+    derr << "log_keys_debug:" << dendl;
+    for (set<string>::const_iterator i = log_keys_debug.begin();
+	 i != log_keys_debug.end();
+	 ++i) {
+      derr << "    " << *i << dendl;
+    }
+  }
+  assert(log.log.size() == log_keys_debug.size());
+  for (list<pg_log_entry_t>::iterator i = log.log.begin();
+       i != log.log.end();
+       ++i) {
+    assert(log_keys_debug.count(i->get_key_name()));
+  }
+}
+
 void PGLog::write_log(
   ObjectStore::Transaction& t, const coll_t& coll, const ghobject_t &log_oid)
 {
diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h
index 7d18f77..dcb966b 100644
--- a/src/osd/PGLog.h
+++ b/src/osd/PGLog.h
@@ -292,6 +292,8 @@ struct PGLog {
       set<eversion_t> *trimmed);
 
     ostream& print(ostream& out) const;
+
+    void filter_log(spg_t pgid, const OSDMap &map, const string &hit_set_namespace);
   };
 
 
@@ -360,17 +362,8 @@ protected:
 	 i != log_keys_debug->end() && *i < ub;
 	 log_keys_debug->erase(i++));
   }
-  void check() {
-    if (!pg_log_debug)
-      return;
-    assert(log.log.size() == log_keys_debug.size());
-    for (list<pg_log_entry_t>::iterator i = log.log.begin();
-	 i != log.log.end();
-	 ++i) {
-      assert(log_keys_debug.count(i->get_key_name()));
-    }
-  }
 
+  void check();
   void undirty() {
     dirty_to = eversion_t();
     dirty_from = eversion_t::max();
@@ -497,6 +490,19 @@ public:
     missing.split_into(child_pgid, split_bits, &(opg_log->missing));
     opg_log->mark_dirty_to(eversion_t::max());
     mark_dirty_to(eversion_t::max());
+
+    unsigned mask = ~((~0)<<split_bits);
+    for (map<eversion_t, hobject_t>::iterator i = divergent_priors.begin();
+	 i != divergent_priors.end();
+	 ) {
+      if ((i->second.get_hash() & mask) == child_pgid.m_seed) {
+	opg_log->add_divergent_prior(i->first, i->second);
+	divergent_priors.erase(i++);
+	dirty_divergent_priors = true;
+      } else {
+	++i;
+      }
+    }
   }
 
   void recover_got(hobject_t oid, eversion_t v, pg_info_t &info) {
diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc
index 680c27a..b86d4d1 100644
--- a/src/osd/ReplicatedBackend.cc
+++ b/src/osd/ReplicatedBackend.cc
@@ -30,6 +30,35 @@ static ostream& _prefix(std::ostream *_dout, ReplicatedBackend *pgb) {
   return *_dout << pgb->get_parent()->gen_dbg_prefix();
 }
 
+static void log_subop_stats(
+  PerfCounters *logger,
+  OpRequestRef op, int subop)
+{
+  utime_t now = ceph_clock_now(g_ceph_context);
+  utime_t latency = now;
+  latency -= op->get_req()->get_recv_stamp();
+
+
+  logger->inc(l_osd_sop);
+  logger->tinc(l_osd_sop_lat, latency);
+  logger->inc(subop);
+
+  if (subop != l_osd_sop_pull) {
+    uint64_t inb = op->get_req()->get_data().length();
+    logger->inc(l_osd_sop_inb, inb);
+    if (subop == l_osd_sop_w) {
+      logger->inc(l_osd_sop_w_inb, inb);
+      logger->tinc(l_osd_sop_w_lat, latency);
+    } else if (subop == l_osd_sop_push) {
+      logger->inc(l_osd_sop_push_inb, inb);
+      logger->tinc(l_osd_sop_push_lat, latency);
+    } else
+      assert("no support subop" == 0);
+  } else {
+    logger->tinc(l_osd_sop_pull_lat, latency);
+  }
+}
+
 ReplicatedBackend::ReplicatedBackend(
   PGBackend::Listener *pg,
   coll_t coll,
@@ -797,3 +826,1597 @@ void ReplicatedBackend::be_deep_scrub(
   o.omap_digest = oh.digest();
   o.omap_digest_present = true;
 }
+
+void ReplicatedBackend::_do_push(OpRequestRef op)
+{
+  MOSDPGPush *m = static_cast<MOSDPGPush *>(op->get_req());
+  assert(m->get_type() == MSG_OSD_PG_PUSH);
+  pg_shard_t from = m->from;
+
+  vector<PushReplyOp> replies;
+  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+  for (vector<PushOp>::iterator i = m->pushes.begin();
+       i != m->pushes.end();
+       ++i) {
+    replies.push_back(PushReplyOp());
+    handle_push(from, *i, &(replies.back()), t);
+  }
+
+  MOSDPGPushReply *reply = new MOSDPGPushReply;
+  reply->from = get_parent()->whoami_shard();
+  reply->set_priority(m->get_priority());
+  reply->pgid = get_info().pgid;
+  reply->map_epoch = m->map_epoch;
+  reply->replies.swap(replies);
+  reply->compute_cost(cct);
+
+  t->register_on_complete(
+    new PG_SendMessageOnConn(
+      get_parent(), reply, m->get_connection()));
+
+  t->register_on_applied(
+    new ObjectStore::C_DeleteTransaction(t));
+  get_parent()->queue_transaction(t);
+}
+
+struct C_ReplicatedBackend_OnPullComplete : GenContext<ThreadPool::TPHandle&> {
+  ReplicatedBackend *bc;
+  list<hobject_t> to_continue;
+  int priority;
+  C_ReplicatedBackend_OnPullComplete(ReplicatedBackend *bc, int priority)
+    : bc(bc), priority(priority) {}
+
+  void finish(ThreadPool::TPHandle &handle) {
+    ReplicatedBackend::RPGHandle *h = bc->_open_recovery_op();
+    for (list<hobject_t>::iterator i =
+	   to_continue.begin();
+	 i != to_continue.end();
+	 ++i) {
+      map<hobject_t, ReplicatedBackend::PullInfo>::iterator j =
+	bc->pulling.find(*i);
+      assert(j != bc->pulling.end());
+      if (!bc->start_pushes(*i, j->second.obc, h)) {
+	bc->get_parent()->on_global_recover(
+	  *i);
+      }
+      bc->pulling.erase(*i);
+      handle.reset_tp_timeout();
+    }
+    bc->run_recovery_op(h, priority);
+  }
+};
+
+void ReplicatedBackend::_do_pull_response(OpRequestRef op)
+{
+  MOSDPGPush *m = static_cast<MOSDPGPush *>(op->get_req());
+  assert(m->get_type() == MSG_OSD_PG_PUSH);
+  pg_shard_t from = m->from;
+
+  vector<PullOp> replies(1);
+  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+  list<hobject_t> to_continue;
+  for (vector<PushOp>::iterator i = m->pushes.begin();
+       i != m->pushes.end();
+       ++i) {
+    bool more = handle_pull_response(from, *i, &(replies.back()), &to_continue, t);
+    if (more)
+      replies.push_back(PullOp());
+  }
+  if (!to_continue.empty()) {
+    C_ReplicatedBackend_OnPullComplete *c =
+      new C_ReplicatedBackend_OnPullComplete(
+	this,
+	m->get_priority());
+    c->to_continue.swap(to_continue);
+    t->register_on_complete(
+      new PG_RecoveryQueueAsync(
+	get_parent(),
+	get_parent()->bless_gencontext(c)));
+  }
+  replies.erase(replies.end() - 1);
+
+  if (replies.size()) {
+    MOSDPGPull *reply = new MOSDPGPull;
+    reply->from = parent->whoami_shard();
+    reply->set_priority(m->get_priority());
+    reply->pgid = get_info().pgid;
+    reply->map_epoch = m->map_epoch;
+    reply->pulls.swap(replies);
+    reply->compute_cost(cct);
+
+    t->register_on_complete(
+      new PG_SendMessageOnConn(
+	get_parent(), reply, m->get_connection()));
+  }
+
+  t->register_on_applied(
+    new ObjectStore::C_DeleteTransaction(t));
+  get_parent()->queue_transaction(t);
+}
+
+void ReplicatedBackend::do_pull(OpRequestRef op)
+{
+  MOSDPGPull *m = static_cast<MOSDPGPull *>(op->get_req());
+  assert(m->get_type() == MSG_OSD_PG_PULL);
+  pg_shard_t from = m->from;
+
+  map<pg_shard_t, vector<PushOp> > replies;
+  for (vector<PullOp>::iterator i = m->pulls.begin();
+       i != m->pulls.end();
+       ++i) {
+    replies[from].push_back(PushOp());
+    handle_pull(from, *i, &(replies[from].back()));
+  }
+  send_pushes(m->get_priority(), replies);
+}
+
+void ReplicatedBackend::do_push_reply(OpRequestRef op)
+{
+  MOSDPGPushReply *m = static_cast<MOSDPGPushReply *>(op->get_req());
+  assert(m->get_type() == MSG_OSD_PG_PUSH_REPLY);
+  pg_shard_t from = m->from;
+
+  vector<PushOp> replies(1);
+  for (vector<PushReplyOp>::iterator i = m->replies.begin();
+       i != m->replies.end();
+       ++i) {
+    bool more = handle_push_reply(from, *i, &(replies.back()));
+    if (more)
+      replies.push_back(PushOp());
+  }
+  replies.erase(replies.end() - 1);
+
+  map<pg_shard_t, vector<PushOp> > _replies;
+  _replies[from].swap(replies);
+  send_pushes(m->get_priority(), _replies);
+}
+
+template<typename T, int MSGTYPE>
+Message * ReplicatedBackend::generate_subop(
+  const hobject_t &soid,
+  const eversion_t &at_version,
+  ceph_tid_t tid,
+  osd_reqid_t reqid,
+  eversion_t pg_trim_to,
+  eversion_t pg_trim_rollback_to,
+  hobject_t new_temp_oid,
+  hobject_t discard_temp_oid,
+  const vector<pg_log_entry_t> &log_entries,
+  boost::optional<pg_hit_set_history_t> &hset_hist,
+  InProgressOp *op,
+  ObjectStore::Transaction *op_t,
+  pg_shard_t peer,
+  const pg_info_t &pinfo)
+{
+  int acks_wanted = CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK;
+  assert(MSGTYPE == MSG_OSD_SUBOP || MSGTYPE == MSG_OSD_REPOP);
+  // forward the write/update/whatever
+  T *wr = new T(
+    reqid, parent->whoami_shard(),
+    spg_t(get_info().pgid.pgid, peer.shard),
+    soid, acks_wanted,
+    get_osdmap()->get_epoch(),
+    tid, at_version);
+
+  // ship resulting transaction, log entries, and pg_stats
+  if (!parent->should_send_op(peer, soid)) {
+    dout(10) << "issue_repop shipping empty opt to osd." << peer
+	     <<", object " << soid
+	     << " beyond MAX(last_backfill_started "
+	     << ", pinfo.last_backfill "
+	     << pinfo.last_backfill << ")" << dendl;
+    ObjectStore::Transaction t;
+    t.set_use_tbl(op_t->get_use_tbl());
+    ::encode(t, wr->get_data());
+  } else {
+    ::encode(*op_t, wr->get_data());
+  }
+
+  ::encode(log_entries, wr->logbl);
+
+  if (pinfo.is_incomplete())
+    wr->pg_stats = pinfo.stats;  // reflects backfill progress
+  else
+    wr->pg_stats = get_info().stats;
+
+  wr->pg_trim_to = pg_trim_to;
+  wr->pg_trim_rollback_to = pg_trim_rollback_to;
+
+  wr->new_temp_oid = new_temp_oid;
+  wr->discard_temp_oid = discard_temp_oid;
+  wr->updated_hit_set_history = hset_hist;
+  return wr;
+}
+
+void ReplicatedBackend::issue_op(
+  const hobject_t &soid,
+  const eversion_t &at_version,
+  ceph_tid_t tid,
+  osd_reqid_t reqid,
+  eversion_t pg_trim_to,
+  eversion_t pg_trim_rollback_to,
+  hobject_t new_temp_oid,
+  hobject_t discard_temp_oid,
+  const vector<pg_log_entry_t> &log_entries,
+  boost::optional<pg_hit_set_history_t> &hset_hist,
+  InProgressOp *op,
+  ObjectStore::Transaction *op_t)
+{
+
+  if (parent->get_actingbackfill_shards().size() > 1) {
+    ostringstream ss;
+    set<pg_shard_t> replicas = parent->get_actingbackfill_shards();
+    replicas.erase(parent->whoami_shard());
+    ss << "waiting for subops from " << replicas;
+    if (op->op)
+      op->op->mark_sub_op_sent(ss.str());
+  }
+  for (set<pg_shard_t>::const_iterator i =
+	 parent->get_actingbackfill_shards().begin();
+       i != parent->get_actingbackfill_shards().end();
+       ++i) {
+    if (*i == parent->whoami_shard()) continue;
+    pg_shard_t peer = *i;
+    const pg_info_t &pinfo = parent->get_shard_info().find(peer)->second;
+
+    Message *wr;
+    uint64_t min_features = parent->min_peer_features();
+    if (!(min_features & CEPH_FEATURE_OSD_REPOP)) {
+      dout(20) << "Talking to old version of OSD, doesn't support RepOp, fall back to SubOp" << dendl;
+      wr = generate_subop<MOSDSubOp, MSG_OSD_SUBOP>(
+	    soid,
+	    at_version,
+	    tid,
+	    reqid,
+	    pg_trim_to,
+	    pg_trim_rollback_to,
+	    new_temp_oid,
+	    discard_temp_oid,
+	    log_entries,
+	    hset_hist,
+	    op,
+	    op_t,
+	    peer,
+	    pinfo);
+    } else {
+      wr = generate_subop<MOSDRepOp, MSG_OSD_REPOP>(
+	    soid,
+	    at_version,
+	    tid,
+	    reqid,
+	    pg_trim_to,
+	    pg_trim_rollback_to,
+	    new_temp_oid,
+	    discard_temp_oid,
+	    log_entries,
+	    hset_hist,
+	    op,
+	    op_t,
+	    peer,
+	    pinfo);
+    }
+
+    get_parent()->send_message_osd_cluster(
+      peer.osd, wr, get_osdmap()->get_epoch());
+  }
+}
+
+// sub op modify
+void ReplicatedBackend::sub_op_modify(OpRequestRef op) {
+  Message *m = op->get_req();
+  int msg_type = m->get_type();
+  if (msg_type == MSG_OSD_SUBOP) {
+    sub_op_modify_impl<MOSDSubOp, MSG_OSD_SUBOP>(op);
+  } else if (msg_type == MSG_OSD_REPOP) {
+    sub_op_modify_impl<MOSDRepOp, MSG_OSD_REPOP>(op);
+  } else {
+    assert(0);
+  }
+}
+
+template<typename T, int MSGTYPE>
+void ReplicatedBackend::sub_op_modify_impl(OpRequestRef op)
+{
+  T *m = static_cast<T *>(op->get_req());
+  int msg_type = m->get_type();
+  assert(MSGTYPE == msg_type);
+  assert(msg_type == MSG_OSD_SUBOP || msg_type == MSG_OSD_REPOP);
+
+  const hobject_t& soid = m->poid;
+
+  dout(10) << "sub_op_modify trans"
+           << " " << soid
+           << " v " << m->version
+	   << (m->logbl.length() ? " (transaction)" : " (parallel exec")
+	   << " " << m->logbl.length()
+	   << dendl;
+
+  // sanity checks
+  assert(m->map_epoch >= get_info().history.same_interval_since);
+
+  // we better not be missing this.
+  assert(!parent->get_log().get_missing().is_missing(soid));
+
+  int ackerosd = m->get_source().num();
+
+  op->mark_started();
+
+  RepModifyRef rm(new RepModify);
+  rm->op = op;
+  rm->ackerosd = ackerosd;
+  rm->last_complete = get_info().last_complete;
+  rm->epoch_started = get_osdmap()->get_epoch();
+
+  assert(m->logbl.length());
+  // shipped transaction and log entries
+  vector<pg_log_entry_t> log;
+
+  bufferlist::iterator p = m->get_data().begin();
+  ::decode(rm->opt, p);
+  rm->localt.set_use_tbl(rm->opt.get_use_tbl());
+
+  if (m->new_temp_oid != hobject_t()) {
+    dout(20) << __func__ << " start tracking temp " << m->new_temp_oid << dendl;
+    add_temp_obj(m->new_temp_oid);
+    get_temp_coll(&rm->localt);
+  }
+  if (m->discard_temp_oid != hobject_t()) {
+    dout(20) << __func__ << " stop tracking temp " << m->discard_temp_oid << dendl;
+    if (rm->opt.empty()) {
+      dout(10) << __func__ << ": removing object " << m->discard_temp_oid
+	       << " since we won't get the transaction" << dendl;
+      rm->localt.remove(temp_coll, m->discard_temp_oid);
+    }
+    clear_temp_obj(m->discard_temp_oid);
+  }
+
+  p = m->logbl.begin();
+  ::decode(log, p);
+  rm->opt.set_fadvise_flag(CEPH_OSD_OP_FLAG_FADVISE_DONTNEED);
+
+  bool update_snaps = false;
+  if (!rm->opt.empty()) {
+    // If the opt is non-empty, we infer we are before
+    // last_backfill (according to the primary, not our
+    // not-quite-accurate value), and should update the
+    // collections now.  Otherwise, we do it later on push.
+    update_snaps = true;
+  }
+  parent->update_stats(m->pg_stats);
+  parent->log_operation(
+    log,
+    m->updated_hit_set_history,
+    m->pg_trim_to,
+    m->pg_trim_rollback_to,
+    update_snaps,
+    &(rm->localt));
+
+  rm->bytes_written = rm->opt.get_encoded_bytes();
+
+  op->mark_started();
+
+  rm->localt.append(rm->opt);
+  rm->localt.register_on_commit(
+    parent->bless_context(
+      new C_OSD_RepModifyCommit(this, rm)));
+  rm->localt.register_on_applied(
+    parent->bless_context(
+      new C_OSD_RepModifyApply(this, rm)));
+  parent->queue_transaction(&(rm->localt), op);
+  // op is cleaned up by oncommit/onapply when both are executed
+}
+
+void ReplicatedBackend::sub_op_modify_applied(RepModifyRef rm)
+{
+  rm->op->mark_event("sub_op_applied");
+  rm->applied = true;
+
+  dout(10) << "sub_op_modify_applied on " << rm << " op "
+	   << *rm->op->get_req() << dendl;
+  Message *m = rm->op->get_req();
+
+  Message *ack = NULL;
+  eversion_t version;
+
+  if (m->get_type() == MSG_OSD_SUBOP) {
+    // doesn't have CLIENT SUBOP feature ,use Subop
+    MOSDSubOp *req = static_cast<MOSDSubOp*>(m);
+    version = req->version;
+    if (!rm->committed)
+      ack = new MOSDSubOpReply(
+	req, parent->whoami_shard(),
+	0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
+  } else if (m->get_type() == MSG_OSD_REPOP) {
+    MOSDRepOp *req = static_cast<MOSDRepOp*>(m);
+    version = req->version;
+    if (!rm->committed)
+      ack = new MOSDRepOpReply(
+	static_cast<MOSDRepOp*>(m), parent->whoami_shard(),
+	0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
+  } else {
+    assert(0);
+  }
+
+  // send ack to acker only if we haven't sent a commit already
+  if (ack) {
+    ack->set_priority(CEPH_MSG_PRIO_HIGH); // this better match commit priority!
+    get_parent()->send_message_osd_cluster(
+      rm->ackerosd, ack, get_osdmap()->get_epoch());
+  }
+
+  parent->op_applied(version);
+}
+
+void ReplicatedBackend::sub_op_modify_commit(RepModifyRef rm)
+{
+  rm->op->mark_commit_sent();
+  rm->committed = true;
+
+  // send commit.
+  dout(10) << "sub_op_modify_commit on op " << *rm->op->get_req()
+	   << ", sending commit to osd." << rm->ackerosd
+	   << dendl;
+
+  assert(get_osdmap()->is_up(rm->ackerosd));
+  get_parent()->update_last_complete_ondisk(rm->last_complete);
+
+  Message *m = rm->op->get_req();
+  Message *commit;
+  if (m->get_type() == MSG_OSD_SUBOP) {
+    // doesn't have CLIENT SUBOP feature ,use Subop
+    MOSDSubOpReply  *reply = new MOSDSubOpReply(
+      static_cast<MOSDSubOp*>(m),
+      get_parent()->whoami_shard(),
+      0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ONDISK);
+    reply->set_last_complete_ondisk(rm->last_complete);
+    commit = reply;
+  } else if (m->get_type() == MSG_OSD_REPOP) {
+    MOSDRepOpReply *reply = new MOSDRepOpReply(
+      static_cast<MOSDRepOp*>(m),
+      get_parent()->whoami_shard(),
+      0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ONDISK);
+    reply->set_last_complete_ondisk(rm->last_complete);
+    commit = reply;
+  }
+  else {
+    assert(0);
+  }
+
+  commit->set_priority(CEPH_MSG_PRIO_HIGH); // this better match ack priority!
+  get_parent()->send_message_osd_cluster(
+    rm->ackerosd, commit, get_osdmap()->get_epoch());
+
+  log_subop_stats(get_parent()->get_logger(), rm->op, l_osd_sop_w);
+}
+
+
+// ===========================================================
+
+void ReplicatedBackend::calc_head_subsets(
+  ObjectContextRef obc, SnapSet& snapset, const hobject_t& head,
+  const pg_missing_t& missing,
+  const hobject_t &last_backfill,
+  interval_set<uint64_t>& data_subset,
+  map<hobject_t, interval_set<uint64_t> >& clone_subsets)
+{
+  dout(10) << "calc_head_subsets " << head
+	   << " clone_overlap " << snapset.clone_overlap << dendl;
+
+  uint64_t size = obc->obs.oi.size;
+  if (size)
+    data_subset.insert(0, size);
+
+  if (get_parent()->get_pool().allow_incomplete_clones()) {
+    dout(10) << __func__ << ": caching (was) enabled, skipping clone subsets" << dendl;
+    return;
+  }
+
+  if (!cct->_conf->osd_recover_clone_overlap) {
+    dout(10) << "calc_head_subsets " << head << " -- osd_recover_clone_overlap disabled" << dendl;
+    return;
+  }
+
+
+  interval_set<uint64_t> cloning;
+  interval_set<uint64_t> prev;
+  if (size)
+    prev.insert(0, size);
+
+  for (int j=snapset.clones.size()-1; j>=0; j--) {
+    hobject_t c = head;
+    c.snap = snapset.clones[j];
+    prev.intersection_of(snapset.clone_overlap[snapset.clones[j]]);
+    if (!missing.is_missing(c) && c < last_backfill) {
+      dout(10) << "calc_head_subsets " << head << " has prev " << c
+	       << " overlap " << prev << dendl;
+      clone_subsets[c] = prev;
+      cloning.union_of(prev);
+      break;
+    }
+    dout(10) << "calc_head_subsets " << head << " does not have prev " << c
+	     << " overlap " << prev << dendl;
+  }
+
+
+  if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
+    dout(10) << "skipping clone, too many holes" << dendl;
+    clone_subsets.clear();
+    cloning.clear();
+  }
+
+  // what's left for us to push?
+  data_subset.subtract(cloning);
+
+  dout(10) << "calc_head_subsets " << head
+	   << "  data_subset " << data_subset
+	   << "  clone_subsets " << clone_subsets << dendl;
+}
+
+void ReplicatedBackend::calc_clone_subsets(
+  SnapSet& snapset, const hobject_t& soid,
+  const pg_missing_t& missing,
+  const hobject_t &last_backfill,
+  interval_set<uint64_t>& data_subset,
+  map<hobject_t, interval_set<uint64_t> >& clone_subsets)
+{
+  dout(10) << "calc_clone_subsets " << soid
+	   << " clone_overlap " << snapset.clone_overlap << dendl;
+
+  uint64_t size = snapset.clone_size[soid.snap];
+  if (size)
+    data_subset.insert(0, size);
+
+  if (get_parent()->get_pool().allow_incomplete_clones()) {
+    dout(10) << __func__ << ": caching (was) enabled, skipping clone subsets" << dendl;
+    return;
+  }
+
+  if (!cct->_conf->osd_recover_clone_overlap) {
+    dout(10) << "calc_clone_subsets " << soid << " -- osd_recover_clone_overlap disabled" << dendl;
+    return;
+  }
+
+  unsigned i;
+  for (i=0; i < snapset.clones.size(); i++)
+    if (snapset.clones[i] == soid.snap)
+      break;
+
+  // any overlap with next older clone?
+  interval_set<uint64_t> cloning;
+  interval_set<uint64_t> prev;
+  if (size)
+    prev.insert(0, size);
+  for (int j=i-1; j>=0; j--) {
+    hobject_t c = soid;
+    c.snap = snapset.clones[j];
+    prev.intersection_of(snapset.clone_overlap[snapset.clones[j]]);
+    if (!missing.is_missing(c) && c < last_backfill) {
+      dout(10) << "calc_clone_subsets " << soid << " has prev " << c
+	       << " overlap " << prev << dendl;
+      clone_subsets[c] = prev;
+      cloning.union_of(prev);
+      break;
+    }
+    dout(10) << "calc_clone_subsets " << soid << " does not have prev " << c
+	     << " overlap " << prev << dendl;
+  }
+
+  // overlap with next newest?
+  interval_set<uint64_t> next;
+  if (size)
+    next.insert(0, size);
+  for (unsigned j=i+1; j<snapset.clones.size(); j++) {
+    hobject_t c = soid;
+    c.snap = snapset.clones[j];
+    next.intersection_of(snapset.clone_overlap[snapset.clones[j-1]]);
+    if (!missing.is_missing(c) && c < last_backfill) {
+      dout(10) << "calc_clone_subsets " << soid << " has next " << c
+	       << " overlap " << next << dendl;
+      clone_subsets[c] = next;
+      cloning.union_of(next);
+      break;
+    }
+    dout(10) << "calc_clone_subsets " << soid << " does not have next " << c
+	     << " overlap " << next << dendl;
+  }
+
+  if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
+    dout(10) << "skipping clone, too many holes" << dendl;
+    clone_subsets.clear();
+    cloning.clear();
+  }
+
+
+  // what's left for us to push?
+  data_subset.subtract(cloning);
+
+  dout(10) << "calc_clone_subsets " << soid
+	   << "  data_subset " << data_subset
+	   << "  clone_subsets " << clone_subsets << dendl;
+}
+
+void ReplicatedBackend::prepare_pull(
+  eversion_t v,
+  const hobject_t& soid,
+  ObjectContextRef headctx,
+  RPGHandle *h)
+{
+  assert(get_parent()->get_local_missing().missing.count(soid));
+  eversion_t _v = get_parent()->get_local_missing().missing.find(
+    soid)->second.need;
+  assert(_v == v);
+  const map<hobject_t, set<pg_shard_t> > &missing_loc(
+    get_parent()->get_missing_loc_shards());
+  const map<pg_shard_t, pg_missing_t > &peer_missing(
+    get_parent()->get_shard_missing());
+  map<hobject_t, set<pg_shard_t> >::const_iterator q = missing_loc.find(soid);
+  assert(q != missing_loc.end());
+  assert(!q->second.empty());
+
+  // pick a pullee
+  vector<pg_shard_t> shuffle(q->second.begin(), q->second.end());
+  random_shuffle(shuffle.begin(), shuffle.end());
+  vector<pg_shard_t>::iterator p = shuffle.begin();
+  assert(get_osdmap()->is_up(p->osd));
+  pg_shard_t fromshard = *p;
+
+  dout(7) << "pull " << soid
+	  << " v " << v
+	  << " on osds " << *p
+	  << " from osd." << fromshard
+	  << dendl;
+
+  assert(peer_missing.count(fromshard));
+  const pg_missing_t &pmissing = peer_missing.find(fromshard)->second;
+  if (pmissing.is_missing(soid, v)) {
+    assert(pmissing.missing.find(soid)->second.have != v);
+    dout(10) << "pulling soid " << soid << " from osd " << fromshard
+	     << " at version " << pmissing.missing.find(soid)->second.have
+	     << " rather than at version " << v << dendl;
+    v = pmissing.missing.find(soid)->second.have;
+    assert(get_parent()->get_log().get_log().objects.count(soid) &&
+	   (get_parent()->get_log().get_log().objects.find(soid)->second->op ==
+	    pg_log_entry_t::LOST_REVERT) &&
+	   (get_parent()->get_log().get_log().objects.find(
+	     soid)->second->reverting_to ==
+	    v));
+  }
+
+  ObjectRecoveryInfo recovery_info;
+
+  if (soid.is_snap()) {
+    assert(!get_parent()->get_local_missing().is_missing(
+	     soid.get_head()) ||
+	   !get_parent()->get_local_missing().is_missing(
+	     soid.get_snapdir()));
+    assert(headctx);
+    // check snapset
+    SnapSetContext *ssc = headctx->ssc;
+    assert(ssc);
+    dout(10) << " snapset " << ssc->snapset << dendl;
+    calc_clone_subsets(ssc->snapset, soid, get_parent()->get_local_missing(),
+		       get_info().last_backfill,
+		       recovery_info.copy_subset,
+		       recovery_info.clone_subset);
+    // FIXME: this may overestimate if we are pulling multiple clones in parallel...
+    dout(10) << " pulling " << recovery_info << dendl;
+  } else {
+    // pulling head or unversioned object.
+    // always pull the whole thing.
+    recovery_info.copy_subset.insert(0, (uint64_t)-1);
+    recovery_info.size = ((uint64_t)-1);
+  }
+
+  h->pulls[fromshard].push_back(PullOp());
+  PullOp &op = h->pulls[fromshard].back();
+  op.soid = soid;
+
+  op.recovery_info = recovery_info;
+  op.recovery_info.soid = soid;
+  op.recovery_info.version = v;
+  op.recovery_progress.data_complete = false;
+  op.recovery_progress.omap_complete = false;
+  op.recovery_progress.data_recovered_to = 0;
+  op.recovery_progress.first = true;
+
+  assert(!pulling.count(soid));
+  pull_from_peer[fromshard].insert(soid);
+  PullInfo &pi = pulling[soid];
+  pi.head_ctx = headctx;
+  pi.recovery_info = op.recovery_info;
+  pi.recovery_progress = op.recovery_progress;
+}
+
+/*
+ * intelligently push an object to a replica.  make use of existing
+ * clones/heads and dup data ranges where possible.
+ */
+void ReplicatedBackend::prep_push_to_replica(
+  ObjectContextRef obc, const hobject_t& soid, pg_shard_t peer,
+  PushOp *pop)
+{
+  const object_info_t& oi = obc->obs.oi;
+  uint64_t size = obc->obs.oi.size;
+
+  dout(10) << __func__ << ": " << soid << " v" << oi.version
+	   << " size " << size << " to osd." << peer << dendl;
+
+  map<hobject_t, interval_set<uint64_t> > clone_subsets;
+  interval_set<uint64_t> data_subset;
+
+  // are we doing a clone on the replica?
+  if (soid.snap && soid.snap < CEPH_NOSNAP) {
+    hobject_t head = soid;
+    head.snap = CEPH_NOSNAP;
+
+    // try to base push off of clones that succeed/preceed poid
+    // we need the head (and current SnapSet) locally to do that.
+    if (get_parent()->get_local_missing().is_missing(head)) {
+      dout(15) << "push_to_replica missing head " << head << ", pushing raw clone" << dendl;
+      return prep_push(obc, soid, peer, pop);
+    }
+    hobject_t snapdir = head;
+    snapdir.snap = CEPH_SNAPDIR;
+    if (get_parent()->get_local_missing().is_missing(snapdir)) {
+      dout(15) << "push_to_replica missing snapdir " << snapdir
+	       << ", pushing raw clone" << dendl;
+      return prep_push(obc, soid, peer, pop);
+    }
+
+    SnapSetContext *ssc = obc->ssc;
+    assert(ssc);
+    dout(15) << "push_to_replica snapset is " << ssc->snapset << dendl;
+    map<pg_shard_t, pg_missing_t>::const_iterator pm =
+      get_parent()->get_shard_missing().find(peer);
+    assert(pm != get_parent()->get_shard_missing().end());
+    map<pg_shard_t, pg_info_t>::const_iterator pi =
+      get_parent()->get_shard_info().find(peer);
+    assert(pi != get_parent()->get_shard_info().end());
+    calc_clone_subsets(ssc->snapset, soid,
+		       pm->second,
+		       pi->second.last_backfill,
+		       data_subset, clone_subsets);
+  } else if (soid.snap == CEPH_NOSNAP) {
+    // pushing head or unversioned object.
+    // base this on partially on replica's clones?
+    SnapSetContext *ssc = obc->ssc;
+    assert(ssc);
+    dout(15) << "push_to_replica snapset is " << ssc->snapset << dendl;
+    calc_head_subsets(
+      obc,
+      ssc->snapset, soid, get_parent()->get_shard_missing().find(peer)->second,
+      get_parent()->get_shard_info().find(peer)->second.last_backfill,
+      data_subset, clone_subsets);
+  }
+
+  prep_push(obc, soid, peer, oi.version, data_subset, clone_subsets, pop);
+}
+
+void ReplicatedBackend::prep_push(ObjectContextRef obc,
+			     const hobject_t& soid, pg_shard_t peer,
+			     PushOp *pop)
+{
+  interval_set<uint64_t> data_subset;
+  if (obc->obs.oi.size)
+    data_subset.insert(0, obc->obs.oi.size);
+  map<hobject_t, interval_set<uint64_t> > clone_subsets;
+
+  prep_push(obc, soid, peer,
+	    obc->obs.oi.version, data_subset, clone_subsets,
+	    pop);
+}
+
+void ReplicatedBackend::prep_push(
+  ObjectContextRef obc,
+  const hobject_t& soid, pg_shard_t peer,
+  eversion_t version,
+  interval_set<uint64_t> &data_subset,
+  map<hobject_t, interval_set<uint64_t> >& clone_subsets,
+  PushOp *pop)
+{
+  get_parent()->begin_peer_recover(peer, soid);
+  // take note.
+  PushInfo &pi = pushing[soid][peer];
+  pi.obc = obc;
+  pi.recovery_info.size = obc->obs.oi.size;
+  pi.recovery_info.copy_subset = data_subset;
+  pi.recovery_info.clone_subset = clone_subsets;
+  pi.recovery_info.soid = soid;
+  pi.recovery_info.oi = obc->obs.oi;
+  pi.recovery_info.version = version;
+  pi.recovery_progress.first = true;
+  pi.recovery_progress.data_recovered_to = 0;
+  pi.recovery_progress.data_complete = 0;
+  pi.recovery_progress.omap_complete = 0;
+
+  ObjectRecoveryProgress new_progress;
+  int r = build_push_op(pi.recovery_info,
+			pi.recovery_progress,
+			&new_progress,
+			pop,
+			&(pi.stat));
+  assert(r == 0);
+  pi.recovery_progress = new_progress;
+}
+
+int ReplicatedBackend::send_pull_legacy(int prio, pg_shard_t peer,
+					const ObjectRecoveryInfo &recovery_info,
+					ObjectRecoveryProgress progress)
+{
+  // send op
+  ceph_tid_t tid = get_parent()->get_tid();
+  osd_reqid_t rid(get_parent()->get_cluster_msgr_name(), 0, tid);
+
+  dout(10) << "send_pull_op " << recovery_info.soid << " "
+	   << recovery_info.version
+	   << " first=" << progress.first
+	   << " data " << recovery_info.copy_subset
+	   << " from osd." << peer
+	   << " tid " << tid << dendl;
+
+  MOSDSubOp *subop = new MOSDSubOp(
+    rid, parent->whoami_shard(),
+    get_info().pgid, recovery_info.soid,
+    CEPH_OSD_FLAG_ACK,
+    get_osdmap()->get_epoch(), tid,
+    recovery_info.version);
+  subop->set_priority(prio);
+  subop->ops = vector<OSDOp>(1);
+  subop->ops[0].op.op = CEPH_OSD_OP_PULL;
+  subop->ops[0].op.extent.length = cct->_conf->osd_recovery_max_chunk;
+  subop->recovery_info = recovery_info;
+  subop->recovery_progress = progress;
+
+  get_parent()->send_message_osd_cluster(
+    peer.osd, subop, get_osdmap()->get_epoch());
+
+  get_parent()->get_logger()->inc(l_osd_pull);
+  return 0;
+}
+
+void ReplicatedBackend::submit_push_data(
+  ObjectRecoveryInfo &recovery_info,
+  bool first,
+  bool complete,
+  const interval_set<uint64_t> &intervals_included,
+  bufferlist data_included,
+  bufferlist omap_header,
+  map<string, bufferlist> &attrs,
+  map<string, bufferlist> &omap_entries,
+  ObjectStore::Transaction *t)
+{
+  coll_t target_coll;
+  if (first && complete) {
+    target_coll = coll;
+  } else {
+    dout(10) << __func__ << ": Creating oid "
+	     << recovery_info.soid << " in the temp collection" << dendl;
+    add_temp_obj(recovery_info.soid);
+    target_coll = get_temp_coll(t);
+  }
+
+  if (first) {
+    get_parent()->on_local_recover_start(recovery_info.soid, t);
+    t->remove(get_temp_coll(t), recovery_info.soid);
+    t->touch(target_coll, recovery_info.soid);
+    t->truncate(target_coll, recovery_info.soid, recovery_info.size);
+    t->omap_setheader(target_coll, recovery_info.soid, omap_header);
+  }
+  uint64_t off = 0;
+  for (interval_set<uint64_t>::const_iterator p = intervals_included.begin();
+       p != intervals_included.end();
+       ++p) {
+    bufferlist bit;
+    bit.substr_of(data_included, off, p.get_len());
+    t->write(target_coll, recovery_info.soid,
+	     p.get_start(), p.get_len(), bit);
+    off += p.get_len();
+  }
+
+  t->omap_setkeys(target_coll, recovery_info.soid,
+		  omap_entries);
+  t->setattrs(target_coll, recovery_info.soid,
+	      attrs);
+
+  if (complete) {
+    if (!first) {
+      dout(10) << __func__ << ": Removing oid "
+	       << recovery_info.soid << " from the temp collection" << dendl;
+      clear_temp_obj(recovery_info.soid);
+      t->collection_move(coll, target_coll, recovery_info.soid);
+    }
+
+    submit_push_complete(recovery_info, t);
+  }
+}
+
+void ReplicatedBackend::submit_push_complete(ObjectRecoveryInfo &recovery_info,
+					     ObjectStore::Transaction *t)
+{
+  for (map<hobject_t, interval_set<uint64_t> >::const_iterator p =
+	 recovery_info.clone_subset.begin();
+       p != recovery_info.clone_subset.end();
+       ++p) {
+    for (interval_set<uint64_t>::const_iterator q = p->second.begin();
+	 q != p->second.end();
+	 ++q) {
+      dout(15) << " clone_range " << p->first << " "
+	       << q.get_start() << "~" << q.get_len() << dendl;
+      t->clone_range(coll, p->first, recovery_info.soid,
+		     q.get_start(), q.get_len(), q.get_start());
+    }
+  }
+}
+
+ObjectRecoveryInfo ReplicatedBackend::recalc_subsets(
+  const ObjectRecoveryInfo& recovery_info,
+  SnapSetContext *ssc)
+{
+  if (!recovery_info.soid.snap || recovery_info.soid.snap >= CEPH_NOSNAP)
+    return recovery_info;
+  ObjectRecoveryInfo new_info = recovery_info;
+  new_info.copy_subset.clear();
+  new_info.clone_subset.clear();
+  assert(ssc);
+  calc_clone_subsets(ssc->snapset, new_info.soid, get_parent()->get_local_missing(),
+		     get_info().last_backfill,
+		     new_info.copy_subset, new_info.clone_subset);
+  return new_info;
+}
+
+bool ReplicatedBackend::handle_pull_response(
+  pg_shard_t from, PushOp &pop, PullOp *response,
+  list<hobject_t> *to_continue,
+  ObjectStore::Transaction *t
+  )
+{
+  interval_set<uint64_t> data_included = pop.data_included;
+  bufferlist data;
+  data.claim(pop.data);
+  dout(10) << "handle_pull_response "
+	   << pop.recovery_info
+	   << pop.after_progress
+	   << " data.size() is " << data.length()
+	   << " data_included: " << data_included
+	   << dendl;
+  if (pop.version == eversion_t()) {
+    // replica doesn't have it!
+    _failed_push(from, pop.soid);
+    return false;
+  }
+
+  hobject_t &hoid = pop.soid;
+  assert((data_included.empty() && data.length() == 0) ||
+	 (!data_included.empty() && data.length() > 0));
+
+  if (!pulling.count(hoid)) {
+    return false;
+  }
+
+  PullInfo &pi = pulling[hoid];
+  if (pi.recovery_info.size == (uint64_t(-1))) {
+    pi.recovery_info.size = pop.recovery_info.size;
+    pi.recovery_info.copy_subset.intersection_of(
+      pop.recovery_info.copy_subset);
+  }
+
+  bool first = pi.recovery_progress.first;
+  if (first) {
+    pi.obc = get_parent()->get_obc(pi.recovery_info.soid, pop.attrset);
+    pi.recovery_info.oi = pi.obc->obs.oi;
+    pi.recovery_info = recalc_subsets(pi.recovery_info, pi.obc->ssc);
+  }
+
+
+  interval_set<uint64_t> usable_intervals;
+  bufferlist usable_data;
+  trim_pushed_data(pi.recovery_info.copy_subset,
+		   data_included,
+		   data,
+		   &usable_intervals,
+		   &usable_data);
+  data_included = usable_intervals;
+  data.claim(usable_data);
+
+
+  pi.recovery_progress = pop.after_progress;
+
+  pi.stat.num_bytes_recovered += data.length();
+
+  dout(10) << "new recovery_info " << pi.recovery_info
+	   << ", new progress " << pi.recovery_progress
+	   << dendl;
+
+  bool complete = pi.is_complete();
+
+  submit_push_data(pi.recovery_info, first,
+		   complete,
+		   data_included, data,
+		   pop.omap_header,
+		   pop.attrset,
+		   pop.omap_entries,
+		   t);
+
+  pi.stat.num_keys_recovered += pop.omap_entries.size();
+
+  if (complete) {
+    to_continue->push_back(hoid);
+    pi.stat.num_objects_recovered++;
+    get_parent()->on_local_recover(
+      hoid, pi.stat, pi.recovery_info, pi.obc, t);
+    pull_from_peer[from].erase(hoid);
+    if (pull_from_peer[from].empty())
+      pull_from_peer.erase(from);
+    return false;
+  } else {
+    response->soid = pop.soid;
+    response->recovery_info = pi.recovery_info;
+    response->recovery_progress = pi.recovery_progress;
+    return true;
+  }
+}
+
+void ReplicatedBackend::handle_push(
+  pg_shard_t from, PushOp &pop, PushReplyOp *response,
+  ObjectStore::Transaction *t)
+{
+  dout(10) << "handle_push "
+	   << pop.recovery_info
+	   << pop.after_progress
+	   << dendl;
+  bufferlist data;
+  data.claim(pop.data);
+  bool first = pop.before_progress.first;
+  bool complete = pop.after_progress.data_complete &&
+    pop.after_progress.omap_complete;
+
+  response->soid = pop.recovery_info.soid;
+  submit_push_data(pop.recovery_info,
+		   first,
+		   complete,
+		   pop.data_included,
+		   data,
+		   pop.omap_header,
+		   pop.attrset,
+		   pop.omap_entries,
+		   t);
+
+  if (complete)
+    get_parent()->on_local_recover(
+      pop.recovery_info.soid,
+      object_stat_sum_t(),
+      pop.recovery_info,
+      ObjectContextRef(), // ok, is replica
+      t);
+}
+
+void ReplicatedBackend::send_pushes(int prio, map<pg_shard_t, vector<PushOp> > &pushes)
+{
+  for (map<pg_shard_t, vector<PushOp> >::iterator i = pushes.begin();
+       i != pushes.end();
+       ++i) {
+    ConnectionRef con = get_parent()->get_con_osd_cluster(
+      i->first.osd,
+      get_osdmap()->get_epoch());
+    if (!con)
+      continue;
+    if (!(con->get_features() & CEPH_FEATURE_OSD_PACKED_RECOVERY)) {
+      for (vector<PushOp>::iterator j = i->second.begin();
+	   j != i->second.end();
+	   ++j) {
+	dout(20) << __func__ << ": sending push (legacy) " << *j
+		 << " to osd." << i->first << dendl;
+	send_push_op_legacy(prio, i->first, *j);
+      }
+    } else {
+      vector<PushOp>::iterator j = i->second.begin();
+      while (j != i->second.end()) {
+	uint64_t cost = 0;
+	uint64_t pushes = 0;
+	MOSDPGPush *msg = new MOSDPGPush();
+	msg->from = get_parent()->whoami_shard();
+	msg->pgid = get_parent()->primary_spg_t();
+	msg->map_epoch = get_osdmap()->get_epoch();
+	msg->set_priority(prio);
+	for (;
+	     (j != i->second.end() &&
+	      cost < cct->_conf->osd_max_push_cost &&
+	      pushes < cct->_conf->osd_max_push_objects) ;
+	     ++j) {
+	  dout(20) << __func__ << ": sending push " << *j
+		   << " to osd." << i->first << dendl;
+	  cost += j->cost(cct);
+	  pushes += 1;
+	  msg->pushes.push_back(*j);
+	}
+	msg->compute_cost(cct);
+	get_parent()->send_message_osd_cluster(msg, con);
+      }
+    }
+  }
+}
+
+void ReplicatedBackend::send_pulls(int prio, map<pg_shard_t, vector<PullOp> > &pulls)
+{
+  for (map<pg_shard_t, vector<PullOp> >::iterator i = pulls.begin();
+       i != pulls.end();
+       ++i) {
+    ConnectionRef con = get_parent()->get_con_osd_cluster(
+      i->first.osd,
+      get_osdmap()->get_epoch());
+    if (!con)
+      continue;
+    if (!(con->get_features() & CEPH_FEATURE_OSD_PACKED_RECOVERY)) {
+      for (vector<PullOp>::iterator j = i->second.begin();
+	   j != i->second.end();
+	   ++j) {
+	dout(20) << __func__ << ": sending pull (legacy) " << *j
+		 << " to osd." << i->first << dendl;
+	send_pull_legacy(
+	  prio,
+	  i->first,
+	  j->recovery_info,
+	  j->recovery_progress);
+      }
+    } else {
+      dout(20) << __func__ << ": sending pulls " << i->second
+	       << " to osd." << i->first << dendl;
+      MOSDPGPull *msg = new MOSDPGPull();
+      msg->from = parent->whoami_shard();
+      msg->set_priority(prio);
+      msg->pgid = get_parent()->primary_spg_t();
+      msg->map_epoch = get_osdmap()->get_epoch();
+      msg->pulls.swap(i->second);
+      msg->compute_cost(cct);
+      get_parent()->send_message_osd_cluster(msg, con);
+    }
+  }
+}
+
+int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info,
+				     const ObjectRecoveryProgress &progress,
+				     ObjectRecoveryProgress *out_progress,
+				     PushOp *out_op,
+				     object_stat_sum_t *stat)
+{
+  ObjectRecoveryProgress _new_progress;
+  if (!out_progress)
+    out_progress = &_new_progress;
+  ObjectRecoveryProgress &new_progress = *out_progress;
+  new_progress = progress;
+
+  dout(7) << "send_push_op " << recovery_info.soid
+	  << " v " << recovery_info.version
+	  << " size " << recovery_info.size
+	  << " recovery_info: " << recovery_info
+          << dendl;
+
+  if (progress.first) {
+    store->omap_get_header(coll, recovery_info.soid, &out_op->omap_header);
+    store->getattrs(coll, recovery_info.soid, out_op->attrset);
+
+    // Debug
+    bufferlist bv = out_op->attrset[OI_ATTR];
+    object_info_t oi(bv);
+
+    if (oi.version != recovery_info.version) {
+      get_parent()->clog_error() << get_info().pgid << " push "
+				 << recovery_info.soid << " v "
+				 << recovery_info.version
+				 << " failed because local copy is "
+				 << oi.version << "\n";
+      return -EINVAL;
+    }
+
+    new_progress.first = false;
+  }
+
+  uint64_t available = cct->_conf->osd_recovery_max_chunk;
+  if (!progress.omap_complete) {
+    ObjectMap::ObjectMapIterator iter =
+      store->get_omap_iterator(coll,
+			       recovery_info.soid);
+    for (iter->lower_bound(progress.omap_recovered_to);
+	 iter->valid();
+	 iter->next()) {
+      if (!out_op->omap_entries.empty() &&
+	  available <= (iter->key().size() + iter->value().length()))
+	break;
+      out_op->omap_entries.insert(make_pair(iter->key(), iter->value()));
+
+      if ((iter->key().size() + iter->value().length()) <= available)
+	available -= (iter->key().size() + iter->value().length());
+      else
+	available = 0;
+    }
+    if (!iter->valid())
+      new_progress.omap_complete = true;
+    else
+      new_progress.omap_recovered_to = iter->key();
+  }
+
+  if (available > 0) {
+    if (!recovery_info.copy_subset.empty()) {
+      interval_set<uint64_t> copy_subset = recovery_info.copy_subset;
+      bufferlist bl;
+      int r = store->fiemap(coll, recovery_info.soid, 0,
+                            copy_subset.range_end(), bl);
+      if (r >= 0)  {
+        interval_set<uint64_t> fiemap_included;
+        map<uint64_t, uint64_t> m;
+        bufferlist::iterator iter = bl.begin();
+        ::decode(m, iter);
+        map<uint64_t, uint64_t>::iterator miter;
+        for (miter = m.begin(); miter != m.end(); ++miter) {
+          fiemap_included.insert(miter->first, miter->second);
+        }
+
+        copy_subset.intersection_of(fiemap_included);
+      }
+      out_op->data_included.span_of(copy_subset, progress.data_recovered_to,
+                                    available);
+      if (out_op->data_included.empty()) // zero filled section, skip to end!
+        new_progress.data_recovered_to = recovery_info.copy_subset.range_end();
+      else
+        new_progress.data_recovered_to = out_op->data_included.range_end();
+    }
+  } else {
+    out_op->data_included.clear();
+  }
+
+  for (interval_set<uint64_t>::iterator p = out_op->data_included.begin();
+       p != out_op->data_included.end();
+       ++p) {
+    bufferlist bit;
+    store->read(coll, recovery_info.soid,
+		     p.get_start(), p.get_len(), bit);
+    if (p.get_len() != bit.length()) {
+      dout(10) << " extent " << p.get_start() << "~" << p.get_len()
+	       << " is actually " << p.get_start() << "~" << bit.length()
+	       << dendl;
+      interval_set<uint64_t>::iterator save = p++;
+      if (bit.length() == 0)
+        out_op->data_included.erase(save);     //Remove this empty interval
+      else
+        save.set_len(bit.length());
+      // Remove any other intervals present
+      while (p != out_op->data_included.end()) {
+        interval_set<uint64_t>::iterator save = p++;
+        out_op->data_included.erase(save);
+      }
+      new_progress.data_complete = true;
+      out_op->data.claim_append(bit);
+      break;
+    }
+    out_op->data.claim_append(bit);
+  }
+
+  if (new_progress.is_complete(recovery_info)) {
+    new_progress.data_complete = true;
+    if (stat)
+      stat->num_objects_recovered++;
+  }
+
+  if (stat) {
+    stat->num_keys_recovered += out_op->omap_entries.size();
+    stat->num_bytes_recovered += out_op->data.length();
+  }
+
+  get_parent()->get_logger()->inc(l_osd_push);
+  get_parent()->get_logger()->inc(l_osd_push_outb, out_op->data.length());
+
+  // send
+  out_op->version = recovery_info.version;
+  out_op->soid = recovery_info.soid;
+  out_op->recovery_info = recovery_info;
+  out_op->after_progress = new_progress;
+  out_op->before_progress = progress;
+  return 0;
+}
+
+int ReplicatedBackend::send_push_op_legacy(int prio, pg_shard_t peer, PushOp &pop)
+{
+  ceph_tid_t tid = get_parent()->get_tid();
+  osd_reqid_t rid(get_parent()->get_cluster_msgr_name(), 0, tid);
+  MOSDSubOp *subop = new MOSDSubOp(
+    rid, parent->whoami_shard(),
+    spg_t(get_info().pgid.pgid, peer.shard), pop.soid,
+    0, get_osdmap()->get_epoch(),
+    tid, pop.recovery_info.version);
+  subop->ops = vector<OSDOp>(1);
+  subop->ops[0].op.op = CEPH_OSD_OP_PUSH;
+
+  subop->set_priority(prio);
+  subop->version = pop.version;
+  subop->ops[0].indata.claim(pop.data);
+  subop->data_included.swap(pop.data_included);
+  subop->omap_header.claim(pop.omap_header);
+  subop->omap_entries.swap(pop.omap_entries);
+  subop->attrset.swap(pop.attrset);
+  subop->recovery_info = pop.recovery_info;
+  subop->current_progress = pop.before_progress;
+  subop->recovery_progress = pop.after_progress;
+
+  get_parent()->send_message_osd_cluster(peer.osd, subop, get_osdmap()->get_epoch());
+  return 0;
+}
+
+void ReplicatedBackend::prep_push_op_blank(const hobject_t& soid, PushOp *op)
+{
+  op->recovery_info.version = eversion_t();
+  op->version = eversion_t();
+  op->soid = soid;
+}
+
+void ReplicatedBackend::sub_op_push_reply(OpRequestRef op)
+{
+  MOSDSubOpReply *reply = static_cast<MOSDSubOpReply*>(op->get_req());
+  const hobject_t& soid = reply->get_poid();
+  assert(reply->get_type() == MSG_OSD_SUBOPREPLY);
+  dout(10) << "sub_op_push_reply from " << reply->get_source() << " " << *reply << dendl;
+  pg_shard_t peer = reply->from;
+
+  op->mark_started();
+
+  PushReplyOp rop;
+  rop.soid = soid;
+  PushOp pop;
+  bool more = handle_push_reply(peer, rop, &pop);
+  if (more)
+    send_push_op_legacy(op->get_req()->get_priority(), peer, pop);
+}
+
+bool ReplicatedBackend::handle_push_reply(pg_shard_t peer, PushReplyOp &op, PushOp *reply)
+{
+  const hobject_t &soid = op.soid;
+  if (pushing.count(soid) == 0) {
+    dout(10) << "huh, i wasn't pushing " << soid << " to osd." << peer
+	     << ", or anybody else"
+	     << dendl;
+    return false;
+  } else if (pushing[soid].count(peer) == 0) {
+    dout(10) << "huh, i wasn't pushing " << soid << " to osd." << peer
+	     << dendl;
+    return false;
+  } else {
+    PushInfo *pi = &pushing[soid][peer];
+
+    if (!pi->recovery_progress.data_complete) {
+      dout(10) << " pushing more from, "
+	       << pi->recovery_progress.data_recovered_to
+	       << " of " << pi->recovery_info.copy_subset << dendl;
+      ObjectRecoveryProgress new_progress;
+      int r = build_push_op(
+	pi->recovery_info,
+	pi->recovery_progress, &new_progress, reply,
+	&(pi->stat));
+      assert(r == 0);
+      pi->recovery_progress = new_progress;
+      return true;
+    } else {
+      // done!
+      get_parent()->on_peer_recover(
+	peer, soid, pi->recovery_info,
+	pi->stat);
+
+      pushing[soid].erase(peer);
+      pi = NULL;
+
+
+      if (pushing[soid].empty()) {
+	get_parent()->on_global_recover(soid);
+	pushing.erase(soid);
+      } else {
+	dout(10) << "pushed " << soid << ", still waiting for push ack from "
+		 << pushing[soid].size() << " others" << dendl;
+      }
+      return false;
+    }
+  }
+}
+
+/** op_pull
+ * process request to pull an entire object.
+ * NOTE: called from opqueue.
+ */
+void ReplicatedBackend::sub_op_pull(OpRequestRef op)
+{
+  MOSDSubOp *m = static_cast<MOSDSubOp*>(op->get_req());
+  assert(m->get_type() == MSG_OSD_SUBOP);
+
+  op->mark_started();
+
+  const hobject_t soid = m->poid;
+
+  dout(7) << "pull" << soid << " v " << m->version
+          << " from " << m->get_source()
+          << dendl;
+
+  assert(!is_primary());  // we should be a replica or stray.
+
+  PullOp pop;
+  pop.soid = soid;
+  pop.recovery_info = m->recovery_info;
+  pop.recovery_progress = m->recovery_progress;
+
+  PushOp reply;
+  handle_pull(m->from, pop, &reply);
+  send_push_op_legacy(
+    m->get_priority(),
+    m->from,
+    reply);
+
+  log_subop_stats(get_parent()->get_logger(), op, l_osd_sop_pull);
+}
+
+void ReplicatedBackend::handle_pull(pg_shard_t peer, PullOp &op, PushOp *reply)
+{
+  const hobject_t &soid = op.soid;
+  struct stat st;
+  int r = store->stat(coll, soid, &st);
+  if (r != 0) {
+    get_parent()->clog_error() << get_info().pgid << " "
+			       << peer << " tried to pull " << soid
+			       << " but got " << cpp_strerror(-r) << "\n";
+    prep_push_op_blank(soid, reply);
+  } else {
+    ObjectRecoveryInfo &recovery_info = op.recovery_info;
+    ObjectRecoveryProgress &progress = op.recovery_progress;
+    if (progress.first && recovery_info.size == ((uint64_t)-1)) {
+      // Adjust size and copy_subset
+      recovery_info.size = st.st_size;
+      recovery_info.copy_subset.clear();
+      if (st.st_size)
+        recovery_info.copy_subset.insert(0, st.st_size);
+      assert(recovery_info.clone_subset.empty());
+    }
+
+    r = build_push_op(recovery_info, progress, 0, reply);
+    if (r < 0)
+      prep_push_op_blank(soid, reply);
+  }
+}
+
+/**
+ * trim received data to remove what we don't want
+ *
+ * @param copy_subset intervals we want
+ * @param data_included intervals we got
+ * @param data_recieved data we got
+ * @param intervals_usable intervals we want to keep
+ * @param data_usable matching data we want to keep
+ */
+void ReplicatedBackend::trim_pushed_data(
+  const interval_set<uint64_t> &copy_subset,
+  const interval_set<uint64_t> &intervals_received,
+  bufferlist data_received,
+  interval_set<uint64_t> *intervals_usable,
+  bufferlist *data_usable)
+{
+  if (intervals_received.subset_of(copy_subset)) {
+    *intervals_usable = intervals_received;
+    *data_usable = data_received;
+    return;
+  }
+
+  intervals_usable->intersection_of(copy_subset,
+				    intervals_received);
+
+  uint64_t off = 0;
+  for (interval_set<uint64_t>::const_iterator p = intervals_received.begin();
+       p != intervals_received.end();
+       ++p) {
+    interval_set<uint64_t> x;
+    x.insert(p.get_start(), p.get_len());
+    x.intersection_of(copy_subset);
+    for (interval_set<uint64_t>::const_iterator q = x.begin();
+	 q != x.end();
+	 ++q) {
+      bufferlist sub;
+      uint64_t data_off = off + (q.get_start() - p.get_start());
+      sub.substr_of(data_received, data_off, q.get_len());
+      data_usable->claim_append(sub);
+    }
+    off += p.get_len();
+  }
+}
+
+/** op_push
+ * NOTE: called from opqueue.
+ */
+void ReplicatedBackend::sub_op_push(OpRequestRef op)
+{
+  op->mark_started();
+  MOSDSubOp *m = static_cast<MOSDSubOp *>(op->get_req());
+
+  PushOp pop;
+  pop.soid = m->recovery_info.soid;
+  pop.version = m->version;
+  m->claim_data(pop.data);
+  pop.data_included.swap(m->data_included);
+  pop.omap_header.swap(m->omap_header);
+  pop.omap_entries.swap(m->omap_entries);
+  pop.attrset.swap(m->attrset);
+  pop.recovery_info = m->recovery_info;
+  pop.before_progress = m->current_progress;
+  pop.after_progress = m->recovery_progress;
+  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+
+  if (is_primary()) {
+    PullOp resp;
+    RPGHandle *h = _open_recovery_op();
+    list<hobject_t> to_continue;
+    bool more = handle_pull_response(
+      m->from, pop, &resp,
+      &to_continue, t);
+    if (more) {
+      send_pull_legacy(
+	m->get_priority(),
+	m->from,
+	resp.recovery_info,
+	resp.recovery_progress);
+    } else {
+      C_ReplicatedBackend_OnPullComplete *c =
+	new C_ReplicatedBackend_OnPullComplete(
+	  this,
+	  op->get_req()->get_priority());
+      c->to_continue.swap(to_continue);
+      t->register_on_complete(
+	new PG_RecoveryQueueAsync(
+	  get_parent(),
+	  get_parent()->bless_gencontext(c)));
+    }
+    run_recovery_op(h, op->get_req()->get_priority());
+  } else {
+    PushReplyOp resp;
+    MOSDSubOpReply *reply = new MOSDSubOpReply(
+      m, parent->whoami_shard(), 0,
+      get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
+    reply->set_priority(m->get_priority());
+    assert(entity_name_t::TYPE_OSD == m->get_connection()->peer_type);
+    handle_push(m->from, pop, &resp, t);
+    t->register_on_complete(new PG_SendMessageOnConn(
+			      get_parent(), reply, m->get_connection()));
+  }
+  t->register_on_applied(
+    new ObjectStore::C_DeleteTransaction(t));
+  get_parent()->queue_transaction(t);
+  return;
+}
+
+void ReplicatedBackend::_failed_push(pg_shard_t from, const hobject_t &soid)
+{
+  get_parent()->failed_push(from, soid);
+  pull_from_peer[from].erase(soid);
+  if (pull_from_peer[from].empty())
+    pull_from_peer.erase(from);
+  pulling.erase(soid);
+}
+
+int ReplicatedBackend::start_pushes(
+  const hobject_t &soid,
+  ObjectContextRef obc,
+  RPGHandle *h)
+{
+  int pushes = 0;
+  // who needs it?
+  assert(get_parent()->get_actingbackfill_shards().size() > 0);
+  for (set<pg_shard_t>::iterator i =
+	 get_parent()->get_actingbackfill_shards().begin();
+       i != get_parent()->get_actingbackfill_shards().end();
+       ++i) {
+    if (*i == get_parent()->whoami_shard()) continue;
+    pg_shard_t peer = *i;
+    map<pg_shard_t, pg_missing_t>::const_iterator j =
+      get_parent()->get_shard_missing().find(peer);
+    assert(j != get_parent()->get_shard_missing().end());
+    if (j->second.is_missing(soid)) {
+      ++pushes;
+      h->pushes[peer].push_back(PushOp());
+      prep_push_to_replica(obc, soid, peer,
+			   &(h->pushes[peer].back())
+	);
+    }
+  }
+  return pushes;
+}
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index aebcbf7..4e00192 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -90,35 +90,6 @@ PGLSFilter::~PGLSFilter()
 {
 }
 
-static void log_subop_stats(
-  PerfCounters *logger,
-  OpRequestRef op, int subop)
-{
-  utime_t now = ceph_clock_now(g_ceph_context);
-  utime_t latency = now;
-  latency -= op->get_req()->get_recv_stamp();
-
-
-  logger->inc(l_osd_sop);
-  logger->tinc(l_osd_sop_lat, latency);
-  logger->inc(subop);
-
-  if (subop != l_osd_sop_pull) {
-    uint64_t inb = op->get_req()->get_data().length();
-    logger->inc(l_osd_sop_inb, inb);
-    if (subop == l_osd_sop_w) {
-      logger->inc(l_osd_sop_w_inb, inb);
-      logger->tinc(l_osd_sop_w_lat, latency);
-    } else if (subop == l_osd_sop_push) {
-      logger->inc(l_osd_sop_push_inb, inb);
-      logger->tinc(l_osd_sop_push_lat, latency);
-    } else
-      assert("no support subop" == 0);
-  } else {
-    logger->tinc(l_osd_sop_pull_lat, latency);
-  }
-}
-
 struct OnReadComplete : public Context {
   ReplicatedPG *pg;
   ReplicatedPG::OpContext *opcontext;
@@ -440,36 +411,6 @@ void ReplicatedPG::wait_for_all_missing(OpRequestRef op)
   op->mark_delayed("waiting for all missing");
 }
 
-bool ReplicatedPG::is_degraded_object(const hobject_t &soid, int *healthy_copies)
-{
-  bool degraded = false;
-  assert(healthy_copies);
-  *healthy_copies = 0;
-
-  if (pg_log.get_missing().missing.count(soid)) {
-    degraded = true;
-  } else {
-    *healthy_copies += 1;
-  }
-
-  for (set<pg_shard_t>::iterator i = actingbackfill.begin();
-       i != actingbackfill.end();
-       ++i) {
-    if (*i == get_primary()) continue;
-    pg_shard_t peer = *i;
-    if (peer_missing.count(peer) &&
-        peer_missing[peer].missing.count(soid)) {
-      degraded = true;
-      continue;
-    }
-
-    assert(peer_info.count(peer));
-    if (!peer_info[peer].is_incomplete())
-      *healthy_copies += 1;
-  }
-  return degraded;
-}
-
 bool ReplicatedPG::is_degraded_or_backfilling_object(const hobject_t& soid)
 {
   if (pg_log.get_missing().missing.count(soid))
@@ -1471,25 +1412,7 @@ void ReplicatedPG::do_op(OpRequestRef& op)
   }
 
   // degraded object?
-  
-  /* We continue to block writes on degraded objects for an EC pools because
-   * we have to reset can_rollback_to when we get a repop without the
-   * transaction.  If two replicas do that on sequential ops on different
-   * objects and then crash, other unstable objects before those two would
-   * also be unable to be rolled back, and would also wind up unfound.
-   * We can enable degraded writes on ec pools by blocking such a write
-   * to a peer until all previous writes have completed.  For now, we
-   * will simply block them.
-   *
-   * We also block if our peers do not support DEGRADED_WRITES.
-   */
-  int valid_copies = 0;
-  if (write_ordered &&
-      is_degraded_object(head, &valid_copies) &&
-      (valid_copies < pool.info.min_size ||
-       pool.info.ec_pool() ||
-       !cct->_conf->osd_enable_degraded_writes ||
-       !(get_min_peer_features() & CEPH_FEATURE_OSD_DEGRADED_WRITES))) {
+  if (write_ordered && is_degraded_or_backfilling_object(head)) {
     wait_for_degraded_object(head, op);
     return;
   }
@@ -1616,7 +1539,8 @@ void ReplicatedPG::do_op(OpRequestRef& op)
   }
 
   if (agent_state) {
-    agent_choose_mode();
+    if (agent_choose_mode(false, op))
+      return;
   }
 
   if ((m->get_flags() & CEPH_OSD_FLAG_IGNORE_CACHE) == 0 &&
@@ -2222,11 +2146,25 @@ void ReplicatedPG::promote_object(ObjectContextRef obc,
 				  const object_locator_t& oloc,
 				  OpRequestRef op)
 {
+  hobject_t hoid = obc ? obc->obs.oi.soid : missing_oid;
+  assert(hoid != hobject_t());
+  if (scrubber.write_blocked_by_scrub(hoid)) {
+    dout(10) << __func__ << " " << hoid
+	     << " blocked by scrub" << dendl;
+    if (op) {
+      waiting_for_active.push_back(op);
+      dout(10) << __func__ << " " << hoid
+	       << " placing op in waiting_for_active" << dendl;
+    } else {
+      dout(10) << __func__ << " " << hoid
+	       << " no op, dropping on the floor" << dendl;
+    }
+    return;
+  }
   if (!obc) { // we need to create an ObjectContext
     assert(missing_oid != hobject_t());
     obc = get_object_context(missing_oid, true);
   }
-  dout(10) << __func__ << " " << obc->obs.oi.soid << dendl;
 
   PromoteCallback *cb = new PromoteCallback(obc, this);
   object_locator_t my_oloc = oloc;
@@ -2297,9 +2235,6 @@ void ReplicatedPG::execute_ctx(OpContext *ctx)
     ctx->user_at_version = obc->obs.oi.user_version;
   dout(30) << __func__ << " user_at_version " << ctx->user_at_version << dendl;
 
-  // note my stats
-  utime_t now = ceph_clock_now(cct);
-
   if (op->may_read()) {
     dout(10) << " taking ondisk_read_lock" << dendl;
     obc->ondisk_read_lock();
@@ -2423,7 +2358,7 @@ void ReplicatedPG::execute_ctx(OpContext *ctx)
 
   repop->src_obc.swap(src_obc); // and src_obc.
 
-  issue_repop(repop, now);
+  issue_repop(repop);
 
   eval_repop(repop);
   repop->put();
@@ -2640,150 +2575,6 @@ void ReplicatedPG::do_scan(
   }
 }
 
-void ReplicatedBackend::_do_push(OpRequestRef op)
-{
-  MOSDPGPush *m = static_cast<MOSDPGPush *>(op->get_req());
-  assert(m->get_type() == MSG_OSD_PG_PUSH);
-  pg_shard_t from = m->from;
-
-  vector<PushReplyOp> replies;
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
-  for (vector<PushOp>::iterator i = m->pushes.begin();
-       i != m->pushes.end();
-       ++i) {
-    replies.push_back(PushReplyOp());
-    handle_push(from, *i, &(replies.back()), t);
-  }
-
-  MOSDPGPushReply *reply = new MOSDPGPushReply;
-  reply->from = get_parent()->whoami_shard();
-  reply->set_priority(m->get_priority());
-  reply->pgid = get_info().pgid;
-  reply->map_epoch = m->map_epoch;
-  reply->replies.swap(replies);
-  reply->compute_cost(cct);
-
-  t->register_on_complete(
-    new PG_SendMessageOnConn(
-      get_parent(), reply, m->get_connection()));
-
-  t->register_on_applied(
-    new ObjectStore::C_DeleteTransaction(t));
-  get_parent()->queue_transaction(t);
-}
-
-struct C_ReplicatedBackend_OnPullComplete : GenContext<ThreadPool::TPHandle&> {
-  ReplicatedBackend *bc;
-  list<hobject_t> to_continue;
-  int priority;
-  C_ReplicatedBackend_OnPullComplete(ReplicatedBackend *bc, int priority)
-    : bc(bc), priority(priority) {}
-
-  void finish(ThreadPool::TPHandle &handle) {
-    ReplicatedBackend::RPGHandle *h = bc->_open_recovery_op();
-    for (list<hobject_t>::iterator i =
-	   to_continue.begin();
-	 i != to_continue.end();
-	 ++i) {
-      map<hobject_t, ReplicatedBackend::PullInfo>::iterator j =
-	bc->pulling.find(*i);
-      assert(j != bc->pulling.end());
-      if (!bc->start_pushes(*i, j->second.obc, h)) {
-	bc->get_parent()->on_global_recover(
-	  *i);
-      }
-      bc->pulling.erase(*i);
-      handle.reset_tp_timeout();
-    }
-    bc->run_recovery_op(h, priority);
-  }
-};
-
-void ReplicatedBackend::_do_pull_response(OpRequestRef op)
-{
-  MOSDPGPush *m = static_cast<MOSDPGPush *>(op->get_req());
-  assert(m->get_type() == MSG_OSD_PG_PUSH);
-  pg_shard_t from = m->from;
-
-  vector<PullOp> replies(1);
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
-  list<hobject_t> to_continue;
-  for (vector<PushOp>::iterator i = m->pushes.begin();
-       i != m->pushes.end();
-       ++i) {
-    bool more = handle_pull_response(from, *i, &(replies.back()), &to_continue, t);
-    if (more)
-      replies.push_back(PullOp());
-  }
-  if (!to_continue.empty()) {
-    C_ReplicatedBackend_OnPullComplete *c =
-      new C_ReplicatedBackend_OnPullComplete(
-	this,
-	m->get_priority());
-    c->to_continue.swap(to_continue);
-    t->register_on_complete(
-      new PG_RecoveryQueueAsync(
-	get_parent(),
-	get_parent()->bless_gencontext(c)));
-  }
-  replies.erase(replies.end() - 1);
-
-  if (replies.size()) {
-    MOSDPGPull *reply = new MOSDPGPull;
-    reply->from = parent->whoami_shard();
-    reply->set_priority(m->get_priority());
-    reply->pgid = get_info().pgid;
-    reply->map_epoch = m->map_epoch;
-    reply->pulls.swap(replies);
-    reply->compute_cost(cct);
-
-    t->register_on_complete(
-      new PG_SendMessageOnConn(
-	get_parent(), reply, m->get_connection()));
-  }
-
-  t->register_on_applied(
-    new ObjectStore::C_DeleteTransaction(t));
-  get_parent()->queue_transaction(t);
-}
-
-void ReplicatedBackend::do_pull(OpRequestRef op)
-{
-  MOSDPGPull *m = static_cast<MOSDPGPull *>(op->get_req());
-  assert(m->get_type() == MSG_OSD_PG_PULL);
-  pg_shard_t from = m->from;
-
-  map<pg_shard_t, vector<PushOp> > replies;
-  for (vector<PullOp>::iterator i = m->pulls.begin();
-       i != m->pulls.end();
-       ++i) {
-    replies[from].push_back(PushOp());
-    handle_pull(from, *i, &(replies[from].back()));
-  }
-  send_pushes(m->get_priority(), replies);
-}
-
-void ReplicatedBackend::do_push_reply(OpRequestRef op)
-{
-  MOSDPGPushReply *m = static_cast<MOSDPGPushReply *>(op->get_req());
-  assert(m->get_type() == MSG_OSD_PG_PUSH_REPLY);
-  pg_shard_t from = m->from;
-
-  vector<PushOp> replies(1);
-  for (vector<PushReplyOp>::iterator i = m->replies.begin();
-       i != m->replies.end();
-       ++i) {
-    bool more = handle_push_reply(from, *i, &(replies.back()));
-    if (more)
-      replies.push_back(PushOp());
-  }
-  replies.erase(replies.end() - 1);
-
-  map<pg_shard_t, vector<PushOp> > _replies;
-  _replies[from].swap(replies);
-  send_pushes(m->get_priority(), _replies);
-}
-
 void ReplicatedPG::do_backfill(OpRequestRef op)
 {
   MOSDPGBackfill *m = static_cast<MOSDPGBackfill*>(op->get_req());
@@ -3504,6 +3295,22 @@ static string list_entries(const T& m) {
   return s;
 }
 
+bool ReplicatedPG::maybe_create_new_object(OpContext *ctx)
+{
+  ObjectState& obs = ctx->new_obs;
+  if (!obs.exists) {
+    ctx->delta_stats.num_objects++;
+    obs.exists = true;
+    obs.oi.new_object();
+    return true;
+  } else if (obs.oi.is_whiteout()) {
+    dout(10) << __func__ << " clearing whiteout on " << obs.oi.soid << dendl;
+    ctx->new_obs.oi.clear_flag(object_info_t::FLAG_WHITEOUT);
+    --ctx->delta_stats.num_whiteouts;
+  }
+  return false;
+}
+
 int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 {
   int result = 0;
@@ -4274,13 +4081,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
           result = -EOPNOTSUPP;
           break;
         }
-        if (!obs.exists) {
+	if (maybe_create_new_object(ctx)) {
           ctx->mod_desc.create();
           t->touch(soid);
-          ctx->delta_stats.num_objects++;
-          obs.exists = true;
-	  obs.oi.new_object();
-        }
+	}
         t->set_alloc_hint(soid, op.alloc_hint.expected_object_size,
                           op.alloc_hint.expected_write_size);
         ctx->delta_stats.num_wr++;
@@ -4364,11 +4168,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 	}
 	write_update_size_and_usage(ctx->delta_stats, oi, ctx->modified_ranges,
 				    op.extent.offset, op.extent.length, true);
-	if (!obs.exists) {
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.set_omap_digest(-1);
-	}
+	maybe_create_new_object(ctx);
 	if (op.extent.offset == 0 && op.extent.length == oi.size)
 	  obs.oi.set_data_digest(osd_op.indata.crc32c(-1));
 	else
@@ -4425,11 +4225,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 	  }
 	  t->write(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
 	}
-	if (!obs.exists) {
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.set_omap_digest(-1);  // no omap yet
-	}
+	maybe_create_new_object(ctx);
 	obs.oi.set_data_digest(osd_op.indata.crc32c(-1));
 
 	interval_set<uint64_t> ch;
@@ -4499,14 +4295,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 	    // category is no longer implemented.
 	  }
           if (result >= 0) {
-            if (!obs.exists)
+	    if (maybe_create_new_object(ctx)) {
               ctx->mod_desc.create();
+	    }
             t->touch(soid);
-            if (!obs.exists) {
-              ctx->delta_stats.num_objects++;
-              obs.exists = true;
-	      obs.oi.new_object();
-            }
           }
 	}
       }
@@ -4583,11 +4375,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
       ++ctx->num_read;
       ++ctx->num_write;
       {
-	if (!obs.exists) {
+	if (maybe_create_new_object(ctx)) {
 	  t->touch(obs.oi.soid);
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.new_object();
 	}
 	if (op.clonerange.src_offset + op.clonerange.length > src_obc->obs.oi.size) {
 	  dout(10) << " clonerange source " << osd_op.soid << " "
@@ -4698,12 +4487,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 	  result = -ENAMETOOLONG;
 	  break;
 	}
-	if (!obs.exists) {
+	if (maybe_create_new_object(ctx)) {
 	  ctx->mod_desc.create();
 	  t->touch(soid);
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.new_object();
 	}
 	string aname;
 	bp.copy(op.xattr.name_len, aname);
@@ -5072,13 +4858,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
       ctx->mod_desc.mark_unrollbackable();
       ++ctx->num_write;
       {
-	if (!obs.exists) {
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.set_data_digest(-1);
+	if (maybe_create_new_object(ctx)) {
+	  t->touch(soid);
 	}
-	obs.oi.clear_omap_digest();
-	t->touch(soid);
 	map<string, bufferlist> to_set;
 	try {
 	  ::decode(to_set, bp);
@@ -5099,6 +4881,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 	ctx->delta_stats.num_wr++;
       }
       obs.oi.set_flag(object_info_t::FLAG_OMAP);
+      obs.oi.clear_omap_digest();
       break;
 
     case CEPH_OSD_OP_OMAPSETHEADER:
@@ -5110,17 +4893,16 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
       ctx->mod_desc.mark_unrollbackable();
       ++ctx->num_write;
       {
-	if (!obs.exists) {
-	  ctx->delta_stats.num_objects++;
-	  obs.exists = true;
-	  obs.oi.set_data_digest(-1);
+	if (maybe_create_new_object(ctx)) {
+	  t->touch(soid);
+	} else {
+	  obs.oi.clear_omap_digest();
 	}
-	obs.oi.clear_omap_digest();
-	t->touch(soid);
 	t->omap_setheader(soid, osd_op.indata);
 	ctx->delta_stats.num_wr++;
       }
       obs.oi.set_flag(object_info_t::FLAG_OMAP);
+      obs.oi.clear_omap_digest();
       break;
 
     case CEPH_OSD_OP_OMAPCLEAR:
@@ -5501,10 +5283,7 @@ int ReplicatedPG::_rollback_to(OpContext *ctx, ceph_osd_op& op)
       }
 
       // Adjust the cached objectcontext
-      if (!obs.exists) {
-	obs.exists = true; //we're about to recreate it
-	ctx->delta_stats.num_objects++;
-      }
+      maybe_create_new_object(ctx);
       ctx->delta_stats.num_bytes -= obs.oi.size;
       ctx->delta_stats.num_bytes += rollback_to->obs.oi.size;
       obs.oi.size = rollback_to->obs.oi.size;
@@ -5858,16 +5637,6 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx)
     return result;
   }
 
-  // cache: clear whiteout?
-  if (pool.info.cache_mode != pg_pool_t::CACHEMODE_NONE) {
-    if (ctx->user_modify &&
-	ctx->obc->obs.oi.is_whiteout()) {
-      dout(10) << __func__ << " clearing whiteout on " << soid << dendl;
-      ctx->new_obs.oi.clear_flag(object_info_t::FLAG_WHITEOUT);
-      --ctx->delta_stats.num_whiteouts;
-    }
-  }
-
   // clone, if necessary
   if (soid.snap == CEPH_NOSNAP)
     make_writeable(ctx);
@@ -6002,18 +5771,19 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc
       dout(10) << " final snapset " << ctx->new_snapset
 	       << " in " << soid << dendl;
       setattr_maybe_cache(ctx->obc, ctx, ctx->op_t, SS_ATTR, bss);
+    } else {
+      dout(10) << " no snapset (this is a clone)" << dendl;
+    }
 
-      if (pool.info.require_rollback()) {
-	set<string> changing;
-	changing.insert(OI_ATTR);
+    if (pool.info.require_rollback()) {
+      set<string> changing;
+      changing.insert(OI_ATTR);
+      if (!soid.is_snap())
 	changing.insert(SS_ATTR);
-	ctx->obc->fill_in_setattrs(changing, &(ctx->mod_desc));
-      } else {
-	// replicated pools are never rollbackable in this case
-	ctx->mod_desc.mark_unrollbackable();
-      }
+      ctx->obc->fill_in_setattrs(changing, &(ctx->mod_desc));
     } else {
-      dout(10) << " no snapset (this is a clone)" << dendl;
+      // replicated pools are never rollbackable in this case
+      ctx->mod_desc.mark_unrollbackable();
     }
   } else {
     ctx->new_obs.oi = object_info_t(ctx->obc->obs.oi.soid);
@@ -7591,7 +7361,7 @@ void ReplicatedPG::eval_repop(RepGather *repop)
   }
 }
 
-void ReplicatedPG::issue_repop(RepGather *repop, utime_t now)
+void ReplicatedPG::issue_repop(RepGather *repop)
 {
   OpContext *ctx = repop->ctx;
   const hobject_t& soid = ctx->obs->oi.soid;
@@ -7662,170 +7432,6 @@ void ReplicatedPG::issue_repop(RepGather *repop, utime_t now)
     repop->ctx->reqid,
     repop->ctx->op);
   repop->ctx->op_t = NULL;
-
-  if (is_degraded_or_backfilling_object(soid)) {
-    dout(10) << __func__ << ": " << soid
-	     << " degraded, maintaining missing sets"
-	     << dendl;
-    assert(!is_missing_object(soid));
-    for (vector<pg_log_entry_t>::iterator j = repop->ctx->log.begin();
-	 j != repop->ctx->log.end();
-	 ++j) {
-      for (set<pg_shard_t>::const_iterator peer = actingbackfill.begin();
-	   peer != actingbackfill.end();
-	   ++peer) {
-	if (*peer == pg_whoami) {
-	  assert(!is_missing_object(j->soid));
-	  continue;
-	}
-	map<pg_shard_t, pg_missing_t>::iterator pm = peer_missing.find(*peer);
-	assert(pm != peer_missing.end());
-	if (!pm->second.is_missing(soid)) {
-	  assert(!pm->second.is_missing(j->soid));
-	  continue;
-	}
-	dout(10) << __func__ << ": " << soid << " missing on "
-		 << *peer << ", adding event " << *j << " to missing"
-		 << dendl;
-	pm->second.add_next_event(*j);
-      }
-      missing_loc.rebuild_object_location(
-	j->soid,
-	actingbackfill,
-	get_all_missing(),
-	get_all_info());
-    }
-  }
-}
-
-template<typename T, int MSGTYPE>
-Message * ReplicatedBackend::generate_subop(
-  const hobject_t &soid,
-  const eversion_t &at_version,
-  ceph_tid_t tid,
-  osd_reqid_t reqid,
-  eversion_t pg_trim_to,
-  eversion_t pg_trim_rollback_to,
-  hobject_t new_temp_oid,
-  hobject_t discard_temp_oid,
-  const vector<pg_log_entry_t> &log_entries,
-  boost::optional<pg_hit_set_history_t> &hset_hist,
-  InProgressOp *op,
-  ObjectStore::Transaction *op_t,
-  pg_shard_t peer,
-  const pg_info_t &pinfo)
-{
-  int acks_wanted = CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK;
-  assert(MSGTYPE == MSG_OSD_SUBOP || MSGTYPE == MSG_OSD_REPOP);
-  // forward the write/update/whatever
-  T *wr = new T(
-    reqid, parent->whoami_shard(),
-    spg_t(get_info().pgid.pgid, peer.shard),
-    soid, acks_wanted,
-    get_osdmap()->get_epoch(),
-    tid, at_version);
-
-  // ship resulting transaction, log entries, and pg_stats
-  if (!parent->should_send_op(peer, soid)) {
-    dout(10) << "issue_repop shipping empty opt to osd." << peer
-	     <<", object " << soid
-	     << " beyond MAX(last_backfill_started "
-	     << ", pinfo.last_backfill "
-	     << pinfo.last_backfill << ")" << dendl;
-    ObjectStore::Transaction t;
-    t.set_use_tbl(op_t->get_use_tbl());
-    ::encode(t, wr->get_data());
-  } else {
-    ::encode(*op_t, wr->get_data());
-  }
-
-  ::encode(log_entries, wr->logbl);
-
-  if (pinfo.is_incomplete())
-    wr->pg_stats = pinfo.stats;  // reflects backfill progress
-  else
-    wr->pg_stats = get_info().stats;
-    
-  wr->pg_trim_to = pg_trim_to;
-  wr->pg_trim_rollback_to = pg_trim_rollback_to;
-
-  wr->new_temp_oid = new_temp_oid;
-  wr->discard_temp_oid = discard_temp_oid;
-  wr->updated_hit_set_history = hset_hist;
-  return wr;
-}
-
-void ReplicatedBackend::issue_op(
-  const hobject_t &soid,
-  const eversion_t &at_version,
-  ceph_tid_t tid,
-  osd_reqid_t reqid,
-  eversion_t pg_trim_to,
-  eversion_t pg_trim_rollback_to,
-  hobject_t new_temp_oid,
-  hobject_t discard_temp_oid,
-  const vector<pg_log_entry_t> &log_entries,
-  boost::optional<pg_hit_set_history_t> &hset_hist,
-  InProgressOp *op,
-  ObjectStore::Transaction *op_t)
-{
-
-  if (parent->get_actingbackfill_shards().size() > 1) {
-    ostringstream ss;
-    set<pg_shard_t> replicas = parent->get_actingbackfill_shards();
-    replicas.erase(parent->whoami_shard());
-    ss << "waiting for subops from " << replicas;
-    if (op->op)
-      op->op->mark_sub_op_sent(ss.str());
-  }
-  for (set<pg_shard_t>::const_iterator i =
-	 parent->get_actingbackfill_shards().begin();
-       i != parent->get_actingbackfill_shards().end();
-       ++i) {
-    if (*i == parent->whoami_shard()) continue;
-    pg_shard_t peer = *i;
-    const pg_info_t &pinfo = parent->get_shard_info().find(peer)->second;
-
-    Message *wr;
-    uint64_t min_features = parent->min_peer_features();
-    if (!(min_features & CEPH_FEATURE_OSD_REPOP)) {
-      dout(20) << "Talking to old version of OSD, doesn't support RepOp, fall back to SubOp" << dendl;
-      wr = generate_subop<MOSDSubOp, MSG_OSD_SUBOP>(
-	    soid,
-	    at_version,
-	    tid,
-	    reqid,
-	    pg_trim_to,
-	    pg_trim_rollback_to,
-	    new_temp_oid,
-	    discard_temp_oid,
-	    log_entries,
-	    hset_hist,
-	    op,
-	    op_t,
-	    peer,
-	    pinfo);
-    } else {
-      wr = generate_subop<MOSDRepOp, MSG_OSD_REPOP>(
-	    soid,
-	    at_version,
-	    tid,
-	    reqid,
-	    pg_trim_to,
-	    pg_trim_rollback_to,
-	    new_temp_oid,
-	    discard_temp_oid,
-	    log_entries,
-	    hset_hist,
-	    op,
-	    op_t,
-	    peer,
-	    pinfo);
-    }
-
-    get_parent()->send_message_osd_cluster(
-      peer.osd, wr, get_osdmap()->get_epoch());
-  }
 }
 
 ReplicatedPG::RepGather *ReplicatedPG::new_repop(OpContext *ctx, ObjectContextRef obc,
@@ -7882,7 +7488,7 @@ ReplicatedPG::RepGather *ReplicatedPG::simple_repop_create(ObjectContextRef obc)
 void ReplicatedPG::simple_repop_submit(RepGather *repop)
 {
   dout(20) << __func__ << " " << repop << dendl;
-  issue_repop(repop, repop->ctx->mtime);
+  issue_repop(repop);
   eval_repop(repop);
   repop->put();
 }
@@ -8529,338 +8135,6 @@ void ReplicatedPG::put_snapset_context(SnapSetContext *ssc)
   }
 }
 
-// sub op modify
-void ReplicatedBackend::sub_op_modify(OpRequestRef op) {
-  Message *m = op->get_req();
-  int msg_type = m->get_type();
-  if (msg_type == MSG_OSD_SUBOP) {
-    sub_op_modify_impl<MOSDSubOp, MSG_OSD_SUBOP>(op);
-  } else if (msg_type == MSG_OSD_REPOP) {
-    sub_op_modify_impl<MOSDRepOp, MSG_OSD_REPOP>(op);
-  } else {
-    assert(0);
-  }
-}
-
-template<typename T, int MSGTYPE>
-void ReplicatedBackend::sub_op_modify_impl(OpRequestRef op)
-{
-  T *m = static_cast<T *>(op->get_req());
-  int msg_type = m->get_type();
-  assert(MSGTYPE == msg_type);
-  assert(msg_type == MSG_OSD_SUBOP || msg_type == MSG_OSD_REPOP);
-
-  const hobject_t& soid = m->poid;
-
-  dout(10) << "sub_op_modify trans"
-           << " " << soid 
-           << " v " << m->version
-	   << (m->logbl.length() ? " (transaction)" : " (parallel exec")
-	   << " " << m->logbl.length()
-	   << dendl;  
-
-  // sanity checks
-  assert(m->map_epoch >= get_info().history.same_interval_since);
-  
-  int ackerosd = m->get_source().num();
-  
-  op->mark_started();
-
-  RepModifyRef rm(new RepModify);
-  rm->op = op;
-  rm->ackerosd = ackerosd;
-  rm->last_complete = get_info().last_complete;
-  rm->epoch_started = get_osdmap()->get_epoch();
-
-  assert(m->logbl.length());
-  // shipped transaction and log entries
-  vector<pg_log_entry_t> log;
-
-  bufferlist::iterator p = m->get_data().begin();
-  ::decode(rm->opt, p);
-  rm->localt.set_use_tbl(rm->opt.get_use_tbl());
-
-  if (m->new_temp_oid != hobject_t()) {
-    dout(20) << __func__ << " start tracking temp " << m->new_temp_oid << dendl;
-    add_temp_obj(m->new_temp_oid);
-    get_temp_coll(&rm->localt);
-  }
-  if (m->discard_temp_oid != hobject_t()) {
-    dout(20) << __func__ << " stop tracking temp " << m->discard_temp_oid << dendl;
-    if (rm->opt.empty()) {
-      dout(10) << __func__ << ": removing object " << m->discard_temp_oid
-	       << " since we won't get the transaction" << dendl;
-      rm->localt.remove(temp_coll, m->discard_temp_oid);
-    }
-    clear_temp_obj(m->discard_temp_oid);
-  }
-
-  p = m->logbl.begin();
-  ::decode(log, p);
-  rm->opt.set_fadvise_flag(CEPH_OSD_OP_FLAG_FADVISE_DONTNEED);
-
-  bool update_snaps = false;
-  if (!rm->opt.empty()) {
-    // If the opt is non-empty, we infer we are before
-    // last_backfill (according to the primary, not our
-    // not-quite-accurate value), and should update the
-    // collections now.  Otherwise, we do it later on push.
-    update_snaps = true;
-  }
-  parent->update_stats(m->pg_stats);
-  parent->log_operation(
-    log,
-    m->updated_hit_set_history,
-    m->pg_trim_to,
-    m->pg_trim_rollback_to,
-    update_snaps,
-    &(rm->localt));
-
-  rm->bytes_written = rm->opt.get_encoded_bytes();
-  
-  op->mark_started();
-
-  rm->localt.append(rm->opt);
-  rm->localt.register_on_commit(
-    parent->bless_context(
-      new C_OSD_RepModifyCommit(this, rm)));
-  rm->localt.register_on_applied(
-    parent->bless_context(
-      new C_OSD_RepModifyApply(this, rm)));
-  parent->queue_transaction(&(rm->localt), op);
-  // op is cleaned up by oncommit/onapply when both are executed
-}
-
-void ReplicatedBackend::sub_op_modify_applied(RepModifyRef rm)
-{
-  rm->op->mark_event("sub_op_applied");
-  rm->applied = true;
-
-  dout(10) << "sub_op_modify_applied on " << rm << " op "
-	   << *rm->op->get_req() << dendl;
-  Message *m = rm->op->get_req();
-
-  Message *ack = NULL;
-  eversion_t version;
-
-  if (m->get_type() == MSG_OSD_SUBOP) {
-    // doesn't have CLIENT SUBOP feature ,use Subop
-    MOSDSubOp *req = static_cast<MOSDSubOp*>(m);
-    version = req->version;
-    if (!rm->committed)
-      ack = new MOSDSubOpReply(
-	req, parent->whoami_shard(),
-	0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
-  } else if (m->get_type() == MSG_OSD_REPOP) {
-    MOSDRepOp *req = static_cast<MOSDRepOp*>(m);
-    version = req->version;
-    if (!rm->committed)
-      ack = new MOSDRepOpReply(
-	static_cast<MOSDRepOp*>(m), parent->whoami_shard(),
-	0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
-  } else {
-    assert(0);
-  }
-
-  // send ack to acker only if we haven't sent a commit already
-  if (ack) {
-    ack->set_priority(CEPH_MSG_PRIO_HIGH); // this better match commit priority!
-    get_parent()->send_message_osd_cluster(
-      rm->ackerosd, ack, get_osdmap()->get_epoch());
-  }
-  
-  parent->op_applied(version);
-}
-
-void ReplicatedBackend::sub_op_modify_commit(RepModifyRef rm)
-{
-  rm->op->mark_commit_sent();
-  rm->committed = true;
-
-  // send commit.
-  dout(10) << "sub_op_modify_commit on op " << *rm->op->get_req()
-	   << ", sending commit to osd." << rm->ackerosd
-	   << dendl;
-  
-  assert(get_osdmap()->is_up(rm->ackerosd));
-  get_parent()->update_last_complete_ondisk(rm->last_complete);
-
-  Message *m = rm->op->get_req();
-  Message *commit;
-  if (m->get_type() == MSG_OSD_SUBOP) {
-    // doesn't have CLIENT SUBOP feature ,use Subop
-    MOSDSubOpReply  *reply = new MOSDSubOpReply(
-      static_cast<MOSDSubOp*>(m),
-      get_parent()->whoami_shard(),
-      0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ONDISK);
-    reply->set_last_complete_ondisk(rm->last_complete);
-    commit = reply;
-  } else if (m->get_type() == MSG_OSD_REPOP) {
-    MOSDRepOpReply *reply = new MOSDRepOpReply(
-      static_cast<MOSDRepOp*>(m),
-      get_parent()->whoami_shard(),
-      0, get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ONDISK);
-    reply->set_last_complete_ondisk(rm->last_complete);
-    commit = reply;
-  }
-  else {
-    assert(0);
-  }
-
-  commit->set_priority(CEPH_MSG_PRIO_HIGH); // this better match ack priority!
-  get_parent()->send_message_osd_cluster(
-    rm->ackerosd, commit, get_osdmap()->get_epoch());
-  
-  log_subop_stats(get_parent()->get_logger(), rm->op, l_osd_sop_w);
-}
-
-
-// ===========================================================
-
-void ReplicatedBackend::calc_head_subsets(
-  ObjectContextRef obc, SnapSet& snapset, const hobject_t& head,
-  const pg_missing_t& missing,
-  const hobject_t &last_backfill,
-  interval_set<uint64_t>& data_subset,
-  map<hobject_t, interval_set<uint64_t> >& clone_subsets)
-{
-  dout(10) << "calc_head_subsets " << head
-	   << " clone_overlap " << snapset.clone_overlap << dendl;
-
-  uint64_t size = obc->obs.oi.size;
-  if (size)
-    data_subset.insert(0, size);
-
-  if (get_parent()->get_pool().allow_incomplete_clones()) {
-    dout(10) << __func__ << ": caching (was) enabled, skipping clone subsets" << dendl;
-    return;
-  }
-
-  if (!cct->_conf->osd_recover_clone_overlap) {
-    dout(10) << "calc_head_subsets " << head << " -- osd_recover_clone_overlap disabled" << dendl;
-    return;
-  }
-
-
-  interval_set<uint64_t> cloning;
-  interval_set<uint64_t> prev;
-  if (size)
-    prev.insert(0, size);    
-  
-  for (int j=snapset.clones.size()-1; j>=0; j--) {
-    hobject_t c = head;
-    c.snap = snapset.clones[j];
-    prev.intersection_of(snapset.clone_overlap[snapset.clones[j]]);
-    if (!missing.is_missing(c) && c < last_backfill) {
-      dout(10) << "calc_head_subsets " << head << " has prev " << c
-	       << " overlap " << prev << dendl;
-      clone_subsets[c] = prev;
-      cloning.union_of(prev);
-      break;
-    }
-    dout(10) << "calc_head_subsets " << head << " does not have prev " << c
-	     << " overlap " << prev << dendl;
-  }
-
-
-  if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
-    dout(10) << "skipping clone, too many holes" << dendl;
-    clone_subsets.clear();
-    cloning.clear();
-  }
-
-  // what's left for us to push?
-  data_subset.subtract(cloning);
-
-  dout(10) << "calc_head_subsets " << head
-	   << "  data_subset " << data_subset
-	   << "  clone_subsets " << clone_subsets << dendl;
-}
-
-void ReplicatedBackend::calc_clone_subsets(
-  SnapSet& snapset, const hobject_t& soid,
-  const pg_missing_t& missing,
-  const hobject_t &last_backfill,
-  interval_set<uint64_t>& data_subset,
-  map<hobject_t, interval_set<uint64_t> >& clone_subsets)
-{
-  dout(10) << "calc_clone_subsets " << soid
-	   << " clone_overlap " << snapset.clone_overlap << dendl;
-
-  uint64_t size = snapset.clone_size[soid.snap];
-  if (size)
-    data_subset.insert(0, size);
-
-  if (get_parent()->get_pool().allow_incomplete_clones()) {
-    dout(10) << __func__ << ": caching (was) enabled, skipping clone subsets" << dendl;
-    return;
-  }
-
-  if (!cct->_conf->osd_recover_clone_overlap) {
-    dout(10) << "calc_clone_subsets " << soid << " -- osd_recover_clone_overlap disabled" << dendl;
-    return;
-  }
-  
-  unsigned i;
-  for (i=0; i < snapset.clones.size(); i++)
-    if (snapset.clones[i] == soid.snap)
-      break;
-
-  // any overlap with next older clone?
-  interval_set<uint64_t> cloning;
-  interval_set<uint64_t> prev;
-  if (size)
-    prev.insert(0, size);    
-  for (int j=i-1; j>=0; j--) {
-    hobject_t c = soid;
-    c.snap = snapset.clones[j];
-    prev.intersection_of(snapset.clone_overlap[snapset.clones[j]]);
-    if (!missing.is_missing(c) && c < last_backfill) {
-      dout(10) << "calc_clone_subsets " << soid << " has prev " << c
-	       << " overlap " << prev << dendl;
-      clone_subsets[c] = prev;
-      cloning.union_of(prev);
-      break;
-    }
-    dout(10) << "calc_clone_subsets " << soid << " does not have prev " << c
-	     << " overlap " << prev << dendl;
-  }
-  
-  // overlap with next newest?
-  interval_set<uint64_t> next;
-  if (size)
-    next.insert(0, size);    
-  for (unsigned j=i+1; j<snapset.clones.size(); j++) {
-    hobject_t c = soid;
-    c.snap = snapset.clones[j];
-    next.intersection_of(snapset.clone_overlap[snapset.clones[j-1]]);
-    if (!missing.is_missing(c) && c < last_backfill) {
-      dout(10) << "calc_clone_subsets " << soid << " has next " << c
-	       << " overlap " << next << dendl;
-      clone_subsets[c] = next;
-      cloning.union_of(next);
-      break;
-    }
-    dout(10) << "calc_clone_subsets " << soid << " does not have next " << c
-	     << " overlap " << next << dendl;
-  }
-
-  if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
-    dout(10) << "skipping clone, too many holes" << dendl;
-    clone_subsets.clear();
-    cloning.clear();
-  }
-
-  
-  // what's left for us to push?
-  data_subset.subtract(cloning);
-
-  dout(10) << "calc_clone_subsets " << soid
-	   << "  data_subset " << data_subset
-	   << "  clone_subsets " << clone_subsets << dendl;
-}
-
-
 /** pull - request object from a peer
  */
 
@@ -8872,98 +8146,6 @@ void ReplicatedBackend::calc_clone_subsets(
  */
 enum { PULL_NONE, PULL_OTHER, PULL_YES };
 
-void ReplicatedBackend::prepare_pull(
-  eversion_t v,
-  const hobject_t& soid,
-  ObjectContextRef headctx,
-  RPGHandle *h)
-{
-  assert(get_parent()->get_local_missing().missing.count(soid));
-  eversion_t _v = get_parent()->get_local_missing().missing.find(
-    soid)->second.need;
-  assert(_v == v);
-  const map<hobject_t, set<pg_shard_t> > &missing_loc(
-    get_parent()->get_missing_loc_shards());
-  const map<pg_shard_t, pg_missing_t > &peer_missing(
-    get_parent()->get_shard_missing());
-  map<hobject_t, set<pg_shard_t> >::const_iterator q = missing_loc.find(soid);
-  assert(q != missing_loc.end());
-  assert(!q->second.empty());
-
-  // pick a pullee
-  vector<pg_shard_t> shuffle(q->second.begin(), q->second.end());
-  random_shuffle(shuffle.begin(), shuffle.end());
-  vector<pg_shard_t>::iterator p = shuffle.begin();
-  assert(get_osdmap()->is_up(p->osd));
-  pg_shard_t fromshard = *p;
-
-  dout(7) << "pull " << soid
-	  << " v " << v
-	  << " on osds " << *p
-	  << " from osd." << fromshard
-	  << dendl;
-
-  assert(peer_missing.count(fromshard));
-  const pg_missing_t &pmissing = peer_missing.find(fromshard)->second;
-  if (pmissing.is_missing(soid, v)) {
-    assert(pmissing.missing.find(soid)->second.have != v);
-    dout(10) << "pulling soid " << soid << " from osd " << fromshard
-	     << " at version " << pmissing.missing.find(soid)->second.have
-	     << " rather than at version " << v << dendl;
-    v = pmissing.missing.find(soid)->second.have;
-    assert(get_parent()->get_log().get_log().objects.count(soid) &&
-	   (get_parent()->get_log().get_log().objects.find(soid)->second->op ==
-	    pg_log_entry_t::LOST_REVERT) &&
-	   (get_parent()->get_log().get_log().objects.find(
-	     soid)->second->reverting_to ==
-	    v));
-  }
-  
-  ObjectRecoveryInfo recovery_info;
-
-  if (soid.is_snap()) {
-    assert(!get_parent()->get_local_missing().is_missing(
-	     soid.get_head()) ||
-	   !get_parent()->get_local_missing().is_missing(
-	     soid.get_snapdir()));
-    assert(headctx);
-    // check snapset
-    SnapSetContext *ssc = headctx->ssc;
-    assert(ssc);
-    dout(10) << " snapset " << ssc->snapset << dendl;
-    calc_clone_subsets(ssc->snapset, soid, get_parent()->get_local_missing(),
-		       get_info().last_backfill,
-		       recovery_info.copy_subset,
-		       recovery_info.clone_subset);
-    // FIXME: this may overestimate if we are pulling multiple clones in parallel...
-    dout(10) << " pulling " << recovery_info << dendl;
-  } else {
-    // pulling head or unversioned object.
-    // always pull the whole thing.
-    recovery_info.copy_subset.insert(0, (uint64_t)-1);
-    recovery_info.size = ((uint64_t)-1);
-  }
-
-  h->pulls[fromshard].push_back(PullOp());
-  PullOp &op = h->pulls[fromshard].back();
-  op.soid = soid;
-
-  op.recovery_info = recovery_info;
-  op.recovery_info.soid = soid;
-  op.recovery_info.version = v;
-  op.recovery_progress.data_complete = false;
-  op.recovery_progress.omap_complete = false;
-  op.recovery_progress.data_recovered_to = 0;
-  op.recovery_progress.first = true;
-
-  assert(!pulling.count(soid));
-  pull_from_peer[fromshard].insert(soid);
-  PullInfo &pi = pulling[soid];
-  pi.head_ctx = headctx;
-  pi.recovery_info = op.recovery_info;
-  pi.recovery_progress = op.recovery_progress;
-}
-
 int ReplicatedPG::recover_missing(
   const hobject_t &soid, eversion_t v,
   int priority,
@@ -9053,704 +8235,6 @@ void ReplicatedPG::send_remove_op(
   osd->send_message_osd_cluster(peer.osd, subop, get_osdmap()->get_epoch());
 }
 
-/*
- * intelligently push an object to a replica.  make use of existing
- * clones/heads and dup data ranges where possible.
- */
-void ReplicatedBackend::prep_push_to_replica(
-  ObjectContextRef obc, const hobject_t& soid, pg_shard_t peer,
-  PushOp *pop)
-{
-  const object_info_t& oi = obc->obs.oi;
-  uint64_t size = obc->obs.oi.size;
-
-  dout(10) << __func__ << ": " << soid << " v" << oi.version
-	   << " size " << size << " to osd." << peer << dendl;
-
-  map<hobject_t, interval_set<uint64_t> > clone_subsets;
-  interval_set<uint64_t> data_subset;
-
-  // are we doing a clone on the replica?
-  if (soid.snap && soid.snap < CEPH_NOSNAP) {	
-    hobject_t head = soid;
-    head.snap = CEPH_NOSNAP;
-
-    // try to base push off of clones that succeed/preceed poid
-    // we need the head (and current SnapSet) locally to do that.
-    if (get_parent()->get_local_missing().is_missing(head)) {
-      dout(15) << "push_to_replica missing head " << head << ", pushing raw clone" << dendl;
-      return prep_push(obc, soid, peer, pop);
-    }
-    hobject_t snapdir = head;
-    snapdir.snap = CEPH_SNAPDIR;
-    if (get_parent()->get_local_missing().is_missing(snapdir)) {
-      dout(15) << "push_to_replica missing snapdir " << snapdir
-	       << ", pushing raw clone" << dendl;
-      return prep_push(obc, soid, peer, pop);
-    }
-    
-    SnapSetContext *ssc = obc->ssc;
-    assert(ssc);
-    dout(15) << "push_to_replica snapset is " << ssc->snapset << dendl;
-    map<pg_shard_t, pg_missing_t>::const_iterator pm =
-      get_parent()->get_shard_missing().find(peer);
-    assert(pm != get_parent()->get_shard_missing().end());
-    map<pg_shard_t, pg_info_t>::const_iterator pi =
-      get_parent()->get_shard_info().find(peer);
-    assert(pi != get_parent()->get_shard_info().end());
-    calc_clone_subsets(ssc->snapset, soid,
-		       pm->second,
-		       pi->second.last_backfill,
-		       data_subset, clone_subsets);
-  } else if (soid.snap == CEPH_NOSNAP) {
-    // pushing head or unversioned object.
-    // base this on partially on replica's clones?
-    SnapSetContext *ssc = obc->ssc;
-    assert(ssc);
-    dout(15) << "push_to_replica snapset is " << ssc->snapset << dendl;
-    calc_head_subsets(
-      obc,
-      ssc->snapset, soid, get_parent()->get_shard_missing().find(peer)->second,
-      get_parent()->get_shard_info().find(peer)->second.last_backfill,
-      data_subset, clone_subsets);
-  }
-
-  prep_push(obc, soid, peer, oi.version, data_subset, clone_subsets, pop);
-}
-
-void ReplicatedBackend::prep_push(ObjectContextRef obc,
-			     const hobject_t& soid, pg_shard_t peer,
-			     PushOp *pop)
-{
-  interval_set<uint64_t> data_subset;
-  if (obc->obs.oi.size)
-    data_subset.insert(0, obc->obs.oi.size);
-  map<hobject_t, interval_set<uint64_t> > clone_subsets;
-
-  prep_push(obc, soid, peer,
-	    obc->obs.oi.version, data_subset, clone_subsets,
-	    pop);
-}
-
-void ReplicatedBackend::prep_push(
-  ObjectContextRef obc,
-  const hobject_t& soid, pg_shard_t peer,
-  eversion_t version,
-  interval_set<uint64_t> &data_subset,
-  map<hobject_t, interval_set<uint64_t> >& clone_subsets,
-  PushOp *pop)
-{
-  get_parent()->begin_peer_recover(peer, soid);
-  // take note.
-  PushInfo &pi = pushing[soid][peer];
-  pi.obc = obc;
-  pi.recovery_info.size = obc->obs.oi.size;
-  pi.recovery_info.copy_subset = data_subset;
-  pi.recovery_info.clone_subset = clone_subsets;
-  pi.recovery_info.soid = soid;
-  pi.recovery_info.oi = obc->obs.oi;
-  pi.recovery_info.version = version;
-  pi.recovery_progress.first = true;
-  pi.recovery_progress.data_recovered_to = 0;
-  pi.recovery_progress.data_complete = 0;
-  pi.recovery_progress.omap_complete = 0;
-
-  ObjectRecoveryProgress new_progress;
-  int r = build_push_op(pi.recovery_info,
-			pi.recovery_progress,
-			&new_progress,
-			pop,
-			&(pi.stat));
-  assert(r == 0);
-  pi.recovery_progress = new_progress;
-}
-
-int ReplicatedBackend::send_pull_legacy(int prio, pg_shard_t peer,
-					const ObjectRecoveryInfo &recovery_info,
-					ObjectRecoveryProgress progress)
-{
-  // send op
-  ceph_tid_t tid = get_parent()->get_tid();
-  osd_reqid_t rid(get_parent()->get_cluster_msgr_name(), 0, tid);
-
-  dout(10) << "send_pull_op " << recovery_info.soid << " "
-	   << recovery_info.version
-	   << " first=" << progress.first
-	   << " data " << recovery_info.copy_subset
-	   << " from osd." << peer
-	   << " tid " << tid << dendl;
-
-  MOSDSubOp *subop = new MOSDSubOp(
-    rid, parent->whoami_shard(),
-    get_info().pgid, recovery_info.soid,
-    CEPH_OSD_FLAG_ACK,
-    get_osdmap()->get_epoch(), tid,
-    recovery_info.version);
-  subop->set_priority(prio);
-  subop->ops = vector<OSDOp>(1);
-  subop->ops[0].op.op = CEPH_OSD_OP_PULL;
-  subop->ops[0].op.extent.length = cct->_conf->osd_recovery_max_chunk;
-  subop->recovery_info = recovery_info;
-  subop->recovery_progress = progress;
-
-  get_parent()->send_message_osd_cluster(
-    peer.osd, subop, get_osdmap()->get_epoch());
-
-  get_parent()->get_logger()->inc(l_osd_pull);
-  return 0;
-}
-
-void ReplicatedBackend::submit_push_data(
-  ObjectRecoveryInfo &recovery_info,
-  bool first,
-  bool complete,
-  const interval_set<uint64_t> &intervals_included,
-  bufferlist data_included,
-  bufferlist omap_header,
-  map<string, bufferlist> &attrs,
-  map<string, bufferlist> &omap_entries,
-  ObjectStore::Transaction *t)
-{
-  coll_t target_coll;
-  if (first && complete) {
-    target_coll = coll;
-  } else {
-    dout(10) << __func__ << ": Creating oid "
-	     << recovery_info.soid << " in the temp collection" << dendl;
-    add_temp_obj(recovery_info.soid);
-    target_coll = get_temp_coll(t);
-  }
-
-  if (first) {
-    get_parent()->on_local_recover_start(recovery_info.soid, t);
-    t->remove(get_temp_coll(t), recovery_info.soid);
-    t->touch(target_coll, recovery_info.soid);
-    t->truncate(target_coll, recovery_info.soid, recovery_info.size);
-    t->omap_setheader(target_coll, recovery_info.soid, omap_header);
-  }
-  uint64_t off = 0;
-  for (interval_set<uint64_t>::const_iterator p = intervals_included.begin();
-       p != intervals_included.end();
-       ++p) {
-    bufferlist bit;
-    bit.substr_of(data_included, off, p.get_len());
-    t->write(target_coll, recovery_info.soid,
-	     p.get_start(), p.get_len(), bit);
-    off += p.get_len();
-  }
-
-  t->omap_setkeys(target_coll, recovery_info.soid,
-		  omap_entries);
-  t->setattrs(target_coll, recovery_info.soid,
-	      attrs);
-
-  if (complete) {
-    if (!first) {
-      dout(10) << __func__ << ": Removing oid "
-	       << recovery_info.soid << " from the temp collection" << dendl;
-      clear_temp_obj(recovery_info.soid);
-      t->collection_move(coll, target_coll, recovery_info.soid);
-    }
-
-    submit_push_complete(recovery_info, t);
-  }
-}
-
-void ReplicatedBackend::submit_push_complete(ObjectRecoveryInfo &recovery_info,
-					     ObjectStore::Transaction *t)
-{
-  for (map<hobject_t, interval_set<uint64_t> >::const_iterator p =
-	 recovery_info.clone_subset.begin();
-       p != recovery_info.clone_subset.end();
-       ++p) {
-    for (interval_set<uint64_t>::const_iterator q = p->second.begin();
-	 q != p->second.end();
-	 ++q) {
-      dout(15) << " clone_range " << p->first << " "
-	       << q.get_start() << "~" << q.get_len() << dendl;
-      t->clone_range(coll, p->first, recovery_info.soid,
-		     q.get_start(), q.get_len(), q.get_start());
-    }
-  }
-}
-
-ObjectRecoveryInfo ReplicatedBackend::recalc_subsets(
-  const ObjectRecoveryInfo& recovery_info,
-  SnapSetContext *ssc)
-{
-  if (!recovery_info.soid.snap || recovery_info.soid.snap >= CEPH_NOSNAP)
-    return recovery_info;
-  ObjectRecoveryInfo new_info = recovery_info;
-  new_info.copy_subset.clear();
-  new_info.clone_subset.clear();
-  assert(ssc);
-  calc_clone_subsets(ssc->snapset, new_info.soid, get_parent()->get_local_missing(),
-		     get_info().last_backfill,
-		     new_info.copy_subset, new_info.clone_subset);
-  return new_info;
-}
-
-bool ReplicatedBackend::handle_pull_response(
-  pg_shard_t from, PushOp &pop, PullOp *response,
-  list<hobject_t> *to_continue,
-  ObjectStore::Transaction *t
-  )
-{
-  interval_set<uint64_t> data_included = pop.data_included;
-  bufferlist data;
-  data.claim(pop.data);
-  dout(10) << "handle_pull_response "
-	   << pop.recovery_info
-	   << pop.after_progress
-	   << " data.size() is " << data.length()
-	   << " data_included: " << data_included
-	   << dendl;
-  if (pop.version == eversion_t()) {
-    // replica doesn't have it!
-    _failed_push(from, pop.soid);
-    return false;
-  }
-
-  hobject_t &hoid = pop.soid;
-  assert((data_included.empty() && data.length() == 0) ||
-	 (!data_included.empty() && data.length() > 0));
-
-  if (!pulling.count(hoid)) {
-    return false;
-  }
-
-  PullInfo &pi = pulling[hoid];
-  if (pi.recovery_info.size == (uint64_t(-1))) {
-    pi.recovery_info.size = pop.recovery_info.size;
-    pi.recovery_info.copy_subset.intersection_of(
-      pop.recovery_info.copy_subset);
-  }
-
-  bool first = pi.recovery_progress.first;
-  if (first) {
-    pi.obc = get_parent()->get_obc(pi.recovery_info.soid, pop.attrset);
-    pi.recovery_info.oi = pi.obc->obs.oi;
-    pi.recovery_info = recalc_subsets(pi.recovery_info, pi.obc->ssc);
-  }
-
-
-  interval_set<uint64_t> usable_intervals;
-  bufferlist usable_data;
-  trim_pushed_data(pi.recovery_info.copy_subset,
-		   data_included,
-		   data,
-		   &usable_intervals,
-		   &usable_data);
-  data_included = usable_intervals;
-  data.claim(usable_data);
-
-
-  pi.recovery_progress = pop.after_progress;
-
-  pi.stat.num_bytes_recovered += data.length();
-
-  dout(10) << "new recovery_info " << pi.recovery_info
-	   << ", new progress " << pi.recovery_progress
-	   << dendl;
-
-  bool complete = pi.is_complete();
-
-  submit_push_data(pi.recovery_info, first,
-		   complete,
-		   data_included, data,
-		   pop.omap_header,
-		   pop.attrset,
-		   pop.omap_entries,
-		   t);
-
-  pi.stat.num_keys_recovered += pop.omap_entries.size();
-
-  if (complete) {
-    to_continue->push_back(hoid);
-    pi.stat.num_objects_recovered++;
-    get_parent()->on_local_recover(
-      hoid, pi.stat, pi.recovery_info, pi.obc, t);
-    pull_from_peer[from].erase(hoid);
-    if (pull_from_peer[from].empty())
-      pull_from_peer.erase(from);
-    return false;
-  } else {
-    response->soid = pop.soid;
-    response->recovery_info = pi.recovery_info;
-    response->recovery_progress = pi.recovery_progress;
-    return true;
-  }
-}
-
-struct C_OnPushCommit : public Context {
-  ReplicatedPG *pg;
-  OpRequestRef op;
-  C_OnPushCommit(ReplicatedPG *pg, OpRequestRef op) : pg(pg), op(op) {}
-  void finish(int) {
-    op->mark_event("committed");
-    log_subop_stats(pg->osd->logger, op, l_osd_sop_push);
-  }
-};
-
-void ReplicatedBackend::handle_push(
-  pg_shard_t from, PushOp &pop, PushReplyOp *response,
-  ObjectStore::Transaction *t)
-{
-  dout(10) << "handle_push "
-	   << pop.recovery_info
-	   << pop.after_progress
-	   << dendl;
-  bufferlist data;
-  data.claim(pop.data);
-  bool first = pop.before_progress.first;
-  bool complete = pop.after_progress.data_complete &&
-    pop.after_progress.omap_complete;
-
-  response->soid = pop.recovery_info.soid;
-  submit_push_data(pop.recovery_info,
-		   first,
-		   complete,
-		   pop.data_included,
-		   data,
-		   pop.omap_header,
-		   pop.attrset,
-		   pop.omap_entries,
-		   t);
-
-  if (complete)
-    get_parent()->on_local_recover(
-      pop.recovery_info.soid,
-      object_stat_sum_t(),
-      pop.recovery_info,
-      ObjectContextRef(), // ok, is replica
-      t);
-}
-
-void ReplicatedBackend::send_pushes(int prio, map<pg_shard_t, vector<PushOp> > &pushes)
-{
-  for (map<pg_shard_t, vector<PushOp> >::iterator i = pushes.begin();
-       i != pushes.end();
-       ++i) {
-    ConnectionRef con = get_parent()->get_con_osd_cluster(
-      i->first.osd,
-      get_osdmap()->get_epoch());
-    if (!con)
-      continue;
-    if (!(con->get_features() & CEPH_FEATURE_OSD_PACKED_RECOVERY)) {
-      for (vector<PushOp>::iterator j = i->second.begin();
-	   j != i->second.end();
-	   ++j) {
-	dout(20) << __func__ << ": sending push (legacy) " << *j
-		 << " to osd." << i->first << dendl;
-	send_push_op_legacy(prio, i->first, *j);
-      }
-    } else {
-      vector<PushOp>::iterator j = i->second.begin();
-      while (j != i->second.end()) {
-	uint64_t cost = 0;
-	uint64_t pushes = 0;
-	MOSDPGPush *msg = new MOSDPGPush();
-	msg->from = get_parent()->whoami_shard();
-	msg->pgid = get_parent()->primary_spg_t();
-	msg->map_epoch = get_osdmap()->get_epoch();
-	msg->set_priority(prio);
-	for (;
-	     (j != i->second.end() &&
-	      cost < cct->_conf->osd_max_push_cost &&
-	      pushes < cct->_conf->osd_max_push_objects) ;
-	     ++j) {
-	  dout(20) << __func__ << ": sending push " << *j
-		   << " to osd." << i->first << dendl;
-	  cost += j->cost(cct);
-	  pushes += 1;
-	  msg->pushes.push_back(*j);
-	}
-	msg->compute_cost(cct);
-	get_parent()->send_message_osd_cluster(msg, con);
-      }
-    }
-  }
-}
-
-void ReplicatedBackend::send_pulls(int prio, map<pg_shard_t, vector<PullOp> > &pulls)
-{
-  for (map<pg_shard_t, vector<PullOp> >::iterator i = pulls.begin();
-       i != pulls.end();
-       ++i) {
-    ConnectionRef con = get_parent()->get_con_osd_cluster(
-      i->first.osd,
-      get_osdmap()->get_epoch());
-    if (!con)
-      continue;
-    if (!(con->get_features() & CEPH_FEATURE_OSD_PACKED_RECOVERY)) {
-      for (vector<PullOp>::iterator j = i->second.begin();
-	   j != i->second.end();
-	   ++j) {
-	dout(20) << __func__ << ": sending pull (legacy) " << *j
-		 << " to osd." << i->first << dendl;
-	send_pull_legacy(
-	  prio,
-	  i->first,
-	  j->recovery_info,
-	  j->recovery_progress);
-      }
-    } else {
-      dout(20) << __func__ << ": sending pulls " << i->second
-	       << " to osd." << i->first << dendl;
-      MOSDPGPull *msg = new MOSDPGPull();
-      msg->from = parent->whoami_shard();
-      msg->set_priority(prio);
-      msg->pgid = get_parent()->primary_spg_t();
-      msg->map_epoch = get_osdmap()->get_epoch();
-      msg->pulls.swap(i->second);
-      msg->compute_cost(cct);
-      get_parent()->send_message_osd_cluster(msg, con);
-    }
-  }
-}
-
-int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info,
-				     const ObjectRecoveryProgress &progress,
-				     ObjectRecoveryProgress *out_progress,
-				     PushOp *out_op,
-				     object_stat_sum_t *stat)
-{
-  ObjectRecoveryProgress _new_progress;
-  if (!out_progress)
-    out_progress = &_new_progress;
-  ObjectRecoveryProgress &new_progress = *out_progress;
-  new_progress = progress;
-
-  dout(7) << "send_push_op " << recovery_info.soid
-	  << " v " << recovery_info.version
-	  << " size " << recovery_info.size
-	  << " recovery_info: " << recovery_info
-          << dendl;
-
-  if (progress.first) {
-    store->omap_get_header(coll, recovery_info.soid, &out_op->omap_header);
-    store->getattrs(coll, recovery_info.soid, out_op->attrset);
-
-    // Debug
-    bufferlist bv = out_op->attrset[OI_ATTR];
-    object_info_t oi(bv);
-
-    if (oi.version != recovery_info.version) {
-      get_parent()->clog_error() << get_info().pgid << " push "
-				 << recovery_info.soid << " v "
-				 << recovery_info.version
-				 << " failed because local copy is "
-				 << oi.version << "\n";
-      return -EINVAL;
-    }
-
-    new_progress.first = false;
-  }
-
-  uint64_t available = cct->_conf->osd_recovery_max_chunk;
-  if (!progress.omap_complete) {
-    ObjectMap::ObjectMapIterator iter =
-      store->get_omap_iterator(coll,
-			       recovery_info.soid);
-    for (iter->lower_bound(progress.omap_recovered_to);
-	 iter->valid();
-	 iter->next()) {
-      if (!out_op->omap_entries.empty() &&
-	  available <= (iter->key().size() + iter->value().length()))
-	break;
-      out_op->omap_entries.insert(make_pair(iter->key(), iter->value()));
-
-      if ((iter->key().size() + iter->value().length()) <= available)
-	available -= (iter->key().size() + iter->value().length());
-      else
-	available = 0;
-    }
-    if (!iter->valid())
-      new_progress.omap_complete = true;
-    else
-      new_progress.omap_recovered_to = iter->key();
-  }
-
-  if (available > 0) {
-    if (!recovery_info.copy_subset.empty()) {
-      interval_set<uint64_t> copy_subset = recovery_info.copy_subset;
-      bufferlist bl;
-      int r = store->fiemap(coll, recovery_info.soid, 0,
-                            copy_subset.range_end(), bl);
-      if (r >= 0)  {
-        interval_set<uint64_t> fiemap_included;
-        map<uint64_t, uint64_t> m;
-        bufferlist::iterator iter = bl.begin();
-        ::decode(m, iter);
-        map<uint64_t, uint64_t>::iterator miter;
-        for (miter = m.begin(); miter != m.end(); ++miter) {
-          fiemap_included.insert(miter->first, miter->second);
-        }
-
-        copy_subset.intersection_of(fiemap_included);
-      }
-      out_op->data_included.span_of(copy_subset, progress.data_recovered_to,
-                                    available);
-      if (out_op->data_included.empty()) // zero filled section, skip to end!
-        new_progress.data_recovered_to = recovery_info.copy_subset.range_end();
-      else
-        new_progress.data_recovered_to = out_op->data_included.range_end();
-    }
-  } else {
-    out_op->data_included.clear();
-  }
-
-  for (interval_set<uint64_t>::iterator p = out_op->data_included.begin();
-       p != out_op->data_included.end();
-       ++p) {
-    bufferlist bit;
-    store->read(coll, recovery_info.soid,
-		     p.get_start(), p.get_len(), bit);
-    if (p.get_len() != bit.length()) {
-      dout(10) << " extent " << p.get_start() << "~" << p.get_len()
-	       << " is actually " << p.get_start() << "~" << bit.length()
-	       << dendl;
-      interval_set<uint64_t>::iterator save = p++;
-      if (bit.length() == 0)
-        out_op->data_included.erase(save);     //Remove this empty interval
-      else
-        save.set_len(bit.length());
-      // Remove any other intervals present
-      while (p != out_op->data_included.end()) {
-        interval_set<uint64_t>::iterator save = p++;
-        out_op->data_included.erase(save);
-      }
-      new_progress.data_complete = true;
-      out_op->data.claim_append(bit);
-      break;
-    }
-    out_op->data.claim_append(bit);
-  }
-
-  if (new_progress.is_complete(recovery_info)) {
-    new_progress.data_complete = true;
-    if (stat)
-      stat->num_objects_recovered++;
-  }
-
-  if (stat) {
-    stat->num_keys_recovered += out_op->omap_entries.size();
-    stat->num_bytes_recovered += out_op->data.length();
-  }
-
-  get_parent()->get_logger()->inc(l_osd_push);
-  get_parent()->get_logger()->inc(l_osd_push_outb, out_op->data.length());
-  
-  // send
-  out_op->version = recovery_info.version;
-  out_op->soid = recovery_info.soid;
-  out_op->recovery_info = recovery_info;
-  out_op->after_progress = new_progress;
-  out_op->before_progress = progress;
-  return 0;
-}
-
-int ReplicatedBackend::send_push_op_legacy(int prio, pg_shard_t peer, PushOp &pop)
-{
-  ceph_tid_t tid = get_parent()->get_tid();
-  osd_reqid_t rid(get_parent()->get_cluster_msgr_name(), 0, tid);
-  MOSDSubOp *subop = new MOSDSubOp(
-    rid, parent->whoami_shard(),
-    spg_t(get_info().pgid.pgid, peer.shard), pop.soid,
-    0, get_osdmap()->get_epoch(),
-    tid, pop.recovery_info.version);
-  subop->ops = vector<OSDOp>(1);
-  subop->ops[0].op.op = CEPH_OSD_OP_PUSH;
-
-  subop->set_priority(prio);
-  subop->version = pop.version;
-  subop->ops[0].indata.claim(pop.data);
-  subop->data_included.swap(pop.data_included);
-  subop->omap_header.claim(pop.omap_header);
-  subop->omap_entries.swap(pop.omap_entries);
-  subop->attrset.swap(pop.attrset);
-  subop->recovery_info = pop.recovery_info;
-  subop->current_progress = pop.before_progress;
-  subop->recovery_progress = pop.after_progress;
-
-  get_parent()->send_message_osd_cluster(peer.osd, subop, get_osdmap()->get_epoch());
-  return 0;
-}
-
-void ReplicatedBackend::prep_push_op_blank(const hobject_t& soid, PushOp *op)
-{
-  op->recovery_info.version = eversion_t();
-  op->version = eversion_t();
-  op->soid = soid;
-}
-
-void ReplicatedBackend::sub_op_push_reply(OpRequestRef op)
-{
-  MOSDSubOpReply *reply = static_cast<MOSDSubOpReply*>(op->get_req());
-  const hobject_t& soid = reply->get_poid();
-  assert(reply->get_type() == MSG_OSD_SUBOPREPLY);
-  dout(10) << "sub_op_push_reply from " << reply->get_source() << " " << *reply << dendl;
-  pg_shard_t peer = reply->from;
-
-  op->mark_started();
-  
-  PushReplyOp rop;
-  rop.soid = soid;
-  PushOp pop;
-  bool more = handle_push_reply(peer, rop, &pop);
-  if (more)
-    send_push_op_legacy(op->get_req()->get_priority(), peer, pop);
-}
-
-bool ReplicatedBackend::handle_push_reply(pg_shard_t peer, PushReplyOp &op, PushOp *reply)
-{
-  const hobject_t &soid = op.soid;
-  if (pushing.count(soid) == 0) {
-    dout(10) << "huh, i wasn't pushing " << soid << " to osd." << peer
-	     << ", or anybody else"
-	     << dendl;
-    return false;
-  } else if (pushing[soid].count(peer) == 0) {
-    dout(10) << "huh, i wasn't pushing " << soid << " to osd." << peer
-	     << dendl;
-    return false;
-  } else {
-    PushInfo *pi = &pushing[soid][peer];
-
-    if (!pi->recovery_progress.data_complete) {
-      dout(10) << " pushing more from, "
-	       << pi->recovery_progress.data_recovered_to
-	       << " of " << pi->recovery_info.copy_subset << dendl;
-      ObjectRecoveryProgress new_progress;
-      int r = build_push_op(
-	pi->recovery_info,
-	pi->recovery_progress, &new_progress, reply,
-	&(pi->stat));
-      assert(r == 0);
-      pi->recovery_progress = new_progress;
-      return true;
-    } else {
-      // done!
-      get_parent()->on_peer_recover(
-	peer, soid, pi->recovery_info,
-	pi->stat);
-      
-      pushing[soid].erase(peer);
-      pi = NULL;
-      
-      
-      if (pushing[soid].empty()) {
-	get_parent()->on_global_recover(soid);
-	pushing.erase(soid);
-      } else {
-	dout(10) << "pushed " << soid << ", still waiting for push ack from " 
-		 << pushing[soid].size() << " others" << dendl;
-      }
-      return false;
-    }
-  }
-}
-
 void ReplicatedPG::finish_degraded_object(const hobject_t& oid)
 {
   dout(10) << "finish_degraded_object " << oid << dendl;
@@ -9775,69 +8259,6 @@ void ReplicatedPG::finish_degraded_object(const hobject_t& oid)
   }
 }
 
-/** op_pull
- * process request to pull an entire object.
- * NOTE: called from opqueue.
- */
-void ReplicatedBackend::sub_op_pull(OpRequestRef op)
-{
-  MOSDSubOp *m = static_cast<MOSDSubOp*>(op->get_req());
-  assert(m->get_type() == MSG_OSD_SUBOP);
-
-  op->mark_started();
-
-  const hobject_t soid = m->poid;
-
-  dout(7) << "pull" << soid << " v " << m->version
-          << " from " << m->get_source()
-          << dendl;
-
-  assert(!is_primary());  // we should be a replica or stray.
-
-  PullOp pop;
-  pop.soid = soid;
-  pop.recovery_info = m->recovery_info;
-  pop.recovery_progress = m->recovery_progress;
-
-  PushOp reply;
-  handle_pull(m->from, pop, &reply);
-  send_push_op_legacy(
-    m->get_priority(),
-    m->from,
-    reply);
-
-  log_subop_stats(get_parent()->get_logger(), op, l_osd_sop_pull);
-}
-
-void ReplicatedBackend::handle_pull(pg_shard_t peer, PullOp &op, PushOp *reply)
-{
-  const hobject_t &soid = op.soid;
-  struct stat st;
-  int r = store->stat(coll, soid, &st);
-  if (r != 0) {
-    get_parent()->clog_error() << get_info().pgid << " "
-			       << peer << " tried to pull " << soid
-			       << " but got " << cpp_strerror(-r) << "\n";
-    prep_push_op_blank(soid, reply);
-  } else {
-    ObjectRecoveryInfo &recovery_info = op.recovery_info;
-    ObjectRecoveryProgress &progress = op.recovery_progress;
-    if (progress.first && recovery_info.size == ((uint64_t)-1)) {
-      // Adjust size and copy_subset
-      recovery_info.size = st.st_size;
-      recovery_info.copy_subset.clear();
-      if (st.st_size)
-        recovery_info.copy_subset.insert(0, st.st_size);
-      assert(recovery_info.clone_subset.empty());
-    }
-
-    r = build_push_op(recovery_info, progress, 0, reply);
-    if (r < 0)
-      prep_push_op_blank(soid, reply);
-  }
-}
-
-
 void ReplicatedPG::_committed_pushed_object(
   epoch_t epoch, eversion_t last_complete)
 {
@@ -9924,113 +8345,6 @@ void ReplicatedPG::recover_got(hobject_t oid, eversion_t v)
 }
 
 
-/**
- * trim received data to remove what we don't want
- *
- * @param copy_subset intervals we want
- * @param data_included intervals we got
- * @param data_recieved data we got
- * @param intervals_usable intervals we want to keep
- * @param data_usable matching data we want to keep
- */
-void ReplicatedBackend::trim_pushed_data(
-  const interval_set<uint64_t> &copy_subset,
-  const interval_set<uint64_t> &intervals_received,
-  bufferlist data_received,
-  interval_set<uint64_t> *intervals_usable,
-  bufferlist *data_usable)
-{
-  if (intervals_received.subset_of(copy_subset)) {
-    *intervals_usable = intervals_received;
-    *data_usable = data_received;
-    return;
-  }
-
-  intervals_usable->intersection_of(copy_subset,
-				    intervals_received);
-
-  uint64_t off = 0;
-  for (interval_set<uint64_t>::const_iterator p = intervals_received.begin();
-       p != intervals_received.end();
-       ++p) {
-    interval_set<uint64_t> x;
-    x.insert(p.get_start(), p.get_len());
-    x.intersection_of(copy_subset);
-    for (interval_set<uint64_t>::const_iterator q = x.begin();
-	 q != x.end();
-	 ++q) {
-      bufferlist sub;
-      uint64_t data_off = off + (q.get_start() - p.get_start());
-      sub.substr_of(data_received, data_off, q.get_len());
-      data_usable->claim_append(sub);
-    }
-    off += p.get_len();
-  }
-}
-
-/** op_push
- * NOTE: called from opqueue.
- */
-void ReplicatedBackend::sub_op_push(OpRequestRef op)
-{
-  op->mark_started();
-  MOSDSubOp *m = static_cast<MOSDSubOp *>(op->get_req());
-
-  PushOp pop;
-  pop.soid = m->recovery_info.soid;
-  pop.version = m->version;
-  m->claim_data(pop.data);
-  pop.data_included.swap(m->data_included);
-  pop.omap_header.swap(m->omap_header);
-  pop.omap_entries.swap(m->omap_entries);
-  pop.attrset.swap(m->attrset);
-  pop.recovery_info = m->recovery_info;
-  pop.before_progress = m->current_progress;
-  pop.after_progress = m->recovery_progress;
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
-
-  if (is_primary()) {
-    PullOp resp;
-    RPGHandle *h = _open_recovery_op();
-    list<hobject_t> to_continue;
-    bool more = handle_pull_response(
-      m->from, pop, &resp,
-      &to_continue, t);
-    if (more) {
-      send_pull_legacy(
-	m->get_priority(),
-	m->from,
-	resp.recovery_info,
-	resp.recovery_progress);
-    } else {
-      C_ReplicatedBackend_OnPullComplete *c =
-	new C_ReplicatedBackend_OnPullComplete(
-	  this,
-	  op->get_req()->get_priority());
-      c->to_continue.swap(to_continue);
-      t->register_on_complete(
-	new PG_RecoveryQueueAsync(
-	  get_parent(),
-	  get_parent()->bless_gencontext(c)));
-    }
-    run_recovery_op(h, op->get_req()->get_priority());
-  } else {
-    PushReplyOp resp;
-    MOSDSubOpReply *reply = new MOSDSubOpReply(
-      m, parent->whoami_shard(), 0,
-      get_osdmap()->get_epoch(), CEPH_OSD_FLAG_ACK);
-    reply->set_priority(m->get_priority());
-    assert(entity_name_t::TYPE_OSD == m->get_connection()->peer_type);
-    handle_push(m->from, pop, &resp, t);
-    t->register_on_complete(new PG_SendMessageOnConn(
-			      get_parent(), reply, m->get_connection()));
-  }
-  t->register_on_applied(
-    new ObjectStore::C_DeleteTransaction(t));
-  get_parent()->queue_transaction(t);
-  return;
-}
-
 void ReplicatedPG::failed_push(pg_shard_t from, const hobject_t &soid)
 {
   assert(recovering.count(soid));
@@ -10042,15 +8356,6 @@ void ReplicatedPG::failed_push(pg_shard_t from, const hobject_t &soid)
   finish_recovery_op(soid);  // close out this attempt,
 }
 
-void ReplicatedBackend::_failed_push(pg_shard_t from, const hobject_t &soid)
-{
-  get_parent()->failed_push(from, soid);
-  pull_from_peer[from].erase(soid);
-  if (pull_from_peer[from].empty())
-    pull_from_peer.erase(from);
-  pulling.erase(soid);
-}
-
 void ReplicatedPG::sub_op_remove(OpRequestRef op)
 {
   MOSDSubOp *m = static_cast<MOSDSubOp*>(op->get_req());
@@ -10065,7 +8370,6 @@ void ReplicatedPG::sub_op_remove(OpRequestRef op)
   assert(r == 0);
 }
 
-
 eversion_t ReplicatedPG::pick_newest_available(const hobject_t& oid)
 {
   eversion_t v;
@@ -10606,6 +8910,7 @@ void ReplicatedPG::_clear_recovery_state()
 
 void ReplicatedPG::cancel_pull(const hobject_t &soid)
 {
+  dout(20) << __func__ << ": soid" << dendl;
   assert(recovering.count(soid));
   ObjectContextRef obc = recovering[soid];
   if (obc) {
@@ -10615,6 +8920,16 @@ void ReplicatedPG::cancel_pull(const hobject_t &soid)
   }
   recovering.erase(soid);
   finish_recovery_op(soid);
+  if (waiting_for_degraded_object.count(soid)) {
+    dout(20) << " kicking degraded waiters on " << soid << dendl;
+    requeue_ops(waiting_for_degraded_object[soid]);
+    waiting_for_degraded_object.erase(soid);
+  }
+  if (waiting_for_unreadable_object.count(soid)) {
+    dout(20) << " kicking unreadable waiters on " << soid << dendl;
+    requeue_ops(waiting_for_unreadable_object[soid]);
+    waiting_for_unreadable_object.erase(soid);
+  }
   if (is_missing_object(soid))
     pg_log.set_last_requested(0); // get recover_primary to start over
 }
@@ -11063,34 +9378,6 @@ int ReplicatedPG::prep_object_replica_pushes(
   return 1;
 }
 
-int ReplicatedBackend::start_pushes(
-  const hobject_t &soid,
-  ObjectContextRef obc,
-  RPGHandle *h)
-{
-  int pushes = 0;
-  // who needs it?  
-  assert(get_parent()->get_actingbackfill_shards().size() > 0);
-  for (set<pg_shard_t>::iterator i =
-	 get_parent()->get_actingbackfill_shards().begin();
-       i != get_parent()->get_actingbackfill_shards().end();
-       ++i) {
-    if (*i == get_parent()->whoami_shard()) continue;
-    pg_shard_t peer = *i;
-    map<pg_shard_t, pg_missing_t>::const_iterator j =
-      get_parent()->get_shard_missing().find(peer);
-    assert(j != get_parent()->get_shard_missing().end());
-    if (j->second.is_missing(soid)) {
-      ++pushes;
-      h->pushes[peer].push_back(PushOp());
-      prep_push_to_replica(obc, soid, peer,
-			   &(h->pushes[peer].back())
-	);
-    }
-  }
-  return pushes;
-}
-
 int ReplicatedPG::recover_replicas(int max, ThreadPool::TPHandle &handle)
 {
   dout(10) << __func__ << "(" << max << ")" << dendl;
@@ -11279,7 +9566,8 @@ int ReplicatedPG::recover_backfill(
   for (set<pg_shard_t>::iterator i = backfill_targets.begin();
        i != backfill_targets.end();
        ++i) {
-    peer_backfill_info[*i].trim_to(last_backfill_started);
+    peer_backfill_info[*i].trim_to(
+      MAX(peer_info[*i].last_backfill, last_backfill_started));
   }
   backfill_info.trim_to(last_backfill_started);
 
@@ -11918,12 +10206,16 @@ void ReplicatedPG::hit_set_persist()
     // Once we hit a degraded object just skip further trim
     if (is_degraded_or_backfilling_object(aoid))
       return;
+    if (scrubber.write_blocked_by_scrub(aoid))
+      return;
   }
 
   oid = get_hit_set_archive_object(start, now);
   // If the current object is degraded we skip this persist request
   if (is_degraded_or_backfilling_object(oid))
     return;
+  if (scrubber.write_blocked_by_scrub(oid))
+    return;
 
   // If backfill is in progress and we could possibly overlap with the
   // hit_set_* objects, back off.  Since these all have
@@ -12059,6 +10351,10 @@ void ReplicatedPG::hit_set_persist()
   hit_set_trim(repop, max);
 
   info.stats.stats.add(ctx->delta_stats);
+  if (scrubber.active) {
+    if (oid < scrubber.start)
+      scrub_cstat.add(ctx->delta_stats);
+  }
 
   simple_repop_submit(repop);
 }
@@ -12580,12 +10876,13 @@ void ReplicatedPG::agent_choose_mode_restart()
   unlock();
 }
 
-void ReplicatedPG::agent_choose_mode(bool restart)
+bool ReplicatedPG::agent_choose_mode(bool restart, OpRequestRef op)
 {
+  bool requeued = false;
   // Let delay play out
   if (agent_state->delaying) {
     dout(20) << __func__ << this << " delaying, ignored" << dendl;
-    return;
+    return requeued;
   }
 
   uint64_t divisor = pool.info.get_pg_num_divisor(info.pgid.pgid);
@@ -12733,8 +11030,11 @@ void ReplicatedPG::agent_choose_mode(bool restart)
 	    << dendl;
     if (agent_state->evict_mode == TierAgentState::EVICT_MODE_FULL &&
 	is_active()) {
-      requeue_ops(waiting_for_cache_not_full);
+      if (op)
+	requeue_op(op);
       requeue_ops(waiting_for_active);
+      requeue_ops(waiting_for_cache_not_full);
+      requeued = true;
     }
     agent_state->evict_mode = evict_mode;
   }
@@ -12762,6 +11062,7 @@ void ReplicatedPG::agent_choose_mode(bool restart)
       osd->agent_adjust_pg(this, old_effort, agent_state->evict_effort);
     }
   }
+  return requeued;
 }
 
 void ReplicatedPG::agent_estimate_atime_temp(const hobject_t& oid,
@@ -12921,7 +11222,8 @@ void ReplicatedPG::_scrub(
 
     dout(20) << mode << "  " << soid << " " << oi << dendl;
 
-    if (pool.info.is_replicated()) {
+    if (pool.info.is_replicated() &&
+	(get_min_peer_features() & CEPH_FEATURE_OSD_OBJECT_DIGEST)) {
       if (oi.is_data_digest() && p->second.digest_present &&
 	  oi.data_digest != p->second.digest) {
 	osd->clog->error() << mode << " " << info.pgid << " " << soid
@@ -13064,6 +11366,7 @@ void ReplicatedPG::_scrub(
       RepGather *repop = simple_repop_create(obc);
       OpContext *ctx = repop->ctx;
       ctx->at_version = get_next_version();
+      ctx->mtime = utime_t();      // do not update mtime
       ctx->new_obs.oi.set_data_digest(p->second.first);
       ctx->new_obs.oi.set_omap_digest(p->second.second);
       finish_ctx(ctx, pg_log_entry_t::MODIFY, true, true);
diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h
index f128c71..da0c75b 100644
--- a/src/osd/ReplicatedPG.h
+++ b/src/osd/ReplicatedPG.h
@@ -367,26 +367,6 @@ public:
   const pg_pool_t &get_pool() const {
     return pool.info;
   }
-  map<pg_shard_t, const pg_missing_t *> get_all_missing() const {
-    map<pg_shard_t, const pg_missing_t *> all_missing;
-    all_missing[pg_whoami] = &(pg_log.get_missing());
-    for (map<pg_shard_t, pg_missing_t>::const_iterator i = peer_missing.begin();
-	 i != peer_missing.end();
-	 ++i) {
-      all_missing[i->first] = &(i->second);
-    }
-    return all_missing;
-  }
-  const map<pg_shard_t, const pg_info_t *> get_all_info() const {
-    map<pg_shard_t, const pg_info_t *> all_info;
-    all_info[pg_whoami] = &info;
-    for (map<pg_shard_t, pg_info_t>::const_iterator i = peer_info.begin();
-	 i != peer_info.end();
-	 ++i) {
-      all_info[i->first] = &(i->second);
-    }
-    return all_info;
-  }
   ObjectContextRef get_obc(
     const hobject_t &hoid,
     map<string, bufferlist> &attrs) {
@@ -415,13 +395,11 @@ public:
     if (peer == get_primary())
       return true;
     assert(peer_info.count(peer));
-    bool should_send_backfill = hoid.pool != (int64_t)info.pgid.pool() ||
+    bool should_send = hoid.pool != (int64_t)info.pgid.pool() ||
       hoid <= MAX(last_backfill_started, peer_info[peer].last_backfill);
-    if (!should_send_backfill)
+    if (!should_send)
       assert(is_backfill_targets(peer));
-
-    assert(peer_missing.count(peer));
-    return should_send_backfill && !peer_missing[peer].is_missing(hoid);
+    return should_send;
   }
   
   void update_peer_last_complete_ondisk(
@@ -887,7 +865,7 @@ protected:
   void repop_all_applied(RepGather *repop);
   void repop_all_committed(RepGather *repop);
   void eval_repop(RepGather*);
-  void issue_repop(RepGather *repop, utime_t now);
+  void issue_repop(RepGather *repop);
   RepGather *new_repop(OpContext *ctx, ObjectContextRef obc, ceph_tid_t rep_tid);
   void remove_repop(RepGather *repop);
 
@@ -939,7 +917,8 @@ protected:
   /// clear agent state
   void agent_clear();
 
-  void agent_choose_mode(bool restart = false);  ///< choose (new) agent mode(s)
+  /// choose (new) agent mode(s), returns true if op is requeued
+  bool agent_choose_mode(bool restart = false, OpRequestRef op = OpRequestRef());
   void agent_choose_mode_restart();
 
   /// true if we can send an ondisk/commit for v
@@ -973,8 +952,6 @@ protected:
     return true;
   }
 
-  friend struct C_OnPushCommit;
-
   // projected object info
   SharedLRU<hobject_t, ObjectContext> object_contexts;
   // map from oid.snapdir() to SnapSetContext *
@@ -1169,7 +1146,10 @@ protected:
    */
   void do_cache_redirect(OpRequestRef op);
   /**
-   * This function starts up a copy from
+   * This function attempts to start a promote.  Either it succeeds,
+   * or places op on a wait list.  If op is null, failure means that
+   * this is a noop.  If a future user wants to be able to distinguish
+   * these cases, a return value should be added.
    */
   void promote_object(ObjectContextRef obc,            ///< [optional] obc
 		      const hobject_t& missing_object, ///< oid (if !obc)
@@ -1499,6 +1479,9 @@ private:
 
   int _verify_no_head_clones(const hobject_t& soid,
 			     const SnapSet& ss);
+  // return true if we're creating a local object, false for a
+  // whiteout or no change.
+  bool maybe_create_new_object(OpContext *ctx);
   int _delete_oid(OpContext *ctx, bool no_whiteout);
   int _rollback_to(OpContext *ctx, ceph_osd_op& op);
 public:
@@ -1511,11 +1494,6 @@ public:
   void wait_for_all_missing(OpRequestRef op);
 
   bool is_degraded_or_backfilling_object(const hobject_t& oid);
-
-  /* true if the object is missing on any peer, *healthy_copies will be
-   * set to the number of complete peers not missing the object
-   */
-  bool is_degraded_object(const hobject_t &oid, int *healthy_copies);
   void wait_for_degraded_object(const hobject_t& oid, OpRequestRef op);
 
   bool maybe_await_blocked_snapset(const hobject_t &soid, OpRequestRef op);
diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc
index 4efab9f..e5954c0 100644
--- a/src/osd/osd_types.cc
+++ b/src/osd/osd_types.cc
@@ -3091,6 +3091,36 @@ ostream& operator<<(ostream& out, const pg_log_entry_t& e)
 
 // -- pg_log_t --
 
+// out: pg_log_t that only has entries that apply to import_pgid using curmap
+// reject: Entries rejected from "in" are in the reject.log.  Other fields not set.
+void pg_log_t::filter_log(spg_t import_pgid, const OSDMap &curmap,
+  const string &hit_set_namespace, const pg_log_t &in,
+  pg_log_t &out, pg_log_t &reject)
+{
+  out = in;
+  out.log.clear();
+  reject.log.clear();
+
+  for (list<pg_log_entry_t>::const_iterator i = in.log.begin();
+       i != in.log.end(); ++i) {
+
+    if (i->soid.nspace != hit_set_namespace) {
+      object_t oid = i->soid.oid;
+      object_locator_t loc(i->soid);
+      pg_t raw_pgid = curmap.object_locator_to_pg(oid, loc);
+      pg_t pgid = curmap.raw_pg_to_pg(raw_pgid);
+
+      if (import_pgid.pgid == pgid) {
+        out.log.push_back(*i);
+      } else {
+        reject.log.push_back(*i);
+      }
+    } else {
+      out.log.push_back(*i);
+    }
+  }
+}
+
 void pg_log_t::encode(bufferlist& bl) const
 {
   ENCODE_START(6, 3, bl);
diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h
index d2e2345..531f163 100644
--- a/src/osd/osd_types.h
+++ b/src/osd/osd_types.h
@@ -2287,6 +2287,10 @@ struct pg_log_t {
     }      
   }
 
+  static void filter_log(spg_t import_pgid, const OSDMap &curmap,
+    const string &hit_set_namespace, const pg_log_t &in,
+    pg_log_t &out, pg_log_t &reject);
+
   /**
    * copy entries from the tail of another pg_log_t
    *
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index b4792d6..05f8843 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -1293,6 +1293,9 @@ void Objecter::_check_op_pool_dne(Op *op, bool session_locked)
       if (op->oncommit) {
 	op->oncommit->complete(-ENOENT);
       }
+      if (op->oncommit_sync) {
+	op->oncommit_sync->complete(-ENOENT);
+      }
 
       OSDSession *s = op->session;
       assert(s != NULL);
@@ -2027,7 +2030,7 @@ void Objecter::_send_op_account(Op *op)
   } else {
     ldout(cct, 20) << " note: not requesting ack" << dendl;
   }
-  if (op->oncommit) {
+  if (op->oncommit || op->oncommit_sync) {
     num_uncommitted.inc();
   } else {
     ldout(cct, 20) << " note: not requesting commit" << dendl;
@@ -2197,6 +2200,10 @@ int Objecter::op_cancel(OSDSession *s, ceph_tid_t tid, int r)
     op->oncommit->complete(r);
     op->oncommit = NULL;
   }
+  if (op->oncommit_sync) {
+    op->oncommit_sync->complete(r);
+    op->oncommit_sync = NULL;
+  }
   _op_cancel_map_check(op);
   _finish_op(op);
   s->lock.unlock();
@@ -2656,6 +2663,7 @@ void Objecter::_cancel_linger_op(Op *op)
   assert(!op->should_resend);
   delete op->onack;
   delete op->oncommit;
+  delete op->oncommit_sync;
 
   _finish_op(op);
 }
@@ -2906,7 +2914,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
     ldout(cct, 5) << " got redirect reply; redirecting" << dendl;
     if (op->onack)
       num_unacked.dec();
-    if (op->oncommit)
+    if (op->oncommit || op->oncommit_sync)
       num_uncommitted.dec();
     _session_op_remove(s, op);
     s->lock.unlock();
@@ -2997,23 +3005,28 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
     num_unacked.dec();
     logger->inc(l_osdc_op_ack);
   }
-  if (op->oncommit && (m->is_ondisk() || rc)) {
-    ldout(cct, 15) << "handle_osd_op_reply safe" << dendl;
-    oncommit = op->oncommit;
-    op->oncommit = 0;
-    num_uncommitted.dec();
-    logger->inc(l_osdc_op_commit);
-  }
-  if (op->oncommit_sync) {
-    op->oncommit_sync->complete(rc);
-    op->oncommit_sync = NULL;
+  if (m->is_ondisk() || rc) {
+    if (op->oncommit) {
+      ldout(cct, 15) << "handle_osd_op_reply safe" << dendl;
+      oncommit = op->oncommit;
+      op->oncommit = NULL;
+      num_uncommitted.dec();
+      logger->inc(l_osdc_op_commit);
+    }
+    if (op->oncommit_sync) {
+      ldout(cct, 15) << "handle_osd_op_reply safe (sync)" << dendl;
+      op->oncommit_sync->complete(rc);
+      op->oncommit_sync = NULL;
+      num_uncommitted.dec();
+      logger->inc(l_osdc_op_commit);
+    }
   }
 
   /* get it before we call _finish_op() */
   Mutex *completion_lock = (op->target.base_oid.name.size() ? s->get_lock(op->target.base_oid) : NULL);
 
   // done with this tid?
-  if (!op->onack && !op->oncommit) {
+  if (!op->onack && !op->oncommit && !op->oncommit_sync) {
     ldout(cct, 15) << "handle_osd_op_reply completed tid " << tid << dendl;
     _finish_op(op);
   }
diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h
index fef7cd4..68c429d 100644
--- a/src/osdc/Objecter.h
+++ b/src/osdc/Objecter.h
@@ -89,6 +89,13 @@ struct ObjectOperation {
     void finish(int r) {
       first->complete(r);
       second->complete(r);
+      first = NULL;
+      second = NULL;
+    }
+
+    virtual ~C_TwoContexts() {
+        delete first;
+        delete second;
     }
   };
 
diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py
index 3d202da..12f0b70 100644
--- a/src/pybind/ceph_argparse.py
+++ b/src/pybind/ceph_argparse.py
@@ -868,7 +868,7 @@ def validate(args, signature, partial=False):
                 if not desc.req:
                     # if not required, just push back; it might match
                     # the next arg
-                    print >> sys.stderr, myarg, 'not valid: ', str(e)
+                    save_exception = [ myarg, e ]
                     myargs.insert(0, myarg)
                     break
                 else:
@@ -880,12 +880,16 @@ def validate(args, signature, partial=False):
             # Whew, valid arg acquired.  Store in dict
             matchcnt += 1
             store_arg(desc, d)
+            # Clear prior exception
+            save_exception = None
 
     # Done with entire list of argdescs
     if matchcnt < reqsiglen:
         raise ArgumentTooFew("not enough arguments given")
 
     if myargs and not partial:
+        if save_exception:
+            print >> sys.stderr, save_exception[0], 'not valid: ', str(save_exception[1])
         raise ArgumentError("unused arguments: " + str(myargs))
 
     # Finally, success
diff --git a/src/rbd.cc b/src/rbd.cc
index 895d316..6f5457d 100644
--- a/src/rbd.cc
+++ b/src/rbd.cc
@@ -159,6 +159,8 @@ void usage()
 "                                     +4 exclusive lock, +8 object map\n"
 "  --image-shared                     image will be used concurrently (disables\n"
 "                                     RBD exclusive lock and dependent features)\n"
+"  --stripe-unit <size-in-bytes>      size (in bytes) of a block of data\n"
+"  --stripe-count <num>               number of consecutive objects in a stripe\n"
 "  --id <username>                    rados user (without 'client.'prefix) to\n"
 "                                     authenticate as\n"
 "  --keyfile <path>                   file containing secret key for use with cephx\n"
@@ -171,61 +173,20 @@ void usage()
 "  --allow-shrink                     allow shrinking of an image when resizing\n";
 }
 
-static string feature_str(uint64_t feature)
-{
-  switch (feature) {
-  case RBD_FEATURE_LAYERING:
-    return "layering";
-  case RBD_FEATURE_STRIPINGV2:
-    return "striping";
-  case RBD_FEATURE_EXCLUSIVE_LOCK:
-    return "exclusive";
-  case RBD_FEATURE_OBJECT_MAP:
-    return "object map";
-  default:
-    return "";
-  }
-}
-
-static string features_str(uint64_t features)
-{
-  string s = "";
-
-  for (uint64_t feature = 1; feature <= RBD_FEATURE_OBJECT_MAP;
-       feature <<= 1) {
-    if (feature & features) {
-      if (s.size())
-	s += ", ";
-      s += feature_str(feature);
-    }
-  }
-  return s;
-}
-
-static void format_features(Formatter *f, uint64_t features)
-{
-  f->open_array_section("features");
-  for (uint64_t feature = 1; feature <= RBD_FEATURE_OBJECT_MAP;
-       feature <<= 1) {
-    f->dump_string("feature", feature_str(feature));
-  }
-  f->close_section();
-}
-
-static void format_flags(Formatter *f, uint64_t flags)
+static void format_bitmask(Formatter *f, const std::string &name,
+                           const std::map<uint64_t, std::string>& mapping,
+                           uint64_t bitmask)
 {
   int count = 0;
-  std::map<uint64_t, std::string> flag_mapping = boost::assign::map_list_of(
-    RBD_FLAG_OBJECT_MAP_INVALID, "object map invalid");
-
+  std::string group_name(name + "s");
   if (f == NULL) {
-    cout << "\tflags: ";
+    cout << "\t" << group_name << ": ";
   } else {
-    f->open_array_section("flags");
+    f->open_array_section(group_name.c_str());
   }
-  for (std::map<uint64_t, std::string>::iterator it = flag_mapping.begin();
-       it != flag_mapping.end(); ++it) {
-    if ((it->first & flags) == 0) {
+  for (std::map<uint64_t, std::string>::const_iterator it = mapping.begin();
+       it != mapping.end(); ++it) {
+    if ((it->first & bitmask) == 0) {
       continue;
     }
 
@@ -235,7 +196,7 @@ static void format_flags(Formatter *f, uint64_t flags)
       }
       cout << it->second;
     } else {
-      f->dump_string("flag", it->second);
+      f->dump_string(name.c_str(), it->second);
     }
   }
   if (f == NULL) {
@@ -245,6 +206,23 @@ static void format_flags(Formatter *f, uint64_t flags)
   }
 }
 
+static void format_features(Formatter *f, uint64_t features)
+{
+  std::map<uint64_t, std::string> mapping = boost::assign::map_list_of(
+    RBD_FEATURE_LAYERING, "layering")(
+    RBD_FEATURE_STRIPINGV2, "striping")(
+    RBD_FEATURE_EXCLUSIVE_LOCK, "exclusive")(
+    RBD_FEATURE_OBJECT_MAP, "object map");
+  format_bitmask(f, "feature", mapping, features);
+}
+
+static void format_flags(Formatter *f, uint64_t flags)
+{
+  std::map<uint64_t, std::string> mapping = boost::assign::map_list_of(
+    RBD_FLAG_OBJECT_MAP_INVALID, "object map invalid");
+  format_bitmask(f, "flag", mapping, flags);
+}
+
 struct MyProgressContext : public librbd::ProgressContext {
   const char *operation;
   int last_pc;
@@ -477,12 +455,6 @@ static int do_create(librbd::RBD &rbd, librados::IoCtx& io_ctx,
     }
     r = rbd.create(io_ctx, imgname, size, order);
   } else {
-    if ((stripe_unit || stripe_count) &&
-	(stripe_unit != (1ull << *order) && stripe_count != 1)) {
-      features |= RBD_FEATURE_STRIPINGV2;
-    } else {
-      features &= ~RBD_FEATURE_STRIPINGV2;
-    }
     r = rbd.create3(io_ctx, imgname, size, features, order,
 		    stripe_unit, stripe_count);
   }
@@ -494,14 +466,15 @@ static int do_create(librbd::RBD &rbd, librados::IoCtx& io_ctx,
 static int do_clone(librbd::RBD &rbd, librados::IoCtx &p_ioctx,
 		    const char *p_name, const char *p_snapname,
 		    librados::IoCtx &c_ioctx, const char *c_name,
-		    uint64_t features, int *c_order)
+		    uint64_t features, int *c_order,
+                    uint64_t stripe_unit, uint64_t stripe_count)
 {
   if ((features & RBD_FEATURE_LAYERING) != RBD_FEATURE_LAYERING) {
     return -EINVAL;
   }
 
-  return rbd.clone(p_ioctx, p_name, p_snapname, c_ioctx, c_name, features,
-		    c_order);
+  return rbd.clone2(p_ioctx, p_name, p_snapname, c_ioctx, c_name, features,
+		    c_order, stripe_unit, stripe_count);
 }
 
 static int do_flatten(librbd::Image& image)
@@ -590,10 +563,7 @@ static int do_show_info(const char *imgname, librbd::Image& image,
   }
 
   if (!old_format) {
-    if (f)
-      format_features(f, features);
-    else
-      cout << "\tfeatures: " << features_str(features) << std::endl;
+    format_features(f, features);
     format_flags(f, flags);
   }
 
@@ -1472,7 +1442,8 @@ private:
 
 static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
 		     const char *imgname, int *order, const char *path,
-		     int format, uint64_t features, uint64_t size)
+		     int format, uint64_t features, uint64_t size,
+                     uint64_t stripe_unit, uint64_t stripe_count)
 {
   int fd, r;
   struct stat stat_buf;
@@ -1534,7 +1505,8 @@ static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
 
     posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
   }
-  r = do_create(rbd, io_ctx, imgname, size, order, format, features, 0, 0);
+  r = do_create(rbd, io_ctx, imgname, size, order, format, features,
+                stripe_unit, stripe_count);
   if (r < 0) {
     cerr << "rbd: image creation failed" << std::endl;
     goto done;
@@ -3116,16 +3088,7 @@ if (!set_conf_param(v, p1, p2, p3)) { \
     }
   }
 
-  switch (opt_cmd) {
-  case OPT_LIST:
-    r = do_list(rbd, io_ctx, lflag, formatter.get());
-    if (r < 0) {
-      cerr << "rbd: list: " << cpp_strerror(-r) << std::endl;
-      return -r;
-    }
-    break;
-
-  case OPT_CREATE:
+  if (opt_cmd == OPT_CREATE || opt_cmd == OPT_CLONE || opt_cmd == OPT_IMPORT) {
     if (order && (order < 12 || order > 25)) {
       cerr << "rbd: order must be between 12 (4 KB) and 25 (32 MB)"
 	   << std::endl;
@@ -3137,6 +3100,25 @@ if (!set_conf_param(v, p1, p2, p3)) { \
       usage();
       return EINVAL;
     }
+
+    if ((stripe_unit || stripe_count) &&
+	(stripe_unit != (1ll << order) && stripe_count != 1)) {
+      features |= RBD_FEATURE_STRIPINGV2;
+    } else {
+      features &= ~RBD_FEATURE_STRIPINGV2;
+    }
+  }
+
+  switch (opt_cmd) {
+  case OPT_LIST:
+    r = do_list(rbd, io_ctx, lflag, formatter.get());
+    if (r < 0) {
+      cerr << "rbd: list: " << cpp_strerror(-r) << std::endl;
+      return -r;
+    }
+    break;
+
+  case OPT_CREATE:
     r = do_create(rbd, io_ctx, imgname, size, &order, format, features,
 		  stripe_unit, stripe_count);
     if (r < 0) {
@@ -3146,14 +3128,8 @@ if (!set_conf_param(v, p1, p2, p3)) { \
     break;
 
   case OPT_CLONE:
-    if (order && (order < 12 || order > 25)) {
-      cerr << "rbd: order must be between 12 (4 KB) and 25 (32 MB)"
-	   << std::endl;
-      return EINVAL;
-    }
-
     r = do_clone(rbd, io_ctx, imgname, snapname, dest_io_ctx, destname,
-		 features, &order);
+		 features, &order, stripe_unit, stripe_count);
     if (r < 0) {
       cerr << "rbd: clone error: " << cpp_strerror(-r) << std::endl;
       return -r;
@@ -3372,7 +3348,7 @@ if (!set_conf_param(v, p1, p2, p3)) { \
       return EINVAL;
     }
     r = do_import(rbd, dest_io_ctx, destname, &order, path,
-		  format, features, size);
+		  format, features, size, stripe_unit, stripe_count);
     if (r < 0) {
       cerr << "rbd: import failed: " << cpp_strerror(-r) << std::endl;
       return -r;
diff --git a/src/rbd_replay/Makefile.am b/src/rbd_replay/Makefile.am
index f1f406f..fa101b7 100644
--- a/src/rbd_replay/Makefile.am
+++ b/src/rbd_replay/Makefile.am
@@ -1,3 +1,7 @@
+if ENABLE_CLIENT
+if WITH_RADOS
+if WITH_RBD
+
 # librbd_replay_la exists only to help with unit tests
 librbd_replay_la_SOURCES = rbd_replay/actions.cc \
 	rbd_replay/Deser.cc \
@@ -51,3 +55,7 @@ rbd_replay_prep_LDADD = $(LIBRBD) \
 if WITH_BABELTRACE
 bin_PROGRAMS += rbd-replay-prep
 endif
+
+endif # WITH_RBD
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/rgw/Makefile.am b/src/rgw/Makefile.am
index 06e56c6..17dc2d1 100644
--- a/src/rgw/Makefile.am
+++ b/src/rgw/Makefile.am
@@ -1,4 +1,7 @@
+if ENABLE_CLIENT
+if WITH_RADOS
 if WITH_RADOSGW
+
 librgw_la_SOURCES =  \
 	rgw/librgw.cc \
 	rgw/rgw_acl.cc \
@@ -53,6 +56,18 @@ LIBRGW_DEPS += \
 	-lfcgi \
 	-ldl
 
+CIVETWEB_INCLUDE = --include civetweb/include/civetweb_conf.h
+
+libcivetweb_la_SOURCES =  \
+	rgw/rgw_civetweb.cc \
+	rgw/rgw_civetweb_log.cc \
+	civetweb/src/civetweb.c
+
+libcivetweb_la_CXXFLAGS = ${CIVETWEB_INCLUDE} -Woverloaded-virtual ${AM_CXXFLAGS}
+libcivetweb_la_CFLAGS = -Icivetweb/include ${CIVETWEB_INCLUDE}
+
+noinst_LTLIBRARIES += libcivetweb.la
+
 radosgw_SOURCES = \
 	rgw/rgw_resolve.cc \
 	rgw/rgw_rest.cc \
@@ -71,12 +86,9 @@ radosgw_SOURCES = \
 	rgw/rgw_swift.cc \
 	rgw/rgw_swift_auth.cc \
 	rgw/rgw_loadgen.cc \
-	rgw/rgw_civetweb.cc \
-	rgw/rgw_civetweb_log.cc \
-	civetweb/src/civetweb.c \
 	rgw/rgw_main.cc
 radosgw_CFLAGS = -I$(srcdir)/civetweb/include
-radosgw_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL)
+radosgw_LDADD = $(LIBRGW) $(LIBCIVETWEB) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL)
 bin_PROGRAMS += radosgw
 
 radosgw_admin_SOURCES = rgw/rgw_admin.cc
@@ -104,9 +116,6 @@ DENCODER_SOURCES += \
 	rgw/rgw_json_enc.cc
 
 
-endif # WITH_RADOSGW
-
-
 noinst_HEADERS += \
 	rgw/logrotate.conf \
 	rgw/rgw_acl.h \
@@ -162,4 +171,9 @@ noinst_HEADERS += \
 	rgw/rgw_civetweb_log.h \
 	civetweb/civetweb.h \
 	civetweb/include/civetweb.h \
+	civetweb/include/civetweb_conf.h \
 	civetweb/src/md5.h
+
+endif # WITH_RADOSGW
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc
index 1fa3875..e5afb5a 100644
--- a/src/rgw/rgw_admin.cc
+++ b/src/rgw/rgw_admin.cc
@@ -1242,7 +1242,7 @@ int main(int argc, char **argv)
     return 5; //EIO
   }
 
-  rgw_user_init(store->meta_mgr);
+  rgw_user_init(store);
   rgw_bucket_init(store->meta_mgr);
 
   StoreDestructor store_destructor(store);
diff --git a/src/rgw/rgw_cache.cc b/src/rgw/rgw_cache.cc
index d1e8093..c3f3b06 100644
--- a/src/rgw/rgw_cache.cc
+++ b/src/rgw/rgw_cache.cc
@@ -13,6 +13,10 @@ int ObjectCache::get(string& name, ObjectCacheInfo& info, uint32_t mask, rgw_cac
 {
   RWLock::RLocker l(lock);
 
+  if (!enabled) {
+    return -ENOENT;
+  }
+
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end()) {
     ldout(cct, 10) << "cache get: name=" << name << " : miss" << dendl;
@@ -64,6 +68,10 @@ bool ObjectCache::chain_cache_entry(list<rgw_cache_entry_info *>& cache_info_ent
 {
   RWLock::WLocker l(lock);
 
+  if (!enabled) {
+    return false;
+  }
+
   list<rgw_cache_entry_info *>::iterator citer;
 
   list<ObjectCacheEntry *> cache_entry_list;
@@ -107,6 +115,10 @@ void ObjectCache::put(string& name, ObjectCacheInfo& info, rgw_cache_entry_info
 {
   RWLock::WLocker l(lock);
 
+  if (!enabled) {
+    return;
+  }
+
   ldout(cct, 10) << "cache put: name=" << name << dendl;
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end()) {
@@ -179,6 +191,10 @@ void ObjectCache::remove(string& name)
 {
   RWLock::WLocker l(lock);
 
+  if (!enabled) {
+    return;
+  }
+
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end())
     return;
@@ -242,4 +258,40 @@ void ObjectCache::remove_lru(string& name, std::list<string>::iterator& lru_iter
   lru_iter = lru.end();
 }
 
+void ObjectCache::set_enabled(bool status)
+{
+  RWLock::WLocker l(lock);
+
+  enabled = status;
+
+  if (!enabled) {
+    do_invalidate_all();
+  }
+}
+
+void ObjectCache::invalidate_all()
+{
+  RWLock::WLocker l(lock);
+
+  do_invalidate_all();
+}
+
+void ObjectCache::do_invalidate_all()
+{
+  cache_map.clear();
+  lru.clear();
+
+  lru_size = 0;
+  lru_counter = 0;
+  lru_window = 0;
+
+  for (list<RGWChainedCache *>::iterator iter = chained_cache.begin(); iter != chained_cache.end(); ++iter) {
+    (*iter)->invalidate_all();
+  }
+}
+
+void ObjectCache::chain_cache(RGWChainedCache *cache) {
+  RWLock::WLocker l(lock);
+  chained_cache.push_back(cache);
+}
 
diff --git a/src/rgw/rgw_cache.h b/src/rgw/rgw_cache.h
index 4db884b..5ebb48c 100644
--- a/src/rgw/rgw_cache.h
+++ b/src/rgw/rgw_cache.h
@@ -146,10 +146,16 @@ class ObjectCache {
   RWLock lock;
   CephContext *cct;
 
+  list<RGWChainedCache *> chained_cache;
+
+  bool enabled;
+
   void touch_lru(string& name, ObjectCacheEntry& entry, std::list<string>::iterator& lru_iter);
   void remove_lru(string& name, std::list<string>::iterator& lru_iter);
+
+  void do_invalidate_all();
 public:
-  ObjectCache() : lru_size(0), lru_counter(0), lru_window(0), lock("ObjectCache"), cct(NULL) { }
+  ObjectCache() : lru_size(0), lru_counter(0), lru_window(0), lock("ObjectCache"), cct(NULL), enabled(false) { }
   int get(std::string& name, ObjectCacheInfo& bl, uint32_t mask, rgw_cache_entry_info *cache_info);
   void put(std::string& name, ObjectCacheInfo& bl, rgw_cache_entry_info *cache_info);
   void remove(std::string& name);
@@ -158,6 +164,11 @@ public:
     lru_window = cct->_conf->rgw_cache_lru_size / 2;
   }
   bool chain_cache_entry(list<rgw_cache_entry_info *>& cache_info_entries, RGWChainedCache::Entry *chained_entry);
+
+  void set_enabled(bool status);
+
+  void chain_cache(RGWChainedCache *cache);
+  void invalidate_all();
 };
 
 template <class T>
@@ -201,10 +212,21 @@ class RGWCache  : public T
   }
 
   int distribute_cache(const string& normal_name, rgw_obj& obj, ObjectCacheInfo& obj_info, int op);
-  int watch_cb(int opcode, uint64_t ver, bufferlist& bl);
+  int watch_cb(uint64_t notify_id,
+	       uint64_t cookie,
+	       uint64_t notifier_id,
+	       bufferlist& bl);
+
+  void set_cache_enabled(bool state) {
+    cache.set_enabled(state);
+  }
 public:
   RGWCache() {}
 
+  void register_chained_cache(RGWChainedCache *cc) {
+    cache.chain_cache(cc);
+  }
+
   int set_attr(void *ctx, rgw_obj& obj, const char *name, bufferlist& bl, RGWObjVersionTracker *objv_tracker);
   int set_attrs(void *ctx, rgw_obj& obj, 
                 map<string, bufferlist>& attrs,
@@ -554,7 +576,10 @@ int RGWCache<T>::distribute_cache(const string& normal_name, rgw_obj& obj, Objec
 }
 
 template <class T>
-int RGWCache<T>::watch_cb(int opcode, uint64_t ver, bufferlist& bl)
+int RGWCache<T>::watch_cb(uint64_t notify_id,
+			  uint64_t cookie,
+			  uint64_t notifier_id,
+			  bufferlist& bl)
 {
   RGWCacheNotifyInfo info;
 
diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc
index 92ae502..d156958 100644
--- a/src/rgw/rgw_main.cc
+++ b/src/rgw/rgw_main.cc
@@ -148,6 +148,8 @@ public:
   bool get_val(const string& key, const string& def_val, string *out);
   bool get_val(const string& key, int def_val, int *out);
 
+  map<string, string>& get_config_map() { return config_map; }
+
   string get_framework() { return framework; }
 };
 
@@ -945,6 +947,12 @@ class RGWMongooseFrontend : public RGWFrontend {
   struct mg_context *ctx;
   RGWProcessEnv env;
 
+  void set_conf_default(map<string, string>& m, const string& key, const string& def_val) {
+    if (m.find(key) == m.end()) {
+      m[key] = def_val;
+    }
+  }
+
 public:
   RGWMongooseFrontend(RGWProcessEnv& pe, RGWFrontendConfig *_conf) : conf(_conf), ctx(NULL), env(pe) {
   }
@@ -957,9 +965,23 @@ public:
     char thread_pool_buf[32];
     snprintf(thread_pool_buf, sizeof(thread_pool_buf), "%d", (int)g_conf->rgw_thread_pool_size);
     string port_str;
+    map<string, string> conf_map = conf->get_config_map();
     conf->get_val("port", "80", &port_str);
-    const char *options[] = {"listening_ports", port_str.c_str(), "enable_keep_alive", "yes", "num_threads", thread_pool_buf,
-                             "decode_url", "no", NULL};
+    conf_map.erase("port");
+    conf_map["listening_ports"] = port_str;
+    set_conf_default(conf_map, "enable_keep_alive", "yes");
+    set_conf_default(conf_map, "num_threads", thread_pool_buf);
+    set_conf_default(conf_map, "decode_url", "no");
+
+    const char *options[conf_map.size() * 2 + 1];
+    int i = 0;
+    for (map<string, string>::iterator iter = conf_map.begin(); iter != conf_map.end(); ++iter) {
+      options[i] = iter->first.c_str();
+      options[i + 1] = iter->second.c_str();
+      dout(20)<< "civetweb config: " << options[i] << ": " << (options[i + 1] ? options[i + 1] : "<null>") << dendl;
+      i += 2;
+    }
+    options[i] = NULL;
 
     struct mg_callbacks cb;
     memset((void *)&cb, 0, sizeof(cb));
@@ -1044,11 +1066,15 @@ int main(int argc, const char **argv)
   int r = 0;
   RGWRados *store = RGWStoreManager::get_storage(g_ceph_context, true, true);
   if (!store) {
+    mutex.Lock();
+    init_timer.cancel_all_events();
+    init_timer.shutdown();
+    mutex.Unlock();
+
     derr << "Couldn't init storage provider (RADOS)" << dendl;
-    r = EIO;
+    return EIO;
   }
-  if (!r)
-    r = rgw_perf_start(g_ceph_context);
+  r = rgw_perf_start(g_ceph_context);
 
   rgw_rest_init(g_ceph_context, store->region);
 
@@ -1060,7 +1086,7 @@ int main(int argc, const char **argv)
   if (r) 
     return 1;
 
-  rgw_user_init(store->meta_mgr);
+  rgw_user_init(store);
   rgw_bucket_init(store->meta_mgr);
   rgw_log_usage_init(g_ceph_context, store);
 
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc
index 87710fc..bf7247e 100644
--- a/src/rgw/rgw_op.cc
+++ b/src/rgw/rgw_op.cc
@@ -522,6 +522,12 @@ int RGWOp::init_quota()
 
 static bool validate_cors_rule_method(RGWCORSRule *rule, const char *req_meth) {
   uint8_t flags = 0;
+
+  if (!req_meth) {
+    dout(5) << "req_meth is null" << dendl;
+    return false;
+  }
+
   if (strcmp(req_meth, "GET") == 0) flags = RGW_CORS_GET;
   else if (strcmp(req_meth, "POST") == 0) flags = RGW_CORS_POST;
   else if (strcmp(req_meth, "PUT") == 0) flags = RGW_CORS_PUT;
@@ -627,11 +633,12 @@ bool RGWOp::generate_cors_headers(string& origin, string& method, string& header
     req_meth = s->info.method;
   }
 
-  if (req_meth)
+  if (req_meth) {
     method = req_meth;
-  /* CORS 6.2.5. */
-  if (!validate_cors_rule_method(rule, req_meth)) {
-    return false;
+    /* CORS 6.2.5. */
+    if (!validate_cors_rule_method(rule, req_meth)) {
+     return false;
+    }
   }
 
   /* CORS 6.2.4. */
@@ -2445,7 +2452,6 @@ void RGWPutACLs::execute()
   RGWAccessControlPolicy_S3 new_policy(s->cct);
   stringstream ss;
   char *new_data = NULL;
-  ACLOwner owner;
   rgw_obj obj;
 
   ret = 0;
@@ -2455,8 +2461,10 @@ void RGWPutACLs::execute()
     return;
   }
 
-  owner.set_id(s->user.user_id);
-  owner.set_name(s->user.display_name);
+
+  RGWAccessControlPolicy *existing_policy = (s->object.empty() ? s->bucket_acl : s->object_acl);
+
+  owner = existing_policy->get_owner();
 
   ret = get_params();
   if (ret < 0)
diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h
index a24b328..4a73576 100644
--- a/src/rgw/rgw_op.h
+++ b/src/rgw/rgw_op.h
@@ -664,6 +664,7 @@ protected:
   int ret;
   size_t len;
   char *data;
+  ACLOwner owner;
 
 public:
   RGWPutACLs() {
diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc
index 036204e..57ca5c1 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -11,6 +11,7 @@
 #include "common/errno.h"
 #include "common/Formatter.h"
 #include "common/Throttle.h"
+#include "common/Finisher.h"
 
 #include "rgw_rados.h"
 #include "rgw_cache.h"
@@ -82,6 +83,14 @@ static RGWObjCategory main_category = RGW_OBJ_CATEGORY_MAIN;
 
 #define dout_subsys ceph_subsys_rgw
 
+struct bucket_info_entry {
+  RGWBucketInfo info;
+  time_t mtime;
+  map<string, bufferlist> attrs;
+};
+
+static RGWChainedCacheImpl<bucket_info_entry> binfo_cache;
+
 void RGWDefaultRegionInfo::dump(Formatter *f) const {
   encode_json("default_region", default_region, f);
 }
@@ -1201,13 +1210,118 @@ int RGWPutObjProcessor_Atomic::do_complete(string& etag, time_t *mtime, time_t s
   return 0;
 }
 
-class RGWWatcher : public librados::WatchCtx {
+int RGWRados::watch(const string& oid, uint64_t *watch_handle, librados::WatchCtx2 *ctx) {
+  int r = control_pool_ctx.watch2(oid, watch_handle, ctx);
+  if (r < 0)
+    return r;
+  return 0;
+}
+
+int RGWRados::unwatch(uint64_t watch_handle)
+{
+  int r = control_pool_ctx.unwatch2(watch_handle);
+  if (r < 0) {
+    ldout(cct, 0) << "ERROR: rados->unwatch2() returned r=" << r << dendl;
+    return r;
+  }
+  r = rados->watch_flush();
+  if (r < 0) {
+    ldout(cct, 0) << "ERROR: rados->watch_flush() returned r=" << r << dendl;
+    return r;
+  }
+  return 0;
+}
+
+void RGWRados::add_watcher(int i)
+{
+  ldout(cct, 20) << "add_watcher() i=" << i << dendl;
+  Mutex::Locker l(watchers_lock);
+  watchers_set.insert(i);
+  if (watchers_set.size() ==  (size_t)num_watchers) {
+    ldout(cct, 2) << "all " << num_watchers << " watchers are set, enabling cache" << dendl;
+    set_cache_enabled(true);
+  }
+}
+
+void RGWRados::remove_watcher(int i)
+{
+  ldout(cct, 20) << "remove_watcher() i=" << i << dendl;
+  Mutex::Locker l(watchers_lock);
+  size_t orig_size = watchers_set.size();
+  watchers_set.erase(i);
+  if (orig_size == (size_t)num_watchers &&
+      watchers_set.size() < orig_size) { /* actually removed */
+    ldout(cct, 2) << "removed watcher, disabling cache" << dendl;
+    set_cache_enabled(false);
+  }
+}
+
+class RGWWatcher : public librados::WatchCtx2 {
   RGWRados *rados;
+  int index;
+  string oid;
+  uint64_t watch_handle;
+
+  class C_ReinitWatch : public Context {
+    RGWWatcher *watcher;
+    public:
+      C_ReinitWatch(RGWWatcher *_watcher) : watcher(_watcher) {}
+      void finish(int r) {
+        watcher->reinit();
+      }
+  };
 public:
-  RGWWatcher(RGWRados *r) : rados(r) {}
-  void notify(uint8_t opcode, uint64_t ver, bufferlist& bl) {
-    ldout(rados->ctx(), 10) << "RGWWatcher::notify() opcode=" << (int)opcode << " ver=" << ver << " bl.length()=" << bl.length() << dendl;
-    rados->watch_cb(opcode, ver, bl);
+  RGWWatcher(RGWRados *r, int i, const string& o) : rados(r), index(i), oid(o), watch_handle(0) {}
+  void handle_notify(uint64_t notify_id,
+		     uint64_t cookie,
+		     uint64_t notifier_id,
+		     bufferlist& bl) {
+    ldout(rados->ctx(), 10) << "RGWWatcher::handle_notify() "
+			    << " notify_id " << notify_id
+			    << " cookie " << cookie
+			    << " notifier " << notifier_id
+			    << " bl.length()=" << bl.length() << dendl;
+    rados->watch_cb(notify_id, cookie, notifier_id, bl);
+
+    bufferlist reply_bl; // empty reply payload
+    rados->control_pool_ctx.notify_ack(oid, notify_id, cookie, reply_bl);
+  }
+  void handle_error(uint64_t cookie, int err) {
+    lderr(rados->ctx()) << "RGWWatcher::handle_error cookie " << cookie
+			<< " err " << cpp_strerror(err) << dendl;
+    rados->remove_watcher(index);
+    rados->schedule_context(new C_ReinitWatch(this));
+  }
+
+  void reinit() {
+    int ret = unregister_watch();
+    if (ret < 0) {
+      ldout(rados->ctx(), 0) << "ERROR: unregister_watch() returned ret=" << ret << dendl;
+      return;
+    }
+    ret = register_watch();
+    if (ret < 0) {
+      ldout(rados->ctx(), 0) << "ERROR: register_watch() returned ret=" << ret << dendl;
+      return;
+    }
+  }
+
+  int unregister_watch() {
+    int r = rados->unwatch(watch_handle);
+    if (r < 0) {
+      return r;
+    }
+    rados->remove_watcher(index);
+    return 0;
+  }
+
+  int register_watch() {
+    int r = rados->watch(oid, &watch_handle, this);
+    if (r < 0) {
+      return r;
+    }
+    rados->add_watcher(index);
+    return 0;
   }
 };
 
@@ -1283,6 +1397,10 @@ int RGWRados::get_max_chunk_size(rgw_bucket& bucket, uint64_t *max_chunk_size)
 
 void RGWRados::finalize()
 {
+  if (finisher) {
+    finisher->stop();
+    delete finisher;
+  }
   if (need_watch_notify()) {
     finalize_watch();
   }
@@ -1398,6 +1516,9 @@ int RGWRados::init_complete()
     }
   }
 
+  finisher = new Finisher(cct);
+  finisher->start();
+
   if (need_watch_notify()) {
     ret = init_watch();
     if (ret < 0) {
@@ -1445,6 +1566,8 @@ int RGWRados::init_complete()
   }
   ldout(cct, 20) << __func__ << " bucket index max shards: " << bucket_index_max_shards << dendl;
 
+  binfo_cache.init(this);
+
   return ret;
 }
 
@@ -1468,21 +1591,19 @@ int RGWRados::initialize()
 void RGWRados::finalize_watch()
 {
   for (int i = 0; i < num_watchers; i++) {
-    string& notify_oid = notify_oids[i];
-    if (notify_oid.empty())
-      continue;
-    uint64_t watch_handle = watch_handles[i];
-    control_pool_ctx.unwatch(notify_oid, watch_handle);
-
     RGWWatcher *watcher = watchers[i];
+    watcher->unregister_watch();
     delete watcher;
   }
 
   delete[] notify_oids;
-  delete[] watch_handles;
   delete[] watchers;
 }
 
+void RGWRados::schedule_context(Context *c) {
+  finisher->queue(c);
+}
+
 int RGWRados::list_raw_prefixed_objs(string pool_name, const string& prefix, list<string>& result)
 {
   rgw_bucket pool(pool_name.c_str());
@@ -1590,7 +1711,6 @@ int RGWRados::init_watch()
 
   notify_oids = new string[num_watchers];
   watchers = new RGWWatcher *[num_watchers];
-  watch_handles = new uint64_t[num_watchers];
 
   for (int i=0; i < num_watchers; i++) {
     string& notify_oid = notify_oids[i];
@@ -1604,16 +1724,18 @@ int RGWRados::init_watch()
     if (r < 0 && r != -EEXIST)
       return r;
 
-    RGWWatcher *watcher = new RGWWatcher(this);
+    RGWWatcher *watcher = new RGWWatcher(this, i, notify_oid);
     watchers[i] = watcher;
 
-    r = control_pool_ctx.watch(notify_oid, 0, &watch_handles[i], watcher);
+    r = watcher->register_watch();
     if (r < 0)
       return r;
   }
 
   watch_initialized = true;
 
+  set_cache_enabled(true);
+
   return 0;
 }
 
@@ -6745,14 +6867,6 @@ int RGWRados::convert_old_bucket_info(RGWObjectCtx& obj_ctx, string& bucket_name
   return 0;
 }
 
-struct bucket_info_entry {
-  RGWBucketInfo info;
-  time_t mtime;
-  map<string, bufferlist> attrs;
-};
-
-static RGWChainedCacheImpl<bucket_info_entry> binfo_cache;
-
 int RGWRados::get_bucket_info(RGWObjectCtx& obj_ctx, const string& bucket_name, RGWBucketInfo& info,
                               time_t *pmtime, map<string, bufferlist> *pattrs)
 {
@@ -7018,7 +7132,7 @@ int RGWRados::distribute(const string& key, bufferlist& bl)
   pick_control_oid(key, notify_oid);
 
   ldout(cct, 10) << "distributing notification oid=" << notify_oid << " bl.length()=" << bl.length() << dendl;
-  int r = control_pool_ctx.notify(notify_oid, 0, bl);
+  int r = control_pool_ctx.notify2(notify_oid, bl, 0, NULL);
   return r;
 }
 
diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h
index e6fe72b..082e85b 100644
--- a/src/rgw/rgw_rados.h
+++ b/src/rgw/rgw_rados.h
@@ -1130,6 +1130,7 @@ public:
   virtual ~RGWChainedCache() {}
   virtual void chain_cb(const string& key, void *data) = 0;
   virtual void invalidate(const string& key) = 0;
+  virtual void invalidate_all() = 0;
 
   struct Entry {
     RGWChainedCache *cache;
@@ -1155,6 +1156,8 @@ struct RGWObjectCtx {
   void invalidate(rgw_obj& obj);
 };
 
+class Finisher;
+
 class RGWRados
 {
   friend class RGWGC;
@@ -1186,6 +1189,7 @@ class RGWRados
   void get_bucket_instance_ids(RGWBucketInfo& bucket_info, int shard_id, map<int, string> *result);
 
   Mutex lock;
+  Mutex watchers_lock;
   SafeTimer *timer;
 
   class C_Tick : public Context {
@@ -1203,11 +1207,13 @@ class RGWRados
 
   int num_watchers;
   RGWWatcher **watchers;
-  uint64_t *watch_handles;
+  std::set<int> watchers_set;
   librados::IoCtx root_pool_ctx;      // .rgw
   librados::IoCtx control_pool_ctx;   // .rgw.control
   bool watch_initialized;
 
+  friend class RGWWatcher;
+
   Mutex bucket_id_lock;
 
   // This field represents the number of bucket index object shards
@@ -1240,10 +1246,12 @@ protected:
 
   RGWQuotaHandler *quota_handler;
 
+  Finisher *finisher;
+
 public:
-  RGWRados() : lock("rados_timer_lock"), timer(NULL),
+  RGWRados() : lock("rados_timer_lock"), watchers_lock("watchers_lock"), timer(NULL),
                gc(NULL), use_gc_thread(false), quota_threads(false),
-               num_watchers(0), watchers(NULL), watch_handles(NULL),
+               num_watchers(0), watchers(NULL),
                watch_initialized(false),
                bucket_id_lock("rados_bucket_id"),
                bucket_index_max_shards(0),
@@ -1251,6 +1259,7 @@ public:
                cct(NULL), rados(NULL),
                pools_initialized(false),
                quota_handler(NULL),
+               finisher(NULL),
                rest_master_conn(NULL),
                meta_mgr(NULL), data_log(NULL) {}
 
@@ -1312,6 +1321,8 @@ public:
   virtual int initialize();
   virtual void finalize();
 
+  void schedule_context(Context *c);
+
   /** set up a bucket listing. handle is filled in. */
   virtual int list_buckets_init(RGWAccessHandle *handle);
   /** 
@@ -1821,6 +1832,7 @@ public:
                              bufferlist& bl, off_t ofs, off_t end,
                              rgw_cache_entry_info *cache_info);
 
+  virtual void register_chained_cache(RGWChainedCache *cache) {}
   virtual bool chain_cache_entry(list<rgw_cache_entry_info *>& cache_info_entries, RGWChainedCache::Entry *chained_entry) { return false; }
 
   int iterate_obj(RGWObjectCtx& ctx, rgw_obj& obj,
@@ -1884,13 +1896,22 @@ public:
   virtual int update_containers_stats(map<string, RGWBucketEnt>& m);
   virtual int append_async(rgw_obj& obj, size_t size, bufferlist& bl);
 
+  int watch(const string& oid, uint64_t *watch_handle, librados::WatchCtx2 *ctx);
+  int unwatch(uint64_t watch_handle);
+  void add_watcher(int i);
+  void remove_watcher(int i);
   virtual bool need_watch_notify() { return false; }
   virtual int init_watch();
   virtual void finalize_watch();
   virtual int distribute(const string& key, bufferlist& bl);
-  virtual int watch_cb(int opcode, uint64_t ver, bufferlist& bl) { return 0; }
+  virtual int watch_cb(uint64_t notify_id,
+		       uint64_t cookie,
+		       uint64_t notifier_id,
+		       bufferlist& bl) { return 0; }
   void pick_control_oid(const string& key, string& notify_oid);
 
+  virtual void set_cache_enabled(bool state) {}
+
   void set_atomic(void *ctx, rgw_obj& obj) {
     RGWObjectCtx *rctx = static_cast<RGWObjectCtx *>(ctx);
     rctx->set_atomic(obj);
@@ -2124,6 +2145,10 @@ class RGWChainedCacheImpl : public RGWChainedCache {
 public:
   RGWChainedCacheImpl() : lock("RGWChainedCacheImpl::lock") {}
 
+  void init(RGWRados *store) {
+    store->register_chained_cache(this);
+  }
+
   bool find(const string& key, T *entry) {
     RWLock::RLocker rl(lock);
     typename map<string, T>::iterator iter = entries.find(key);
@@ -2152,6 +2177,11 @@ public:
     RWLock::WLocker wl(lock);
     entries.erase(key);
   }
+
+  void invalidate_all() {
+    RWLock::WLocker wl(lock);
+    entries.clear();
+  }
 };
 
 class RGWPutObjProcessor
diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
index 9479601..dc71aa9 100644
--- a/src/rgw/rgw_rest_s3.cc
+++ b/src/rgw/rgw_rest_s3.cc
@@ -495,16 +495,16 @@ void RGWStatBucket_ObjStore_S3::send_response()
   dump_start(s);
 }
 
-static int create_s3_policy(struct req_state *s, RGWRados *store, RGWAccessControlPolicy_S3& s3policy)
+static int create_s3_policy(struct req_state *s, RGWRados *store, RGWAccessControlPolicy_S3& s3policy, ACLOwner& owner)
 {
   if (s->has_acl_header) {
     if (!s->canned_acl.empty())
       return -ERR_INVALID_REQUEST;
 
-    return s3policy.create_from_headers(store, s->info.env, s->owner);
+    return s3policy.create_from_headers(store, s->info.env, owner);
   }
 
-  return s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
+  return s3policy.create_canned(owner, s->bucket_owner, s->canned_acl);
 }
 
 class RGWLocationConstraint : public XMLObj
@@ -560,7 +560,7 @@ int RGWCreateBucket_ObjStore_S3::get_params()
 {
   RGWAccessControlPolicy_S3 s3policy(s->cct);
 
-  int r = create_s3_policy(s, store, s3policy);
+  int r = create_s3_policy(s, store, s3policy, s->owner);
   if (r < 0)
     return r;
 
@@ -661,7 +661,7 @@ int RGWPutObj_ObjStore_S3::get_params()
   if (!s->length)
     return -ERR_LENGTH_REQUIRED;
 
-  int r = create_s3_policy(s, store, s3policy);
+  int r = create_s3_policy(s, store, s3policy, s->owner);
   if (r < 0)
     return r;
 
@@ -1411,7 +1411,7 @@ int RGWCopyObj_ObjStore_S3::init_dest_policy()
   RGWAccessControlPolicy_S3 s3policy(s->cct);
 
   /* build a policy for the target object */
-  int r = create_s3_policy(s, store, s3policy);
+  int r = create_s3_policy(s, store, s3policy, s->owner);
   if (r < 0)
     return r;
 
@@ -1528,7 +1528,7 @@ int RGWPutACLs_ObjStore_S3::get_policy_from_state(RGWRados *store, struct req_st
       s->canned_acl.clear();
   }
 
-  int r = create_s3_policy(s, store, s3policy);
+  int r = create_s3_policy(s, store, s3policy, owner);
   if (r < 0)
     return r;
 
@@ -1670,7 +1670,7 @@ void RGWOptionsCORS_ObjStore_S3::send_response()
 int RGWInitMultipart_ObjStore_S3::get_params()
 {
   RGWAccessControlPolicy_S3 s3policy(s->cct);
-  ret = create_s3_policy(s, store, s3policy);
+  ret = create_s3_policy(s, store, s3policy, s->owner);
   if (ret < 0)
     return ret;
 
diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc
index bdd2133..24b72fb 100644
--- a/src/rgw/rgw_user.cc
+++ b/src/rgw/rgw_user.cc
@@ -2514,8 +2514,10 @@ public:
   }
 };
 
-void rgw_user_init(RGWMetadataManager *mm)
+void rgw_user_init(RGWRados *store)
 {
+  uinfo_cache.init(store);
+
   user_meta_handler = new RGWUserMetadataHandler;
-  mm->register_handler(user_meta_handler);
+  store->meta_mgr->register_handler(user_meta_handler);
 }
diff --git a/src/rgw/rgw_user.h b/src/rgw/rgw_user.h
index 317cd06..6204b09 100644
--- a/src/rgw/rgw_user.h
+++ b/src/rgw/rgw_user.h
@@ -670,6 +670,6 @@ public:
 
 class RGWMetadataManager;
 
-extern void rgw_user_init(RGWMetadataManager *mm);
+extern void rgw_user_init(RGWRados *store);
 
 #endif
diff --git a/src/test/Makefile-client.am b/src/test/Makefile-client.am
new file mode 100644
index 0000000..824783b
--- /dev/null
+++ b/src/test/Makefile-client.am
@@ -0,0 +1,515 @@
+if WITH_RADOS
+
+libradostest_la_SOURCES = \
+	test/librados/test.cc \
+	test/librados/TestCase.cc
+noinst_LTLIBRARIES += libradostest.la
+libradostest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+RADOS_TEST_LDADD = libradostest.la
+
+ceph_test_rados_SOURCES = \
+	test/osd/TestRados.cc \
+	test/osd/TestOpStat.cc \
+	test/osd/Object.cc \
+	test/osd/RadosModel.cc
+ceph_test_rados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_rados
+
+ceph_test_mutate_SOURCES = test/test_mutate.cc
+ceph_test_mutate_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_mutate
+
+if WITH_BUILD_TESTS
+test_build_librados_SOURCES = \
+	test/buildtest_skeleton.cc \
+	$(librados_la_SOURCES)
+test_build_librados_LDADD = \
+	$(LIBRADOS_DEPS) \
+	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+test_build_librados_LDFLAGS = -static-libtool-libs
+test_build_librados_CFLAGS = $(AM_CFLAGS)
+test_build_librados_CXXFLAGS = $(AM_CXXFLAGS)
+bin_DEBUGPROGRAMS += test_build_librados
+endif # WITH_BUILD_TESTS
+
+ceph_smalliobench_SOURCES = \
+	test/bench/small_io_bench.cc \
+	test/bench/rados_backend.cc \
+	test/bench/detailed_stat_collector.cc \
+	test/bench/bencher.cc
+ceph_smalliobench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_smalliobench
+
+ceph_omapbench_SOURCES = test/omap_bench.cc
+ceph_omapbench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_omapbench
+
+if LINUX
+ceph_kvstorebench_SOURCES = \
+	test/kv_store_bench.cc \
+	key_value_store/kv_flat_btree_async.cc
+ceph_kvstorebench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_kvstorebench
+endif
+
+if LINUX
+ceph_test_rados_list_parallel_SOURCES = \
+	test/system/rados_list_parallel.cc \
+	test/system/st_rados_create_pool.cc \
+	test/system/st_rados_list_objects.cc
+ceph_test_rados_list_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+bin_DEBUGPROGRAMS += ceph_test_rados_list_parallel
+
+ceph_test_rados_open_pools_parallel_SOURCES = \
+	test/system/rados_open_pools_parallel.cc \
+	test/system/st_rados_create_pool.cc
+ceph_test_rados_open_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+bin_DEBUGPROGRAMS += ceph_test_rados_open_pools_parallel
+
+ceph_test_rados_delete_pools_parallel_SOURCES = \
+	test/system/rados_delete_pools_parallel.cc \
+	test/system/st_rados_create_pool.cc \
+	test/system/st_rados_delete_pool.cc \
+	test/system/st_rados_list_objects.cc
+ceph_test_rados_delete_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+bin_DEBUGPROGRAMS += ceph_test_rados_delete_pools_parallel
+
+ceph_test_rados_watch_notify_SOURCES = \
+	test/system/rados_watch_notify.cc \
+	test/system/st_rados_create_pool.cc \
+	test/system/st_rados_delete_pool.cc \
+	test/system/st_rados_delete_objs.cc \
+	test/system/st_rados_watch.cc \
+	test/system/st_rados_notify.cc
+ceph_test_rados_watch_notify_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
+bin_DEBUGPROGRAMS += ceph_test_rados_watch_notify
+endif # LINUX
+
+unittest_librados_SOURCES = test/librados/librados.cc
+unittest_librados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+unittest_librados_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_librados
+
+unittest_librados_config_SOURCES = test/librados/librados_config.cc
+unittest_librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+unittest_librados_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_librados_config
+
+ceph_multi_stress_watch_SOURCES = test/multi_stress_watch.cc
+ceph_multi_stress_watch_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+bin_DEBUGPROGRAMS += ceph_multi_stress_watch
+
+
+ceph_test_cls_rbd_SOURCES = test/cls_rbd/test_cls_rbd.cc
+ceph_test_cls_rbd_LDADD = \
+	$(LIBRADOS) libcls_rbd_client.la libcls_lock_client.la \
+	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_cls_rbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_rbd
+
+ceph_test_cls_refcount_SOURCES = test/cls_refcount/test_cls_refcount.cc
+ceph_test_cls_refcount_LDADD = $(LIBRADOS) libcls_refcount_client.la $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_cls_refcount_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_refcount
+
+ceph_test_cls_version_SOURCES = test/cls_version/test_cls_version.cc
+ceph_test_cls_version_LDADD = $(LIBRADOS) libcls_version_client.a $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_cls_version_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_version
+
+ceph_test_cls_log_SOURCES = test/cls_log/test_cls_log.cc
+ceph_test_cls_log_LDADD = $(LIBRADOS) libcls_log_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_cls_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_log
+
+ceph_test_cls_statelog_SOURCES = test/cls_statelog/test_cls_statelog.cc
+ceph_test_cls_statelog_LDADD = $(LIBRADOS) libcls_statelog_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_cls_statelog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_statelog
+
+ceph_test_cls_replica_log_SOURCES = test/cls_replica_log/test_cls_replica_log.cc
+ceph_test_cls_replica_log_LDADD = \
+	$(LIBRADOS) libcls_replica_log_client.a \
+	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_cls_replica_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_replica_log
+
+ceph_test_cls_lock_SOURCES = test/cls_lock/test_cls_lock.cc
+ceph_test_cls_lock_LDADD = \
+	$(LIBRADOS) libcls_lock_client.la \
+	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_cls_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_lock
+
+ceph_test_cls_hello_SOURCES = test/cls_hello/test_cls_hello.cc
+ceph_test_cls_hello_LDADD = \
+	$(LIBRADOS) $(CRYPTO_LIBS) \
+	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_cls_hello_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_hello
+
+ceph_test_rados_api_cmd_SOURCES = test/librados/cmd.cc
+ceph_test_rados_api_cmd_LDADD = \
+	$(LIBCOMMON) $(LIBRADOS) $(CRYPTO_LIBS) \
+	$(UNITTEST_LDADD) $(RADOS_TEST_LDADD) -luuid
+ceph_test_rados_api_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_cmd
+
+ceph_test_rados_api_io_SOURCES = test/librados/io.cc
+ceph_test_rados_api_io_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_io
+
+ceph_test_rados_api_c_write_operations_SOURCES = \
+	test/librados/c_write_operations.cc
+ceph_test_rados_api_c_write_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_c_write_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_c_write_operations
+
+ceph_test_rados_api_c_read_operations_SOURCES = \
+	test/librados/c_read_operations.cc
+ceph_test_rados_api_c_read_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_c_read_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_c_read_operations
+
+ceph_test_rados_api_aio_SOURCES = test/librados/aio.cc
+ceph_test_rados_api_aio_LDADD = \
+	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_aio
+
+ceph_test_rados_api_list_SOURCES = test/librados/list.cc
+ceph_test_rados_api_list_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_list_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_list
+
+ceph_test_rados_api_nlist_SOURCES = test/librados/nlist.cc
+ceph_test_rados_api_nlist_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_nlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_nlist
+
+ceph_test_rados_api_pool_SOURCES = test/librados/pool.cc
+ceph_test_rados_api_pool_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_pool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_pool
+
+ceph_test_rados_api_stat_SOURCES = test/librados/stat.cc
+ceph_test_rados_api_stat_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_stat_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_stat
+
+ceph_test_rados_api_watch_notify_SOURCES = test/librados/watch_notify.cc
+ceph_test_rados_api_watch_notify_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_watch_notify_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_watch_notify
+
+ceph_test_rados_api_snapshots_SOURCES = test/librados/snapshots.cc
+ceph_test_rados_api_snapshots_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_snapshots_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_snapshots
+
+ceph_test_rados_api_cls_SOURCES = test/librados/cls.cc
+ceph_test_rados_api_cls_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_cls_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_cls
+
+ceph_test_rados_api_misc_SOURCES = test/librados/misc.cc
+ceph_test_rados_api_misc_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_misc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_misc
+
+ceph_test_rados_api_tier_SOURCES = \
+	test/librados/tier.cc \
+	osd/HitSet.cc
+ceph_test_rados_api_tier_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_tier_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_tier
+
+ceph_test_rados_api_lock_SOURCES = test/librados/lock.cc
+ceph_test_rados_api_lock_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_rados_api_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_api_lock
+
+
+ceph_test_stress_watch_SOURCES = test/test_stress_watch.cc
+ceph_test_stress_watch_LDADD = \
+	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
+ceph_test_stress_watch_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_stress_watch
+
+librados_test_stub_la_SOURCES = \
+	test/librados_test_stub/LibradosTestStub.cc \
+	test/librados_test_stub/TestClassHandler.cc \
+	test/librados_test_stub/TestIoCtxImpl.cc \
+	test/librados_test_stub/TestMemIoCtxImpl.cc \
+	test/librados_test_stub/TestMemRadosClient.cc \
+	test/librados_test_stub/TestRadosClient.cc \
+	test/librados_test_stub/TestWatchNotify.cc
+noinst_HEADERS += \
+	test/librados_test_stub/TestClassHandler.h \
+	test/librados_test_stub/TestRadosClient.h \
+	test/librados_test_stub/TestMemRadosClient.h \
+	test/librados_test_stub/TestWatchNotify.h \
+	test/librados_test_stub/TestMemIoCtxImpl.h \
+	test/librados_test_stub/TestIoCtxImpl.h
+noinst_LTLIBRARIES += librados_test_stub.la
+
+
+if WITH_RBD
+ceph_smalliobenchrbd_SOURCES = \
+	test/bench/small_io_bench_rbd.cc \
+	test/bench/rbd_backend.cc \
+	test/bench/detailed_stat_collector.cc \
+	test/bench/bencher.cc
+ceph_smalliobenchrbd_LDADD = $(LIBRBD) $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_smalliobenchrbd
+
+unittest_rbd_replay_SOURCES = test/test_rbd_replay.cc
+unittest_rbd_replay_LDADD = $(LIBRBD) \
+	$(LIBRADOS) \
+	$(CEPH_GLOBAL) \
+	librbd_replay.la \
+	librbd_replay_ios.la \
+	$(UNITTEST_LDADD)
+unittest_rbd_replay_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_rbd_replay
+
+librbd_test_la_SOURCES = \
+	test/librbd/test_fixture.cc \
+	test/librbd/test_librbd.cc \
+	test/librbd/test_ImageWatcher.cc \
+	test/librbd/test_internal.cc \
+	test/librbd/test_main.cc
+librbd_test_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+noinst_LTLIBRARIES += librbd_test.la
+
+unittest_librbd_SOURCES =
+nodist_EXTRA_unittest_librbd_SOURCES = dummy.cc
+unittest_librbd_LDADD = \
+	librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \
+	libcls_rbd_client.la libcls_lock_client.la \
+	librados_test_stub.la librados_internal.la \
+	$(LIBOSDC) $(UNITTEST_LDADD) \
+	$(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+check_PROGRAMS += unittest_librbd
+
+ceph_test_librbd_SOURCES =
+nodist_EXTRA_ceph_test_librbd_SOURCES = dummy.cc
+ceph_test_librbd_LDADD = \
+	librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \
+	libcls_rbd_client.la libcls_lock_client.la \
+	librados_api.la $(LIBRADOS_DEPS) $(UNITTEST_LDADD) \
+	$(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_librbd
+
+if WITH_LTTNG
+unittest_librbd_LDADD += $(LIBRBD_TP)
+ceph_test_librbd_LDADD += $(LIBRBD_TP)
+endif
+
+if LINUX
+# Force use of C++ linker with dummy.cc - LIBKRBD is a C++ library
+ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.c common/dummy.cc
+ceph_test_librbd_fsx_LDADD = \
+	$(LIBKRBD) $(LIBRBD) $(LIBRADOS) \
+	$(CRYPTO_LIBS) $(PTHREAD_LIBS) -luuid
+ceph_test_librbd_fsx_CFLAGS = ${AM_CFLAGS}
+bin_DEBUGPROGRAMS += ceph_test_librbd_fsx
+endif
+endif # WITH_RBD
+
+
+if WITH_RADOSSTRIPER
+libradosstripertest_la_SOURCES = test/libradosstriper/TestCase.cc
+noinst_LTLIBRARIES += libradosstripertest.la
+libradosstripertest_la_LIBADD = $(RADOS_TEST_LDADD)
+libradosstripertest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+RADOS_STRIPER_TEST_LDADD = libradosstripertest.la
+
+ceph_test_rados_striper_api_io_SOURCES = test/libradosstriper/io.cc
+ceph_test_rados_striper_api_io_LDADD = \
+	$(LIBRADOS) $(LIBRADOSSTRIPER) $(LIBCOMMON) \
+	$(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+ceph_test_rados_striper_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_io
+
+ceph_test_rados_striper_api_aio_SOURCES = test/libradosstriper/aio.cc
+ceph_test_rados_striper_api_aio_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+ceph_test_rados_striper_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_aio
+
+ceph_test_rados_striper_api_striping_SOURCES = test/libradosstriper/striping.cc
+ceph_test_rados_striper_api_striping_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
+ceph_test_rados_striper_api_striping_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_striping
+
+endif # WITH_RADOSSTRIPER
+
+
+if WITH_CEPHFS
+
+if WITH_BUILD_TESTS
+# I dont get this one... testing the osdc build but link in libcephfs?
+test_build_libcephfs_SOURCES = \
+	test/buildtest_skeleton.cc \
+	$(libosdc_la_SOURCES)
+test_build_libcephfs_LDADD = \
+	$(LIBCEPHFS) -lexpat \
+	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
+test_build_libcephfs_LDFLAGS = -static-libtool-libs
+test_build_libcephfs_CFLAGS = $(AM_CFLAGS)
+test_build_libcephfs_CXXFLAGS = $(AM_CXXFLAGS)
+bin_DEBUGPROGRAMS += test_build_libcephfs
+endif # WITH_BUILD_TESTS
+
+unittest_encoding_LDADD = $(LIBCEPHFS) $(LIBRADOS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
+unittest_encoding_CXXFLAGS = $(UNITTEST_CXXFLAGS) -fno-strict-aliasing
+check_PROGRAMS += unittest_encoding
+
+unittest_base64_SOURCES = test/base64.cc
+unittest_base64_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
+unittest_base64_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_base64
+
+unittest_run_cmd_SOURCES = test/run_cmd.cc
+unittest_run_cmd_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+unittest_run_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_run_cmd
+
+unittest_simple_spin_SOURCES = test/simple_spin.cc
+unittest_simple_spin_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+unittest_simple_spin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_simple_spin
+
+unittest_libcephfs_config_SOURCES = test/libcephfs_config.cc
+unittest_libcephfs_config_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+unittest_libcephfs_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_libcephfs_config
+
+ceph_test_libcephfs_SOURCES = \
+	test/libcephfs/test.cc \
+	test/libcephfs/readdir_r_cb.cc \
+	test/libcephfs/caps.cc \
+	test/libcephfs/multiclient.cc
+ceph_test_libcephfs_LDADD = $(LIBCEPHFS) $(UNITTEST_LDADD)
+ceph_test_libcephfs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_libcephfs
+
+unittest_encoding_SOURCES = test/encoding.cc
+
+ceph_test_c_headers_SOURCES = test/test_c_headers.c
+ceph_test_c_headers_LDADD = $(LIBRADOS) $(LIBCEPHFS)
+ceph_test_c_headers_CFLAGS = $(AM_CFLAGS) \
+	-Werror \
+	-Wstrict-prototypes \
+	-Wredundant-decls \
+	-Wall \
+	-Wundef \
+	-Wwrite-strings \
+	-Wmissing-prototypes \
+	-Wendif-labels \
+	-Wmissing-include-dirs \
+	-Wempty-body \
+	-Wnested-externs \
+	-Wformat-security \
+	-Wformat-y2k \
+	-Winit-self \
+	-Wignored-qualifiers \
+	-Wold-style-declaration \
+	-Wold-style-definition \
+	-Wtype-limits
+bin_DEBUGPROGRAMS += ceph_test_c_headers
+
+endif # WITH_CEPHFS
+
+
+if WITH_RADOSGW
+
+if WITH_BUILD_TESTS
+test_build_librgw_SOURCES = \
+	test/buildtest_skeleton.cc \
+	$(librgw_la_SOURCES)
+test_build_librgw_LDADD = \
+	$(LIBRGW_DEPS) \
+	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) \
+	$(CEPH_GLOBAL)
+test_build_librgw_LDFLAGS = -static-libtool-libs
+test_build_librgw_CFLAGS = $(AM_CFLAGS)
+test_build_librgw_CXXFLAGS = $(AM_CXXFLAGS)
+bin_DEBUGPROGRAMS += test_build_librgw
+endif # WITH_BUILD_TESTS
+
+#unittest_librgw_link_SOURCES = test/librgw_link.cc
+#unittest_librgw_link_LDFLAGS = $(PTHREAD_CFLAGS) ${AM_LDFLAGS}
+#unittest_librgw_link_LDADD = $(LIBRGW) ${UNITTEST_LDADD}
+#unittest_librgw_link_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+#check_PROGRAMS += unittest_librgw_link
+
+#unittest_librgw_SOURCES = test/librgw.cc
+#unittest_librgw_LDFLAGS = -lrt $(PTHREAD_CFLAGS) -lcurl ${AM_LDFLAGS}
+#unittest_librgw_LDADD =  librgw.la $(LIBRADOS) ${UNITTEST_LDADD} -lexpat $(CEPH_GLOBAL)
+#unittest_librgw_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
+#check_PROGRAMS += unittest_librgw
+
+ceph_test_cors_SOURCES = test/test_cors.cc
+ceph_test_cors_LDADD = \
+	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+	$(UNITTEST_LDADD) \
+	-lcurl -luuid -lexpat
+ceph_test_cors_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cors
+
+ceph_test_rgw_manifest_SOURCES = test/rgw/test_rgw_manifest.cc
+ceph_test_rgw_manifest_LDADD = \
+	$(LIBRADOS) $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL) \
+	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+	-lcurl -luuid -lexpat
+
+ceph_test_rgw_manifest_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_rgw_manifest
+
+ceph_test_cls_rgw_meta_SOURCES = test/test_rgw_admin_meta.cc
+ceph_test_cls_rgw_meta_LDADD = \
+	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+	-lcurl -luuid -lexpat \
+	libcls_version_client.a libcls_log_client.a \
+	libcls_statelog_client.a libcls_refcount_client.la \
+	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+ceph_test_cls_rgw_meta_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_rgw_meta
+
+ceph_test_cls_rgw_log_SOURCES = test/test_rgw_admin_log.cc
+ceph_test_cls_rgw_log_LDADD = \
+	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+	-lcurl -luuid -lexpat \
+	libcls_version_client.a libcls_log_client.a \
+	libcls_statelog_client.a libcls_refcount_client.la \
+	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+ceph_test_cls_rgw_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_rgw_log
+
+ceph_test_cls_rgw_opstate_SOURCES = test/test_rgw_admin_opstate.cc
+ceph_test_cls_rgw_opstate_LDADD = \
+	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
+	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
+	-lcurl -luuid -lexpat \
+	libcls_version_client.a libcls_log_client.a \
+	libcls_statelog_client.a libcls_refcount_client.la \
+	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
+ceph_test_cls_rgw_opstate_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_rgw_opstate
+
+ceph_test_cls_rgw_SOURCES = test/cls_rgw/test_cls_rgw.cc
+ceph_test_cls_rgw_LDADD = \
+	$(LIBRADOS) $(CRYPTO_LIBS) libcls_rgw_client.la \
+	$(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
+ceph_test_cls_rgw_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_cls_rgw
+
+endif # WITH_RADOSGW
+
+
+endif # WITH_RADOS
diff --git a/src/test/Makefile-server.am b/src/test/Makefile-server.am
new file mode 100644
index 0000000..95ed80c
--- /dev/null
+++ b/src/test/Makefile-server.am
@@ -0,0 +1,234 @@
+ceph_test_async_driver_SOURCES = test/msgr/test_async_driver.cc
+ceph_test_async_driver_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_async_driver_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_async_driver
+
+ceph_test_msgr_SOURCES = test/msgr/test_msgr.cc
+ceph_test_msgr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_msgr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_msgr
+
+ceph_streamtest_SOURCES = test/streamtest.cc
+ceph_streamtest_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_streamtest
+
+ceph_test_trans_SOURCES = test/test_trans.cc
+ceph_test_trans_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_trans
+
+ceph_test_mon_workloadgen_SOURCES = test/mon/test_mon_workloadgen.cc
+ceph_test_mon_workloadgen_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_mon_workloadgen
+
+ceph_test_mon_msg_SOURCES = test/mon/test-mon-msg.cc
+ceph_test_mon_msg_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
+ceph_test_mon_msg_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_mon_msg
+
+ceph_perf_objectstore_SOURCES = test/objectstore/ObjectStoreTransactionBenchmark.cc
+ceph_perf_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_perf_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_perf_objectstore
+
+if LINUX
+ceph_test_objectstore_SOURCES = test/objectstore/store_test.cc
+ceph_test_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_objectstore
+
+ceph_test_filestore_SOURCES = test/filestore/TestFileStore.cc
+ceph_test_filestore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_filestore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_filestore
+endif
+
+ceph_test_objectstore_workloadgen_SOURCES = \
+	test/objectstore/workload_generator.cc \
+	test/objectstore/TestObjectStoreState.cc
+ceph_test_objectstore_workloadgen_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_objectstore_workloadgen
+
+ceph_test_filestore_idempotent_SOURCES = \
+	test/objectstore/test_idempotent.cc \
+	test/objectstore/FileStoreTracker.cc \
+	test/common/ObjectContents.cc
+ceph_test_filestore_idempotent_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_filestore_idempotent
+
+ceph_test_filestore_idempotent_sequence_SOURCES = \
+	test/objectstore/test_idempotent_sequence.cc \
+	test/objectstore/DeterministicOpSequence.cc \
+	test/objectstore/TestObjectStoreState.cc \
+	test/objectstore/FileStoreDiff.cc
+ceph_test_filestore_idempotent_sequence_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_test_filestore_idempotent_sequence
+
+ceph_xattr_bench_SOURCES = test/xattr_bench.cc
+ceph_xattr_bench_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_xattr_bench_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_xattr_bench
+
+ceph_test_filejournal_SOURCES = test/test_filejournal.cc
+ceph_test_filejournal_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_filejournal_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_filejournal
+
+ceph_test_object_map_SOURCES = \
+	test/ObjectMap/test_object_map.cc \
+	test/ObjectMap/KeyValueDBMemory.cc
+ceph_test_object_map_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_object_map_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_object_map
+
+ceph_test_keyvaluedb_atomicity_SOURCES = test/ObjectMap/test_keyvaluedb_atomicity.cc
+ceph_test_keyvaluedb_atomicity_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_keyvaluedb_atomicity_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_keyvaluedb_atomicity
+
+ceph_test_keyvaluedb_iterators_SOURCES = \
+	test/ObjectMap/test_keyvaluedb_iterators.cc \
+	test/ObjectMap/KeyValueDBMemory.cc
+ceph_test_keyvaluedb_iterators_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_keyvaluedb_iterators_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_keyvaluedb_iterators
+
+
+if ENABLE_CLIENT # These need both server and client
+if WITH_RADOS
+
+ceph_smalliobenchfs_SOURCES = \
+	test/bench/small_io_bench_fs.cc \
+	test/bench/testfilestore_backend.cc \
+	test/bench/detailed_stat_collector.cc \
+	test/bench/bencher.cc
+ceph_smalliobenchfs_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_smalliobenchfs
+
+ceph_smalliobenchdumb_SOURCES = \
+	test/bench/small_io_bench_dumb.cc \
+	test/bench/dumb_backend.cc \
+	test/bench/detailed_stat_collector.cc \
+	test/bench/bencher.cc
+ceph_smalliobenchdumb_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_smalliobenchdumb
+
+ceph_tpbench_SOURCES = \
+	test/bench/tp_bench.cc \
+	test/bench/detailed_stat_collector.cc
+ceph_tpbench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_tpbench
+
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
+
+
+if WITH_MON
+ceph_test_keys_SOURCES = test/testkeys.cc
+ceph_test_keys_LDADD = $(LIBMON) $(CEPH_GLOBAL) 
+bin_DEBUGPROGRAMS += ceph_test_keys
+
+get_command_descriptions_SOURCES = test/common/get_command_descriptions.cc
+get_command_descriptions_LDADD = $(LIBMON) $(LIBCOMMON) $(CEPH_GLOBAL)
+noinst_PROGRAMS += get_command_descriptions
+
+unittest_mon_moncap_SOURCES = test/mon/moncap.cc
+unittest_mon_moncap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_mon_moncap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_mon_moncap
+
+unittest_mon_pgmap_SOURCES = test/mon/PGMap.cc
+unittest_mon_pgmap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_mon_pgmap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_mon_pgmap
+
+endif # WITH_MON
+
+
+if WITH_OSD
+unittest_ecbackend_SOURCES = test/osd/TestECBackend.cc
+unittest_ecbackend_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+unittest_ecbackend_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+check_PROGRAMS += unittest_ecbackend
+
+unittest_osdscrub_SOURCES = test/osd/TestOSDScrub.cc
+unittest_osdscrub_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+unittest_osdscrub_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+check_PROGRAMS += unittest_osdscrub
+if LINUX
+unittest_osdscrub_LDADD += -ldl
+endif # LINUX
+
+unittest_pglog_SOURCES = test/osd/TestPGLog.cc
+unittest_pglog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+unittest_pglog_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+check_PROGRAMS += unittest_pglog
+if LINUX
+unittest_pglog_LDADD += -ldl
+endif # LINUX
+
+unittest_hitset_SOURCES = test/osd/hitset.cc
+unittest_hitset_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+unittest_hitset_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+check_PROGRAMS += unittest_hitset
+
+unittest_osd_osdcap_SOURCES = test/osd/osdcap.cc 
+unittest_osd_osdcap_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_osd_osdcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_osd_osdcap
+
+ceph_test_snap_mapper_SOURCES = test/test_snap_mapper.cc
+ceph_test_snap_mapper_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+ceph_test_snap_mapper_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph_test_snap_mapper
+
+endif # WITH_OSD
+
+
+unittest_chain_xattr_SOURCES = test/objectstore/chain_xattr.cc
+unittest_chain_xattr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_chain_xattr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_chain_xattr
+
+unittest_flatindex_SOURCES = test/os/TestFlatIndex.cc
+unittest_flatindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_flatindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_flatindex
+
+unittest_lfnindex_SOURCES = test/os/TestLFNIndex.cc
+unittest_lfnindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_lfnindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_lfnindex
+
+
+if WITH_MDS
+
+# This should go to client once LIBMDS_TYPES exists
+ceph_dencoder_SOURCES = \
+	test/encoding/ceph_dencoder.cc \
+	$(DENCODER_SOURCES)
+ceph_dencoder_LDADD = \
+	$(LIBRBD_TYPES) \
+	$(LIBOSD_TYPES) \
+	$(LIBOS_TYPES) \
+	$(LIBMDS) \
+	$(LIBMON_TYPES) \
+	$(DENCODER_DEPS) \
+	$(CEPH_GLOBAL)
+
+# These should always use explicit _CFLAGS/_CXXFLAGS so avoid basename conflicts
+ceph_dencoder_CFLAGS = ${AM_CFLAGS}
+ceph_dencoder_CXXFLAGS = ${AM_CXXFLAGS}
+
+if COMPILER_HAS_VTA
+ceph_dencoder_CFLAGS += -fno-var-tracking-assignments
+ceph_dencoder_CXXFLAGS += -fno-var-tracking-assignments
+endif
+
+bin_PROGRAMS += ceph-dencoder
+
+unittest_mds_authcap_SOURCES = test/mds/TestMDSAuthCaps.cc 
+unittest_mds_authcap_LDADD = $(LIBMDS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
+unittest_mds_authcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+check_PROGRAMS += unittest_mds_authcap
+
+endif # WITH_MDS
diff --git a/src/test/Makefile.am b/src/test/Makefile.am
index 023e797..15f051d 100644
--- a/src/test/Makefile.am
+++ b/src/test/Makefile.am
@@ -1,6 +1,14 @@
 include test/erasure-code/Makefile.am
 include test/messenger/Makefile.am
 
+if ENABLE_CLIENT
+include test/Makefile-client.am
+endif
+
+if ENABLE_SERVER
+include test/Makefile-server.am
+endif
+
 ## Unknown/other tests
 
 ceph_test_timers_SOURCES = test/TestTimers.cc
@@ -11,82 +19,17 @@ ceph_test_signal_handlers_SOURCES = test/TestSignalHandlers.cc
 ceph_test_signal_handlers_LDADD = $(CEPH_GLOBAL)
 bin_DEBUGPROGRAMS += ceph_test_signal_handlers
 
-ceph_test_rados_SOURCES = \
-	test/osd/TestRados.cc \
-	test/osd/TestOpStat.cc \
-	test/osd/Object.cc \
-	test/osd/RadosModel.cc
-ceph_test_rados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_rados
-
-ceph_test_mutate_SOURCES = test/test_mutate.cc
-ceph_test_mutate_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_mutate
-
 ceph_test_rewrite_latency_SOURCES = test/test_rewrite_latency.cc
 ceph_test_rewrite_latency_LDADD = $(LIBCOMMON) $(PTHREAD_LIBS) -lm $(CRYPTO_LIBS) $(EXTRALIBS)
 bin_DEBUGPROGRAMS += ceph_test_rewrite_latency
 
-ceph_test_async_driver_SOURCES = test/msgr/test_async_driver.cc
-ceph_test_async_driver_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_async_driver_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_async_driver
-
-ceph_test_msgr_SOURCES = test/msgr/test_msgr.cc
-ceph_test_msgr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_msgr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_msgr
-
-ceph_streamtest_SOURCES = test/streamtest.cc
-ceph_streamtest_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_streamtest
-
-ceph_test_trans_SOURCES = test/test_trans.cc
-ceph_test_trans_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_trans
-
 ceph_test_crypto_SOURCES = test/testcrypto.cc
 ceph_test_crypto_LDADD = $(CEPH_GLOBAL)
 bin_DEBUGPROGRAMS += ceph_test_crypto
 
-ceph_test_keys_SOURCES = test/testkeys.cc
-ceph_test_keys_LDADD = $(LIBMON) $(CEPH_GLOBAL) 
-bin_DEBUGPROGRAMS += ceph_test_keys
-
-
-## Dencoder test
-
-ceph_dencoder_SOURCES = \
-	test/encoding/ceph_dencoder.cc \
-	$(DENCODER_SOURCES)
-ceph_dencoder_LDADD = \
-	$(LIBRBD_TYPES) \
-	$(LIBOSD_TYPES) \
-	$(LIBOS_TYPES) \
-	$(LIBMDS) \
-	$(LIBMON_TYPES) \
-	$(DENCODER_DEPS) \
-	$(CEPH_GLOBAL)
-
-# These should always use explicit _CFLAGS/_CXXFLAGS so avoid basename conflicts
-ceph_dencoder_CFLAGS = ${AM_CFLAGS}
-ceph_dencoder_CXXFLAGS = ${AM_CXXFLAGS}
-
-if COMPILER_HAS_VTA
-ceph_dencoder_CFLAGS += -fno-var-tracking-assignments
-ceph_dencoder_CXXFLAGS += -fno-var-tracking-assignments
-endif
-
-bin_PROGRAMS += ceph-dencoder
-
-get_command_descriptions_SOURCES = test/common/get_command_descriptions.cc
-get_command_descriptions_LDADD = $(LIBMON) $(LIBCOMMON) $(CEPH_GLOBAL)
-noinst_PROGRAMS += get_command_descriptions
-
 
 ## Build tests
 # These should all use explicit _CXXFLAGS so avoid basename conflicts
-
 if WITH_BUILD_TESTS
 test_build_libcommon_SOURCES = \
 	test/buildtest_skeleton.cc \
@@ -98,99 +41,9 @@ test_build_libcommon_LDFLAGS = -static-libtool-libs
 test_build_libcommon_CFLAGS = $(AM_CFLAGS)
 test_build_libcommon_CXXFLAGS = $(AM_CXXFLAGS)
 bin_DEBUGPROGRAMS += test_build_libcommon
-
-test_build_librados_SOURCES = \
-	test/buildtest_skeleton.cc \
-	$(librados_la_SOURCES)
-test_build_librados_LDADD = \
-	$(LIBRADOS_DEPS) \
-	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-test_build_librados_LDFLAGS = -static-libtool-libs
-test_build_librados_CFLAGS = $(AM_CFLAGS)
-test_build_librados_CXXFLAGS = $(AM_CXXFLAGS)
-bin_DEBUGPROGRAMS += test_build_librados
-
-test_build_librgw_SOURCES = \
-	test/buildtest_skeleton.cc \
-	$(librgw_la_SOURCES)
-test_build_librgw_LDADD = \
-	$(LIBRGW_DEPS) \
-	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) \
-	$(CEPH_GLOBAL)
-test_build_librgw_LDFLAGS = -static-libtool-libs
-test_build_librgw_CFLAGS = $(AM_CFLAGS)
-test_build_librgw_CXXFLAGS = $(AM_CXXFLAGS)
-bin_DEBUGPROGRAMS += test_build_librgw
-
-# I dont get this one... testing the osdc build but link in libcephfs?
-test_build_libcephfs_SOURCES = \
-	test/buildtest_skeleton.cc \
-	$(libosdc_la_SOURCES)
-test_build_libcephfs_LDADD = \
-	$(LIBCEPHFS) -lexpat \
-	$(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
-test_build_libcephfs_LDFLAGS = -static-libtool-libs
-test_build_libcephfs_CFLAGS = $(AM_CFLAGS)
-test_build_libcephfs_CXXFLAGS = $(AM_CXXFLAGS)
-bin_DEBUGPROGRAMS += test_build_libcephfs
-
 endif # WITH_BUILD_TESTS
 
 
-## Benchmarks
-
-ceph_smalliobench_SOURCES = \
-	test/bench/small_io_bench.cc \
-	test/bench/rados_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-ceph_smalliobench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_smalliobench
-
-ceph_smalliobenchfs_SOURCES = \
-	test/bench/small_io_bench_fs.cc \
-	test/bench/testfilestore_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-ceph_smalliobenchfs_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_smalliobenchfs
-
-ceph_smalliobenchdumb_SOURCES = \
-	test/bench/small_io_bench_dumb.cc \
-	test/bench/dumb_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-ceph_smalliobenchdumb_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_smalliobenchdumb
-
-ceph_smalliobenchrbd_SOURCES = \
-	test/bench/small_io_bench_rbd.cc \
-	test/bench/rbd_backend.cc \
-	test/bench/detailed_stat_collector.cc \
-	test/bench/bencher.cc
-ceph_smalliobenchrbd_LDADD = $(LIBRBD) $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_smalliobenchrbd
-
-ceph_tpbench_SOURCES = \
-	test/bench/tp_bench.cc \
-	test/bench/detailed_stat_collector.cc
-ceph_tpbench_LDADD = $(LIBRADOS) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_tpbench
-
-ceph_omapbench_SOURCES = test/omap_bench.cc
-ceph_omapbench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_omapbench
-
-if LINUX
-ceph_kvstorebench_SOURCES = \
-	test/kv_store_bench.cc \
-	key_value_store/kv_flat_btree_async.cc
-ceph_kvstorebench_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_kvstorebench
-endif
-
-## System tests
-
 if LINUX
 libsystest_la_SOURCES = \
 	test/system/cross_process_sem.cc \
@@ -198,38 +51,8 @@ libsystest_la_SOURCES = \
 	test/system/systest_settings.cc
 libsystest_la_LIBADD = $(CEPH_GLOBAL)
 noinst_LTLIBRARIES += libsystest.la
+endif # LINUX
 
-ceph_test_rados_list_parallel_SOURCES = \
-	test/system/rados_list_parallel.cc \
-	test/system/st_rados_create_pool.cc \
-	test/system/st_rados_list_objects.cc
-ceph_test_rados_list_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
-bin_DEBUGPROGRAMS += ceph_test_rados_list_parallel
-
-ceph_test_rados_open_pools_parallel_SOURCES = \
-	test/system/rados_open_pools_parallel.cc \
-	test/system/st_rados_create_pool.cc
-ceph_test_rados_open_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
-bin_DEBUGPROGRAMS += ceph_test_rados_open_pools_parallel
-
-ceph_test_rados_delete_pools_parallel_SOURCES = \
-	test/system/rados_delete_pools_parallel.cc \
-	test/system/st_rados_create_pool.cc \
-	test/system/st_rados_delete_pool.cc \
-	test/system/st_rados_list_objects.cc
-ceph_test_rados_delete_pools_parallel_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
-bin_DEBUGPROGRAMS += ceph_test_rados_delete_pools_parallel
-
-ceph_test_rados_watch_notify_SOURCES = \
-	test/system/rados_watch_notify.cc \
-	test/system/st_rados_create_pool.cc \
-	test/system/st_rados_delete_pool.cc \
-	test/system/st_rados_delete_objs.cc \
-	test/system/st_rados_watch.cc \
-	test/system/st_rados_notify.cc
-ceph_test_rados_watch_notify_LDADD = $(LIBRADOS) libsystest.la $(PTHREAD_LIBS)
-bin_DEBUGPROGRAMS += ceph_test_rados_watch_notify
-endif
 
 ceph_bench_log_SOURCES = test/bench_log.cc
 ceph_bench_log_LDADD = $(CEPH_GLOBAL)
@@ -265,6 +88,9 @@ check_SCRIPTS += test/ceph-disk.sh
 endif
 
 EXTRA_DIST += \
+	$(srcdir)/test/debian-jessie/Dockerfile.in \
+	$(srcdir)/test/debian-jessie/install-deps.sh \
+	$(srcdir)/test/debian-jessie/debian \
 	$(srcdir)/test/ubuntu-12.04/Dockerfile.in \
 	$(srcdir)/test/ubuntu-12.04/install-deps.sh \
 	$(srcdir)/test/ubuntu-12.04/debian \
@@ -305,11 +131,6 @@ UNITTEST_LDADD = \
 	$(top_builddir)/src/gmock/gtest/lib/libgtest.la \
 	$(PTHREAD_LIBS)
 
-unittest_encoding_SOURCES = test/encoding.cc
-unittest_encoding_LDADD = $(LIBCEPHFS) $(LIBRADOS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
-unittest_encoding_CXXFLAGS = $(UNITTEST_CXXFLAGS) -fno-strict-aliasing
-check_PROGRAMS += unittest_encoding
-
 unittest_addrs_SOURCES = test/test_addrs.cc
 unittest_addrs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_addrs_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
@@ -400,11 +221,6 @@ unittest_throttle_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_throttle_CXXFLAGS = $(UNITTEST_CXXFLAGS) -O2
 check_PROGRAMS += unittest_throttle
 
-unittest_base64_SOURCES = test/base64.cc
-unittest_base64_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) -lm $(UNITTEST_LDADD)
-unittest_base64_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_base64
-
 unittest_ceph_argparse_SOURCES = test/ceph_argparse.cc
 unittest_ceph_argparse_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_ceph_argparse_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -425,32 +241,6 @@ unittest_osd_types_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_osd_types_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL) 
 check_PROGRAMS += unittest_osd_types
 
-unittest_pglog_SOURCES = test/osd/TestPGLog.cc
-unittest_pglog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_pglog_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-check_PROGRAMS += unittest_pglog
-if LINUX
-unittest_pglog_LDADD += -ldl
-endif # LINUX
-
-unittest_osdscrub_SOURCES = test/osd/TestOSDScrub.cc
-unittest_osdscrub_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_osdscrub_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-check_PROGRAMS += unittest_osdscrub
-if LINUX
-unittest_osdscrub_LDADD += -ldl
-endif # LINUX
-
-unittest_ecbackend_SOURCES = test/osd/TestECBackend.cc
-unittest_ecbackend_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_ecbackend_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-check_PROGRAMS += unittest_ecbackend
-
-unittest_hitset_SOURCES = test/osd/hitset.cc
-unittest_hitset_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-unittest_hitset_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-check_PROGRAMS += unittest_hitset
-
 unittest_lru_SOURCES = test/common/test_lru.cc
 unittest_lru_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_lru_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
@@ -466,26 +256,11 @@ unittest_gather_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_gather_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 check_PROGRAMS += unittest_gather
 
-unittest_run_cmd_SOURCES = test/run_cmd.cc
-unittest_run_cmd_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_run_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_run_cmd
-
 unittest_signals_SOURCES = test/signals.cc
 unittest_signals_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_signals_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 check_PROGRAMS += unittest_signals
 
-unittest_simple_spin_SOURCES = test/simple_spin.cc
-unittest_simple_spin_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_simple_spin_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_simple_spin
-
-unittest_librados_SOURCES = test/librados/librados.cc
-unittest_librados_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_librados_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_librados
-
 unittest_bufferlist_SOURCES = test/bufferlist.cc
 unittest_bufferlist_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL) 
 unittest_bufferlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -541,16 +316,6 @@ unittest_escape_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_escape_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 check_PROGRAMS += unittest_escape
 
-unittest_chain_xattr_SOURCES = test/objectstore/chain_xattr.cc
-unittest_chain_xattr_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_chain_xattr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_chain_xattr
-
-unittest_flatindex_SOURCES = test/os/TestFlatIndex.cc
-unittest_flatindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_flatindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_flatindex
-
 unittest_strtol_SOURCES = test/strtol.cc
 unittest_strtol_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_strtol_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -589,60 +354,11 @@ unittest_formatter_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_formatter_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 check_PROGRAMS += unittest_formatter
 
-unittest_libcephfs_config_SOURCES = test/libcephfs_config.cc
-unittest_libcephfs_config_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_libcephfs_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_libcephfs_config
-
-unittest_lfnindex_SOURCES = test/os/TestLFNIndex.cc
-unittest_lfnindex_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_lfnindex_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_lfnindex
-
-unittest_librados_config_SOURCES = test/librados/librados_config.cc
-unittest_librados_config_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-unittest_librados_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_librados_config
-
-#unittest_librgw_link_SOURCES = test/librgw_link.cc
-#unittest_librgw_link_LDFLAGS = $(PTHREAD_CFLAGS) ${AM_LDFLAGS}
-#unittest_librgw_link_LDADD = $(LIBRGW) ${UNITTEST_LDADD}
-#unittest_librgw_link_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-#check_PROGRAMS += unittest_librgw_link
-
 unittest_daemon_config_SOURCES = test/daemon_config.cc
 unittest_daemon_config_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_daemon_config_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 check_PROGRAMS += unittest_daemon_config
 
-unittest_osd_osdcap_SOURCES = test/osd/osdcap.cc 
-unittest_osd_osdcap_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_osd_osdcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_osd_osdcap
-
-unittest_mds_authcap_SOURCES = test/mds/TestMDSAuthCaps.cc 
-unittest_mds_authcap_LDADD = $(LIBMDS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mds_authcap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_mds_authcap
-
-unittest_mon_moncap_SOURCES = test/mon/moncap.cc
-unittest_mon_moncap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mon_moncap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_mon_moncap
-
-unittest_mon_pgmap_SOURCES = test/mon/PGMap.cc
-unittest_mon_pgmap_LDADD = $(LIBMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-unittest_mon_pgmap_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_mon_pgmap
-
-#if WITH_RADOSGW
-#unittest_librgw_SOURCES = test/librgw.cc
-#unittest_librgw_LDFLAGS = -lrt $(PTHREAD_CFLAGS) -lcurl ${AM_LDFLAGS}
-#unittest_librgw_LDADD =  librgw.la $(LIBRADOS) ${UNITTEST_LDADD} -lexpat $(CEPH_GLOBAL)
-#unittest_librgw_CXXFLAGS = ${CRYPTO_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
-#check_PROGRAMS += unittest_librgw
-#endif # WITH_RADOSGW
-
 unittest_ipaddr_SOURCES = test/test_ipaddr.cc
 unittest_ipaddr_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_ipaddr_CXXFLAGS = $(UNITTEST_CXXFLAGS)
@@ -657,16 +373,6 @@ unittest_on_exit_SOURCES = test/on_exit.cc
 unittest_on_exit_LDADD = $(PTHREAD_LIBS)
 check_PROGRAMS += unittest_on_exit
 
-unittest_rbd_replay_SOURCES = test/test_rbd_replay.cc
-unittest_rbd_replay_LDADD = $(LIBRBD) \
-	$(LIBRADOS) \
-	$(CEPH_GLOBAL) \
-	librbd_replay.la \
-	librbd_replay_ios.la \
-	$(UNITTEST_LDADD)
-unittest_rbd_replay_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-check_PROGRAMS += unittest_rbd_replay
-
 unittest_readahead_SOURCES = test/common/Readahead.cc
 unittest_readahead_LDADD = $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 unittest_readahead_CXXFLAGS = $(UNITTEST_CXXFLAGS) -O2
@@ -684,420 +390,15 @@ check_PROGRAMS += unittest_bit_vector
 
 check_SCRIPTS += test/pybind/test_ceph_argparse.py
 
-if WITH_RADOSGW
-ceph_test_cors_SOURCES = test/test_cors.cc
-ceph_test_cors_LDADD = \
-	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
-	$(UNITTEST_LDADD) \
-	-lcurl -luuid -lexpat
-ceph_test_cors_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cors
-
-ceph_test_rgw_manifest_SOURCES = test/rgw/test_rgw_manifest.cc
-ceph_test_rgw_manifest_LDADD = \
-	$(LIBRADOS) $(LIBRGW) $(LIBRGW_DEPS) $(CEPH_GLOBAL) \
-	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
-	-lcurl -luuid -lexpat
-
-ceph_test_rgw_manifest_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rgw_manifest
-
-ceph_test_cls_rgw_meta_SOURCES = test/test_rgw_admin_meta.cc
-ceph_test_cls_rgw_meta_LDADD = \
-	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
-	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
-	-lcurl -luuid -lexpat \
-	libcls_version_client.a libcls_log_client.a \
-	libcls_statelog_client.a libcls_refcount_client.la \
-	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-ceph_test_cls_rgw_meta_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_rgw_meta
-
-ceph_test_cls_rgw_log_SOURCES = test/test_rgw_admin_log.cc
-ceph_test_cls_rgw_log_LDADD = \
-	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
-	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
-	-lcurl -luuid -lexpat \
-	libcls_version_client.a libcls_log_client.a \
-	libcls_statelog_client.a libcls_refcount_client.la \
-	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-ceph_test_cls_rgw_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_rgw_log
-
-ceph_test_cls_rgw_opstate_SOURCES = test/test_rgw_admin_opstate.cc
-ceph_test_cls_rgw_opstate_LDADD = \
-	$(LIBRADOS) $(LIBRGW) $(CEPH_GLOBAL) \
-	$(UNITTEST_LDADD) $(CRYPTO_LIBS) \
-	-lcurl -luuid -lexpat \
-	libcls_version_client.a libcls_log_client.a \
-	libcls_statelog_client.a libcls_refcount_client.la \
-	libcls_rgw_client.la libcls_user_client.a libcls_lock_client.la
-ceph_test_cls_rgw_opstate_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_rgw_opstate
-endif # WITH_RADOSGW
-
-libradostest_la_SOURCES = \
-	test/librados/test.cc \
-	test/librados/TestCase.cc
-noinst_LTLIBRARIES += libradostest.la
-libradostest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-RADOS_TEST_LDADD = libradostest.la
-
-libradosstripertest_la_SOURCES = test/libradosstriper/TestCase.cc
-noinst_LTLIBRARIES += libradosstripertest.la
-libradosstripertest_la_LIBADD = $(RADOS_TEST_LDADD)
-libradosstripertest_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-RADOS_STRIPER_TEST_LDADD = libradosstripertest.la
-
-ceph_multi_stress_watch_SOURCES = test/multi_stress_watch.cc
-ceph_multi_stress_watch_LDADD = $(LIBRADOS) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-bin_DEBUGPROGRAMS += ceph_multi_stress_watch
-
-librados_test_stub_la_SOURCES = \
-	test/librados_test_stub/LibradosTestStub.cc \
-	test/librados_test_stub/TestClassHandler.cc \
-	test/librados_test_stub/TestIoCtxImpl.cc \
-	test/librados_test_stub/TestMemIoCtxImpl.cc \
-	test/librados_test_stub/TestMemRadosClient.cc \
-	test/librados_test_stub/TestRadosClient.cc \
-	test/librados_test_stub/TestWatchNotify.cc
-noinst_HEADERS += \
-	test/librados_test_stub/TestClassHandler.h \
-	test/librados_test_stub/TestRadosClient.h \
-	test/librados_test_stub/TestMemRadosClient.h \
-	test/librados_test_stub/TestWatchNotify.h \
-	test/librados_test_stub/TestMemIoCtxImpl.h \
-	test/librados_test_stub/TestIoCtxImpl.h
-noinst_LTLIBRARIES += librados_test_stub.la
-
-librbd_test_la_SOURCES = \
-	test/librbd/test_fixture.cc \
-	test/librbd/test_librbd.cc \
-	test/librbd/test_ImageWatcher.cc \
-	test/librbd/test_internal.cc \
-	test/librbd/test_main.cc
-librbd_test_la_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-noinst_LTLIBRARIES += librbd_test.la
-
-unittest_librbd_SOURCES =
-nodist_EXTRA_unittest_librbd_SOURCES = dummy.cc
-unittest_librbd_LDADD = \
-	librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \
-	libcls_rbd_client.la libcls_lock_client.la \
-	librados_test_stub.la librados_internal.la \
-	$(LIBOSDC) $(UNITTEST_LDADD) \
-	$(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-check_PROGRAMS += unittest_librbd
-
-ceph_test_librbd_SOURCES =
-nodist_EXTRA_ceph_test_librbd_SOURCES = dummy.cc
-ceph_test_librbd_LDADD = \
-	librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \
-        libcls_rbd_client.la libcls_lock_client.la \
-	librados_api.la $(LIBRADOS_DEPS) $(UNITTEST_LDADD) \
-	$(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_librbd
-
-if WITH_LTTNG
-unittest_librbd_LDADD += $(LIBRBD_TP)
-ceph_test_librbd_LDADD += $(LIBRBD_TP)
-endif
-
-if LINUX
-# Force use of C++ linker with dummy.cc - LIBKRBD is a C++ library
-ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.c common/dummy.cc
-ceph_test_librbd_fsx_LDADD = \
-	$(LIBKRBD) $(LIBRBD) $(LIBRADOS) \
-	$(CRYPTO_LIBS) $(PTHREAD_LIBS) -luuid
-ceph_test_librbd_fsx_CFLAGS = ${AM_CFLAGS}
-bin_DEBUGPROGRAMS += ceph_test_librbd_fsx
-endif
-
-ceph_test_cls_rbd_SOURCES = test/cls_rbd/test_cls_rbd.cc
-ceph_test_cls_rbd_LDADD = \
-	$(LIBRADOS) libcls_rbd_client.la libcls_lock_client.la \
-	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_rbd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_rbd
-
-ceph_test_cls_refcount_SOURCES = test/cls_refcount/test_cls_refcount.cc
-ceph_test_cls_refcount_LDADD = $(LIBRADOS) libcls_refcount_client.la $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_refcount_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_refcount
-
-ceph_test_cls_version_SOURCES = test/cls_version/test_cls_version.cc
-ceph_test_cls_version_LDADD = $(LIBRADOS) libcls_version_client.a $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_version_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_version
-
-ceph_test_cls_log_SOURCES = test/cls_log/test_cls_log.cc
-ceph_test_cls_log_LDADD = $(LIBRADOS) libcls_log_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_log
-
-ceph_test_cls_statelog_SOURCES = test/cls_statelog/test_cls_statelog.cc
-ceph_test_cls_statelog_LDADD = $(LIBRADOS) libcls_statelog_client.a $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_statelog_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_statelog
-
-ceph_test_cls_replica_log_SOURCES = test/cls_replica_log/test_cls_replica_log.cc
-ceph_test_cls_replica_log_LDADD = \
-	$(LIBRADOS) libcls_replica_log_client.a \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_replica_log_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_replica_log
-
-ceph_test_cls_lock_SOURCES = test/cls_lock/test_cls_lock.cc
-ceph_test_cls_lock_LDADD = \
-	$(LIBRADOS) libcls_lock_client.la \
-	$(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_cls_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_lock
-
-ceph_test_cls_hello_SOURCES = test/cls_hello/test_cls_hello.cc
-ceph_test_cls_hello_LDADD = \
-	$(LIBRADOS) $(CRYPTO_LIBS) \
-	$(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_hello_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_hello
-
-if WITH_RADOSGW
-ceph_test_cls_rgw_SOURCES = test/cls_rgw/test_cls_rgw.cc
-ceph_test_cls_rgw_LDADD = \
-	$(LIBRADOS) $(CRYPTO_LIBS) libcls_rgw_client.la \
-	$(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_cls_rgw_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_cls_rgw
-endif # WITH_RADOSGW
-
-ceph_test_mon_workloadgen_SOURCES = test/mon/test_mon_workloadgen.cc
-ceph_test_mon_workloadgen_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_mon_workloadgen
-
-ceph_test_mon_msg_SOURCES = test/mon/test-mon-msg.cc
-ceph_test_mon_msg_LDADD = $(LIBOS) $(LIBOSDC) $(CEPH_GLOBAL) $(UNITTEST_LDADD)
-ceph_test_mon_msg_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_mon_msg
-
-ceph_test_rados_api_cmd_SOURCES = test/librados/cmd.cc
-ceph_test_rados_api_cmd_LDADD = \
-	$(LIBCOMMON) $(LIBRADOS) $(CRYPTO_LIBS) \
-	$(UNITTEST_LDADD) $(RADOS_TEST_LDADD) -luuid
-ceph_test_rados_api_cmd_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_cmd
-
-ceph_test_rados_api_io_SOURCES = test/librados/io.cc
-ceph_test_rados_api_io_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_io
-
-ceph_test_rados_api_c_write_operations_SOURCES = \
-	test/librados/c_write_operations.cc
-ceph_test_rados_api_c_write_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_c_write_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_c_write_operations
-
-ceph_test_rados_api_c_read_operations_SOURCES = \
-	test/librados/c_read_operations.cc
-ceph_test_rados_api_c_read_operations_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_c_read_operations_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_c_read_operations
-
-ceph_test_rados_api_aio_SOURCES = test/librados/aio.cc
-ceph_test_rados_api_aio_LDADD = \
-	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_aio
-
-ceph_test_rados_api_list_SOURCES = test/librados/list.cc
-ceph_test_rados_api_list_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_list_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_list
-
-ceph_test_rados_api_nlist_SOURCES = test/librados/nlist.cc
-ceph_test_rados_api_nlist_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_nlist_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_nlist
-
-ceph_test_rados_api_pool_SOURCES = test/librados/pool.cc
-ceph_test_rados_api_pool_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_pool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_pool
-
-ceph_test_rados_api_stat_SOURCES = test/librados/stat.cc
-ceph_test_rados_api_stat_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_stat_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_stat
-
-ceph_test_rados_api_watch_notify_SOURCES = test/librados/watch_notify.cc
-ceph_test_rados_api_watch_notify_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_watch_notify_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_watch_notify
-
-ceph_test_rados_api_snapshots_SOURCES = test/librados/snapshots.cc
-ceph_test_rados_api_snapshots_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_snapshots_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_snapshots
-
-ceph_test_rados_api_cls_SOURCES = test/librados/cls.cc
-ceph_test_rados_api_cls_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_cls_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_cls
-
-ceph_test_rados_api_misc_SOURCES = test/librados/misc.cc
-ceph_test_rados_api_misc_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_misc_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_misc
-
-ceph_test_rados_api_tier_SOURCES = \
-	test/librados/tier.cc \
-	osd/HitSet.cc
-ceph_test_rados_api_tier_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_tier_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_tier
-
-ceph_test_rados_api_lock_SOURCES = test/librados/lock.cc
-ceph_test_rados_api_lock_LDADD = $(LIBRADOS) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_rados_api_lock_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_api_lock
-
-ceph_test_rados_striper_api_io_SOURCES = test/libradosstriper/io.cc
-ceph_test_rados_striper_api_io_LDADD = \
-	$(LIBRADOS) $(LIBRADOSSTRIPER) $(LIBCOMMON) \
-	$(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-ceph_test_rados_striper_api_io_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_io
-
-ceph_test_rados_striper_api_aio_SOURCES = test/libradosstriper/aio.cc
-ceph_test_rados_striper_api_aio_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-ceph_test_rados_striper_api_aio_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_aio
-
-ceph_test_rados_striper_api_striping_SOURCES = test/libradosstriper/striping.cc
-ceph_test_rados_striper_api_striping_LDADD = $(LIBRADOS) $(LIBRADOSSTRIPER) $(UNITTEST_LDADD) $(RADOS_STRIPER_TEST_LDADD)
-ceph_test_rados_striper_api_striping_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_rados_striper_api_striping
-
-ceph_test_libcephfs_SOURCES = \
-	test/libcephfs/test.cc \
-	test/libcephfs/readdir_r_cb.cc \
-	test/libcephfs/caps.cc \
-	test/libcephfs/multiclient.cc
-ceph_test_libcephfs_LDADD = $(LIBCEPHFS) $(UNITTEST_LDADD)
-ceph_test_libcephfs_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_libcephfs
-
-ceph_perf_objectstore_SOURCES = test/objectstore/ObjectStoreTransactionBenchmark.cc
-ceph_perf_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_perf_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_perf_objectstore
-
-if LINUX
-ceph_test_objectstore_SOURCES = test/objectstore/store_test.cc
-ceph_test_objectstore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_objectstore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_objectstore
-
-ceph_test_filestore_SOURCES = test/filestore/TestFileStore.cc
-ceph_test_filestore_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_filestore_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_filestore
-endif
-
-ceph_test_objectstore_workloadgen_SOURCES = \
-	test/objectstore/workload_generator.cc \
-	test/objectstore/TestObjectStoreState.cc
-ceph_test_objectstore_workloadgen_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_objectstore_workloadgen
-
-ceph_test_filestore_idempotent_SOURCES = \
-	test/objectstore/test_idempotent.cc \
-	test/objectstore/FileStoreTracker.cc \
-	test/common/ObjectContents.cc
-ceph_test_filestore_idempotent_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_filestore_idempotent
-
-ceph_test_filestore_idempotent_sequence_SOURCES = \
-	test/objectstore/test_idempotent_sequence.cc \
-	test/objectstore/DeterministicOpSequence.cc \
-	test/objectstore/TestObjectStoreState.cc \
-	test/objectstore/FileStoreDiff.cc
-ceph_test_filestore_idempotent_sequence_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_test_filestore_idempotent_sequence
-
-ceph_xattr_bench_SOURCES = test/xattr_bench.cc
-ceph_xattr_bench_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_xattr_bench_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_xattr_bench
-
-ceph_test_filejournal_SOURCES = test/test_filejournal.cc
-ceph_test_filejournal_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_filejournal_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_filejournal
-
-ceph_test_stress_watch_SOURCES = test/test_stress_watch.cc
-ceph_test_stress_watch_LDADD = \
-	$(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD)
-ceph_test_stress_watch_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_stress_watch
-
 ceph_test_objectcacher_stress_SOURCES = \
 	test/osdc/object_cacher_stress.cc \
 	test/osdc/FakeWriteback.cc
 ceph_test_objectcacher_stress_LDADD = $(LIBOSDC) $(CEPH_GLOBAL)
 bin_DEBUGPROGRAMS += ceph_test_objectcacher_stress
 
-ceph_test_snap_mapper_SOURCES = test/test_snap_mapper.cc
-ceph_test_snap_mapper_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_snap_mapper_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_snap_mapper
-
-ceph_test_object_map_SOURCES = \
-	test/ObjectMap/test_object_map.cc \
-	test/ObjectMap/KeyValueDBMemory.cc
-ceph_test_object_map_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_object_map_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_object_map
-
-ceph_test_keyvaluedb_atomicity_SOURCES = test/ObjectMap/test_keyvaluedb_atomicity.cc
-ceph_test_keyvaluedb_atomicity_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_keyvaluedb_atomicity_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_keyvaluedb_atomicity
-
-ceph_test_keyvaluedb_iterators_SOURCES = \
-	test/ObjectMap/test_keyvaluedb_iterators.cc \
-	test/ObjectMap/KeyValueDBMemory.cc
-ceph_test_keyvaluedb_iterators_LDADD = $(LIBOS) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
-ceph_test_keyvaluedb_iterators_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph_test_keyvaluedb_iterators
-
 ceph_test_cfuse_cache_invalidate_SOURCES = test/test_cfuse_cache_invalidate.cc
 bin_DEBUGPROGRAMS += ceph_test_cfuse_cache_invalidate
 
-ceph_test_c_headers_SOURCES = test/test_c_headers.c
-ceph_test_c_headers_LDADD = $(LIBRADOS) $(LIBCEPHFS)
-ceph_test_c_headers_CFLAGS = $(AM_CFLAGS) \
-	-Werror \
-	-Wstrict-prototypes \
-	-Wredundant-decls \
-	-Wall \
-	-Wundef \
-	-Wwrite-strings \
-	-Wmissing-prototypes \
-	-Wendif-labels \
-	-Wmissing-include-dirs \
-	-Wempty-body \
-	-Wnested-externs \
-	-Wformat-security \
-	-Wformat-y2k \
-	-Winit-self \
-	-Wignored-qualifiers \
-	-Wold-style-declaration \
-	-Wold-style-definition \
-	-Wtype-limits
-bin_DEBUGPROGRAMS += ceph_test_c_headers
-
 ceph_test_get_blkdev_size_SOURCES = test/test_get_blkdev_size.cc
 ceph_test_get_blkdev_size_LDADD = $(LIBCOMMON)
 bin_DEBUGPROGRAMS += ceph_test_get_blkdev_size
@@ -1140,4 +441,3 @@ noinst_HEADERS += \
 	test/system/systest_runnable.h \
 	test/system/systest_settings.h \
 	test/unit.h
-
diff --git a/src/test/centos-6/ceph.spec.in b/src/test/centos-6/ceph.spec.in
index fdbd2da..567586c 100644
--- a/src/test/centos-6/ceph.spec.in
+++ b/src/test/centos-6/ceph.spec.in
@@ -315,9 +315,7 @@ RESTful bencher that can be used to benchmark radosgw performance.
 Summary:	Ceph benchmarks and test tools
 Group:		System Environment/Libraries
 License:	LGPL-2.0
-Requires:	librados2 = %{epoch}:%{version}-%{release}
-Requires:	librbd1 = %{epoch}:%{version}-%{release}
-Requires:	libcephfs1 = %{epoch}:%{version}-%{release}
+Requires:	ceph-common
 %if (0%{?fedora} >= 20 || 0%{?rhel} == 6)
 BuildRequires:	lttng-ust-devel
 BuildRequires:	libbabeltrace-devel
diff --git a/src/test/centos-6/install-deps.sh b/src/test/centos-6/install-deps.sh
index cb050d6..129b238 100755
--- a/src/test/centos-6/install-deps.sh
+++ b/src/test/centos-6/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/src/test/centos-7/ceph.spec.in b/src/test/centos-7/ceph.spec.in
index fdbd2da..567586c 100644
--- a/src/test/centos-7/ceph.spec.in
+++ b/src/test/centos-7/ceph.spec.in
@@ -315,9 +315,7 @@ RESTful bencher that can be used to benchmark radosgw performance.
 Summary:	Ceph benchmarks and test tools
 Group:		System Environment/Libraries
 License:	LGPL-2.0
-Requires:	librados2 = %{epoch}:%{version}-%{release}
-Requires:	librbd1 = %{epoch}:%{version}-%{release}
-Requires:	libcephfs1 = %{epoch}:%{version}-%{release}
+Requires:	ceph-common
 %if (0%{?fedora} >= 20 || 0%{?rhel} == 6)
 BuildRequires:	lttng-ust-devel
 BuildRequires:	libbabeltrace-devel
diff --git a/src/test/centos-7/install-deps.sh b/src/test/centos-7/install-deps.sh
index cb050d6..129b238 100755
--- a/src/test/centos-7/install-deps.sh
+++ b/src/test/centos-7/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/src/test/cli/crushtool/straw2.t b/src/test/cli/crushtool/straw2.t
new file mode 100644
index 0000000..8681338
--- /dev/null
+++ b/src/test/cli/crushtool/straw2.t
@@ -0,0 +1,4 @@
+  $ crushtool -c $TESTDIR/straw2.txt -o straw2
+  $ crushtool -d straw2 -o straw2.txt.new
+  $ diff -b $TESTDIR/straw2.txt straw2.txt.new
+  $ rm straw2 straw2.txt.new
diff --git a/src/test/cli/crushtool/straw2.txt b/src/test/cli/crushtool/straw2.txt
new file mode 100644
index 0000000..0928aa5
--- /dev/null
+++ b/src/test/cli/crushtool/straw2.txt
@@ -0,0 +1,43 @@
+# begin crush map
+tunable choose_local_tries 0
+tunable choose_local_fallback_tries 0
+tunable choose_total_tries 50
+tunable chooseleaf_descend_once 1
+tunable straw_calc_version 1
+
+# devices
+device 0 device0
+
+# types
+type 0 device
+type 1 host
+type 2 default
+
+# buckets
+host host0 {
+	id -1		# do not change unnecessarily
+	# weight 1.000
+	alg straw2
+	hash 0	# rjenkins1
+	item device0 weight 1.000
+}
+default default {
+	id -2		# do not change unnecessarily
+	# weight 1.000
+	alg straw2
+	hash 0	# rjenkins1
+	item host0 weight 1.000
+}
+
+# rules
+rule replicated_ruleset {
+	ruleset 0
+	type replicated
+	min_size 1
+	max_size 10
+	step take default
+	step chooseleaf firstn 0 type host
+	step emit
+}
+
+# end crush map
diff --git a/src/test/cli/rbd/help.t b/src/test/cli/rbd/help.t
index d6ed206..0263781 100644
--- a/src/test/cli/rbd/help.t
+++ b/src/test/cli/rbd/help.t
@@ -79,6 +79,8 @@
                                        +4 exclusive lock, +8 object map
     --image-shared                     image will be used concurrently (disables
                                        RBD exclusive lock and dependent features)
+    --stripe-unit <size-in-bytes>      size (in bytes) of a block of data
+    --stripe-count <num>               number of consecutive objects in a stripe
     --id <username>                    rados user (without 'client.'prefix) to
                                        authenticate as
     --keyfile <path>                   file containing secret key for use with cephx
diff --git a/src/test/cls_rbd/test_cls_rbd.cc b/src/test/cls_rbd/test_cls_rbd.cc
index dbb9230..6e91001 100644
--- a/src/test/cls_rbd/test_cls_rbd.cc
+++ b/src/test/cls_rbd/test_cls_rbd.cc
@@ -1044,7 +1044,7 @@ TEST_F(TestClsRbd, flags)
   ASSERT_EQ(0U, flags);
 
   librados::ObjectWriteOperation op1;
-  set_flags(&op1, 3, 2);
+  set_flags(&op1, CEPH_NOSNAP, 3, 2);
   ASSERT_EQ(0, ioctx.operate(oid, &op1));
   ASSERT_EQ(0, get_flags(&ioctx, oid, &flags, snap_ids, &snap_flags));
   ASSERT_EQ(2U, flags);
@@ -1055,12 +1055,12 @@ TEST_F(TestClsRbd, flags)
   ASSERT_EQ(0, snapshot_add(&ioctx, oid, snap_id, "snap"));
 
   librados::ObjectWriteOperation op2;
-  set_flags(&op2, 31, 4);
+  set_flags(&op2, snap_id, 31, 4);
   ASSERT_EQ(0, ioctx.operate(oid, &op2));
   ASSERT_EQ(0, get_flags(&ioctx, oid, &flags, snap_ids, &snap_flags));
-  ASSERT_EQ(6U, flags);
+  ASSERT_EQ(2U, flags);
   ASSERT_EQ(snap_ids.size(), snap_flags.size());
-  ASSERT_EQ(2U, snap_flags[0]);
+  ASSERT_EQ(6U, snap_flags[0]);
 
   ioctx.close();
 }
diff --git a/src/test/ubuntu-12.04/Dockerfile.in b/src/test/debian-jessie/Dockerfile.in
similarity index 92%
copy from src/test/ubuntu-12.04/Dockerfile.in
copy to src/test/debian-jessie/Dockerfile.in
index fddf929..c9287bd 100644
--- a/src/test/ubuntu-12.04/Dockerfile.in
+++ b/src/test/debian-jessie/Dockerfile.in
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2014, 2015 Red Hat <contact at redhat.com>
+# Copyright (C) 2015 Red Hat <contact at redhat.com>
 #
 # Author: Loic Dachary <loic at dachary.org>
 #
@@ -18,7 +18,7 @@
 # user_id=$(id -u)
 # os_version= the desired REPOSITORY TAG
 #
-FROM ubuntu:%%os_version%%
+FROM debian:%%os_version%%
 
 COPY install-deps.sh /root/
 RUN mkdir /root/debian
diff --git a/install-deps.sh b/src/test/debian-jessie/install-deps.sh
similarity index 91%
copy from install-deps.sh
copy to src/test/debian-jessie/install-deps.sh
index cb050d6..129b238 100755
--- a/install-deps.sh
+++ b/src/test/debian-jessie/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h
index bcc0347..21eefe7 100644
--- a/src/test/encoding/types.h
+++ b/src/test/encoding/types.h
@@ -4,6 +4,9 @@ TYPE(CompatSet)
 #include "include/filepath.h"
 TYPE(filepath)
 
+#include "include/util.h"
+TYPE(ceph_data_stats)
+
 #include "common/bit_vector.hpp"
 TYPE(BitVector<2>)
 
@@ -129,6 +132,9 @@ TYPE_FEATUREFUL(MonMap)
 #include "mon/MonCap.h"
 TYPE(MonCap)
 
+#include "mon/mon_types.h"
+TYPE(LevelDBStoreStats)
+
 #include "os/DBObjectMap.h"
 TYPE(DBObjectMap::_Header)
 TYPE(DBObjectMap::State)
diff --git a/src/test/erasure-code/Makefile.am b/src/test/erasure-code/Makefile.am
index 62e782f..1a25630 100644
--- a/src/test/erasure-code/Makefile.am
+++ b/src/test/erasure-code/Makefile.am
@@ -1,3 +1,6 @@
+if ENABLE_SERVER
+if WITH_OSD
+
 check_SCRIPTS += \
 	test/erasure-code/test-erasure-code.sh
 
@@ -232,3 +235,6 @@ noinst_HEADERS += test/erasure-code/ErasureCodeExample.h
 unittest_erasure_code_example_CXXFLAGS = $(UNITTEST_CXXFLAGS)
 unittest_erasure_code_example_LDADD = $(LIBOSD) $(LIBCOMMON) $(UNITTEST_LDADD) $(CEPH_GLOBAL)
 check_PROGRAMS += unittest_erasure_code_example
+
+endif # WITH_OSD
+endif # ENABLE_SERVER
diff --git a/src/test/erasure-code/TestErasureCodeShec.cc b/src/test/erasure-code/TestErasureCodeShec.cc
index 8d3a5f6..25325f6 100644
--- a/src/test/erasure-code/TestErasureCodeShec.cc
+++ b/src/test/erasure-code/TestErasureCodeShec.cc
@@ -785,9 +785,9 @@ TEST(ErasureCodeShec, init_29)
   EXPECT_TRUE(shec->matrix != NULL);
   EXPECT_EQ(0, r);
   //k,m,c are default values
-  EXPECT_EQ(2u, shec->k);
-  EXPECT_EQ(1u, shec->m);
-  EXPECT_EQ(1u, shec->c);
+  EXPECT_EQ(4u, shec->k);
+  EXPECT_EQ(3u, shec->m);
+  EXPECT_EQ(2u, shec->c);
 
   delete shec;
   delete parameters;
diff --git a/src/test/librados/aio.cc b/src/test/librados/aio.cc
index 37b3094..b9183aa 100644
--- a/src/test/librados/aio.cc
+++ b/src/test/librados/aio.cc
@@ -1491,6 +1491,53 @@ TEST(LibRadosAio, OmapPP) {
     ASSERT_EQ(set_got.size(), (unsigned)0);
   }
 
+  // omap_clear clears header *and* keys
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0, 0));
+    ObjectWriteOperation op;
+    bufferlist bl;
+    bl.append("some data");
+    map<string,bufferlist> to_set;
+    to_set["foo"] = bl;
+    to_set["foo2"] = bl;
+    to_set["qfoo3"] = bl;
+    op.omap_set(to_set);
+    op.omap_set_header(bl);
+    ioctx.aio_operate("foo3", my_completion.get(), &op);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+  }
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0, 0));
+    ObjectWriteOperation op;
+    op.omap_clear();
+    ioctx.aio_operate("foo3", my_completion.get(), &op);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+  }
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0, 0));
+    ObjectReadOperation op;
+    set<string> set_got;
+    bufferlist hdr;
+    op.omap_get_keys("", -1, &set_got, 0);
+    op.omap_get_header(&hdr, NULL);
+    ioctx.aio_operate("foo3", my_completion.get(), &op, 0);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+    ASSERT_EQ(set_got.size(), (unsigned)0);
+    ASSERT_EQ(hdr.length(), 0u);
+  }
+
   ioctx.remove("test_obj");
   destroy_one_pool_pp(pool_name, cluster);
 }
diff --git a/src/test/librados/tier.cc b/src/test/librados/tier.cc
index f7d6bf0..208380b 100644
--- a/src/test/librados/tier.cc
+++ b/src/test/librados/tier.cc
@@ -670,6 +670,51 @@ TEST_F(LibRadosTwoPoolsPP, Whiteout) {
   }
 }
 
+TEST_F(LibRadosTwoPoolsPP, WhiteoutDeleteCreate) {
+  // configure cache
+  bufferlist inbl;
+  ASSERT_EQ(0, cluster.mon_command(
+    "{\"prefix\": \"osd tier add\", \"pool\": \"" + pool_name +
+    "\", \"tierpool\": \"" + cache_pool_name +
+    "\", \"force_nonempty\": \"--force-nonempty\" }",
+    inbl, NULL, NULL));
+  ASSERT_EQ(0, cluster.mon_command(
+    "{\"prefix\": \"osd tier set-overlay\", \"pool\": \"" + pool_name +
+    "\", \"overlaypool\": \"" + cache_pool_name + "\"}",
+    inbl, NULL, NULL));
+  ASSERT_EQ(0, cluster.mon_command(
+    "{\"prefix\": \"osd tier cache-mode\", \"pool\": \"" + cache_pool_name +
+    "\", \"mode\": \"writeback\"}",
+    inbl, NULL, NULL));
+
+  // wait for maps to settle
+  cluster.wait_for_latest_osdmap();
+
+  // create an object
+  {
+    bufferlist bl;
+    bl.append("foo");
+    ASSERT_EQ(0, ioctx.write_full("foo", bl));
+  }
+
+  // do delete + create operation
+  {
+    ObjectWriteOperation op;
+    op.remove();
+    bufferlist bl;
+    bl.append("bar");
+    op.write_full(bl);
+    ASSERT_EQ(0, ioctx.operate("foo", &op));
+  }
+
+  // verify it still "exists" (w/ new content)
+  {
+    bufferlist bl;
+    ASSERT_EQ(1, ioctx.read("foo", bl, 1, 0));
+    ASSERT_EQ('b', bl[0]);
+  }
+}
+
 TEST_F(LibRadosTwoPoolsPP, Evict) {
   // create object
   {
diff --git a/src/test/librbd/test_internal.cc b/src/test/librbd/test_internal.cc
index ddd06af..a6d1bcf 100644
--- a/src/test/librbd/test_internal.cc
+++ b/src/test/librbd/test_internal.cc
@@ -319,3 +319,45 @@ TEST_F(TestInternal, CancelAsyncResize) {
     ASSERT_EQ(0, r);
   }
 }
+
+TEST_F(TestInternal, MultipleResize) {
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  {
+    RWLock::WLocker l(ictx->owner_lock);
+    if (ictx->image_watcher->is_lock_supported()) {
+      ASSERT_EQ(0, ictx->image_watcher->try_lock());
+      ASSERT_TRUE(ictx->image_watcher->is_lock_owner());
+    }
+  }
+
+  uint64_t size;
+  ASSERT_EQ(0, librbd::get_size(ictx, &size));
+  uint64_t original_size = size;
+
+  std::vector<C_SaferCond*> contexts;
+
+  uint32_t attempts = 0;
+  librbd::NoOpProgressContext prog_ctx;
+  while (size > 0) {
+    uint64_t new_size = original_size;
+    if (attempts++ % 2 == 0) {
+      size -= MIN(size, 1<<18);
+      new_size = size;
+    }
+
+    RWLock::RLocker l(ictx->owner_lock);
+    contexts.push_back(new C_SaferCond());
+    ASSERT_EQ(0, librbd::async_resize(ictx, contexts.back(), new_size,
+                                      prog_ctx));
+  }
+
+  for (uint32_t i = 0; i < contexts.size(); ++i) {
+    ASSERT_EQ(0, contexts[i]->wait());
+    delete contexts[i];
+  }
+
+  ASSERT_EQ(0, librbd::get_size(ictx, &size));
+  ASSERT_EQ(0U, size);
+}
diff --git a/src/test/messenger/Makefile.am b/src/test/messenger/Makefile.am
index 1449cbc..9fe2416 100644
--- a/src/test/messenger/Makefile.am
+++ b/src/test/messenger/Makefile.am
@@ -1,3 +1,4 @@
+if ENABLE_SERVER
 if ENABLE_XIO
 
 noinst_HEADERS += \
@@ -71,4 +72,5 @@ noinst_PROGRAMS += \
 	xio_server \
 	xio_client
 
-endif
+endif # ENABLE_XIO
+endif # ENABLE_SERVER
diff --git a/src/test/mon/osd-erasure-code-profile.sh b/src/test/mon/osd-erasure-code-profile.sh
index b16b664..6cac118 100755
--- a/src/test/mon/osd-erasure-code-profile.sh
+++ b/src/test/mon/osd-erasure-code-profile.sh
@@ -120,6 +120,40 @@ function SHARE_MON_TEST_experimental_shec() {
     ! ./ceph osd erasure-code-profile ls | grep $profile || return 1
 }
 
+function SHARE_MON_TEST_set_idempotent() {
+    local dir=$1
+    local id=$2
+
+    #
+    # The default profile is set using a code path different from 
+    # ceph osd erasure-code-profile set: verify that it is idempotent,
+    # as if it was using the same code path.
+    #
+    ./ceph osd erasure-code-profile set default k=2 m=1 2>&1 || return 1
+    local profile
+    #
+    # Because plugin=jerasure is the default, it uses a slightly
+    # different code path where defaults (m=1 for instance) are added
+    # implicitly.
+    #
+    profile=profileidempotent1
+    ! ./ceph osd erasure-code-profile ls | grep $profile || return 1
+    ./ceph osd erasure-code-profile set $profile k=2 ruleset-failure-domain=osd 2>&1 || return 1
+    ./ceph osd erasure-code-profile ls | grep $profile || return 1
+    ./ceph osd erasure-code-profile set $profile k=2 ruleset-failure-domain=osd 2>&1 || return 1
+    ./ceph osd erasure-code-profile rm $profile # cleanup
+
+    #
+    # In the general case the profile is exactly what is on
+    #
+    profile=profileidempotent2
+    ! ./ceph osd erasure-code-profile ls | grep $profile || return 1
+    ./ceph osd erasure-code-profile set $profile plugin=lrc k=4 m=2 l=3 ruleset-failure-domain=osd 2>&1 || return 1
+    ./ceph osd erasure-code-profile ls | grep $profile || return 1
+    ./ceph osd erasure-code-profile set $profile plugin=lrc k=4 m=2 l=3 ruleset-failure-domain=osd 2>&1 || return 1
+    ./ceph osd erasure-code-profile rm $profile # cleanup
+}
+
 function TEST_format_invalid() {
     local dir=$1
 
diff --git a/src/test/msgr/test_async_driver.cc b/src/test/msgr/test_async_driver.cc
index 3b4edcf..d666ac6 100644
--- a/src/test/msgr/test_async_driver.cc
+++ b/src/test/msgr/test_async_driver.cc
@@ -251,8 +251,8 @@ TEST(EventCenterTest, FileEventExpansion) {
   center.init(100);
   EventCallbackRef e(new FakeEvent());
   for (int i = 0; i < 10000; i++) {
-    (void)::socket(AF_INET, SOCK_STREAM, 0);
-    center.create_file_event(i, EVENT_READABLE, e);
+    int sd = ::socket(AF_INET, SOCK_STREAM, 0);
+    center.create_file_event(sd, EVENT_READABLE, e);
     sds.push_back(::socket(AF_INET, SOCK_STREAM, 0));
   }
 
diff --git a/src/test/osd/TestPGLog.cc b/src/test/osd/TestPGLog.cc
index a940972..c88bc98 100644
--- a/src/test/osd/TestPGLog.cc
+++ b/src/test/osd/TestPGLog.cc
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <signal.h>
 #include "osd/PGLog.h"
+#include "osd/OSDMap.h"
 #include "common/ceph_argparse.h"
 #include "global/global_init.h"
 #include <gtest/gtest.h>
@@ -1862,6 +1863,116 @@ TEST_F(PGLogTest, merge_log_prior_version_have) {
   run_test_case(t);
 }
 
+TEST_F(PGLogTest, filter_log_1) {
+  {
+    clear();
+
+    int osd_id = 1;
+    epoch_t epoch = 40;
+    int64_t pool_id = 0;
+    int bits = 2;
+    int max_osd = 4;
+    int pg_num = max_osd << bits;
+    int num_objects = 1000;
+    int num_internal = 10;
+
+    // Set up splitting map
+    //ceph::shared_ptr<OSDMap> osdmap(new OSDMap());
+    OSDMap *osdmap = new OSDMap;
+    uuid_d test_uuid;
+    test_uuid.generate_random();
+    osdmap->build_simple(g_ceph_context, epoch, test_uuid, max_osd, bits, bits);
+    osdmap->set_state(osd_id, CEPH_OSD_EXISTS);
+
+    const string hit_set_namespace("internal");
+
+    ObjectStore::Transaction t;
+    pg_info_t info;
+    list<hobject_t> remove_snap;
+    //bool dirty_info = false;
+    //bool dirty_big_info = false;
+
+    hobject_t divergent_object;
+    eversion_t divergent_version;
+    eversion_t prior_version;
+    eversion_t newhead;
+    {
+      pg_log_entry_t e;
+      e.mod_desc.mark_unrollbackable();
+      e.op = pg_log_entry_t::MODIFY;
+      e.soid.pool = pool_id;
+
+      uuid_d uuid_name;
+      int i;
+      for (i = 1; i <= num_objects; ++i) {
+        e.version = eversion_t(epoch, i);
+        // Use this to generate random file names
+        uuid_name.generate_random();
+        ostringstream name;
+        name << uuid_name;
+        e.soid.oid.name = name.str();
+	// First has no namespace
+        if (i != 1) {
+           // num_internal have the internal namspace
+          if (i <= num_internal + 1) {
+            e.soid.nspace = hit_set_namespace;
+          } else { // rest have different namespaces
+            ostringstream ns;
+            ns << "ns" << i;
+            e.soid.nspace = ns.str();
+          }
+        }
+        log.log.push_back(e);
+        if (i == 1)
+          log.tail = e.version;
+        //cout << "object " << e.soid << std::endl;
+      }
+      log.head = e.version;
+      log.index();
+    }
+
+    spg_t pgid(pg_t(2, pool_id), shard_id_t::NO_SHARD);
+
+    // See if we created the right number of entries
+    int total = log.log.size();
+    ASSERT_EQ(total, num_objects);
+
+    // Some should be removed
+    log.filter_log(pgid, *osdmap, hit_set_namespace);
+    EXPECT_LE(log.log.size(), total);
+
+    // If we filter a second time, there should be the same total
+    total = log.log.size();
+    log.filter_log(pgid, *osdmap, hit_set_namespace);
+    EXPECT_EQ(log.log.size(), total);
+
+    // Increase pg_num as if there would be a split
+    int new_pg_num = pg_num * 16;
+    OSDMap::Incremental inc(epoch + 1);
+    inc.fsid = test_uuid;
+    const pg_pool_t *pool = osdmap->get_pg_pool(pool_id);
+    pg_pool_t newpool;
+    newpool = *pool;
+    newpool.set_pg_num(new_pg_num);
+    newpool.set_pgp_num(new_pg_num);
+    inc.new_pools[pool_id] = newpool;
+    int ret = osdmap->apply_incremental(inc);
+    ASSERT_EQ(ret, 0);
+
+    // We should have fewer entries after a filter
+    log.filter_log(pgid, *osdmap, hit_set_namespace);
+    EXPECT_LE(log.log.size(), total);
+
+    // Make sure all internal entries are retained
+    int count = 0;
+    for (list<pg_log_entry_t>::iterator i = log.log.begin();
+         i != log.log.end(); ++i) {
+      if (i->soid.nspace == hit_set_namespace) count++;
+    }
+    EXPECT_EQ(count, num_internal);
+  }
+}
+
 int main(int argc, char **argv) {
   vector<const char*> args;
   argv_to_vec(argc, (const char **)argv, args);
diff --git a/src/test/ubuntu-12.04/Dockerfile.in b/src/test/ubuntu-12.04/Dockerfile.in
index fddf929..a3d05cd 100644
--- a/src/test/ubuntu-12.04/Dockerfile.in
+++ b/src/test/ubuntu-12.04/Dockerfile.in
@@ -27,5 +27,5 @@ RUN apt-get update
 # build dependencies
 RUN cd /root ; ./install-deps.sh
 # development tools
-RUN apt-get install -y ccache valgrind gdb python-virtualenv gdisk kpartx hdparm jq xmlstarlet
+RUN apt-get install -y ccache valgrind gdb python-virtualenv gdisk kpartx hdparm xmlstarlet
 RUN useradd -M --uid %%user_id%% %%USER%% && echo '%%USER%% ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
diff --git a/src/test/ubuntu-12.04/install-deps.sh b/src/test/ubuntu-12.04/install-deps.sh
index cb050d6..129b238 100755
--- a/src/test/ubuntu-12.04/install-deps.sh
+++ b/src/test/ubuntu-12.04/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/src/test/ubuntu-14.04/install-deps.sh b/src/test/ubuntu-14.04/install-deps.sh
index cb050d6..129b238 100755
--- a/src/test/ubuntu-14.04/install-deps.sh
+++ b/src/test/ubuntu-14.04/install-deps.sh
@@ -38,6 +38,7 @@ Ubuntu|Debian|Devuan)
         packages=$(dpkg-checkbuilddeps --admindir=$DIR debian/control 2>&1 | \
             perl -p -e 's/.*Unmet build dependencies: *//;' \
             -e 's/build-essential:native/build-essential/;' \
+            -e 's/\|//g;' \
             -e 's/\(.*?\)//g;' \
             -e 's/ +/\n/g;' | sort)
         case $(lsb_release -sc) in
@@ -45,7 +46,8 @@ Ubuntu|Debian|Devuan)
                 packages=$(echo $packages | perl -pe 's/[-\w]*babeltrace[-\w]*//g')
                 ;;
         esac
-        $SUDO apt-get install -y $packages
+        packages=$(echo $packages) # change newlines into spaces
+        $SUDO bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y $packages"
         ;;
 CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
         case $(lsb_release -si) in
diff --git a/src/tools/Makefile-client.am b/src/tools/Makefile-client.am
new file mode 100644
index 0000000..b1b43de
--- /dev/null
+++ b/src/tools/Makefile-client.am
@@ -0,0 +1,34 @@
+if WITH_RADOS
+
+ceph_scratchtool_SOURCES = tools/scratchtool.c
+ceph_scratchtool_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_scratchtool
+
+ceph_scratchtoolpp_SOURCES = tools/scratchtoolpp.cc
+ceph_scratchtoolpp_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_scratchtoolpp
+
+ceph_radosacl_SOURCES = tools/radosacl.cc
+ceph_radosacl_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
+bin_DEBUGPROGRAMS += ceph_radosacl
+
+rados_SOURCES = \
+	tools/rados/rados.cc \
+	tools/rados/rados_import.cc \
+	tools/rados/rados_export.cc \
+	tools/rados/rados_sync.cc
+rados_SOURCES += common/obj_bencher.cc # needs cleanup so it can go in libcommon.la
+rados_LDADD = libcls_lock_client.la $(LIBRADOS) $(CEPH_GLOBAL)
+bin_PROGRAMS += rados
+
+
+if WITH_CEPHFS
+
+ceph_client_debug_SOURCES = tools/ceph-client-debug.cc
+ceph_client_debug_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(LIBCOMMON)
+bin_DEBUGPROGRAMS += ceph-client-debug
+
+endif # WITH_CEPHFS
+
+
+endif # WITH_RADOS
diff --git a/src/tools/Makefile-server.am b/src/tools/Makefile-server.am
new file mode 100644
index 0000000..12d22f0
--- /dev/null
+++ b/src/tools/Makefile-server.am
@@ -0,0 +1,52 @@
+ceph_osdomap_tool_SOURCES = tools/ceph_osdomap_tool.cc
+ceph_osdomap_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
+bin_DEBUGPROGRAMS += ceph-osdomap-tool
+
+ceph_monstore_tool_SOURCES = tools/ceph_monstore_tool.cc
+ceph_monstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
+bin_DEBUGPROGRAMS += ceph-monstore-tool
+
+ceph_kvstore_tool_SOURCES = tools/ceph_kvstore_tool.cc
+ceph_kvstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL)
+ceph_kvstore_tool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
+bin_DEBUGPROGRAMS += ceph-kvstore-tool
+
+
+if WITH_OSD
+
+ceph_objectstore_tool_SOURCES = tools/ceph_objectstore_tool.cc
+ceph_objectstore_tool_LDADD = $(LIBOSD) $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBRADOS)
+if LINUX
+ceph_objectstore_tool_LDADD += -ldl
+endif # LINUX
+bin_PROGRAMS += ceph-objectstore-tool
+
+endif # WITH_OSD
+
+
+if WITH_MDS
+if ENABLE_CLIENT
+if WITH_RADOS
+
+cephfs_journal_tool_SOURCES = \
+	tools/cephfs/cephfs-journal-tool.cc \
+	tools/cephfs/JournalTool.cc \
+	tools/cephfs/JournalFilter.cc \
+	tools/cephfs/JournalScanner.cc \
+	tools/cephfs/EventOutput.cc \
+	tools/cephfs/Dumper.cc \
+	tools/cephfs/Resetter.cc \
+	tools/cephfs/MDSUtility.cc
+cephfs_journal_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
+bin_PROGRAMS += cephfs-journal-tool
+
+cephfs_table_tool_SOURCES = \
+	tools/cephfs/cephfs-table-tool.cc \
+	tools/cephfs/TableTool.cc \
+	tools/cephfs/MDSUtility.cc
+cephfs_table_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
+bin_PROGRAMS += cephfs-table-tool
+
+endif # WITH_RADOS
+endif # ENABLE_CLIENT
+endif # WITH_MDS
diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am
index ae4ddf0..6633a27 100644
--- a/src/tools/Makefile.am
+++ b/src/tools/Makefile.am
@@ -1,22 +1,10 @@
-ceph_osdomap_tool_SOURCES = tools/ceph_osdomap_tool.cc
-ceph_osdomap_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
-bin_DEBUGPROGRAMS += ceph-osdomap-tool
+if ENABLE_CLIENT
+include tools/Makefile-client.am
+endif
 
-ceph_monstore_tool_SOURCES = tools/ceph_monstore_tool.cc
-ceph_monstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS)
-bin_DEBUGPROGRAMS += ceph-monstore-tool
-
-ceph_kvstore_tool_SOURCES = tools/ceph_kvstore_tool.cc
-ceph_kvstore_tool_LDADD = $(LIBOS) $(CEPH_GLOBAL)
-ceph_kvstore_tool_CXXFLAGS = $(UNITTEST_CXXFLAGS)
-bin_DEBUGPROGRAMS += ceph-kvstore-tool
-
-ceph_objectstore_tool_SOURCES = tools/ceph_objectstore_tool.cc
-ceph_objectstore_tool_LDADD = $(LIBOSD) $(LIBOS) $(CEPH_GLOBAL) $(BOOST_PROGRAM_OPTIONS_LIBS) $(LIBRADOS)
-if LINUX
-ceph_objectstore_tool_LDADD += -ldl
-endif # LINUX
-bin_PROGRAMS += ceph-objectstore-tool
+if ENABLE_SERVER
+include tools/Makefile-server.am
+endif
 
 monmaptool_SOURCES = tools/monmaptool.cc
 monmaptool_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON)
@@ -30,54 +18,10 @@ osdmaptool_SOURCES = tools/osdmaptool.cc
 osdmaptool_LDADD = $(CEPH_GLOBAL)
 bin_PROGRAMS += osdmaptool
 
-ceph_scratchtool_SOURCES = tools/scratchtool.c
-ceph_scratchtool_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_scratchtool
-
-ceph_scratchtoolpp_SOURCES = tools/scratchtoolpp.cc
-ceph_scratchtoolpp_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_scratchtoolpp
-
 ceph_psim_SOURCES = tools/psim.cc
 ceph_psim_LDADD = $(CEPH_GLOBAL)
 bin_DEBUGPROGRAMS += ceph_psim
 
-ceph_radosacl_SOURCES = tools/radosacl.cc
-ceph_radosacl_LDADD = $(LIBRADOS) $(CEPH_GLOBAL)
-bin_DEBUGPROGRAMS += ceph_radosacl
-
-ceph_client_debug_SOURCES = tools/ceph-client-debug.cc
-ceph_client_debug_LDADD = $(LIBCEPHFS) $(CEPH_GLOBAL) $(LIBCOMMON)
-bin_DEBUGPROGRAMS += ceph-client-debug
-
-rados_SOURCES = \
-	tools/rados/rados.cc \
-	tools/rados/rados_import.cc \
-	tools/rados/rados_export.cc \
-	tools/rados/rados_sync.cc
-rados_SOURCES += common/obj_bencher.cc # needs cleanup so it can go in libcommon.la
-rados_LDADD = libcls_lock_client.la $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += rados
-
-cephfs_journal_tool_SOURCES = \
-	tools/cephfs/cephfs-journal-tool.cc \
-	tools/cephfs/JournalTool.cc \
-	tools/cephfs/JournalFilter.cc \
-	tools/cephfs/JournalScanner.cc \
-	tools/cephfs/EventOutput.cc \
-	tools/cephfs/Dumper.cc \
-	tools/cephfs/Resetter.cc \
-	tools/cephfs/MDSUtility.cc
-cephfs_journal_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += cephfs-journal-tool
-
-cephfs_table_tool_SOURCES = \
-	tools/cephfs/cephfs-table-tool.cc \
-	tools/cephfs/TableTool.cc \
-	tools/cephfs/MDSUtility.cc
-cephfs_table_tool_LDADD = $(LIBMDS) $(LIBRADOS) $(CEPH_GLOBAL)
-bin_PROGRAMS += cephfs-table-tool
-
 if WITH_REST_BENCH
 rest_bench_SOURCES = tools/rest_bench.cc
 rest_bench_SOURCES += common/obj_bencher.cc # needs cleanup so it can go in libcommon.la
@@ -111,4 +55,3 @@ noinst_HEADERS += \
 	tools/cephfs/TableTool.h \
 	tools/cephfs/MDSUtility.h \
 	tools/rados/rados_sync.h
-
diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc
index cf27e11..f9d5473 100644
--- a/src/tools/ceph_objectstore_tool.cc
+++ b/src/tools/ceph_objectstore_tool.cc
@@ -1232,8 +1232,9 @@ int skip_object(bufferlist &bl)
     case TYPE_ATTRS:
     case TYPE_OMAP_HDR:
     case TYPE_OMAP:
-      if (debug)
-        cerr << "Skip type " << (int)type << std::endl;
+#ifdef DIAGNOSTIC
+      cerr << "Skip type " << (int)type << std::endl;
+#endif
       break;
     case TYPE_OBJECT_END:
       done = true;
@@ -1442,8 +1443,6 @@ int get_object(ObjectStore *store, coll_t coll, bufferlist &bl, OSDMap &curmap)
   if (ob.hoid.hobj.nspace != g_ceph_context->_conf->osd_hit_set_namespace) {
     object_t oid = ob.hoid.hobj.oid;
     object_locator_t loc(ob.hoid.hobj);
-    // XXX: Do we need to set the hash?
-    // loc.hash = ob.hoid.hash;
     pg_t raw_pgid = curmap.object_locator_to_pg(oid, loc);
     pg_t pgid = curmap.raw_pg_to_pg(raw_pgid);
   
@@ -1775,7 +1774,7 @@ int do_import(ObjectStore *store, OSDSuperblock& sb)
       cerr << std::endl;
       cerr << "If you wish to import, first do 'ceph-objectstore-tool...--op set-allow-sharded-objects'" << std::endl;
     }
-    return 1;
+    return 11;  // Assume no +EAGAIN gets to end of main() until we clean up error code handling
   }
 
   // Don't import if pool no longer exists
@@ -1789,7 +1788,7 @@ int do_import(ObjectStore *store, OSDSuperblock& sb)
   if (!curmap.have_pg_pool(pgid.pgid.m_pool)) {
     cerr << "Pool " << pgid.pgid.m_pool << " no longer exists" << std::endl;
     // Special exit code for this error, used by test code
-    return 10;
+    return 10;  // Assume no +ECHILD gets to end of main() until we clean up error code handling
   }
 
   ghobject_t pgmeta_oid = pgid.make_pgmeta_oid();
@@ -1853,12 +1852,25 @@ int do_import(ObjectStore *store, OSDSuperblock& sb)
     return EFAULT;
   }
 
+  pg_log_t newlog, reject;
+  pg_log_t::filter_log(pgid, curmap, g_ceph_context->_conf->osd_hit_set_namespace,
+    ms.log, newlog, reject);
+  if (debug) {
+    for (list<pg_log_entry_t>::iterator i = newlog.log.begin();
+         i != newlog.log.end(); ++i)
+      cerr << "Keeping log entry " << *i << std::endl;
+    for (list<pg_log_entry_t>::iterator i = reject.log.begin();
+         i != reject.log.end(); ++i)
+      cerr << "Skipping log entry " << *i << std::endl;
+  }
+
   t = new ObjectStore::Transaction;
-  ret = write_pg(*t, ms.map_epoch, ms.info, ms.log, ms.past_intervals);
+  ret = write_pg(*t, ms.map_epoch, ms.info, newlog, ms.past_intervals);
   if (ret) return ret;
 
   // done, clear removal flag
-  cout << "done, clearing removal flag flag" << std::endl;
+  if (debug)
+    cerr << "done, clearing removal flag" << std::endl;
   set<string> remove;
   remove.insert("_remove");
   t->omap_rmkeys(coll, pgid.make_pgmeta_oid(), remove);
@@ -2557,8 +2569,9 @@ int main(int argc, char **argv)
     cerr << "On-disk features: " << superblock.compat_features << std::endl;
   }
   if (supported.compare(superblock.compat_features) == -1) {
+    CompatSet unsupported = supported.unsupported(superblock.compat_features);
     cerr << "On-disk OSD incompatible features set "
-      << superblock.compat_features << std::endl;
+      << unsupported << std::endl;
     ret = EINVAL;
     goto out;
   }
@@ -3131,5 +3144,8 @@ out:
     return 1;
   }
 
+  // Check for -errno accidentally getting here
+  if (ret < 0)
+    ret = 1;
   return ret;
 }
diff --git a/src/tools/crushtool.cc b/src/tools/crushtool.cc
index 3f9d086..f332186 100644
--- a/src/tools/crushtool.cc
+++ b/src/tools/crushtool.cc
@@ -464,7 +464,6 @@ int main(int argc, const char **argv)
 
   if (test && !display && !write_to_file) {
     cerr << "WARNING: no output selected; use --output-csv or --show-X" << std::endl;
-    exit(EXIT_FAILURE);
   }
 
   if (decompile + compile + build > 1) {
diff --git a/src/tracing/Makefile.in b/src/tracing/Makefile.in
index f608a23..10d6de9 100644
--- a/src/tracing/Makefile.in
+++ b/src/tracing/Makefile.in
@@ -253,6 +253,7 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+WARN_ERROR_FORMAT_SECURITY = @WARN_ERROR_FORMAT_SECURITY@
 WARN_IGNORED_QUALIFIERS = @WARN_IGNORED_QUALIFIERS@
 WARN_TYPE_LIMITS = @WARN_TYPE_LIMITS@
 XIO_LIBS = @XIO_LIBS@

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ceph/ceph.git



More information about the Pkg-ceph-commits mailing list