From a6bef4391f17c638c4bcc8db58394331234e5186 Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Thu, 25 Feb 2016 08:24:10 +0300 Subject: [PATCH] Update to ceph 0.94.6 Fixes a number of bugs including but not limited to "Qemu hangs after creating snapshot and stopping VM", http://tracker.ceph.com/issues/13726 "Cannot reliably create snapshot after freezing QEMU IO", http://tracker.ceph.com/issues/14373 "rbd-replay does not check for EOF and goes to endless loop", http://tracker.ceph.com/issues/14452 "Incorrect ETAG calculated for POST uploads", http://tracker.ceph.com/issues/11241 "rgw: missing handling of encoding-type=url when listing keys in bucket", http://tracker.ceph.com/issues/12735 The code has been downloaded from http://download.ceph.com/tarballs/ceph-0.94.6.tar.gz Debianization has been borrowed from http://anonscm.debian.org/cgit/pkg-ceph/ceph.git/commit/?h=hammer&id=300878169869e3ca73051f6ca671d4d209d4cef6 Additional patches: ceph-disk: fix udev generated symlinks handling, https://github.com/ceph/ceph/pull/7123 rados bench seq: fix failure due to locking errors, https://github.com/ceph/ceph/pull/7817 Change-Id: I1f5e65aeaf954381bbb619d5fbb2b18012b41df6 --- ceph/AUTHORS | 25 + ceph/ChangeLog | 2862 +++++++++-------- ceph/ceph.spec | 120 +- ceph/ceph.spec.in | 118 +- ceph/configure | 29 +- ceph/configure.ac | 7 +- ceph/man/ceph-authtool.8 | 4 +- ceph/man/ceph-clsinfo.8 | 4 +- ceph/man/ceph-conf.8 | 4 +- ceph/man/ceph-create-keys.8 | 33 +- ceph/man/ceph-debugpack.8 | 4 +- ceph/man/ceph-dencoder.8 | 32 +- ceph/man/ceph-deploy.8 | 4 +- ceph/man/ceph-disk.8 | 4 +- ceph/man/ceph-fuse.8 | 4 +- ceph/man/ceph-mds.8 | 14 +- ceph/man/ceph-mon.8 | 4 +- ceph/man/ceph-osd.8 | 4 +- ceph/man/ceph-post-file.8 | 4 +- ceph/man/ceph-rbdnamer.8 | 4 +- ceph/man/ceph-rest-api.8 | 4 +- ceph/man/ceph-run.8 | 4 +- ceph/man/ceph-syn.8 | 4 +- ceph/man/ceph.8 | 16 +- ceph/man/cephfs.8 | 6 +- ceph/man/crushtool.8 | 4 +- ceph/man/librados-config.8 | 4 +- ceph/man/monmaptool.8 | 4 +- ceph/man/mount.ceph.8 | 4 +- ceph/man/osdmaptool.8 | 4 +- ceph/man/rados.8 | 7 +- ceph/man/radosgw-admin.8 | 23 +- ceph/man/radosgw.8 | 39 +- ceph/man/rbd-fuse.8 | 4 +- ceph/man/rbd-replay-many.8 | 4 +- ceph/man/rbd-replay-prep.8 | 9 +- ceph/man/rbd-replay.8 | 4 +- ceph/man/rbd.8 | 23 +- ceph/src/.git_version | 4 +- ceph/src/Makefile-env.am | 5 +- ceph/src/Makefile.am | 5 +- ceph/src/Makefile.in | 1835 ++++++----- ceph/src/auth/cephx/CephxServiceHandler.cc | 8 +- ceph/src/ceph-disk | 4 +- ceph/src/ceph_fuse.cc | 4 +- ceph/src/ceph_osd.cc | 21 +- ceph/src/ceph_syn.cc | 6 +- ceph/src/cls/rgw/cls_rgw.cc | 83 +- ceph/src/common/Makefile.am | 6 +- ceph/src/common/Thread.cc | 12 +- ceph/src/common/TracepointProvider.cc | 44 + ceph/src/common/TracepointProvider.h | 83 + ceph/src/common/WorkQueue.h | 115 +- ceph/src/common/buffer.cc | 9 + ceph/src/common/ceph_context.cc | 2 +- ceph/src/common/ceph_context.h | 30 +- ceph/src/common/config_opts.h | 14 +- ceph/src/common/obj_bencher.cc | 136 +- ceph/src/common/obj_bencher.h | 6 +- ceph/src/common/run_cmd.cc | 3 + ceph/src/common/sync_filesystem.h | 15 +- ceph/src/crush/mapper.c | 15 +- ceph/src/include/buffer.h | 1 + ceph/src/include/rados/buffer.h | 1 + ceph/src/init-ceph.in | 10 +- ceph/src/init-radosgw | 2 +- ceph/src/init-rbdmap | 59 +- ceph/src/krbd.cc | 3 +- ceph/src/libcephfs.cc | 17 +- ceph/src/librados/Makefile.am | 3 - ceph/src/librados/RadosClient.cc | 7 +- ceph/src/librados/librados.cc | 56 +- ceph/src/libradosstriper/Makefile.am | 4 +- ceph/src/librbd/AsyncResizeRequest.cc | 8 +- ceph/src/librbd/ImageCtx.cc | 2 +- ceph/src/librbd/ImageWatcher.cc | 104 +- ceph/src/librbd/ImageWatcher.h | 78 +- ceph/src/librbd/Makefile.am | 4 - ceph/src/librbd/ObjectMap.cc | 20 +- ceph/src/librbd/ObjectMap.h | 2 +- ceph/src/librbd/TaskFinisher.h | 1 + ceph/src/librbd/internal.cc | 62 +- ceph/src/librbd/librbd.cc | 43 + ceph/src/log/Log.cc | 4 +- ceph/src/logrotate.conf | 6 +- ceph/src/mon/Elector.cc | 9 +- ceph/src/mon/MDSMonitor.cc | 37 +- ceph/src/mon/MonClient.cc | 8 +- ceph/src/mon/Monitor.cc | 8 +- ceph/src/mon/MonitorDBStore.h | 19 +- ceph/src/mon/OSDMonitor.cc | 89 +- ceph/src/mon/OSDMonitor.h | 9 +- ceph/src/mon/PGMap.cc | 9 +- ceph/src/mon/PGMonitor.cc | 5 +- ceph/src/mon/PaxosService.cc | 3 + ceph/src/mon/Session.h | 5 +- ceph/src/msg/Messenger.cc | 8 + ceph/src/msg/Messenger.h | 15 + ceph/src/msg/async/AsyncMessenger.h | 2 +- ceph/src/os/FileStore.cc | 9 +- ceph/src/os/FileStore.h | 1 + ceph/src/os/Makefile.am | 3 - ceph/src/osd/ECBackend.cc | 9 + ceph/src/osd/Makefile.am | 3 - ceph/src/osd/OSD.cc | 135 +- ceph/src/osd/OSD.h | 50 +- ceph/src/osd/OSDMap.cc | 6 +- ceph/src/osd/OSDMap.h | 4 + ceph/src/osd/OpRequest.cc | 4 + ceph/src/osd/PG.cc | 81 +- ceph/src/osd/PG.h | 4 +- ceph/src/osd/PGBackend.cc | 5 +- ceph/src/osd/ReplicatedBackend.cc | 12 + ceph/src/osd/ReplicatedPG.cc | 151 +- ceph/src/osd/osd_types.cc | 23 +- ceph/src/osd/osd_types.h | 7 +- ceph/src/osdc/ObjectCacher.cc | 2 +- ceph/src/osdc/Objecter.cc | 236 +- ceph/src/osdc/Objecter.h | 16 +- ceph/src/rbd.cc | 25 +- ceph/src/rbd_replay/ActionTypes.cc | 354 ++ ceph/src/rbd_replay/ActionTypes.h | 277 ++ ceph/src/rbd_replay/BufferReader.cc | 38 + ceph/src/rbd_replay/BufferReader.h | 34 + ceph/src/rbd_replay/Deser.cc | 67 - ceph/src/rbd_replay/Deser.hpp | 52 - ceph/src/rbd_replay/Makefile.am | 49 +- ceph/src/rbd_replay/Replayer.cc | 82 +- ceph/src/rbd_replay/Replayer.hpp | 3 +- ceph/src/rbd_replay/Ser.cc | 53 - ceph/src/rbd_replay/Ser.hpp | 50 - ceph/src/rbd_replay/actions.cc | 321 +- ceph/src/rbd_replay/actions.hpp | 295 +- ceph/src/rbd_replay/ios.cc | 231 +- ceph/src/rbd_replay/ios.hpp | 143 +- ceph/src/rbd_replay/rbd-replay-prep.cc | 336 +- ceph/src/rgw/logrotate.conf | 6 +- ceph/src/rgw/rgw_admin.cc | 5 + ceph/src/rgw/rgw_civetweb.cc | 7 + ceph/src/rgw/rgw_common.h | 1 - ceph/src/rgw/rgw_op.cc | 23 +- ceph/src/rgw/rgw_op.h | 1 + ceph/src/rgw/rgw_orphan.cc | 36 +- ceph/src/rgw/rgw_rest.cc | 8 +- ceph/src/rgw/rgw_rest_s3.cc | 41 +- ceph/src/test/Makefile-client.am | 6 - ceph/src/test/bufferlist.cc | 40 + ceph/src/test/centos-6/ceph.spec.in | 118 +- ceph/src/test/centos-7/ceph.spec.in | 118 +- ceph/src/test/cli/radosgw-admin/help.t | 6 + ceph/src/test/encoding/types.h | 4 + ceph/src/test/librados/aio.cc | 71 + ceph/src/test/librados/io.cc | 38 + ceph/src/test/librados/test.cc | 91 +- ceph/src/test/librados/test.h | 4 + .../librados_test_stub/TestRadosClient.cc | 4 +- .../librados_test_stub/TestWatchNotify.cc | 214 +- .../test/librados_test_stub/TestWatchNotify.h | 13 +- ceph/src/test/librbd/test_librbd.cc | 107 +- ceph/src/test/mon/PGMap.cc | 35 +- ceph/src/test/mon/test_mon_workloadgen.cc | 3 +- ceph/src/test/osd/Object.cc | 40 + ceph/src/test/osd/Object.h | 2 + ceph/src/test/osd/RadosModel.h | 40 +- ceph/src/test/test_rbd_replay.cc | 91 - ceph/src/tools/ceph_monstore_tool.cc | 410 ++- ceph/src/tools/cephfs/MDSUtility.cc | 2 +- ceph/src/tools/rados/rados.cc | 12 +- ceph/src/tracing/Makefile.am | 95 +- ceph/src/tracing/Makefile.in | 818 ----- ceph/src/tracing/librados.c | 6 + ceph/src/tracing/librbd.c | 6 + ceph/src/tracing/objectstore.c | 6 + ceph/src/tracing/oprequest.c | 6 + ceph/src/tracing/osd.c | 6 + ceph/src/tracing/pg.c | 6 + ceph/src/upstart/ceph-osd.conf | 6 +- debian/ceph.NEWS | 56 + debian/ceph.dirs | 10 +- debian/ceph.logrotate | 1 + debian/changelog | 14 + debian/control | 179 +- debian/copyright | 2 + debian/gbp.conf | 3 +- ...er-seq_read_bench-fix-locking-errors.patch | 50 + debian/patches/bug-10036.patch | 32 + .../ceph-disk-fix-symlinks-handling.patch | 128 + debian/patches/rbdmap3-lazyumount.patch | 8 +- debian/patches/series | 11 + debian/patches/tests-disable-ceph-disk.patch | 16 + debian/patches/tests-disable.patch | 52 + debian/patches/use_system_jerasure.patch | 182 ++ debian/radosgw.dirs | 2 +- debian/radosgw.logrotate | 1 + debian/rules | 11 +- debian/watch | 2 +- 196 files changed, 7587 insertions(+), 5535 deletions(-) create mode 100644 ceph/src/common/TracepointProvider.cc create mode 100644 ceph/src/common/TracepointProvider.h create mode 100644 ceph/src/rbd_replay/ActionTypes.cc create mode 100644 ceph/src/rbd_replay/ActionTypes.h create mode 100644 ceph/src/rbd_replay/BufferReader.cc create mode 100644 ceph/src/rbd_replay/BufferReader.h delete mode 100644 ceph/src/rbd_replay/Deser.cc delete mode 100644 ceph/src/rbd_replay/Deser.hpp delete mode 100644 ceph/src/rbd_replay/Ser.cc delete mode 100644 ceph/src/rbd_replay/Ser.hpp delete mode 100644 ceph/src/tracing/Makefile.in create mode 100644 ceph/src/tracing/librados.c create mode 100644 ceph/src/tracing/librbd.c create mode 100644 ceph/src/tracing/objectstore.c create mode 100644 ceph/src/tracing/oprequest.c create mode 100644 ceph/src/tracing/osd.c create mode 100644 ceph/src/tracing/pg.c create mode 100644 debian/ceph.NEWS create mode 120000 debian/ceph.logrotate create mode 100644 debian/patches/ObjBencher-seq_read_bench-fix-locking-errors.patch create mode 100644 debian/patches/bug-10036.patch create mode 100644 debian/patches/ceph-disk-fix-symlinks-handling.patch create mode 100644 debian/patches/tests-disable-ceph-disk.patch create mode 100644 debian/patches/tests-disable.patch create mode 100644 debian/patches/use_system_jerasure.patch create mode 120000 debian/radosgw.logrotate diff --git a/ceph/AUTHORS b/ceph/AUTHORS index 40a53166..6d200207 100644 --- a/ceph/AUTHORS +++ b/ceph/AUTHORS @@ -15,6 +15,7 @@ Alexandre Marangone Alexandre Oliva Alex Elder Alexey Lapitsky +Alexey Sheplyakov Alfredo Deza Alfredo Deza Ali Maredia @@ -51,9 +52,12 @@ Billy Olsen BJ Lougee Bjørnar Ness Blaine Gardner +Bo Cai Boris Ranto +Brad Hubbard Brandon Seibel branto1 +brian Brian Chrisman Brian Rak Brown, David M JR @@ -67,6 +71,7 @@ Cesar Mello Chen Baozi Chendi Xue Cheng Cheng +Chengyuan Li Chris Dunlop Chris Glass Chris Holcombe @@ -77,10 +82,12 @@ Christophe Courtaut Christopher O'Connell Christoph Hellwig Christos Stavrakakis +Cilang Zhao Colin Mattson Colin P. McCabe Dan Chai Daniel Gollub +Daniel Gryniewicz Daniel J. Hofmann Dan Mick Dan Mick @@ -102,6 +109,7 @@ Dominik Hannen Dongmao Zhang Dongsu Park Dong Yuan +Douglas Fuller dwj192 Eleanor Cawthon Emily Popper @@ -144,11 +152,13 @@ Hazem Henry C Chang Henry Chang Herb Shiu +Herve Rousseau Hervé Rousseau Holger Macht Huamin Chen Huang Jun Ian Holsman +Igor Fedotov Ilya Dryomov Ilya Dryomov islepnev @@ -158,6 +168,8 @@ Jan Harkes Janne Grunau Jason Dillaman Javier M. Mellid +Jeff Weber +Jenkins Build Slave User Jenkins Jenkins Jens-Christian Fischer @@ -171,6 +183,7 @@ João Eduardo Luís João Eduardo Luís Joao Eduardo Luis Joe Buck +Joe Julian Johannes Erdfelt John Spray John Spray @@ -217,6 +230,7 @@ Loic Dachary Loic Dachary Luis Pabón Lukasz Jagiello +Lu Shi Ma Jianpeng Marco Garcês Marcus Sorensen @@ -273,6 +287,8 @@ Peter Wienemann Pete V Petr Machata Pierre Rognant +Piotr Dałek +qiankunzheng qiushanggao Radoslaw Zarzynski Raju Kurunkad @@ -285,6 +301,7 @@ ritz303 Roald J. van Loon RobertJansen1 Robin H. Johnson +Robin H. Johnson Rohan Mars Roman Haritonov Ron Allred @@ -294,6 +311,7 @@ Ross Turk Ross Turk Ruben Kerkhof Ruifeng Yang <149233652@qq.com> +Ruifeng Yang Rutger ter Borg Sage Weil Sage Weil @@ -303,6 +321,7 @@ Samuel Just Samuel Just Sandon Van Ness Sandon Van Ness +Sangdi Xu Scott A. Brandt Scott Devoid Sean Channel @@ -361,8 +380,10 @@ Volker Assmann VRan Liu Vu Pham Walter Huf +wangchaunhong Wang, Yaguang Warren Usui +Weijun Duan Wei Luo Wesley Spikes Wido den Hollander @@ -373,10 +394,13 @@ Wyllys Ingersoll Xan Peng Xiaowei Chen Xiaoxi Chen +xiexingguo <258156334@qq.com> Xihui He Xing Lin +Xinze Chi Xinze Chi Xiong Yiliang +yangruifeng Yann Dupont Yan, Zheng Yan, Zheng @@ -390,3 +414,4 @@ Yuri Weinstein Zhe Zhang Zhiqiang Wang Zhi Zhang +zqkkqz diff --git a/ceph/ChangeLog b/ceph/ChangeLog index ceb3dac6..273c1d62 100644 --- a/ceph/ChangeLog +++ b/ceph/ChangeLog @@ -1,20 +1,181 @@ -9764da5 (HEAD, tag: v0.94.5) 0.94.5 +e832001 (HEAD, tag: v0.94.6, origin/hammer) 0.94.6 +9ab5fd9 rgw-admin: document orphans commands in usage +0e1378e [backport] rgw: fix wrong etag calculation during POST on S3 bucket. +5c8d1d7 [backport] rgw: Make RGW_MAX_PUT_SIZE configurable +f2ca42b doc: add orphans commands to radosgw-admin(8) +e42ed6d man: rebuild manpages +a8fc6a9 fsx: checkout old version until it compiles properly on miras +1b02859 qa/fsstress.sh: fix 'cp not writing through dangling symlink' +9109304 mon: compact full epochs also +2817ffc Check for full before changing the cached obc +ae56de0 osd: recency should look at newest (not oldest) hitsets +5cefcb9 osd/ReplicatedPG: fix promotion recency logic +a5e4f70 man: document listwatchers cmd in "rados" manpage +46d626d rbd: remove canceled tasks from timer thread +24c0b27 rbd-replay: handle EOF gracefully +70f1ba3 tools: monstore: add 'show-versions' command. +9260171 tools: ceph_monstore_tool: add inflate-pgmap command +a1d5728 tools:support printing the crushmap in readable fashion. +bd94847 tools:print the map infomation in human readable format. +fba6583 tools:remove the local file when get map failed. +1bb899a tools: ceph_monstore_tool: describe behavior of rewrite command +9035c69 tools/ceph-monstore-tools: add rewrite command +90aaed7 tools: ceph-monstore-tool must do out_store.close() +c7252a3 osd: disable filestore_xfs_extsize by default +73e03de librbd: ImageWatcher shouldn't block the notification thread +5617166 librados_test_stub: watch/notify now behaves similar to librados +8fc82b2 tests: simulate writeback flush during snap create +9f30fe1 upstart/ceph-osd.conf: pass TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES through +a58873e init-ceph: pass TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES through +8d9e08c tools: ceph-monstore-tool must do out_store.close() +0325f8a deb: strip tracepoint libraries from Wheezy/Precise builds +e4d3e9b qa: disable rbd/qemu-iotests test case 055 on RHEL/CentOS +f7acd44 qa: remove legacy OS support from rbd/qemu-iotests +8c28f2f librbd: optionally validate RBD pool configuration (snapshot support) +700be56 config_opts: increase suicide timeout to 300 to match recovery +447ab1d tests: notification slave needs to wait for master +53742bd ceph_osd: Add required feature bits related to this branch to osd_required mask +3066231 osd: CEPH_FEATURE_CHUNKY_SCRUB feature now required +6379ff1 configure.ac: no use to add "+" before ac_ext=c +f96c812 rgw: fix reload on non Debian systems. +cbb5c1f Fixing NULL pointer dereference +b2961ce rbd: fix bench-write +9cee89b Check that delta_sum.stats.sum.num_object_copies and delta_sum.stats.sum.num_object are greater than zero +1ab2b48 ReplicatedPG: fix sparse-read result code checking logic +86f5cf6 osd: clear pg_stat_queue after stopping pgs +b0856ee osd: Test osd_find_best_info_ignore_history_les config in another assert +b2f1e76 Compare parted output with the dereferenced path +5264bc6 mon: OSDMonitor: do not assume a session exists in send_incremental() +4d0b9a1 log: Log.cc: Assign LOG_DEBUG priority to syslog calls +26e832e librbd: fix merge-diff for >2GB diff-files +a9d3f07 osd/osd_types: skip encoding newer object_info_t fields if they are unused +1548a3f osd/ReplicatedPG: do not set local_mtime on non-tiered pool +98bdb09 osd/PGBackend: use mtime for digest decision if local_mtime is empty +fe1c28d osd/ReplicatedPG: do not set omap digest if there is no omap +6cf261c Objecter: remove redundant result-check of _calc_target in _map_session. +5d0b5c1 Objecter: potential null pointer access when do pool_snap_list. +66ff0aa auth/cephx: large amounts of log are produced by osd if the auth of osd is deleted when the osd is running, the osd will produce large amounts of log. +61da13b mon/PGMonitor: MAX AVAIL is 0 if some OSDs' weight is 0 +53e81aa init-ceph: fix systemd-run cant't start ceph daemon sometimes +c2c6d02 tools: fix race condition in seq/rand bench +a619b62 tools: add --no-verify option to rados bench +ac05617 osd: fix send_failures() locking +3f1292e ceph.spec.in: fix License line +a81bcf7 ceph_context: remove unsafe cast for singletons +d50d7b2 osd: conditionally initialize the tracepoint provider +bf34b36 librados: conditionally initialize the tracepoint provider +afc4f17 librbd: conditionally initialize the tracepoint provider +c82f939 common: new tracing config options +2168c15 tracing: merge tracepoint provider makefiles into main makefile +d02beff tracing: dynamic tracepoint provider helper +e53d66e packaging: add new tracepoint probe shared libraries +bb7c0f5 ceph.spec.in: add new tracepoint probe shared libraries +e1da271 lttng: move tracepoint probes to dynamic libraries +8358fb8 revert: osd: use GMT time for hitsets +4420929 rgw: fix modification to index attrs when setting acls +8378aaf build/ops: rbd-replay moved from ceph-test-dbg to ceph-common-dbg +0378445 osd: fix the snapshot reads of evicted tiering pool +bddbda1 Objecter: pool_op callback may hang forever. +112c686 WorkQueue: new PointerWQ base class for ContextWQ +9c33dcc librbd: fixed deadlock while attempting to flush AIO requests +b3b7877 tests: new test case to catch deadlock on RBD image refresh +a322317 librbd: resize should only update image size within header +6a40e4f ceph.spec.in: lttng in SLES12 only +e508a44 ceph.spec.in: fix lttng/babeltrace conditionals +19c9546 packaging: move rbd-replay* to ceph-common +3d3595f krbd: remove deprecated --quiet param from udevadm +4d81cd1 run_cmd: close parent process console file descriptors +2052187 init-rbdmap: Rewrite to use logger + clean-up +f972f38 ceph.spec.in: We no longer need redhat-lsb-core +609f256 rgw: implement s3 encoding-type for get bucket +394fbfc Objecter: maybe access wild pointer(op) in _op_submit_with_budget. +84068f8 Objecter: repeated free op->ontimeout. +3e65730 ReplicatedBackend::prepare_pull: set recover_info.size for clones +b62cac6 rgw: fix swift API returning incorrect account metadata +9643ee6 bug fix: osd: do not cache unused buffer in attrs +1b06f03 rgw:swift use Civetweb ssl can not get right url +5105d50 tests: test/librados/test.cc must create profile +3023750 tests: destroy testprofile before creating one +3a7423d tests: add destroy_ec_profile{,_pp} helpers +a52f7cb crush/mapper: ensure take bucket value is valid +81d8aa1 crush/mapper: ensure bucket id is valid before indexing buckets array +74203b8 FileStore: potential memory leak if _fgetattrs fails +db1cbe7 Fix casing of Content-Type header +1448915 qa: update cephtool test for CephFS tier cases +14c36f0 mon: forbid readonly cache tiers for CephFS +31e59fb mon: refine check_remove_tier checks +9f3aebe osd: fix requeue of replay requests during activating +ade0f1a OSD:shall reset primary and up_primary fields when beginning a new past_interval. +9085c82 mon: should not set isvalid = true when cephx_verify_authorizer return false +9764da5 0.94.5 +4875d05 ceph.spec.in: rm EOL Fedoras; add OBS RHEL5 instead +dfba6ac packaging: Add rgw placeholder dirs in proper packages +2387c8e ceph.spec.in: consolidate centos/rhel macros +7c58d31 packaging: make logrotate a hard dependency across all distros +61acc4e ceph.spec.in: add missing -%{release} +20590d3 ceph.spec.in: remove duplicate BuildRequires: sharutils +6b306eb ceph.spec.in: fix python-flask dependency for SUSE +7a2cbcb ceph.spec.in: clarify two important comments +dfe27c6 ceph.spec.in: rm reference to EOL Fedoras (< 20) +371b64e ceph.spec.in: package rbd-replay-prep on all Fedoras +82425b3 ceph.spec.in: rbd-replay-prep is not being built on f21+ +53e2f70 ceph.spec.in:BuildRequires sharutils +a84376c ceph.spec.in: fix:Add missing directories breaking build +171fee1 mon: track osd_epoch of all MonSessions +cc7da67 mon: track osd_epoch in MonSession 250dc07 osd/ReplicatedPG: remove stray debug line d3abcbe librbd: potential assertion failure during cache read 991d0f0 tests: reproduce crash during read-induced CoW +3f33ce6 librbd:reads larger than cache size hang. +5e5b512 rgw: url_decode values from X-Object-Manifest during GET on Swift DLO. +e693755 cls_rgw: fix bucket listing when dealing with invisible entries +99b4d1d rgw: orphan tool shouldn't clean up head objects +6d89f4b rgw: location constraints should return api name +2bd5d0b radosstriper : Fixed broken Makefiles after integration of lttng +7ffd072 osdc/Objecter: distinguish between multiple notify completions +647c910 osd: reply to notify request with our unique notify_id +0ad9521 osd: Correct the object_info_t::decode() version 51f3d6a qa: Use public qemu repo 9529269 (tag: v0.94.4) 0.94.4 +af734e6 librbd: invalidate object map on error even w/o holding lock b203979 use git://git.ceph.com 0f4ef19 qa: http://ceph.com/qa -> http://download.ceph.com/qa -294f016 (origin/wip-13227-hammer) init-radosgw.sysv: remove -698d75c (origin/wip-13410-hammer) tests: robust test for the pool create crushmap test -2a28114 (origin/wip-13401-hammer) crush/CrushTester: test fewer inputs when running crushtool +634d7f6 tests: removed obsolete rbd_replay test cases +5c63d3c ceph-dencoder: new rbd_replay trace file types +a145a1c rbd-replay: added version control to trace output file +a30ed76 rbd-replay-prep: added --verbose command line option +adf31c8 rbd-replay-prep: stream events to the prep file +8c9e67a rbd-replay-prep: simplify IO dependency calculation +e7406fc rbd-replay: improve error messages +9f81d28 rbd-replay-prep: support new read/write APIs +a856bee rbd-replay-prep: avoid using assert statements on user inputs +294f016 init-radosgw.sysv: remove +6a4734a ReplicatedPG::hit_set_setup: fix hit_set_remove_all call +ab3877d osd/: assert in HitSet constructor if type is TYPE_NONE as well +4fe07b7 osd: only remove all the hit set objects on primary osd +313a09b osd: implement hit_set_remove_all +b632254 mon: disable gmt_hitset if not supported +27fc9a3 osd: do not let OSD_HITSET_GMT reuse the feature bit +7fcc61d osd: Decode use_gmt_hitset with a unique version +26c7e96 mon: print use_gmt_hitset in "ceph osd pool get" +e8e00da mon: add "ceph osd pool set $pool use_gmt_hitset true" cmd +040e390 osd: use GMT time for the object name of hitsets +31b7864 CephxServiceHandler.cc: fix get_auth conditional +698d75c tests: robust test for the pool create crushmap test +0742177 osd: use another name for randomize scrub option +fad3386 osd: randomize scrub times to avoid scrub wave +9c13033 osd: use __func__ in log messages +4a3dedf osd: simplify OSD::scrub_load_below_threshold() a little bit +24268cf librbd: invoking RBD::open twice will leak memory +2a28114 crush/CrushTester: test fewer inputs when running crushtool abc5b5f tests: update to match crushmap validation message 25bd277 mon/OSDMonitor: fix crush injection error message 6635530 mon/OSDMonitor: only test crush ruleset for the newly created pool cc1fedd crush/CrushTester: allow testing by ruleset 3228161 qa/workunits/cephtool/test.sh: don't assume crash_replay_interval=45 ad83304 rgw:add --reset-regions for regionmap update +8610de8 use simplifed messenger constructor for clients +9d059c3 msg: add simplified messenger constructor 7de65e7 rgw : setting max number of buckets for users via ceph.conf option 297c04d rgw: init_rados failed leads to repeated delete 4b0686f rgw: delete finisher only after finalizing watches @@ -26,23 +187,54 @@ f51ab26 rgw: fix radosgw start-up script. d00c52b doc: rgw: fix typo in comments eb001d3 rgw: init script waits until the radosgw stops 9ab9c44 rgw: don't read actual data on user manifest HEAD +6e29e90 init-rbdmap: fix CMDPARAMS +7161a2c PG: ignore info from down osd +9753551 OSDMap.h: add has_been_up_since +f1271ea Common/Thread: pthread_attr_destroy(thread_attr) when done with it When a thread attributes object is no longer required, it should be destroyed using the pthread_attr_destroy() function. Destroying a thread attributes object has no effect on threads that were created using that object. +9581f9f Thread.cc: remove malloc/free pair 9026c4a doc: remove mention of ceph-extra as a requirement 45ed24d doc: remove ceph-extras faccdce doc: correct links to download.ceph.com e9f4aec doc: Added "Hammer" in the list of major releases. +a17f2a9 osdc/Objecter: optimize Objecter::tick. +f80d237 osdc/Objecter: remove the unuseful code. +8f76f4c osdc/Objecter: Don't forget call _op_cancel_map_check when cancel linger op. +ba36cab osdc/Objecter: In _cancel_linger_op, it should make num_unacked/num_committed decrease. +6ff7b02 osdc/Objeter: When cancel op, decrease num_unacked/num_uncommitted. +d815e0a osdc/Objecter: For func op_cancel_writes it can directly call op_cancel. +53316f3 Objecter: Take RLocker when call is_active. +6849288 mon/PGMap: calc min_last_epoch_clean when decode +7d4b303 osd: print min_last_epoch_clean along with pg dump +d8ca88d OSDService::agent_entry: don't use PG::operator<< without pg lock +397042a filestore: fix peek_queue for OpSequencer +d4e4d85 mon/Elector: do a trivial write on every election cycle +20a4c0c mon/MonitorDBStore: assert/crash if there is a write error +3c1f7cb OSDMap: fill in known encode_features where possible 424fc1c rgw: set default value for env->get() call +93c523c librbd: diff_iterate needs to handle holes in parent images +359b684 tests: new test case for librbd diff_iterate over discard extents e72bdc3 osd/ReplicatedPG: tolerate promotion completion with stopped agent a3afb3f rgw: remove trailing :port from host for purposes of subdomain matching -77cb503 (origin/wip-13015-hammer) rgw: preserve all attrs if intra-zone copy +71a42f7 bug fix: osd: avoid multi set osd_op.outdata in tier pool +77cb503 rgw: preserve all attrs if intra-zone copy b9f2ed3 rgw: don't preserve acls when copying object +e8cce08 bug fix: osd: requeue_scrub when kick_object_context_blocked +8ee93d5 PG::handle_advance_map: on_pool_change after handling the map change b3822f1 upstart: limit respawn to 3 in 30 mins (instead of 5 in 30s) +cecd68d ceph_test_rados_api_aio: add a test for aio_sparse_read +8849f99 ceph_test_rados_api_io: add tests for sparse_read +64b22dc ceph_test_rados: also send sparse_read in ReadOp +6ca5930 osd: should use ec_pool() when checking for an ecpool +3180499 osd: translate sparse_read to read for ecpool 0d6a8c6 Pipe: Drop connect_seq increase line 4be8a28 osd/PG: peek_map_epoch: skip legacy PGs if infos object is missing f237ed9 osd: allow peek_map_epoch to return an error +d8ac510 WorkQueue: add/remove_work_queue methods now thread safe 3a50b90 crypto: fix unbalanced ceph::crypto::init/ceph::crypto:shutdown 0a5b856 ReplicatedPG,Objecter: copy_get should include truncate_seq and size 82ea02a rgw: fix assignment of copy obj attributes 3b2affc rgw: add delimiter to prefix only when path is specified +e8d6d5a mon: MonitorDBStore: make get_next_key() work properly 9f69660 tests: tiering agent and proxy read 5656eec osd: trigger the cache agent after a promotion dc693fc lockdep: allow lockdep to be dynamically enabled/disabled @@ -61,25 +253,32 @@ e487e8e auth: reinitialize NSS modules after fork() c96541a osdc: Make last missing bh to wake up the reader. 4135b9a osdc: For trust_enoent is true, there is only one extent. 81376b6 osdc: In _readx() only no error can tidy read result. -e80bd0a (origin/wip-12859-hammer-loic) rgw: send Content-Length in response for GET on Swift account. +dba8b5b tools: Don't delete, recreate and re-fill buffers in rados bench. +fa72ecb bufferlist: implement bufferlist::invalidate_crc() +50c82f2 ceph.spec.in summary-ended-with-dot +94699e7 ceph.spec.in libcephfs_jni1 has no %post and %postun +e80bd0a rgw: send Content-Length in response for GET on Swift account. 2e54245 rgw: force content_type for swift bucket stats request 5d57b63 rgw: we should not overide Swift sent content type b8aafbc rgw: enforce Content-Type in Swift responses. 143cfc3 rgw: force content-type header for swift account responses without body b5420d6 rgw: shouldn't return content-type: application/xml if content length is 0 +7475a8f logrotate.conf: prefer service over invoke-rc.d +86f88df mon: fix checks on mds add_data_pool 836f763 OSD: break connection->session->waiting message->connection cycle 77624af osd/PGLog: dirty_to is inclusive aa00373 common: fix code format aab35da test: add test case for insert empty ptr when buffer rebuild 2b0b7ae common: fix insert empty ptr when bufferlist rebuild +a65c398 common/syncfs: fall back to sync(2) if syncfs(2) not available 2348a5b osd: copy the RecoveryCtx::handle when creating a new RecoveryCtx instance from another one bf72785 config: skip lockdep for intentionally recursive md_config_t lock c94fd92 osd: Keep a reference count on Connection while calling send_message() 059bf98 WBThrottle::clear_object: signal if we cleared an object a478385 ceph-disk: always check zap is applied on a full device e471c5d librados: Make librados pool_create respect default_crush_ruleset -35fa47a (origin/wip-corpus-hammer) ceph-object-corpus: add 0.94.2-207-g88e7ee7 hammer objects -b80859e (origin/wip-11455-hammer) rgw: init some manifest fields when handling explicit objs +35fa47a ceph-object-corpus: add 0.94.2-207-g88e7ee7 hammer objects +b80859e rgw: init some manifest fields when handling explicit objs f47ba4b mon: test the crush ruleset when creating a pool b58cbba erasure-code: set max_size to chunk_count() instead of 20 for shec 6f0af18 vstart.sh: set PATH to include pwd @@ -111,21 +310,21 @@ a13c7fd rgw:the arguments 'domain' should not be assigned when return false 6acf36f rgw:segmentation fault when rgw_gc_max_objs > HASH_PRIME 6b36514 rgw: avoid using slashes for generated secret keys 8ba6b2f rgw: url encode exposed bucket -0bc909e (origin/wip-12638-hammer) mon: add a cache layer over MonitorDBStore +0bc909e mon: add a cache layer over MonitorDBStore bee8666 Objecter: pg_interval_t::is_new_interval needs pgid from previous pool b5418b9 osd_types::is_new_interval: size change triggers new interval -f028389 (origin/liewegas-wip-hammer-feature-hammer) include/ceph_features: define HAMMER_0_94_4 feature +f028389 include/ceph_features: define HAMMER_0_94_4 feature 95cefea (tag: v0.94.3) 0.94.3 -81a311a (origin/hammer-12709) Workunits : fs/misc/chmod.sh : Include ACL characters in permission check. -153744d (origin/wip-12682-hammer) tests: increase test coverage for partial encodes/decodes +81a311a Workunits : fs/misc/chmod.sh : Include ACL characters in permission check. +153744d tests: increase test coverage for partial encodes/decodes fca7876 common: bit_vector extent calculation incorrect for last page 3396a96 osd/OSDMap: handle incrementals that modify+del pool -3ab5d82 (origin/wip-12432-hammer) rgw: set http status in civetweb +3ab5d82 rgw: set http status in civetweb 10a0383 civetweb: update submodule to support setting of http status 00d802d hobject_t: fix get_boundary to work with new sorting regime -9b91adc (origin/wip-osd-compat-hammer) mon: disallow post-hammer OSDs if there are up pre-hammer OSDs +9b91adc mon: disallow post-hammer OSDs if there are up pre-hammer OSDs 8a559c1 include/ceph_features: define MON_METADATA feature -4faa8e0 (origin/wip-12577-hammer) osd: include newlines in scrub errors +4faa8e0 osd: include newlines in scrub errors 455eb2a osd: fix condition for loggin scrub errors 67e7946 osd: fix fallback logic; move into be_select_auth_object 0f57c70 osd: log a scrub error when we can't pick an auth object @@ -137,12 +336,12 @@ f2002b7 osd: be precise about "known" vs "best guess" 1357ed1 hobject_t: decode future hobject_t::get_min() properly 6d01d6b OSDMonitor::preprocess_get_osdmap: send the last map as well 2ecb3b7 Fh ref count will leak if readahead does not need to do read from osd -4c199bf (origin/wip-11998-hammer) debian/control: ceph-common (>> 0.94.2) must be >= 0.94.2-2 +4c199bf debian/control: ceph-common (>> 0.94.2) must be >= 0.94.2-2 a785193 ceph.spec.in: drop SUSE-specific %py_requires macro 8804b3f ceph.spec.in: remove SUSE-specific apache2-mod_fcgid dependency -b575ecc (origin/wip-12236-hammer) tests: verify that image shrink properly handles flush op +b575ecc tests: verify that image shrink properly handles flush op d4eb7bd librbd: invalidate cache outside cache callback context -92272dd (origin/wip-12235-hammer) librbd: don't cancel request lock early +92272dd librbd: don't cancel request lock early 58ae92f tests: new test for transitioning exclusive lock 7b21ccb tests: verify that librbd will periodically resend lock request c95b37f common: Mutex shouldn't register w/ lockdep if disabled @@ -150,7 +349,7 @@ c95b37f common: Mutex shouldn't register w/ lockdep if disabled 08ae012 librados_test_stub: watcher id should be the instance id (gid) 704c0e0 librbd: retry lock requests periodically until acquired dbaaed9 librbd: don't hold owner_lock for write during flush -e971820 (origin/wip-12345-hammer) lockdep: do not automatically collect all backtraces +e971820 lockdep: do not automatically collect all backtraces 27f7042 librbd: flush operations need to acquire owner lock 5b39983 librbd: avoid infinite loop if copyup fails 88b583b librbd: flush pending ops while not holding lock @@ -181,7 +380,7 @@ b73e87e librados_test_stub: add support for flushing watches 6d3db5f librbd: add work queue for op completions 64425e8 WorkQueue: ContextWQ can now accept a return code eccf369 packaging: RGW depends on /etc/mime.types -e19f928 (origin/wip-12502-hammer) rgw: conversion tool to fix broken multipart objects +e19f928 rgw: conversion tool to fix broken multipart objects 28d32f6 rgw: only scan for objects not in namespace e22e2b4 rgw_admin: add --remove-bad flag to bucket check 7bddf5d rest_bench: bucketname is not mandatory as we have a default name @@ -213,9 +412,10 @@ fa19474 os/chain_xattr: handle read on chnk-aligned xattr 931ffe3 common/Cycles.cc: skip initialization if rdtsc is not implemented 0fde3a2 buffer: Fix bufferlist::zero bug with special case dabc611 UnittestBuffer: Add bufferlist zero test case -d08db7a (origin/wip-11470.hammer) mon: PaxosService: call post_refresh() instead of post_paxos_update() -154f18c (origin/wip-12465-hammer) Log::reopen_log_file: take m_flush_mutex -b872882 (origin/wip-12237-hammer) librados_test_stub: read op should return number of bytes read +e6eaa91 mon: MonitorDBStore: get_next_key() only if prefix matches +d08db7a mon: PaxosService: call post_refresh() instead of post_paxos_update() +154f18c Log::reopen_log_file: take m_flush_mutex +b872882 librados_test_stub: read op should return number of bytes read 7d9fce3 tests: fixed TestObjectMap.InvalidateFlagInMemoryOnly 4a77be0 librbd: don't attempt to invalidate an object map in R/O mode 0aea70f tests: add new unit tests for object map invalidation @@ -227,7 +427,7 @@ e4b55b3 Fixes: #12286 radosgw-admin: after subuser modify print only once user i 2357b6c rgw: If the client sends a Connection: close header respond accordingly. f819332 ceph.spec.in: install 95-ceph-osd.rules, mount.ceph, and mount.fuse.ceph properly on SUSE d8733be debian: move ceph_argparse into ceph-common -f99f312 (origin/wip-12384-hammer) test: potential memory leak in FlushAioPP +f99f312 test: potential memory leak in FlushAioPP a4fc63a pybind: fix valgrind warning on rbd_get_parent_info call aa3eb28 osdc: invalid read of freed memory 18ede75 krbd: fix incorrect types in the krbd API @@ -248,7 +448,7 @@ b8826bc OSD: add scrub_wq suicide timeout 878dd40 OSD: add snap_trim_wq suicide timeout 1157583 OSD: add recovery_wq suicide timeout a82b450 OSD: add op_wq suicide timeout -89aa8ff (origin/wip-11833-hammer) mon: add an "osd crush tree" command +89aa8ff mon: add an "osd crush tree" command 03c07d7 librbd: assertion failure race condition if watch disconnected 5c812c1 librbd: prevent object map updates from being interrupted e50caab rgw: fix empty json response when getting user quota @@ -268,7 +468,7 @@ c78cc00 rgw: rectify 202 Accepted in response for PUT on existing bucket. 2aaeea1 tests: TEST_crush_reject_empty must not run a mon 80afb81 ceph-helpers: implement test_expect_failure 6b5e9a1 tests: display the output of failed make check runs -5141301 (origin/wip-11975-hammer) mon: add "--check" to CrushTester::test_with_crushtool() +5141301 mon: add "--check" to CrushTester::test_with_crushtool() 5ec27cf crushtool: rename "--check-names" to "--check" 2a8fe88 mon: check the new crush map against osdmap.max_osd c0b0f52 crushtool: enable check against max_id @@ -276,7 +476,7 @@ f041bbe crush/CrushTester: check if any item id is too large cc1cc03 mon: validate new crush for unknown names ff29a7f crushtool: add the "--check-names" option 960ea49 crush/CrushTester: add check_name_maps() method -5e72479 (origin/wip-12021-hammer) OSDMonitor: allow addition of cache pool with non-empty snaps with config +5e72479 OSDMonitor: allow addition of cache pool with non-empty snaps with config ecac1a4 Always provide summary for non-healthy cluster 1a32379 mon/PGMap: add more constness 84ebc3d mon/PGMap: sort pg states by the states in "pg ls" spec @@ -294,12 +494,12 @@ a03968a mon: send no_reply() to peon to drop ignored mdsbeacon d9bbef3 rgw: make compatability deconfliction optional. 0260abd rgw: improve content-length env var handling 8abc46a rgw: fix data corruption when race condition -89d0266 (origin/wip-fix-doc-hammer) doc: add the corresponding @endcond command for @cond +89d0266 doc: add the corresponding @endcond command for @cond 2aa77b3 doc: remove orphan: directive in ceph-create-keys.rst ad66e40 doc: let doxygen ignore src/tracing -356bd2c (origin/wip-11806-hammer) debian: ceph-dbg steals ceph-objectstore-tool from ceph-test-dbg (take 2) +356bd2c debian: ceph-dbg steals ceph-objectstore-tool from ceph-test-dbg (take 2) c5c627f rgw/logrotate.conf: Rename service name -582cf73 (origin/wip-12109-hammer, origin/wip-12109) tests: add librbd watch/notify version compatibility test +582cf73 tests: add librbd watch/notify version compatibility test 43b9aef qa/workunits/rbd: add notify_master/slave bootstrap scripts f995fb5 qa/workunits/rbd: add new test_librbd_api workunit a09da2a tests: create librbd API-only integration test suite @@ -315,11 +515,11 @@ bd3fd92 Fixes to rcceph script 78d894a qa/workunits/rados/test-upgarde-v9.0.1: fix exclude syntax 3e8d60a qa/workunits/rados/test-upgrade-v9.0.1: skip one more evict test 348a3d3 qa: add compatibility filtered rados api tests for upgrades -f68bf94 (origin/wip-11493-hammer) OSDMonitor: disallow ec pools as tiers +f68bf94 OSDMonitor: disallow ec pools as tiers 13c8d58 mon: prevent pool with snapshot state from being used as a tier 58e6266 test/librados/tier.cc: destroy and recreate cache pool on every test 3db1026 doc/release-notes: v0.94.2 -ed5442b (origin/wip-11770-hammer) tests: verify librbd blocking aio code path +ed5442b tests: verify librbd blocking aio code path 20e1048 librbd: new rbd_non_blocking_aio config option b4571b3 PendingReleaseNotes: document changes to librbd's aio_read methods 9ea1edd librbd: AioRequest::send no longer returns a result @@ -347,7 +547,7 @@ d723e11 mds: clear CDir::STATE_REJOINUNDEF after fetching dirfrag 9dfef60 rgw: always check if token is expired fdb43eb ceph.spec.in: tweak ceph-common for SUSE/openSUSE ba1a016 admin/build-doc: fix dependency checks -5a60a03 (origin/wip-4846) man/ceph-create-keys.8: add missing file +5a60a03 man/ceph-create-keys.8: add missing file 19305b8 doc: add ceph-create-keys.8 ffd0933 WorkQueue: added virtual destructor a28adfb WorkQueue: add new ContextWQ work queue @@ -356,15 +556,15 @@ a28adfb WorkQueue: add new ContextWQ work queue a62c3aa ceph.in: handle unknown Exception correctly cc7f744 ceph.in: improve the interactive mode eb26388 ceph.in: parse quote correctly in interactive mode -344328d (origin/wip-11733-hammer) debian: set rest-bench-dbg ceph-test-dbg dependencies -293affe (origin/wip-11622-hammer) rgw: merge manifests correctly when there's prefix override +344328d debian: set rest-bench-dbg ceph-test-dbg dependencies +293affe rgw: merge manifests correctly when there's prefix override a43d248 rgw: restore buffer of multipart upload after EEXIST 558d639 json_sprit: fix the FTBFS on old gcc 678b3e6 json_spirit: use utf8 intenally when parsing \uHHHH ef6641c ceph.spec: update OpenSUSE BuildRequires -0b6d442 (origin/wip-hammer-11535-admin-socket) common/admin_socket: close socket descriptor in destructor -95818da (origin/wip-hammer-package-perf-objectstore) packaging: include ceph_perf_objectstore -6e2dd40 (origin/hammer-uclient-checking) client: fix error handling in check_pool_perm +0b6d442 common/admin_socket: close socket descriptor in destructor +95818da packaging: include ceph_perf_objectstore +6e2dd40 client: fix error handling in check_pool_perm 3c2e6ae client: use SaferCond in check_pool_perm 79b2ac2 client: check OSD caps before read/write c548d8d tests: ceph-helpers kill_daemons fails when kill fails @@ -373,7 +573,7 @@ fb10594 Added a "ceph hello world" for a simple check for ceph-deploy qa suite f4a0dab rgw: send Content-Length in response for HEAD on Swift account. 32f4a74 rgw: send Content-Length in response for DELETE on Swift container. d39a660 rgw: send Content-Length in response for PUT on Swift container. -02a3813 (origin/wip-11370-hammer) librbd: flatten should return -EROFS if image is read-only +02a3813 librbd: flatten should return -EROFS if image is read-only af8939b librbd: allow snapshots to be created when snapshot is active d21c0c0 librbd: better handling for duplicate flatten requests ec0bd1d librbd: use generic helper for issuing async requests @@ -409,7 +609,7 @@ bc51476 ceph_json: add decode / encoder for multimap 7c7e651 cls_rgw: use multimap to keep pending operations in bucket index cb75713 rgw: generate new tag for object when setting object attrs 7387c43 java: libcephfs_jni.so is in /usr/lib64 on rhel -856b2fa (origin/hammer-next) rgw-admin: a tool to fix object locator issue +856b2fa rgw-admin: a tool to fix object locator issue 512ae4c rgw: set a special object locator if object starts with underscore da4d227 rgw: use correct oid when creating gc chains 4e84f31 rgw: civetweb should use unique request id @@ -429,8 +629,8 @@ c615972 librbd: ImageWatcher should cancel in-flight ops on watch error 2864da8 librbd: updated cache max objects calculation 0cdc93f librbd: acquire cache_lock before refreshing parent a1b4aeb librados_test_stub: AIO operation callbacks should be via Finisher -3a58e30 (origin/hammer-11482) mds: remove caps from revoking list when caps are voluntarily released -f30fa4a (origin/wip-11453-hammer-rgw-init-as-root) init-radosgw: run RGW as root +3a58e30 mds: remove caps from revoking list when caps are voluntarily released +f30fa4a init-radosgw: run RGW as root 0ee022b osd/ReplicatedPG: don't check order in finish_proxy_read 8a58d83 Fix ceph_test_async_driver failed 85a68f9 rgw: remove meta file after deleting bucket The meta file is deleted only if the bucket meta data is not synced @@ -443,7 +643,7 @@ 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 +57d2781 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 @@ -456,15 +656,15 @@ bdc664f ECTransaction: write out the hinfo key on touch as well 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 +ccc0839 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 +c176ebf 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 +6f218b1 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 +924ace8 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" @@ -473,7 +673,7 @@ 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 +fc3ce48 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 @@ -483,11 +683,11 @@ a8ced2c rgw: don't overwrite bucket / object owner when setting acls 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 +68719f5 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 +477ac92 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 @@ -495,10 +695,10 @@ f96d58b init-radosgw*: don't require rgw_socket_path to be defined 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 +f5fa25d 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 +01379bd Compile test_build_librgw only if WITH_BUILD_TESTS +1c20417 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" @@ -515,7 +715,7 @@ e0bf132 PGBackend: add debug option to rewrite digest even if present 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 +ba77bda 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 @@ -538,22 +738,22 @@ e1eebb3 osd: refactor RepScrubWQ::_process() 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 +ac527a2 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 +147b1db 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 +7acfdac 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 +dbe2b24 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 @@ -575,29 +775,29 @@ 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) +8dc0bf8 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 +099264f 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 +137800a 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 +eca153e 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 +6cff494 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 +e2283e3 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 +2e74959 mon: Monitor: fix timecheck rounds period +3f73eb4 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 @@ -605,16 +805,16 @@ b8c7bae include/util.h: initialize ceph_data_stats to zero 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 +6f31458 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 +7ed9640 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 cd95b29 Client: check for failures on system() invocation -3ec52da (origin/wip-10961) qa/workunits/rbd/copy.sh: explicitly choose the image format -286a886 (origin/hammer-10912) client: re-send requsets before composing the cap reconnect message -f3ad61a (origin/wip-10864-hammer-packaging-rbd-udev) packaging: move rbd udev rules to ceph-common -ec26f08 (origin/wip-librbd-mdlock) librbd: remove unnecessary md_lock usage +3ec52da qa/workunits/rbd/copy.sh: explicitly choose the image format +286a886 client: re-send requsets before composing the cap reconnect message +f3ad61a packaging: move rbd udev rules to ceph-common +ec26f08 librbd: remove unnecessary md_lock usage 1f9782e librbd: move object_map_lock acquisition into refresh() 27e5ae6 librbd: don't check if object map is enabled before refreshing 876f128 librbd: remove object map on rollback if needed @@ -626,7 +826,7 @@ df42fd3 test_librbd: close ioctx after imagectx 06e5a39 rbd: fix --image-feature parsing eef7466 librbd: apply flag read failure to all snaps 6ac8139 librbd: make ImageCtx->object_map always present -d611121 (origin/wip-librbd-async-operations) tests: add unit test to verify async requests time out +d611121 tests: add unit test to verify async requests time out c295485 librbd: restart async requests if lock owner doesn't report progress c611936 librbd: replace Finisher/SafeTimer use with facade 41e186a librbd: cancel in-progress maint operations before releasing lock @@ -637,45 +837,45 @@ bb4041f librbd: add locking asserts to ImageCtx 4bcbdbf librbd: fix ImageWatcher::is_lock_supported() locking a94ceb6 librbd: add and use a test_features() helper cffd93a librbd: use ImageCtx->snap_lock for ImageCtx->features -468839e (origin/wip-librbd-image-watcher-tests) tests: add additional test coverage for ImageWatcher RPC +468839e tests: add additional test coverage for ImageWatcher RPC 915064a librbd: add ostream formatter for NotifyOp 260c820 fuse: do not invoke ll_register_callbacks() on finalize -75d8c01 (origin/wip-10862-hammer) mon: do not try and "deactivate" the last MDS -a79e905 (origin/wip-devel-python-split) qa: fix python-ceph reference +75d8c01 mon: do not try and "deactivate" the last MDS +a79e905 qa: fix python-ceph reference 46b45e3 doc: fix python-ceph refs in docs d1c82ea ceph.spec: specify version 2a23eac debian: split python-ceph 39982b1 Split python-ceph to appropriate python-* packages -bd40f23 (origin/wip-librbd-python-tests) tests: speed up Python RBD random data generation +bd40f23 tests: speed up Python RBD random data generation 655e616 tests: fix potential race conditions in test_ImageWatcher -9c03750 (origin/wip-osdc-watch-error) osdc: watch error callback invoked on cancelled context +9c03750 osdc: watch error callback invoked on cancelled context a9bfd5d ceph_test_rados_api_watch_notify: wait longer for watch timeout -91cda52 (origin/wip-10788) osd: better debug for maybe_handle_cache +91cda52 osd: better debug for maybe_handle_cache bee9154 osd,mon: explicitly specify OSD features in MOSDBoot 30c904e osd: do not proxy reads unless all OSDs proxy features too e0e765f osd/OSDMap: cache get_up_osd_features -63f6c9b (origin/wip-librbd-snap-create-race) librbd: fixed snap create race conditions -69b3857 (origin/wip-10898) librbd: improved ImageWatcher duplicate message detection +63f6c9b librbd: fixed snap create race conditions +69b3857 librbd: improved ImageWatcher duplicate message detection 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 +0ed296b rbd: disable RBD exclusive locking by default 2b63dd2 DBObjectMap: lock header_lock on sync() 170c88d 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 -970bb49 (origin/wip-10883) osd: Fix FileJournal wrap to get header out first -01f04cb (origin/wip-10914) osdc: pass fadvise op flags to WritebackHandler read requests +55d3db9 cls_rbd: invalidate bufferlist CRC when updating object map +970bb49 osd: Fix FileJournal wrap to get header out first +01f04cb osdc: pass fadvise op flags to WritebackHandler read requests c463242 osd/OSDMap: include pg_temp count in summary d6e2689 PG: compensate for bug 10780 on older peers 1d0d3dc PG: add a config option to enable (by default) recovery below min_size -08eb584 (origin/wip-10899) librbd: fixed ImageWatcher recursive locking issues +08eb584 librbd: fixed ImageWatcher recursive locking issues 48466f8 ReplicatedPG: only allow a degraded write if we have at least min_size copies d05539e ECBackend: use tbl for empty transaction as well if necessary e059d58 ReplicatedBackend: use tbl for empty transaction to backfill peer also 25f9363 osd/: s/is_degraded_object/is_degraded_or_backfilling_object -4f55d41 (origin/wip-10900) test/librbd/fsx.c: disable RBD object map for krbd -487c205 (origin/wip-10892) osd: clear obc cache on_shutdown -c341c52 (origin/wip-10884-hammer-rpm-devel-split) ceph.spec: split ceph-devel to appropriate *-devel packages +4f55d41 test/librbd/fsx.c: disable RBD object map for krbd +487c205 osd: clear obc cache on_shutdown +c341c52 ceph.spec: split ceph-devel to appropriate *-devel packages ea66f5c doc: RGW is "built on top of librgw" changed to "librados" b220b2a librbd: enforce write ordering with snapshot 0de6b61 librbd: use separate files for snapshot object maps @@ -693,15 +893,15 @@ caf2e1d cmake: add os/XfsFileStoreBackend.cc to rules 62dd0c2 erasure-code: mark the shec plugin as experimental f9c90e7 tests: fix unused variable warning 3a3bb6d common: capture check_experimental_feature_enabled message -d8f0215 (origin/wip-10787) mon/OSDMonitor: note osd map epoch in one other place +d8f0215 mon/OSDMonitor: note osd map epoch in one other place d9b0cd3 mon/OSDMonitor: move osd epoch cache update into helper, add fixme b80e6ae README.md: fix the indent of a command line usage 4038d21 cleanup: delete useless member variable 280a198 PG,ReplicatedPG: make missing_digests local to scrub_compare_maps 8e806bc Docs: OSD name, not id, needs to be given to remove an item from the CRUSH map. Include command for deleteing bucket from the CRUSH map. a5759e9 mon/OSDMonitor: do not trust small values in osd epoch cache -87544f6 (origin/wip-10844) mon: MonCap: take EntityName instead when expanding profiles -fd83020 (origin/wip-decoding-oldest-snap) mds: fix decoding of InodeStore::oldest_snap +87544f6 mon: MonCap: take EntityName instead when expanding profiles +fd83020 mds: fix decoding of InodeStore::oldest_snap 6918a98 tests: Dockerfile COPY with two arguments 98297e0 tests: update docker helper documentation 1023aa9 tests: add Dockerfile for centos-6 @@ -709,15 +909,15 @@ b3771eb tests: one Dockerfile per repository:tag b9b5868 osd: fix OSDCap parser on old boost/spirit 4ced591 osd/OpRequest: pass string by const& 74d5ccf osd/: include version_t in extra_reqids with promote -de6b53a (origin/hadoop) qa: hadoop plays nice with new teuthology task +de6b53a qa: hadoop plays nice with new teuthology task 3c05c9c tests: no need for python-flask at build time b24a01b erasure-code: initialize all data members 1a9d717 erasure-code: fix uninitialized data members on SHEC e2a5085 ReplicatedPG::on_change: requeue in_progress_async_reads close to last a5ecaa1 ReplicatedPG::on_change: clean up callbacks_for_degraded_object 2d2dc13 mon/PGMonitor: drop pg ls debug line -65ce7b7 (origin/wip-da-fix-xio-configure) fix configure to reflect the missing libs for xio -a5804c4 (origin/wip-early-adopters) doc: add a page for CephFS early adopters +65ce7b7 fix configure to reflect the missing libs for xio +a5804c4 doc: add a page for CephFS early adopters d237649 doc/cephfs: Ceph FS -> CephFS 65dfd5d doc/cephfs: clarify the 'not production ready' warning 700459b build-doc: package checks for fedora @@ -725,17 +925,17 @@ c5a74a7 build-doc: don't ignore errors 94f9f60 tests: clone ceph-erasure-code-corpus from ceph 807cf57 xio: Fix out-of-order responses 807af4c cmake: Fix cmakelist to compile librbd -418ca0c (origin/wip-10784) osd: Update object state after removing watch from object info +418ca0c osd: Update object state after removing watch from object info 27905fd osd: Simplify handle_watch_timeout() using existing support functions -45c388f (origin/wip-objecter-linger-locking) objecter: protect linger_op last_error and registered fields +45c388f objecter: protect linger_op last_error and registered fields 69ee5ec objecter: remove unused RWLock::Context e01c93d objecter: clarify a few lock assertions a60d5fa objecter: remove dead race handling code 1b2da9b objecter: remove dead _get_op_target_session() method 4f36eae ceph.spec.in: junit always except for EPEL 6 -9656018 (origin/wip-10791-stopping) MDSMonitor: do not allow MDS to transition from STATE_STOPPING +9656018 MDSMonitor: do not allow MDS to transition from STATE_STOPPING 6898f0b rgw: Swift API. The second way of specifying desirable response format. -e504003 (origin/wip-10719) rgw: remove multipart entries for bucket index when aborting +e504003 rgw: remove multipart entries for bucket index when aborting 3e54acb rgw: encode rgw_obj::orig_obj 64d7265 librados: code reformatting only. 3f11ab0 librados: add info about restrictions on rados_monitor_log() usage. @@ -748,7 +948,7 @@ d3fc5bd Fix bug: When run Test_filejournal testcase with gtest argument, all of 93f32f0 erasure-code: fix compilation warnings 01e154d osd: fix PG leak in SnapTrimWQ._clear() a850514 fsync-tester: print info about PATH and locations of lsof lookup -b14ca1f (origin/wip-10737) test_libcephfs: test we can't set layouts on existing files +b14ca1f test_libcephfs: test we can't set layouts on existing files 36d37aa rados.py: keep reference to python callbacks 7002f93 ShardedThreadPool: make wait timeout on empty queue configurable 32d7617 osd/PG.c: use boolean to init `bool` variables @@ -759,7 +959,7 @@ a3b1583 add tests for ceph pg ls-by-pool 39e2640 add CLI ceph pg ls-by-osd 742c5e8 add tests for ceph pg ls-by-primary f814262 fix error : ceph pg ls 0 -203c06d (origin/wip-old-gcc) locally disable pragma warnings on gcc < 4.6 +203c06d locally disable pragma warnings on gcc < 4.6 93629d3 Pipe: conditionally compile IPTOS setting b025fbf librbd: consolidate all async operation flush logic 0a00be2 xlist: added missing include @@ -771,8 +971,8 @@ b4f2e75 osd: add perf counter for proxy read 7920db3 tests: make ceph_watch_wait output watchfile content on failure ac9d75c mon: noforward flag for commands that are not supposed to be forwarded 3ff4821 mon: fix Monitor::_get_moncommand() -27bab65 (origin/wip-10765) rados: make 'watch' command unwatch when done -45f842d (origin/wip-doc-ports) doc: remind user to calculate the correct max port +27bab65 rados: make 'watch' command unwatch when done +45f842d doc: remind user to calculate the correct max port c65d8ed doc: fix "7810" port typo fe47e23 doc: correct default of ms_bind_port_max d2eaeea AsyncConnection: fix incorrect condition for exchanging in_seq @@ -785,22 +985,22 @@ e070718 osdc/Objecter: do watch/notify op completions synchronously 293cd39 tests: run osd-scrub-repair.sh with make check bae1f3e FileJournal: fix journalq population in do_read_entry() 15350a0 ceph_objectstore_tool: fix check_output on python2.6 -86fd8c3 (origin/wip-10761) librados_test_stub: added new blacklist_add method +86fd8c3 librados_test_stub: added new blacklist_add method 7ecf864 tests: update librbd tests to handle blacklisting 25d7ac2 librbd: optionally blacklist clients before breaking locks 9dfd4ac mailmap: UMD is University of Maryland a616de9 librados: add blacklist_add API method 6a91f2b libradosstriper: fixed write_full when ENOENT -0514536 (origin/wip-opath-setattr) client: handle O_PATH fds on setattr too -636a269 (origin/wip-librbd-maint-tests) tests: add simple tests for proxied maintenance operations -9f2f306 (origin/wip-10785) librbd: ensure ImageWatcher notifications are idempotent +0514536 client: handle O_PATH fds on setattr too +636a269 tests: add simple tests for proxied maintenance operations +9f2f306 librbd: ensure ImageWatcher notifications are idempotent f86fb97 rgw: obj delete operation can use remove_objs param 538395d rbd.py: Add rbd_read2/rbd_write2 funcion which can handle fadvise flags. 7890256 librbd: minor ImageWatcher cleanup debd7f3 tests: relax librbd ImageWatcher test case state machine -dfee96e (origin/wip-10770) rgw: send appropriate op to cancel bucket index pending operation +dfee96e rgw: send appropriate op to cancel bucket index pending operation cbfa08e mds: disallow layout changes for files with data -b3fdf15 (origin/wip-cephfs-snap1) mds: avoid propagrating unnecessary snap rstat to parent +b3fdf15 mds: avoid propagrating unnecessary snap rstat to parent 32b0892 mds: update client_need_snapflush when splitting snap inode 6cb9b01 mds: fix rdlock snap inode d62c67c mds: save the oldest snapid of inode @@ -835,7 +1035,7 @@ dbf09af mds: fix CInode::remove_need_snapflush 1d9de22 mds: fix MDCache::journal_cow_dentry() 32b1a9a mds: check snaprealm before drop dentries in deleted directory 1479300 mds: properly update CInode->first during journal replay -5b75e30 (origin/wip-10827) osdc/Objecter: linger_register now acquires rwlock +5b75e30 osdc/Objecter: linger_register now acquires rwlock 3cf7fcc install-deps.sh: check for debian/control existence 09c152a run-make-check.sh: git --ancestry-path is not backward compatible 400ac23 mon: ignore osd failures from before up_from @@ -852,31 +1052,31 @@ c252e05 AsyncConnection: fixup for 2ffacbe (crc configuration in messenger) a3fc9d4 AsyncConnection: fix wrong scope of data blocks 0db7c48 SubmittingPatches: clarify the use of branches in PRs adebf22 rbd_recover_tool: move rbd_recover_tool directory to src/tools subdirectory -70ae314 (origin/wip-opath) client: fix O_PATH on older Linux systems +70ae314 client: fix O_PATH on older Linux systems 2f49de5 ReplicatedPG: block writes on degraded objects unless all peers support it 2a83ef3 include/encoding: fix an compile warning 71c6d98 msg: fixup for 2ffacbe (crc configuration in messenger) -2598fc5 (origin/wip-10734) ObjectStore: fix Transaction encoding version number -46f9ca4 (origin/wip-10782) pybind: fixed runtime errors with librbdpy -9124a76 (origin/wip-8600) test/vstart_wrapper.sh: set PATH before calling vstart.sh +2598fc5 ObjectStore: fix Transaction encoding version number +46f9ca4 pybind: fixed runtime errors with librbdpy +9124a76 test/vstart_wrapper.sh: set PATH before calling vstart.sh 189ef38 init-ceph.in: add $PWD to PATH if running as ./init-ceph 0d80691 qa: workunits: cephtool/test.sh: test 'ceph osd setcrushmap' ff74873 mon: OSDMonitor: use CrushTester::test_with_crushtool 58ea017 crush: CrushTester: add test_with_crushtool() 481d563 tools: crushtool: allow '--infile -' to pipe read from STDIN -b2549a6 (origin/wip-export-dir) mds: implement export dir asok +b2549a6 mds: implement export dir asok 190c7e3 client: implement support for O_PATH on Linux. 911e4c0 client: add support for O_NOFOLLOW in Client::open(). a7a6fe4 rbd-recover-tool: add usefull information of this tool include README, FAQ, TODO ea69219 rbd-recover-tool: add a test case for raw image & snapshot 4f395eb rbd-recover-tool: implement the function framework add control files & config files aa3cda2 rbd-recover-tool: add the basic function files -97abcdd (origin/wip-traceless-reply) mds: properly record created inode in completed requests list +97abcdd mds: properly record created inode in completed requests list 419800f client: re-send request when MDS enters reconnecting stage b66caef mds: avoid sending traceless reply for request that created new inode d12d92d mds: process completed requests in clientreplay stage 0548bea doc: Removed references to Inktank suppport. -2d1803b (origin/wip-da-SCA-20150129) xio/XioMsg.h: use static_cast instead of c-style cast +2d1803b xio/XioMsg.h: use static_cast instead of c-style cast babac0c doc: Removed Inktank reference. 0d46790 mds/MDS.cc: don't compare integer with bool aa7c968 EventKqueue.cc: clarify calculation precedence for '&' and '?' @@ -914,13 +1114,13 @@ c6a60d9 ReplicatedPG::do_op: ignore snapset_obc if !exists 85cdd12 tests: add Dockerfile for fedora 65c7e07 doc/release-notes: v0.92 f4d6515 install-deps.sh: get lsb_release if needed -24349a8 (origin/wip-8903) librbd: removed lingering TODO message from ImageWatcher -17a8330 (origin/wip-10720) mds: fix leaked MDCache::logger +24349a8 librbd: removed lingering TODO message from ImageWatcher +17a8330 mds: fix leaked MDCache::logger 9e9356b librbd: fixed object map issues discovered via fsx -6071142 (origin/wip-librbd-watch-errors) librados_test_stub: added Rados::watch_flush +6071142 librados_test_stub: added Rados::watch_flush 1b110a5 librbd: better handling for image watch errors 225a19f vstart.sh: fix .ceph_port typo -8d61c39 (origin/wip-librbd-invalid-map) librbd: prevent copyup during image shrink operations +8d61c39 librbd: prevent copyup during image shrink operations be05d9d rdb: update init-rbdmap to fix duplicate mount point fbcde04 cls_rbd: fixed object_map_resize boundary issue 14424c8 librbd: removing objects can lead to infinite loop @@ -930,18 +1130,18 @@ bb8c9ae librbd: pending AIO operations are now flushed asynchronously d00891f rbd: add image flags to 'rbd info' 706a655 librbd: added get_flags API methods 16e4d71 cls_rbd: get_flags now reads all snapshot flags -7dd2de8 (origin/wip-10707) test/cls_rgw: fix test -e0f12d9 (origin/wip-autogen) Fix do_autogen.sh so that -L is allowed -cfab01e (origin/wip-10722) rgw: move perf cleanup before context cleanup +7dd2de8 test/cls_rgw: fix test +e0f12d9 Fix do_autogen.sh so that -L is allowed +cfab01e 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 +00a3ac3 (tag: 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 -f40ee8c (origin/wip-lttng) do_autogen.sh: default to --with-lttng, -L to build without -7590387 (origin/wip-assert-version) librados: add missing tracepoints +eb526af rbd: watch command should unwatch before exiting +2a0e9b7 encoding: ignore uninitialized instantiation in boost::optional decode +f40ee8c do_autogen.sh: default to --with-lttng, -L to build without +7590387 librados: add missing tracepoints 57bac8e osd: change pg_stat plain to display CRUSH_ITEM_NONE in pgmap output section. 4aa9f3f man: add rbd status to doc/man/8/rbd.rst a007c52 doc: add cephfs disaster recovery guidance @@ -959,8 +1159,8 @@ a1f634b add CLI ceph pg ls [pool] [state] bd8671f ceph_test_rados: fix typo ac161bf librados: expose rados_{read|write}_op_assert_version() in C 11b6424 Add test case for librados assert_version() -eb45f86 (origin/wip-10106) rgw: flush xml header on get acl request -de2e5fa (origin/wip-10572) rgw: finalize perfcounters after shutting down storage +eb45f86 rgw: flush xml header on get acl request +de2e5fa rgw: finalize perfcounters after shutting down storage cab246d librbd: Don't do readahead for random read. 77689f1 ReplicatedPG::C_ProxyRead: fix dropped lock 0e3af8d ReplicatedPG: only populate_obc_watchers if active @@ -985,9 +1185,9 @@ a74296f PG::purge_strays: purge peer_missing as well f9abffb osd/: don't block writes on degraded objects c632fec osd/: update peer_missing and local missing if we write a degraded object 56b8fc8 ReplicatedPG: always take recovery_read_lock for recovery -1c25dba (origin/wip-10701) rgw: use strict_strtoll() for content length +1c25dba rgw: use strict_strtoll() for content length b1435e6 xio: Enforce at least two portals if bind -cbf0691 (origin/wip-10698) rgw: fail s3 POST auth if keystone not configured +cbf0691 rgw: fail s3 POST auth if keystone not configured 10ddab8 doc: Fixed hyperlink. a0a5185 rgw: Response 204 when post on containers b7ab624 xio: Remove whitespace changes @@ -1005,20 +1205,20 @@ fc76c89 osdc: add new filed dontneed in BufferHead. c83a288 Rework ceph-disk to allow LUKS for encrypted partitions 707c78b Only create a key of 256 bits length, not 256 bytes 6a45b8e add all possible ceph-disk run-time requirements to build time deps -4c50f6a (origin/wip-rgw-versioning-4) rgw: more merge related fixes +4c50f6a rgw: more merge related fixes 01cc9d5 rgw: fix merge artifact e26023e PG: set scrubber.start = scrubber.end after scrub_compare_maps 4f9e6ed PG: remove block_writes from scrubber bed22b4 doc: improve incomplete state documentation -89bd6b1 (origin/wip-hints) librados: rename NOREUSE to NOCACHE -8571739 (origin/wip-10688-boost-157) support Boost 1.57.0 -f623906 (origin/wip-pg-reqids) osd/PGLog: only do slow extra_reqid search of object appears at least once +89bd6b1 librados: rename NOREUSE to NOCACHE +8571739 support Boost 1.57.0 +f623906 osd/PGLog: only do slow extra_reqid search of object appears at least once eefdb32 osd: preserved extra_reqids on promote, flush 4d310a8 osd: preserve extra_reqids in PGLog 2ad229c osd: allow extra reqids to be stashed in each pg_log_entry_t ca71376 cls_rgw: fix rgw_bucket_olh_log_entry::epoch initialization 61378f2 add pg_string_state function -4feb864 (origin/wip-10194-master) rgw: reuse fcgx connection structure +4feb864 rgw: reuse fcgx connection structure 32b9bb7 QueueRing: a reduced contention queue ecd5e5a test/encoding/types.h: add new structs for testing 5849380 cls_rgw: add missing struct test instance generator @@ -1034,13 +1234,13 @@ caefe69 rgw: version id should not contain underscore 0b9859b cmake: Fix CMakelist.txt to compile librbd, libcommon 51dd9b2 xio: Spread and accept connections using different portals e761b74 async: directly call delete without check -68c6f0e (origin/t-miyamae-wip-mshec-r44) mSHEC r44 initial commit +68c6f0e mSHEC r44 initial commit e45e97b run-make-check: use nproc and shorter git expression 0a998f5 edited failure conclusion 4527e8f corrected some confusing numbers 94b60c5 osd: don't log op stats for proxy read in the cache tier a66898f cleanup : remove unused perf counter -a871651 (origin/wip-4087) librbd: object map updates should use AIO +a871651 librbd: object map updates should use AIO 4328069 test: correct two issues with the librados_test_stub b63246f librbd: refactor existing object map code to its own class f4b9442 cls_rbd: object_map_resize shrink protection @@ -1052,35 +1252,35 @@ f4b9442 cls_rbd: object_map_resize shrink protection a41878a librbd: Use object map for IO operations 7e751ce librbd: Implement object map for tracking in-use objects 13fd6d1 cls_rbd: Add methods for manipulating an image object map -ca214c9 (origin/wip-8251-2) rgw: also convert sharded replicalog entries +ca214c9 rgw: also convert sharded replicalog entries 0a4956e rgw: get rid of replicalog index_by_instance param c4a6eab rgw: fixing rebase casualties 791c15b rgw: convert old replicalog entries if needed 778a53a rgw-admin: add replicalog update command 1cb10d7 async: add same behavior when message seq mismatch with simple -8d56ade (origin/wip-librbd-tests) tests: ensure RBD integration tests exercise all features -b6d6f90 (origin/wip-mdsmon-args) mon/MDSMonitor: fix gid/rank/state parsing +8d56ade tests: ensure RBD integration tests exercise all features +b6d6f90 mon/MDSMonitor: fix gid/rank/state parsing 9b9a682 msg/Pipe: set dscp as CS6 for heartbeat socket 1e236a3 mds: don't join on thread which has not been runned. -6939e8c (origin/zhouyuan-submodule_https_git) Update git submodule to use the same https protocol +6939e8c Update git submodule to use the same https protocol e393810 librbd: make librbd cache send read op with fadvise_flags. a23676b librbd: Don't do readahead for random read. 8d0295c rgw: extend replica log api (purge-all) 6b0151c utime: extend utime parsing e274e10 rgw: fix replica log indexing -0be7925 (origin/wip-fuse-regress-note) Update PendingReleaseNotes for ceph-fuse change in Giant +0be7925 Update PendingReleaseNotes for ceph-fuse change in Giant 77bd883 test_msgr: add auth enabled basic test 408db65 async_msgr: crc configuration in messenger ce941f6 async: Delete authorizer when connected -a8e2579 (origin/wip-perf-filter) common: filtering in `perf dump` +a8e2579 common: filtering in `perf dump` e5ddc50 tests: bring back useful test 'ceph tell osd.foo' 7c59bc0 cleanup: replace some length() with !empty() 17add06 cleanup: replace some size() with !empty() 9a9670c tests: better EPEL installation method -bf05ec1 (origin/wip-gmock) tests: replace existing gtest 1.5.0 with gmock/gtest 1.7.0 -5301b2b (origin/wip-10637) librbd: trim header update not using AIO +bf05ec1 tests: replace existing gtest 1.5.0 with gmock/gtest 1.7.0 +5301b2b librbd: trim header update not using AIO 5cbe0c5 gmock: use Google C++ Mocking Framework for unit tests -ca1d21e (origin/wip-install-deps) install-deps: fix LC_ALL setting +ca1d21e install-deps: fix LC_ALL setting e4a97c6 librados_test_stub: add IoCtx::get_instance_id() f6406c9 qa: small improvements to merge-diff test 4e88414 rbd-fuse: clean up when shutdown @@ -1094,25 +1294,25 @@ dfa96c5 librbd: Add maintenance operation requests to ImageWatcher e6f1280 librados: Expose RadosClient instance id through librados 398bc96 librbd: Create async versions of long-running maintenance operations 87ef462 rgw: format mtime of radosgw-admin bucket stats -dc1630e (origin/wip-librbd-trim-error) librbd: trim would not complete if exclusive lock is lost +dc1630e librbd: trim would not complete if exclusive lock is lost 3347e0d bug: error when installing ceph dependencies with install-deps.sh -4e90a31 (origin/wip-10617) osd: add failure injection on pg removals +4e90a31 osd: add failure injection on pg removals 9b220bd ceph.spec.in: use wildcards to capture man pages 51e3ffa rgw: reorder bucket cleanup on bucket overwrite 313d6a5 rgw: access appropriate shard on bi_get(), bi_put() b304af3 librbd: clean up log message for copy-on-read 879fd0c osd: do not ignore deleted pgs on startup -6f6facb (origin/wip-librbd-close-deadlock) librbd: potential deadlock on close_image +6f6facb librbd: potential deadlock on close_image bda293a librbd: fix copy-on-read / resize down race condition e917033 test: add rados_nobjects_list_xyz functions to librados test stub 7c7f072 librbd: eliminate CoR callback 9790b0f librbd: use finisher for copy-on-read copyup fulfillment cfce41d ReplicatedPG::hit_set_persist: update ssc->snapset as well f1f6f0b ReplicatedPG::hit_set_persist: write out oi.digest, these objects are immutable -4dda030 (origin/wip-noreuse) librados: add FADVISE_NOREUSE +4dda030 librados: add FADVISE_NOREUSE 9edd0a5 ceph.spec.in: move rgw logrotate to rgw subpackage 050a59e osd/OSDMap: remove unused variables -55dfe03 (origin/wip-4092) librbd: schedule header refresh after watch error +55dfe03 librbd: schedule header refresh after watch error 33f0afd doc: Some files still use http://ceph.newdream.net 2f9b3bd ceph-debugpack: fix bashism of {1..10} 5652a1d cls_rgw; fix json decoding and encoding of certain type @@ -1137,7 +1337,7 @@ cd7ed04 osd/: s/backfill_read/recovery_read for obc locking 6a025ef PGLog: trim mod_desc after appending to the log a6eadae rbd image_read.sh: disable exclusive locking f51ff28 vstart.sh: pull default CEPH_PORT from .ceph_port -35fcb04 (origin/wip-crush-straw2) Change crush_ln to provide 32 more digits. +35fcb04 Change crush_ln to provide 32 more digits. 6289912 crush: improve straw2 adjustment slightly 32a1ead Add crush_ln to calculate nature log efficently 0eca13d crush: fix dump for hammer tunables @@ -1147,25 +1347,25 @@ f51ff28 vstart.sh: pull default CEPH_PORT from .ceph_port 6e084f6 unittest_crush: rename straw tests d4ec757 crush: move default bucket choice into CrushWrapper helper 14eb1a7 crush/builder: fix warnings -07eadc4 (origin/wip-10474) FileJournal: Fix hang in FileJournal::close() +07eadc4 FileJournal: Fix hang in FileJournal::close() 2865e13 doc: Change Availability text in all of the man pages b04f698 Doc: Fix the extra blank space in doc/start/quick-rbd.rst -9930028 (origin/wip-mon-pgtemp) osd: OSDMap: remove pg temps for inexistent pools +9930028 osd: OSDMap: remove pg temps for inexistent pools 34f5c17 use shardid as a key of the shardinfo when "dump_op_pq_state". Signed-off-by: huangjun 804deec Fix memstore free space caculation 6239151 RocksDBStore: filterpolicy is not deleted when RocksDBStore destructs -2e8bb1e (origin/wip-10614) test/librbd/fsx.c: disable RBD exclusive locking for krbd +2e8bb1e test/librbd/fsx.c: disable RBD exclusive locking for krbd 9ad9ba8 doc: Fix a typo in radosgw-admin doc 008698b doc: Change Availability text in all of the man pages 6f44f7a Revert "Revert "Merge remote-tracking branch 'origin/wip-bi-sharding-3' into next"" -90a90bb (origin/wip-rgw-versioning-3) rgw: set default value for swift versioning extension +90a90bb rgw: set default value for swift versioning extension dc11ef1 PGBackend: fix and clarify be_select_auth_object 26656e3 rgw: fix bucket removal with data purge b18b14b ObjectStore::_update_op: treat CLONERANGE2 like CLONE 4d3b49e rbd: ensure aio_write buffer isn't invalidated during image import 500f4b4 rgw: assign versioned_epoch on bucket listing response 8cbfac4 Wrong HTTP header name -a0af5de (origin/wip-10579) qa: move fs quota to its own dir +a0af5de qa: move fs quota to its own dir 2ce38db osd: fix some compile warning b9be97f Doc: Fix the typo in doc/rbd/rados-rbd-cmds.rst fe93f73 test: fix rbd cli tests for new feature bit @@ -1174,10 +1374,10 @@ c68ecc7 xio: Enable xio option to call fork init b1b299d osd: revert d427ca35404a30e1f428859c3274e030f2f83ef6 46347fc osd: Transction::append SHOULD NOT modify other.op_bl 988d007 ReplicatedPG::on_change: clear cache at the end -8453f71 (origin/wip-10555) mon: Do not allow empty pool names when creating +8453f71 mon: Do not allow empty pool names when creating 68af510 ceph-disk: do not reuse partition if encryption required 48963ba test_msgr: Rename unittest_msgr to ceph_test_msgr -b311e7c (origin/wip-10257) mon: PGMonitor: skip zeroed osd stats on get_rule_avail() +b311e7c mon: PGMonitor: skip zeroed osd stats on get_rule_avail() 8be6a6a mon: PGMonitor: available size 0 if no osds on pool's ruleset e84f27e doc: Replace placeholder with 'gateway' 190c185 librbd: copy-on-read Addressed Jason's review comments. @@ -1189,7 +1389,7 @@ f408c8e librbd: copy-on-read for clones, write entire object into child asychron 08faee0 doc: mon should be listed before osd 6b1c92c Doc : Documentation#10205 b8dd228 doc bug 10206 -9147c62 (origin/wip-10576) ceph_test_rados_api_misc: do not assert rbd feature match +9147c62 ceph_test_rados_api_misc: do not assert rbd feature match 6d209c2 rgw: cors set attrs on bucket using appropriate call 2c36798 rgw: switch index ops to new apis 11befab rgw: break if done when timing out pending olh ops @@ -1301,7 +1501,7 @@ d53275c ceph_test_objectstore: fix keyvaluestore name 738f868 PGBackend: do not update oi digest on inconsistent object 8ab3c41 osd: new pool safeguard flags: nodelete, nopgchange, nosizechange 6613358 Revert "Merge remote-tracking branch 'origin/wip-bi-sharding-3' into next" -66f3bd6 (origin/wip-recover-dentries) tools: output per-event errors from recover dentries +66f3bd6 tools: output per-event errors from recover dentries 3e15fd5 tools: handle hardlinks in recover_dentries 9d91757 tools: recover_dentries efficiency e2ae91f tweak comment wording in recover_dentries @@ -1310,7 +1510,7 @@ e2ae91f tweak comment wording in recover_dentries d94a7a8 tools: remove duplicated InoTable encoding 478659f JournalTool: handle corrupt fnodes 36830eb tools/cephfs: add recover_dentries to journaltool -46326ff (origin/wip-10388) mds: perfcounters for RecoveryQueue +46326ff mds: perfcounters for RecoveryQueue 62b4e43 mds/MDCache: stray/purge perfcounters 4bd0894 Doc: rbd-snapshot: Fix the typo 07e1d18 rbd: fix bug about rbd watch command @@ -1318,7 +1518,7 @@ bbaf582 mon: handle case where mon_globalid_prealloc > max_global_id d29aef5 doc: Fix OpenStack Glance configuration 1d1215f mon: change mon_globalid_prealloc to 10000 (from 100) be1416a mon: silently ignore mark_down, mark_disposable on AnonConnection -b5e1bd1 (origin/wip-osd-df) mon/OSDMonitor: pull totals into the table format +b5e1bd1 mon/OSDMonitor: pull totals into the table format 169d680 mon/OSDMonitor: don't -nan for variance when no osds 9aa0006 common/TextTable: do padding during final step ea5166e mon/OSDMonitor: drop unnecessary stringify @@ -1404,9 +1604,9 @@ b383b52 rgw: enable s3 get/set versioning ops 0d97b40 rgw: get bucket versioning status op 8ed79d6 rgw: add versioning_enabled field to bucket info 50547dc mon: PGMonitor: fix division by zero on stats dump -dbaa142 (origin/wip-bi-sharding-3) rgw: bilog marker related fixes -c4548f6 (origin/wip-10439) pybind: ceph_argparse: validate incorrectly formed targets -80a9d99 (origin/wip-mon-fixes) mon: Monitor: return 'required_features' on get_required_features() +dbaa142 rgw: bilog marker related fixes +c4548f6 pybind: ceph_argparse: validate incorrectly formed targets +80a9d99 mon: Monitor: return 'required_features' on get_required_features() ab996c1 mon: Elector: output features in handle_propose() bb48ebe mon: Elector: put dangling message reference 0a369b9 mon: mkfs compatset may be different from runtime compatset @@ -1421,12 +1621,12 @@ bb582d9 librados: clean up code. 7cfdba2 librbd: clean up code. 7372ac7 crush: move two crush tests over ddb91b2 crush: rename unit tests -7e1553c (origin/wip-10553) rgw: fix partial GET in swift -e7d5fdd (origin/wip-10552) client: fix getting zero-length xattr +7e1553c rgw: fix partial GET in swift +e7d5fdd client: fix getting zero-length xattr 97c1881 osd/PG: do not republish unchanged pg stats d2e1049 osd/PG: avoid most of publish_stats_to_osd for non-primary 65d3342 osd/osd_types: add operator== for pg stat types -2f31606 (origin/wip-cephfs-tabletool) tools: create cephfs-table-tool +2f31606 tools: create cephfs-table-tool b8ffe5c mds: give MDSTables a `rank` attribute ea153c3 mds: abstract SessionMapStore from SessionMap d8d608d erasure-code: update links to jerasure upstream @@ -1437,7 +1637,7 @@ dac666f erasure-code: tests use different pool/profile names 4d07a32 crush: update tries statistics for indep rules 6c34528 erasure-code: update jerasure/gf-complete submodules fc01b01 doc: add cases where ceph-extras is not needed -2dc29de (origin/wip-9780-9781) ceph-objectstore-tool, test: Fix objectstore name changed to keyvaluestore +2dc29de ceph-objectstore-tool, test: Fix objectstore name changed to keyvaluestore 0c5b66d osd: Get pgid ancestor from last_map when building past intervals 7fb721c osd: Pass oldest_map when generating past intervals b9a0484 osd: build_push_op() handle short reads so recipient doesn't crash @@ -1490,16 +1690,16 @@ f4fcff1 AsyncMessenger: Bind async thread to special cpu core d91fe8b test_shared_cache::get_next: fix get_next call on uninitialized value 37dc423 shared_cache: reduce duplication between get_next's 9db5969 fix command 'ceph pg dump_stuck degraded' -3408156 (origin/wip-mon-drop-conversion) mon: Monitor: drop StoreConverter code +3408156 mon: Monitor: drop StoreConverter code 1d814b7 ceph_mon: no longer attempt store conversion on start -447d469 (origin/wip-9440) mon: Monitor: health to clog writes every X seconds on the second +447d469 mon: Monitor: health to clog writes every X seconds on the second ae1032e mon: Monitor: cache 'summary' string to avoid dups on clog fcd7aa0 mon: Monitor: reset health status cache on _reset() 81a2faf mon: Monitor: write health status to clog every X seconds e2d66ae mon: Monitor: 'get_health()' returns overall health status 7ce770d mon: Monitor: health summary to clog on get_health() -889969e (origin/wip-fail-idempotent) mon/MDSMonitor: make 'mds fail' idempotent for IDs -b957fa8 (origin/wip-10547-formatter) tests: adapt to new json-pretty format +889969e mon/MDSMonitor: make 'mds fail' idempotent for IDs +b957fa8 tests: adapt to new json-pretty format 97609a3 test: rename test_activate_osd 8d8ce96 common: restore format fallback semantic e9aeaf8 mailmap: Loic Dachary name normalization @@ -1508,12 +1708,12 @@ d80ded9 mailmap: David Zhang affiliation 33ba23f common/shared_cache.hpp: empty() iff weak_refs is empty d532f3e remove unused hold_map_lock in _open_lock_pg 9748655 man: add help for rbd merge-diff command -6986ec1 (origin/wip-10477) osd/PG: populate blocked_by with peers we are trying to activate +6986ec1 osd/PG: populate blocked_by with peers we are trying to activate 5b0e8ae mailmap: Yehuda Sadeh name normalization 3f03a7b doc/release-notes: v0.91 4ca6931 doc/release-notes: typo e7cc611 qa: ignore duplicates in rados ls -e5591f8 (origin/wip-10539) qa: fail_all_mds between fs reset and fs rm +e5591f8 qa: fail_all_mds between fs reset and fs rm 26a2df2 mailmap: Josh Durgin name normalization d6a9d25 doc/release-notes: v0.80.8 45e9cd5 Fix make check blockers. @@ -1548,12 +1748,12 @@ a39cbe2 atomic: add and sub return their result f57383a Don't use __cplusplus to mean !__KERNEL__ 71e4987 Add missing Messenger::create ms_type in test_msgr. 3ce683a Fixup int_types.h. -3424bae (origin/wip-librbd-coverity) librbd: fix coverity false-positives for tests +3424bae librbd: fix coverity false-positives for tests f3a57ee rgw: wait for completion only if not completion available 833b277 ceph_test_objectstore: enable keyvaluestore experimental option 204fa0f ReplicatedPG::_scrub: don't record digests for snapdirs 0172069 common/shared_cache.hpp: restructure clear() -9daeaec (origin/wip-10382) mds: handle heartbeat_reset during shutdown +9daeaec mds: handle heartbeat_reset during shutdown fc5cb3c osd/ReplicatedPG: remove unnecessary parameters 78b2cf0 osd: force promotion for watch/notify ops c8bef13 osd/OpRequest: add osd op flag CEPH_OSD_RMW_FLAG_PROMOTE @@ -1593,20 +1793,20 @@ f9b280e Adjust bi log listing to work with multiple bucket shards. Signed-off-by 751fd07 Adjust rgw bucket prepare/complete OP to work with multiple bucket index shards. 5d004d3 Implement sharding for bucket creation. 90a3920 Add a new field to bucket info indicating the number of shards of this bucket and make it configurable. -364b868 (origin/wip-mon-propose) mon/Paxos: consolidate finish_round() +364b868 mon/Paxos: consolidate finish_round() 67a90dd mon: accumulate a single pending transaction and propose it all at once d159586 PendingReleaseNotes: make a note about librados flag changes 725d660 (tag: v0.91) 0.91 -9264d25 (origin/wip-formatter) common/Formatter: new_formatter -> Formatter::create +9264d25 common/Formatter: new_formatter -> Formatter::create 617ad5d common/Formatter: improve json-pretty whitespace 83c3b13 common/Formatter: add newline to flushed output if m_pretty e2a7b17 osd/PG: remove unnecessary publish_stats_to_osd() in all_activated_and_committted() 77bc23c osd/PG: add 'activating' pg state between peering and active -b578a53 (origin/wip-quota-test) qa: set -e explicitly in quota test +b578a53 qa: set -e explicitly in quota test 8d706cd osd/ReplicatedPG: init ignore_cache in second OpContext ctor 792ac7c osd/ReplicatedPG: fix cancel_proxy_read_ops 7c664fa Doc: Fix the indentation in doc/rbd/rbd-snapshot.rst -1c01c3a (origin/wip-librbd-rados-stub) tests: create unittest_librbd +1c01c3a tests: create unittest_librbd c105003 tests: add mock librados API for supporting unit tests 1e9da43 include: moved RBD's generic FunctionContext wrapper 1483a43 msg/simple: remove redundant calling of setsockopt @@ -1614,7 +1814,7 @@ c105003 tests: add mock librados API for supporting unit tests 3cbe5da mon: check size must larger than zero. 3f03003 test/mon: Add test case for ceph osd pool set size/min_size. e3678f4 mon: check min_size range. -7945f8d (origin/wip-8900) librbd: flush pending AIO requests under all existing flush scenarios +7945f8d librbd: flush pending AIO requests under all existing flush scenarios 2dd0f03 librbd: AIO requests should retry lock requests 6176ec5 librbd: differentiate between R/O vs R/W RBD features 544ed96 librbd: Add internal unit test cases @@ -1624,10 +1824,10 @@ e3678f4 mon: check min_size range. ccadff1 librbd: Integrate librbd with new exclusive lock feature 9ee80b3 librados: bump rados version number f5668d6 librbd: Create image exclusive lock watch/notify handler -2ecd874 (origin/wip-9956) osd: enable filestore_extsize by default +2ecd874 osd: enable filestore_extsize by default b76d0dc os/FileStore: verify kernel is new enough before using extsize ioctl -f4ff12a (origin/wip-mon-converter) drop ceph_mon_store_converter -a4152db (origin/wip-fs-reset) mon/MDSMonitor: add confirm flag to fs reset +f4ff12a drop ceph_mon_store_converter +a4152db mon/MDSMonitor: add confirm flag to fs reset 8630696 qa: add `fs reset` to cephtool tests 1713ffd mon: implement `fs reset` 1f69476 Fix bug 10503: http://tracker.ceph.com/issues/10503 ceph-fuse: quota code is not 32-bit safe for vxattr output @@ -1638,7 +1838,7 @@ d300220 rbd: test case for rbd merge-diff 337f821 rbd: merge two diff files into one single file 9c82efc rbd: parse diff file body for diff merging b4720ae rbd: parse diff file header for diff merging -f42ef1e (origin/wip-promote) ceph_test_rados: add some debug output +f42ef1e ceph_test_rados: add some debug output 1554fbc osd/ReplicatedPG: improve proxy read cancelation 1c8b679 osd/ReplicatedPG: put proxy read completion on finisher 650f1d9 osd: tiering: avoid duplicate promotion on proxy read @@ -1658,7 +1858,7 @@ a4a4149 osd/ReplicatedPG: drop unnecessary cache_mode checks 1d89f18 osd/ReplicatedPG: make op argument to promote_object optional 2bbab05 OSD: add a get_latest_osdmap command to the admin socket d5e8ef5 doc: Fix PHP librados documentation -a16e72c (origin/wip-mon-wishlist) doc: mon janitorial list is now a wishlist +a16e72c doc: mon janitorial list is now a wishlist 19955fc doc: Replace cloudfiles with swiftclient in Python Swift example 5461368 mon: paxos: queue next proposal after waking up callbacks d375532 rgw: return InvalidAccessKeyId instead of AccessDenied @@ -1669,14 +1869,14 @@ c1080b2 doc: Clean up pool usage. e6a4ab1 client: include ceph and git version in client metadata f90c48f Revert "rgw: switch to new watch/notify API" f887817 doc: Added section to install priorities/preferences. -bf8f062 (origin/wip-10311) rgw: only keep track for cleanup of rados objects that were written +bf8f062 rgw: only keep track for cleanup of rados objects that were written 55a5c5f tests: temporarily disable unittest_msgr -26e7d5f (origin/wip-asok-get-subtrees) mds: add asok command for getting subtreemap +26e7d5f mds: add asok command for getting subtreemap 1c1897e mds: give CDir a dump() method for JSON output -a58d104 (origin/wip-mdscacheobject-const) mds: support constness in MDSCacheObjects -e9033bb (origin/wip-librbd-snap-unprotect) librbd: shadow variable in snap_unprotect and list_children +a58d104 mds: support constness in MDSCacheObjects +e9033bb librbd: shadow variable in snap_unprotect and list_children cf432fa doc: Add Librados PHP documentation -d994e60 (origin/wip-table-formatter) common: Formatter: cosmetic re-indent +d994e60 common: Formatter: cosmetic re-indent e797dcf common: Formatter: add TableFormatter class c528d87 erasure-code: test repair when file is removed 9406b7f osd: accumulate authoritative peers during recovery @@ -1685,11 +1885,11 @@ ecc3bca os: remove debug message leftover in FileJournal 63c8dd0 msg: initialize AsyncConnection::port c60f88b Bump memstore_device_bytes from U32 to U64 8811df3 FileStore: return error if get_index fails in lfn_open -20be188 (origin/wip-peeringqueue) osd: assert there is a peering event +20be188 osd: assert there is a peering event 492ccc9 osd: requeue PG when we skip handling a peering event 49d114f librados: Translate operation flags from C APIs -8d52782 (origin/wip-10445) rgw: use gc for multipart abort -6edfcc1 (origin/wip-nits) mds: allow 'ops' as shorthand for 'dump_ops_in_flight' +8d52782 rgw: use gc for multipart abort +6edfcc1 mds: allow 'ops' as shorthand for 'dump_ops_in_flight' 1617fbb osd: allow 'ops' as shorthand for 'dump_ops_in_flight' 3d2fbf7 tests: group clusters in a single directory bd7be04 doc: don't suggest mounting xfs with nobarrier @@ -1697,11 +1897,11 @@ bd7be04 doc: don't suggest mounting xfs with nobarrier 27cb78b mon, os: check the result of sync_filesystem. 3646e1e encoding: wrap ENCODE_START/FINISH arguments fa96bb4 librbd: Stub out new exclusive image feature -478629b (origin/wip-10471) rgw: index swift keys appropriately -97cc409 (origin/wip-mdsmonitor-fixes) mon/MDSMonitor: fix `mds fail` for standby MDSs +478629b rgw: index swift keys appropriately +97cc409 mon/MDSMonitor: fix `mds fail` for standby MDSs c400ba1 mon/MDSMonitor: respect MDSMAP_DOWN when promoting standbys -487c22a (origin/wip-10384-ceph-test-helper-races) init-ceph: stop returns before daemons are dead -3d08a68 (origin/wip-da-SCA-20150102) msg/async/AsyncConnection.cc: reduce scope of variable +487c22a init-ceph: stop returns before daemons are dead +3d08a68 msg/async/AsyncConnection.cc: reduce scope of variable b99508b osd/ClassHandler.cc: move stat into error handling fd4ac46 crush/crush.c: prevent DIVIDE_BY_ZERO aacdaae src/common/obj_bencher: fix some UNINIT issues @@ -1728,7 +1928,7 @@ f19c2e6 mds/Server.cc: fix compiler warning 3ccd792 client/Client.cc: prefer ++operator for non-primitive iterators 1a00fb7 test/librados/aio.cc: release completion before exit 2f54209 test/librados/aio.cc: delete AioCompletion* before return -485d139 (origin/wip-10041) client: fix mount timeout +485d139 client: fix mount timeout 397b261 common: Don't call ioctl(BTRFS_IOC_SYNC) in sync_filesystem. 3f7faa4 common: Directly return the result of syncfs(). 1c38895 disable tcmalloc by default when enable jemalloc @@ -1747,14 +1947,14 @@ dbae922 osd: Add Transaction::TransactionData for fast encode/decode de02134 tests: resolve ceph-helpers races bea2d4a qa: drop tiobench suite 8618a53 cli: ceph: easier debugging (pdb) with 'CEPH_DBG=1' -55f8fee (origin/wip-10412) client: fix use-after-free bug in unmount() +55f8fee client: fix use-after-free bug in unmount() 93d39a8 cleanup: fix a compile warning ea3ed5b TestLFNIndex.cc: For root, dont do permission operations. -488355c (origin/wip-fix-copyfrom) osd: fix object_copy_data_t compat encoding -ed50377 (origin/wip-repop) osd/PG: print last_update_applied if != last_update +488355c osd: fix object_copy_data_t compat encoding +ed50377 osd/PG: print last_update_applied if != last_update 78d2d31 Add MOSDRepOp and MOSDRepOpReply 6ca2eb8 configure: show pkg names when libkeyutils is missing -5cf84e6 (origin/wip-watch-leak) librados: fix leak of WatchContext on unwatch +5cf84e6 librados: fix leak of WatchContext on unwatch b5c24e4 qa: add test_tell, which currently is used only for testing 'ceph tell mon version'. 244777d test/bufferlist: For root, don't do permission operation for read_file case. 3b4e021 qa: refactor 'ceph -w' magic in test_mon_misc by introducing helper functions ceph_watch_start and ceph_watch_wait so they can be reused in other tests. @@ -1762,8 +1962,8 @@ b5c24e4 qa: add test_tell, which currently is used only for testing 'ceph tell m c7cc6af rbd: write a diff description into the merged diff file bca862c rbd: parse merge-diff arguments 0b6ab82 rbd: add an option merge-diff -bdd0e3c (origin/wip-10351) mount.ceph: avoid spurious error message -6e67450 (origin/wip-10387) client: close dirfrag when trying to trim an inode +bdd0e3c mount.ceph: avoid spurious error message +6e67450 client: close dirfrag when trying to trim an inode 274b989 doc: rm reference to old Ubuntu release 0471be6 debian: create a repository from sources c8f56ab AsyncMessender: use IOV_MAX instead of IOV_LEN @@ -1771,10 +1971,10 @@ d49b694 AsyncMessenger: s/sended/sent/ c9da51d AsyncMessenger: should retry in case of EINTR 169e8bd msg: fix factory error message ec1f58a unittest_msgr: enable experiemntal async msgr -1265603 (origin/wip-10441-b) osd: force read bit for watch +1265603 osd: force read bit for watch 4642441 osd: drop unused watch_info_t w cef7a82 KeyValueStore:: do_transactions: clean up code which is never used clean up ops and bytes which is never used in do_transactions() -dfd6a38 (origin/wip-mon-janitorial-list) src/doc: add monitor janitorial list +dfd6a38 src/doc: add monitor janitorial list 1dba143 Make pg dump {,sum,pgs,pgs_brief} work for format=plain 7d75f0c Makefile: include radosgw-admin in base 38350a0 client: fix quota signed/unsigned warning @@ -1782,7 +1982,7 @@ b7b4534 common: log which experimental features are enabled. 55405db ms: mark async messenger experimental 44ce7cc os: rename keyvaluestore-dev -> keyvaluestore; mark experimental 8a55972 common: add 'enable experimental data corrupting features' -783956c (origin/wip-10341) tools: ceph-monstore-tool: validate start/stop vals +783956c tools: ceph-monstore-tool: validate start/stop vals 60e9c3f tools: ceph-monstore-tool: output number of paxos versions dumped b27ca4c tools: ceph-monstore-tool: raw map to stdout if outfile not specified 68f3b77 tools: ceph-monstore-tool: use subcmd parser helper @@ -1804,8 +2004,8 @@ fe44cd3 doc: Updates information for SSL configuration in Ceph Object Gateway in 45fb9a3 FileJournal: Don't cache journal data if journal w/o directio mode e4e1777 AsyncMessenger: fix the leak of file_events 70ef30f osd: osd tree to show primary-affinity value -aa56ee4 (origin/wip-10422) mon: provide encoded canonical full OSDMap from primary -d7fd6fc (origin/wip-10372) osdc/Objecter: improve pool deletion detection +aa56ee4 mon: provide encoded canonical full OSDMap from primary +d7fd6fc osdc/Objecter: improve pool deletion detection a540ac3 librados: only call watch_flush if necessary 6b030aa mds: add default ctor for quota_info_t ee6529b AsyncMessenger: Fix leak memory @@ -1818,19 +2018,19 @@ b41a739 10132: osd: tries to set ioprio when the config option is blank 6b01b5e AsyncConnection: Ensure reply connect_seq larger than sent 926a1b7 librados: only call watch_flush if necessary 73257e8 os: WBThrottle: optimize map to unordered_map Using unordered_map to save the cpu cost and acceralate map::find() operation. -d3fb563 (origin/wip-10415) libcephfs/test.cc: close fd before umount +d3fb563 libcephfs/test.cc: close fd before umount b95c73e librados: warn about rados_watch_flush() prior to ioctx shutdown 93825bf librados: watch_flush() on shutdown 7de1b4d librados: add rados_watch_flush() call 5cf4483 osdc/Objecter: do notify completion callback in fast-dispatch context 1fbe9b6 librados: warn about rados_watch_flush() prior to ioctx shutdown -4ce6d25 (origin/wip-stop.sh-me) stop.sh: killall -u takes username, not uid -dab5391 (origin/wip-10414) client: fix uninitialized member +4ce6d25 stop.sh: killall -u takes username, not uid +dab5391 client: fix uninitialized member 3f3f2fa osd: be_compare_scrubmaps uses incorrect j iterator -d87918a (origin/wip-10409) osd: scrub: only assume shard digest == oi digest for replicated pools +d87918a osd: scrub: only assume shard digest == oi digest for replicated pools a25429c osd: clean up use of hex for digests 9c96fbb osd/ECBackend: use correct seed for (empty) omap digest -7f9c03d (origin/wip-pg-stat) mon/PGMap: restructure 'pg stat' formatted output +7f9c03d mon/PGMap: restructure 'pg stat' formatted output e89bafb remove unmatched op code comparasion 4bb6e29 tests: use port 7111 for osd-copy-from.sh 6f8aad0 tests: recovery of a lost object in erasure coded pools @@ -1851,11 +2051,11 @@ f080595 tests: avoid bash == --shell confusion in docker-test-helper.sh d8f84d1 tests: docker images must use install-deps.sh 80f20f8 tests: run-make-check.sh install jq 2de2c4b install-deps.sh: do not require sudo when root -e99da68 (origin/wip-mon-health) mon: make 'ceph -s' show pg state counts in reverse descending order -9c8827a (origin/wip-osd-ctor) osd/ReplicatedPG: initialize new_backfill in ctor -30678f6 (origin/wip-watch-notify-2) librados: watch_flush() on shutdown +e99da68 mon: make 'ceph -s' show pg state counts in reverse descending order +9c8827a osd/ReplicatedPG: initialize new_backfill in ctor +30678f6 librados: watch_flush() on shutdown 4ebd4b4 librados: add rados_watch_flush() call -218de82 (origin/wip-9059-checksums) osd: scrub: wait for digest updates to apply before next scrub chunk +218de82 osd: scrub: wait for digest updates to apply before next scrub chunk 1646d17 osd: change omap data encoding in object_copy_data_t 925f572 test/osd/osd-copy-from: simple test of copy-from and error injection 6d80078 rados: use copy_from for rados cp (and cppool) command @@ -1878,8 +2078,8 @@ e68d771 osd: drop vestigal invalid_snapcolls fields from scrub 056de09 osd/ReplicatedPG: set and invalidate data/omap digests on osd ops 9d5d491 doc: Adds updated ceph-deploy man page under man/ 8c38cc6 doc: Fixes a typo in ceph-deploy man page. -46a1a4c (origin/wip-10319-wusui) If trusty, use older version of qemu -7f1e510 (origin/wip-10400-quota-info-t) mds: add default ctor for quota_info_t +46a1a4c If trusty, use older version of qemu +7f1e510 mds: add default ctor for quota_info_t 18d6b20 doc/release-notes: v0.90 9b78daf osdc/Objecter: do notify completion callback in fast-dispatch context ecbdbb1 tests: temporarily disable unittest_msgr @@ -1887,21 +2087,21 @@ ecbdbb1 tests: temporarily disable unittest_msgr 49c2322 doc: Instead of using admin socket, use 'ceph daemon' command. a302c44 ceph-disk: Fix wrong string formatting 2f63e54 cleanup : remove sync_epoch -19dafe1 (origin/wip-10255-wusui) Remove sepia dependency (use fqdn) -1eb0cd5 (origin/wip-osdmap) osd: only verfy OSDMap crc if it is known +19dafe1 Remove sepia dependency (use fqdn) +1eb0cd5 osd: only verfy OSDMap crc if it is known 1b7585b stop.sh: only try killing processes that belong to me -0af2a1c (origin/wip-10326) qa/workunits/rest/test.py: fix pg stat test +0af2a1c qa/workunits/rest/test.py: fix pg stat test 2a1bd76 .gitmodules: update ceph-object-corpus auth repo to github 623ebf0 osd: clear ReplicatedPG::object_contexts when PG start a new interval 1f9c087 AsyncConnection: Fix time event is called after AsyncMessenger destruction 20ea086 PipeConnection: Avoid deadlock when calling is_connected 9783a5c test/msgr/test_msgr: Fix potential unsafe cond wakeup and wrap check -bba4d35 (origin/wip-librados-init) librados: init last_objver -2cd9dc0 (origin/wip-caps-init) messages/MClientCaps: init peer.flags -679652a (origin/wip-osdmap-leak) osd: fix leaked OSDMap +bba4d35 librados: init last_objver +2cd9dc0 messages/MClientCaps: init peer.flags +679652a osd: fix leaked OSDMap 18f545b librados: Avoid copy data from librados to caller buff when using rados_read_op_read. 001ea29 Messenger: Create an Messenger implementation by name. -3a2cb71 (origin/wip-fix-asok) mds: fix asok on rank 0 +3a2cb71 mds: fix asok on rank 0 8de9a0f doc: Adds updated man page for ceph under man/ 8b79617 doc: Changes format style in ceph to improve readability as html. 7093cb3 doc: Adds updated man page for ceph-disk under man/ @@ -1915,17 +2115,17 @@ d61b1d9 shared_cache: add lookup_or_create, get_next, etc. and their unittests 2b577ce packaging: package ceph-deploy(8) c664818 doc: Adds updated man page for ceph-deploy under man/ e638469 doc: Updates man page for ceph-deploy. -a806778 (origin/wip-qa-empty-xattr) qa: test zero size xattr +a806778 qa: test zero size xattr 42dc937 librados: avoid memcopy for rados_getxattr. -4f72ba5 (origin/wip-cot-rename) ceph_objectstore_tool: Rename generated binary to ceph-objectstore-tool -1b2b344 (origin/wip-10335) MDS: do not allow invocation of most commands on an inactive MDS +4f72ba5 ceph_objectstore_tool: Rename generated binary to ceph-objectstore-tool +1b2b344 MDS: do not allow invocation of most commands on an inactive MDS 69fa532 ceph.spec.in: quote %files macro in comment aea232c client, librados, osdc: do not shadow Dispatcher::cct 378ebb7 python-rados: refactor class Rados a little bit 59b70fe Cleanup: Drop hobject_incorrect_pool 0c9d55d pybind/cephfs: Fix setxattr function. Pass value as character pointer -023a8ac (origin/wip-test-helpers) tests: ignore xmlstarlet extra empty lines -e582135 (origin/wip-pgmeta) os/FileStore: better debug on omap_setkeys +023a8ac tests: ignore xmlstarlet extra empty lines +e582135 os/FileStore: better debug on omap_setkeys f6ca2bc os/FileStore: better debug on unlink 43f0bcb os/MemStore: drop support for collection attrs 17e4e19 os/ObjectStore: deprecated collection_getattr et al @@ -1961,7 +2161,7 @@ c765de6 common/hobject_t: fix whitespace 69e169d os/DBObjectMap: new version v2; drop support for upgrading from v1 462bad3 ceph_test_rados: generate mix of small and large xattrs 456255b os/DBObjectMap: include hash in header key for EC objects -9f53eeb (origin/wip-7317) doc: add cephfs ENOSPC and eviction information +9f53eeb doc: add cephfs ENOSPC and eviction information a8babcb client: add 'status' asok 6fdf890 client: propagate flush errors to fclose/fsync a8611ac client: handle ENOSPC in _flush @@ -1972,7 +2172,7 @@ fcc64f3 mds: set epoch barrier on transition to active 68ba7f5 messages: add osd_epoch_barrier to cap msgs fc7d62a mds: return ENOSPC on write ops while osds full 09287fd osdc: add public Objecter::osdmap_full_flag -56af795 (origin/wip-10329) rgw: return InvalidAccessKeyId instead of AccessDenied +56af795 rgw: return InvalidAccessKeyId instead of AccessDenied ef75d72 rgw: return SignatureDoesNotMatch instead of AccessDenied bab3d3d osdc: remove spurious _maybe_request_map return value cf3101a osdc: implement Objecter::set_epoch_barrier @@ -1982,17 +2182,17 @@ fe32d6e osdc/Objecter: add op_cancel_writes a991212 osdc/ObjectCacher: invoke flush_set_callback on purge_set bb80437 erasure-code: relax cauchy w restrictions 058f433 man: Deprecate preferred OSD setting for cephfs -37a9969 (origin/wip-10299) librbd: complete all pending aio ops prior to closing image -02fae9f (origin/wip-10262) osd: handle no-op write with snapshot case +37a9969 librbd: complete all pending aio ops prior to closing image +02fae9f osd: handle no-op write with snapshot case db951ae cls/refcount: ENOENT when put on non-existent object -9ff9144 (origin/wip-librados-fadvise) librados: do not choke on asphyxiate doc generation -394fd4c (origin/wip-9405) librbd: fixed garbage output from test LibRBD.TestIOPP -1853461 (origin/wip-10220) mon: Paxos: reset accept timeout before submiting work to the store +9ff9144 librados: do not choke on asphyxiate doc generation +394fd4c librbd: fixed garbage output from test LibRBD.TestIOPP +1853461 mon: Paxos: reset accept timeout before submiting work to the store b5381c2 ReplicatedPG: Make pull and push op use sparse read 31adfeb doc: fix spelling in corpus page 12808b9 osdc/Objecter: respect honor_osdmap_full setting 7e84034 os: free space tracking for MemStore -e8d3399 (origin/wip-10201-osd-scrub-repair) tests: convert osd-scrub-repair to ceph_objectstore_tool +e8d3399 tests: convert osd-scrub-repair to ceph_objectstore_tool aa54640 tests: shell functions toolbox dedicated to testing f0961ae mailmap: Blaine Gardner affiliation b0e88a0 mailmap: Lei Dong affiliation @@ -2009,11 +2209,11 @@ e90818f mailmap: Dan Mick name normalization cc05518 mailmap: Adam Spiers affiliation 41707ee mailmap: Nilamdyuti Goswami affiliation 3886734 ceph_test_rados_api_io: fix new test -e3ba3d2 (origin/wip-watch-notify) ceph_test_rados_api_watch_notify: use 5 min timeout for notifies +e3ba3d2 ceph_test_rados_api_watch_notify: use 5 min timeout for notifies a2572c3 ceph_test_stress_watch: do not unwatch if watch failed -35f084d (origin/wip-test-huge-tickets) qa: add script to test how libceph handles huge auth tickets -e7d434b (origin/wip-warning) tests: fix signedness compilation warnings -847e5e1 (origin/wip-9555) osd: check that source OSD is valid for MOSDRepScrub +35f084d qa: add script to test how libceph handles huge auth tickets +e7d434b tests: fix signedness compilation warnings +847e5e1 osd: check that source OSD is valid for MOSDRepScrub 707a111 osd: pass Message* to most require_* helpers 09c1648 osd: drop redundant check in handle_replica_op b6401c1 ceph-disk: LOG.info instead of print @@ -2025,10 +2225,10 @@ b9ddf97 documentation: simplify running make check 85ab278 tests: install hdparm in containers 60bca67 tests: update centos docker file to epel 7.5 e038b126 tests: docker tests only need a workdir, not a clone -53929ba (origin/wip-10270) librbd: gracefully handle deleted/renamed pools +53929ba librbd: gracefully handle deleted/renamed pools f79b7fe librados: Added new API methods to create an ioctx by pool id -5cf193c (origin/wip-10307) rgw: use s->bucket_attrs instead of trying to read obj attrs -f773c74 (origin/wip-swift-storage-policy) rgw: cannot modify swift bucket policy +5cf193c rgw: use s->bucket_attrs instead of trying to read obj attrs +f773c74 rgw: cannot modify swift bucket policy 07dc42a rgw: dump X-Storage-Policy header on bucket HEAD f16da1c rgw: compare placement target on bucket recreation c55d7da librados: remove IoCtxImpl lock member @@ -2037,7 +2237,7 @@ c598e63 librados: stop using IoCtxImpl lock for watch/notify functions 50e9e39 librados: do not overload C++ API methods with new signatures ffd6c7e doc: Adds man page for ceph under man/. 76da87a doc: Adds man page for ceph. -7409ab3 (origin/wip-9254) rgw: http headers need to end with \r\n +7409ab3 rgw: http headers need to end with \r\n 0801361 mon/OSDMonitor: dump inc and full maps we get a crc mismatch f31135c mon/OSDMonitor: do not reencode OSDMap on 'osd getmap' b1f1381 ceph-dencoder: mark OSDMap as featureful, but with stray data @@ -2045,7 +2245,7 @@ b1f1381 ceph-dencoder: mark OSDMap as featureful, but with stray data 32a837d osd: add osd_inject_bad_map_crc_probability option d898698 osd: verify our OSDMap encoding based on crc 716f90f mon/OSDMonitor: verify full_crc when available -5fc7a0b (origin/wip-10271) rgw: change multipart upload id magic +5fc7a0b rgw: change multipart upload id magic 7925b82 rgw: Conditional PUT on ETag 023927b ReplicatedPG: For MAPEXT, using bl.length() instead of op.extent.length as num_rd_kb. c1dc361 ReplicatedPG: Don't use the return value of getattr_maybe_cache as attr length. @@ -2072,7 +2272,7 @@ c5ed33d librados/ObjectOperation: add new function set_op_flags2 b35cb48 librados: Add read/write fadvise op flags CEPH_OSD_OP_FLAG_FADVISE_*. 5b54410 librados: Add read/write fadvise op flags in ObjectOperationFlags. f5abed7 librados.h: Add read/write op fadvise flags LIBRADOS_OP_FLAG_FADVISE_*. -e8e27a8 (origin/wip-10296) unittest_blkdev: test an abbreviated /sys/block dir +e8e27a8 unittest_blkdev: test an abbreviated /sys/block dir 5e454a8 common/blkdev: add simple sandboxing function for testing 9b26de3 ReplicatedPG: fail a non-blocking flush if the object is being scrubbed dce6f28 ReplicatedPG::scan_range: an object can disappear between the list and the attr get @@ -2080,16 +2280,16 @@ dce6f28 ReplicatedPG::scan_range: an object can disappear between the list and t 2246dca common/blkdev: fix block device discard check 25e3783 common/blkdev: get_block_device_base beaa04e mon: MonitorDBStore: allow randomly injecting random delays on writes -2ad55cd (origin/wip-10296-journal-discard) tests: do not ignore ceph-disk.sh::test_activate_dev failure +2ad55cd tests: do not ignore ceph-disk.sh::test_activate_dev failure 9c5fd8c os: do not attempt to detect discard by default 21e07eb rgw: url decode http query params correctly 279c199 ceph_test_rados_api_watch_notify: fix a zillion warnings 531e8bb ceph_test_rados_api_watch_notify: use GT macro 008d788 ceph_test_rados_api_watch_notify: print err to debug c1dd92b osdc/Objecter: normalize watch error (ENOENT on delete) -5559e6a (origin/wip-10288) mon: fix `fs ls` on peons -b025f56 (origin/wip-typo) mds: fix log typo -a8f85dc (origin/wip-9323) mon: allow full flag to be manually cleared +5559e6a mon: fix `fs ls` on peons +b025f56 mds: fix log typo +a8f85dc mon: allow full flag to be manually cleared 2e5ee30 Finisher: call signal if necessary in function queue d92e2ca lttng: add int type definitions 060cbaa cycles: add reader for i386 and aarch64 @@ -2097,7 +2297,7 @@ d92e2ca lttng: add int type definitions 6a45d75 Add diagnostic unshareable buffer. 28725eb Restore zero-copy buffers in OSD fast path. 5f551cc Add safe-sharing to buffer::list and buffer::ptr. -b038e8f (origin/wip-8797) Call Rados.shutdown() explicitly before exit +b038e8f Call Rados.shutdown() explicitly before exit 5ba9b8f rados.py: remove Rados.__del__(); it just causes problems 8b195ec check endpoints is not empty before use it. 320c256 osdc/Objecter: only issue one error per watch; do it through one path @@ -2106,33 +2306,33 @@ b038e8f (origin/wip-8797) Call Rados.shutdown() explicitly before exit 6f43c6c osdc/Objecter: pass correct cookie value to error b34e545 os/FileStore.cc: insert not empty list to op_finisher/ondisk_finisher. 7ab4a39 ceph.conf: update sample -efd9d8d (origin/wip-librbd-test-cleanup) tests: Minor cleanup to librbd test +efd9d8d tests: Minor cleanup to librbd test 78a15ee Fix libstriprados::remove, use strtoll insdead of strtol -2d4dca7 (origin/wip-10029) SimpleMessenger: Retry binding on addresses if binding fails +2d4dca7 SimpleMessenger: Retry binding on addresses if binding fails e8063a1 test: modify cephfs quota test case 31a0cdc mds: fix parse_quota_vxattr for invalid data bab7122 OSD: FileJournal: call writeq_cond.Signal if necessary in submit_entry 17d6390 os: IndexManager:: optimaze map col_indices col_indices is just used to cache CollectionIndex, and use col_indices.find() to get its corresponding index. Without any using of up_bound() and low_bound(), we can use unordered_map to make it fast. Based on perf, when I chanage map to unordered_map, the cpu cost for get_index(coll_t c, const string& baseDir, Index *index) is much lower. 4036b91 os: FileJournal:: fix, uninitialization of FileJournal throttle Since after firefly, take() in class throttle add if(0 == max.read()) return. If throttle is not initialized with max throttle value, it actually does not work. So initialize it in FileJournal -6b51a9f (origin/wip-10164) mds: set dirfrag version when fetching dirfrag is skipped -17c72f5 (origin/wip-10010) ceph-osd: remove extra close of stderr +6b51a9f mds: set dirfrag version when fetching dirfrag is skipped +17c72f5 ceph-osd: remove extra close of stderr 5836899 Revert "client: support listxattr for quota attributes" -89b2fee (origin/wip-crush-straw) mon: 'osd crush reweight-all' +89b2fee mon: 'osd crush reweight-all' dd7b58f crush: set straw_calc_version=1 for default+optimal; do not touch for presets adf5c6d crush/builder: a note about the original crush_calc_straw() 9000068 mon: add 'osd crush {get,set}-tunable [value]' commands -606b004 (origin/wip-gfcomplete-dirty) gf-complete: update submodule to newest upstream -bf0d8d3 (origin/wip-cleanup-removal) osd: Remove dead code related to old pg removal mechanism -0827bb7 (origin/wip-10277) client: use remount to trim kernel dcache +606b004 gf-complete: update submodule to newest upstream +bf0d8d3 osd: Remove dead code related to old pg removal mechanism +0827bb7 client: use remount to trim kernel dcache dfcb1c9 client: cleanup client callback registration 2f52202 Revert "client: invalidate kernel dentries one by one" -9902383 (origin/wip-9998) crush/CrushWrapper: fix create_or_move_item when name exists but item does not +9902383 crush/CrushWrapper: fix create_or_move_item when name exists but item does not 8c87e95 crush/builder: prevent bucket weight underflow on item removal eeadd60 crush/CrushWrapper: fix _search_item_exists a198dee Modifying the docs to add the Get pool commands to match the CLI. Signed-off-by: Chris Holcombe 3a84602 Include common/likely.h in buffer.h e8b412c mailmap: Zhiqiang Wang name normalization -c0ce4a5 (origin/xiaoxichen-cleanup_getheader) Cleanup:Use get_type()instead of get_header().type +c0ce4a5 Cleanup:Use get_type()instead of get_header().type c2d9333 WBThrottle: make bytes/ios/inode_wb's perf counter effective 12d85c6 Fix stack buffer overflow reported by ASan. f6f6ea2 Fix alloc-dealloc mismatch reported by ASan (new[] vs. delete). @@ -2163,7 +2363,7 @@ f4735cf .gitignore: add ceph_perf_objectstore bcee92e StoreTest: Add tests for clone_range op cabb57a FileStore: Fix _do_sparse_copy_range don't truncate zero sections 980f094 common: bufferlist::get_contiguous return 0 when param len == 0 -be11a45 (origin/wip-fadvise) os/FileStore: stop disabling fadvise on XFS +be11a45 os/FileStore: stop disabling fadvise on XFS d6a7a7c os/FileStore: merge filestore_replica_fadvise -> filestore_fadvise 5eacd3c ceph_objectstore_tool: Strip _* (always _head) from pgid in list entry output b617ee2 ceph_objectstore_tool: BUG: --op list wasn't including snapshots @@ -2179,11 +2379,11 @@ a90233c objectstore_tool: update usage strings 58682d1 ceph-disk: dmcrypt file permissions 2b59c5a common/Initialize.h: add header file to Makefile.am 5da15ee mds: drop dentry leases in deleted directory -f55a1f8 (origin/wip-mds-readonly) mds: disallow flush dentry/journal when MDS is readonly +f55a1f8 mds: disallow flush dentry/journal when MDS is readonly f4f1880 mds: properly unregister asok commands 818a807 mds: drop dirty dentries in deleted directory ff901b5 arch: add support for HW_CAP based neon runtime detection -360d627 (origin/wip-10104) pybind/test_rados: add test for wait_for_complete_and_cb() +360d627 pybind/test_rados: add test for wait_for_complete_and_cb() 19212cd rados.py: fix misnamed 'wait_*' routines, add true wait/wait-with-cb a53dbab librados:: carry IoCtx ref from WatchInfo a989fec osd: allow deletion of objects with watchers @@ -2269,19 +2469,19 @@ e1a3bc8 ceph_test_rados_api_watch_notify: test notify2 api 81cdff2 osd: implement notify ack payloads 7e0c4efc librados: define updated watch/notify interface 12940c9 librados: drop useless ver arg to _notify_ack -22c1d9b (origin/wip-rados-include) librados: Fix rados include problem reported by "sponce" +22c1d9b librados: Fix rados include problem reported by "sponce" 7b621f4 rgw: run radosgw as apache with systemd 3f2f42d doc/release-notes: v0.89 237b29c Changed os-recommendation table sorting to remove implied bias. a6102f0 documentation: add centos 7 to ceph-deploy installation 7631b10 os: add filestore_fadvise to control whether use posix_fadvise. 1fba28f WBThrottle: Call posix_fadvise to free page cache if nocache set in clear(). -e42df6a (origin/wip-mon-mdsdne) MDSMonitor.cc: fix assertion caused by MDSMap::STATE_DNE state -d3ee89a (origin/wip-10229) osdc/Filer: use finisher to execute C_Probe and C_PurgeRange +e42df6a MDSMonitor.cc: fix assertion caused by MDSMap::STATE_DNE state +d3ee89a osdc/Filer: use finisher to execute C_Probe and C_PurgeRange 43d5c7c crush: fix crush_calc_straw() scalers when there are duplicate weights 85498bc crush: fix distortion of straw scalers by 0-weight items -6edaf4e (origin/wip-10231-gperftools-location) heap_profiler: support new gperftools header locations -d5e2c2c (origin/wip-unsigned) mon: fix signed/unsigned comparison warning +6edaf4e heap_profiler: support new gperftools header locations +d5e2c2c mon: fix signed/unsigned comparison warning 7c12036 crush/builder: break out new version 1 of crush_calc_straw f35a3d8 crush: pass crush_map * to various builder methods 9565621 crush: default to straw_calc_version 1 @@ -2292,22 +2492,22 @@ c133a83 crush/CrushWrapper: dump chooseleaf_vary_r with other tunables 3506293 crush: recalculate straw scalers during a reweight 7a99b48 osdmaptool: --test-map-pgs-dump 68fdc0f (tag: v0.89) 0.89 -d98cec7 (origin/wip-cephtool-exec) qa: fix teardown in cephtool's test_mon_mds -8cd1fdd (origin/wip-10080) SimpleMessenger: allow RESETSESSION whenever we forget an endpoint +d98cec7 qa: fix teardown in cephtool's test_mon_mds +8cd1fdd SimpleMessenger: allow RESETSESSION whenever we forget an endpoint 8e5dbe7 common/perf_counters: Remove the duplicated code. 963b764 test/perf_counters: Replace perfcounters_dump to perf dump. eafb224 test/perf_counters: Add test case for cmd 'perf reset' 5f8186b common/perf_counters: Add 'perf reset all|perfcountername' for 'ceph --admin-daemon' 5d3bff0 doc: rm Fedora minor versions in os recommendations -0d4dd10 (origin/wip-snapmapper) os/ObjectStore: drop tolerate_collection_add_enoent +0d4dd10 os/ObjectStore: drop tolerate_collection_add_enoent bc5a22b osd: require SNAPMAPPER feature from peers b743a95 packaging: package ceph-disk(8) 2497f16 doc: rm old releases in os recommendations page 0bb2e1e doc: clarify "B" flag in os recommendations page -3047c9e (origin/wip-cephtool) qa: cephtool/test.sh use regular strings to list tests +3047c9e qa: cephtool/test.sh use regular strings to list tests e3e5741 tests: vstart_wrapper.sh must call vstart.sh with a list of daemons 946bebd crush: add dprintk's for crush_calc_straw -4e955f4 (origin/wip-10211-erasure-code-buffer-alignement) erasure-code: enforce chunk size alignment +4e955f4 erasure-code: enforce chunk size alignment 73ad2d6 common: allow size alignment that is not a power of two 9ade88e common: add bufferlist::rebuild_aligned_size_and_memory 56dae09 doc: Reformatting on rbd replay doc. @@ -2315,9 +2515,9 @@ b8f6b5f doc: Added rbd-replay-many and restructured index. 54d5ed3 doc: Fixed index syntax. 3012c4a doc: add CentOS 7 to recommended OSes 6862891 doc: Adds man page for ceph disk in TOC. -491da51 (origin/wip-9997-1) client: invalidate kernel dentries one by one -2fa4884 (origin/wip-flush-journal-fix) mds: fix race of trimming log segments -70e1a5d (origin/wip-doc-rbd-replay) doc: Document RBD Replay +491da51 client: invalidate kernel dentries one by one +2fa4884 mds: fix race of trimming log segments +70e1a5d doc: Document RBD Replay 131f092 mds: don't blindly create empty object when dirfrag is missing 9b9e3ed mds: allow choosing action for wirte error dafef3c mds: add asok command to force MDS readonly @@ -2330,9 +2530,9 @@ cfef515 mds: disallow slave requests when MDS is readonly 4aed047 mds: keep locks in sync state when MDS is readonly 2d4a746 mds: don't trim log when MDS is readonly 4f6474f mds: disallow write operations when MDS is readonly -01df222 (origin/wip-10209) osd: tolerate sessionless con in fast dispatch path +01df222 osd: tolerate sessionless con in fast dispatch path 0f1c9fd msg: do not const methods that return a mutable pointer -0d6c803 (origin/wip-kill-category) osd/osd_types: drop category from object_info_t +0d6c803 osd/osd_types: drop category from object_info_t 5ecdce3 osdc/Objecter: drop category from copy-get d229548 osd/ReplicatedPG: drop cateogry support from CREATE 4e1f4cf rados: drop optional 'create [category]' arg @@ -2352,7 +2552,7 @@ e0190bd KnieticStore: add necessary header file 49bedd4 ObjectStoreBenchmark: Used to perf ObjectStore::Transaction 929fcd6 better systemd support 3376fee Cleanup noop in message -5b5493d (origin/wip-9881) mds: implement "flush journal" asok +5b5493d mds: implement "flush journal" asok efeaaaa mds: in segment expiry, use end instead of start 2ec6773 mds: fix MDLog I/O callback without finisher dba078a Cycles: A precious performance profile tool using rdstc @@ -2370,7 +2570,7 @@ ea3d4d7 AsyncConnection: Ensure "mark_down" complete when returned bdedad2 AsyncMessenger: Async event threads shared by all AsyncMessenger c10d639 Add isa-erasure yasm dep for deps.rpm.txt 6a98dac rpm: unconditionally package rbd-replay-prep(8) -dbb5a48 (origin/wip-librados-symbols) librados: Only public API symbols from the shared library +dbb5a48 librados: Only public API symbols from the shared library 03a61d2 Minor typos and trailing spaces 782a74c KineticStore: Fix compile error and add _test_init 21798f9 doc: fix some typos in ObjectStore.h @@ -2378,7 +2578,7 @@ dbb5a48 (origin/wip-librados-symbols) librados: Only public API symbols from the 8a48847 doc: Updates the man page for ceph-disk utility with some changes. 3b00c6f safe_io: do not set ending \0 in safe_read_file() e6410eb added some consts Signed-off-by: Michal Jarzabek -17b5fc9 (origin/wip-10135) mon: OSDMonitor: allow adding tiers to FS pools +17b5fc9 mon: OSDMonitor: allow adding tiers to FS pools 9a118d5 doc: Adds man page for ceph-disk utility. 242dd1c doc: Removes ceph-deploy usage instances from ceph-disk man page. cb820f8 erasure-code: test NEON arch selection logic @@ -2389,19 +2589,19 @@ a788829 erasure-code: include new headers in distribution 987d54b aarch64: add support for HW_CAP based neon runtime detection cec00c9 autotools: ARM/AArch64 NEON detection similar to x86 ba520bf erasure-code: conditionally build jerasure sse3/sse4 plugins -0b985d2 (origin/wip-10185-neon) arch: fix neon feature detection +0b985d2 arch: fix neon feature detection 24eb564 Remove pidfile and asok after stopping ceph 7dcc850 doc: Updates man page for ceph-disk utility. e983230 remove unneeded include file a1ba385 doc: rgw document s3 bucket location features -0c33930 (origin/wip-10151) mon: fix MDS health status from peons +0c33930 mon: fix MDS health status from peons a450cab doc: Adds man page for ceph-disk utility. 4b35ae0 rgw: check for timestamp for s3 keystone auth -61cae54 (origin/wip-10173-autogen) autogen.sh: git submodule sync +61cae54 autogen.sh: git submodule sync 00da974 test: extend quota test case 5515cc4 client: fix problem with move files between quota tree b2c15d6 mds: Fix a problem with rstat refresh. -12f1f21 (origin/wip-mailmap) mailmap: Update Warren Usui's attribution to Red Hat +12f1f21 mailmap: Update Warren Usui's attribution to Red Hat 43c75ee mailmap: Update Tyler Brekke's attribution to Red Hat 9df4624 mailmap: Update Tamil Muthamizhan's attribution to Red Hat fb74152 mailmap: Update Sandon Van Ness' attribution to Red Hat @@ -2426,12 +2626,12 @@ eaa9889 mailmap: Update Dan Mick's attribution e424d07 client: Fix problem in get_quota_root with update parent and ancestor 6c7bb8c blkdev: using strncpy instead of strcpy. 1fe8b84 PGLog: include rollback_info_trimmed_to in (read|write)_log -627f138 (origin/wip-sepia-update) Updated sepia hardware list. +627f138 Updated sepia hardware list. 7a868fd ReplicatedPG: remove unused parameter in function write_update_size_and_usage -0d89db5 (origin/wip-9557) mds: store backtrace for straydir +0d89db5 mds: store backtrace for straydir a79ba32 mds: verify backtrace when fetching dirfrag 5177759 KeyValueStore: Fix parse_header_key -9d84d2e (origin/wip-10018-primary-erasure-code-hinfo) osd: deep scrub must not abort if hinfo is missing +9d84d2e osd: deep scrub must not abort if hinfo is missing 92662a9 mailmap: Loic Dachary name normalization 77c1a35 rgw: support swift storage policy api f692bfe PG: always clear_primary_state on new interval, but only clear pg temp if not primary @@ -2444,13 +2644,13 @@ dcecfb8 MemStore: Return -ENODATA when collection_getattr hit nonexist attr 877237f KeyValueStore: Return -ENODATA if collection_getattr is nonexist 00b275b StoreTest: Add collection_getattr(s) tests ffb6f78 KeyValueStore: Remove assert for collection_getattr method -f3dab44 (origin/wip-10077) ceph_objectstore_tool: Add feature called set-allow-sharded-objects +f3dab44 ceph_objectstore_tool: Add feature called set-allow-sharded-objects b3021b0 ceph_objectstore_tool: Add utility routine get_osdmap() 86baf2d ceph_objectstore_tool: Clear ...INCOMPAT_SHARDS from feature if exporting replicated pg d3d5852 FileJournal: add journal_discard to control ssd whether support discard 9f9eb67 FileJournal: Add ssd discard for journal which using ssd disk as journal. -10f6ef1 (origin/wip-10114-fix-warning) erasure-code isa-l: remove duplicated lines (fix warning) -c912116 (origin/wip-9665-ceph-disk-partprobe) autotools: add --enable-docker +10f6ef1 erasure-code isa-l: remove duplicated lines (fix warning) +c912116 autotools: add --enable-docker 26bf8d1 ceph-disk: test prepare / activate on a device ecccb39 tests: helper to run unit / function tests in docker 23aaf6c ceph-disk: implement init=none for block devices @@ -2458,14 +2658,14 @@ fed3b06 ceph-disk: run partprobe after zap 23e71b1 ceph-disk: use update_partition in prepare_dev and main_prepare 922a15e ceph-disk: encapsulate partprobe / partx calls 0e6db90 doc: update debian compilation dependencies -8613984 (origin/sponce-master) Fixed locking issue in the trun method of libradosstriper leading to potential race conditions - Fixes: #10129 -9e53c35 (origin/wip-10128) tests: ceph_objectstore_tool.py test all variants of export/import +8613984 Fixed locking issue in the trun method of libradosstriper leading to potential race conditions - Fixes: #10129 +9e53c35 tests: ceph_objectstore_tool.py test all variants of export/import 8c87f32 ceph_objectstore_tool: Make --file option consistent by treating "-" as stdout/stdin 0d5262a ceph_objectstore_tool: When exporting to stdout, don't cout messages -0d350b6 (origin/wip-10123) librbd: protect list_children from invalid child pool IoCtxs +0d350b6 librbd: protect list_children from invalid child pool IoCtxs de547c9 Fix bug #10096 (ceph-disk umount race condition) -06fc39c (origin/wip-9321) mon: PaxosService: can be readable even if proposing -d8a7db8 (origin/wip-9913) mon: Monitor: use session's entity name for audit log +06fc39c mon: PaxosService: can be readable even if proposing +d8a7db8 mon: Monitor: use session's entity name for audit log 125b58d mon: Monitor: forward session entity name to leader ca8e1ef mon: Monitor: stash auth entity name in session 8773474 messages: MForward: stash auth entity name @@ -2474,7 +2674,7 @@ fe6679d Fix libstriprados::stat, use strtoll insdead of strtol 11aa383 doc: fix typos in diagram for incomplete write 2379c57 doc: fix incorrect equalities 625dd40 doc: fix typo (superfluous "no") -cbecab4 (origin/wip-10063-objectstore-tool-erasure-code) tests: ceph_objectstore_tool.py fix list-attr for erasure code +cbecab4 tests: ceph_objectstore_tool.py fix list-attr for erasure code 40717aa tests: ceph_objectstore_tool.py check for malformed JSON for erasure code objs eaf1d1e tests: ceph_objectstore_tool.py fix off by 1 ATTR_OBJS handling dcf09ae common: do not omit shard when ghobject NO_GEN is set @@ -2490,16 +2690,16 @@ f04d4e7 tests: ceph_objectstore_tool.py run mon and osd on specific port 74506d2 tests: ceph_objectstore_tool.py use env python d1c4e5b vstart: use hostname -s instead of fqdn cf2104d common: do not unlock rwlock on destruction -06a245a (origin/wip-execstack) Add annotation to all assembly files to turn off stack-execute bit -e25724b (origin/wip-warn-max-pg) mon: tighten pg vs osd warning bounds to 3x above/below 100 (target) +06a245a Add annotation to all assembly files to turn off stack-execute bit +e25724b mon: tighten pg vs osd warning bounds to 3x above/below 100 (target) 7f3dcdb mon/PGMonitor: add max pgs per osd warning b70be56 mon/PGMonitor: make min pg warning based on pg *instances* 5eb662c mon/PGMonitor: fix summation when we adjust up/acting d671e1c mon/PGMap: allow stat_pg_{add,sub} that only touches stats cf24117 osd/osd_types: include up and acting count in pool_sum_t c87bde6 PG: always clear_primary_state when leaving Primary -b10bd19 (origin/wip-dumper-coverity) tools: Close the fd before returning in Dumper -50f9edb (origin/wip-da-SCA-20141111) FileJournal.cc: fix _open() to return negative value in error case +b10bd19 tools: Close the fd before returning in Dumper +50f9edb FileJournal.cc: fix _open() to return negative value in error case 0c8955b mailmap: Loic Dachary name normalization b6d6180 test_async_driver: fix warning 175d6e0 doc: Removed separate build file for rpm. @@ -2509,8 +2709,8 @@ a5a0d5c doc: Adds build-doc guidelines for Fedora and CentOS/RHEL. 088230e Improve readability of the exception 3c4b782 rgw: add location when data in another region. 35ae591 doc: update the OpenStack glance configuration -83e8b07 (origin/wip-librbd-symbols) librbd: Only public API symbols from the shared library -8dde6a6 (origin/wip-10052) ceph_test_rados_api_tier: fix cleanup of whiteouts +83e8b07 librbd: Only public API symbols from the shared library +8dde6a6 ceph_test_rados_api_tier: fix cleanup of whiteouts 34e4d24 osd/ReplicatedPG: allow whiteout deletion with IGNORE_CACHE flag a04bb13 Mailmap: add Rongze organization ef2565e vstart.sh: complain less about fullish mon disks @@ -2530,12 +2730,12 @@ ed0d3ed st_rados_list_objects.cc: free resources in error case c73c47e ceph_erasure_code_benchmark.cc: prefer ++operator for non-primitive iterators 3b31e74 crush/CrushWrapper.cc: prefer ++operator for non-primitive iterators 35ab4d7 rgw/rgw_gc.cc: silence cppcheck -699fc05 (origin/wip-10057) msg/simple: ms_die_on_skipped_message +699fc05 msg/simple: ms_die_on_skipped_message 20f99ca mds: don't overwrite reply's snapbl -6f8b96a (origin/wip-10095) crush/CrushWrapper: fix detach_bucket +6f8b96a crush/CrushWrapper: fix detach_bucket a46fb02 Makefile: include 'ceph' in base target 585b906 msg/Makefile: add new header to tarball -2fe5c4c (origin/wip-9921) msg/Pipe: inject delay in stop_and_wait +2fe5c4c msg/Pipe: inject delay in stop_and_wait 2d69805 SimpleMessenger: Pipe: do not block on takeover while holding global lock 6e5bae4 mailmap: Dan Mick name normalization 5fdec03 mailmap: Xan Peng affiliation @@ -2551,8 +2751,8 @@ ee45f48 doc: Fix 2 syntax errors. ebc8875 AsyncMessenger: Support select for other OS such as Windows 59d8c94 qa/workunits/fs/misc/quota.sh: simple quota test 86f87bb fix -78d1e6c (origin/wip-9439) osd: Check filter ops for pgls and pgnls -9e05ba0 (origin/wip-9835) osd/OSD: use OSDMap helper to determine if we are correct op target +78d1e6c osd: Check filter ops for pgls and pgnls +9e05ba0 osd/OSD: use OSDMap helper to determine if we are correct op target 89c0263 osd/OSDMap: add osd_is_valid_op_target() 079a8d7 Add myself to 5ce0919 ceph_objectstore_tool: Fixes to make import work again @@ -2567,17 +2767,17 @@ e27b0d9 mon: fix formatted 'pg stat' e94d3c1 qa: allow small allocation diffs for exported rbds 09eefac Fix Yuan's mailmap 05a1c3f doc/release-notes: v0.88 -90c5869 (origin/wip-7467) rgw: support multiple host names -1342548 (origin/wip-crush-tree) crush: fix tree bucket functions +90c5869 rgw: support multiple host names +1342548 crush: fix tree bucket functions e444b22 crush/builder: replace printf with an empty dprintk macro -109bcd4 (origin/wip-da-revert-10b68b) Revert "osd: detect (some) misordered ondisk tmaps" +109bcd4 Revert "osd: detect (some) misordered ondisk tmaps" 4be687b (tag: v0.88) 0.88 d12fa35 AsyncMessenger: Fix large bufferlist send segment fault d145cca AsyncMessenger: Try send in queue bufferlist 123d364 AsyncMessenger: Normalise log informations fc4e4f2 AsyncMessenger: Release connection if stopped 4d4b7d0 doc/rados/configuration fix 'ods mkfs options' default -41b5dd2 (origin/wip-da-SCA-20141028) AuthSessionHandler.h: init protocol in constructor +41b5dd2 AuthSessionHandler.h: init protocol in constructor dbfb63e src/librbd/librbd.cc: fix potential null pointer deref 4fc9428 osd/ReplicatedPG.cc: remove redundant check a4cecda test/librados/c_read_operations.cc: fix invalid checks @@ -2585,12 +2785,12 @@ a4cecda test/librados/c_read_operations.cc: fix invalid checks e590d42 rados_sync.cc: fix xattr_diff() for the only_in_b checks 04517f0 bench_log.cc: catch ceph::FailedAssertion exception 60e7da9 osd/PGLog.cc: prefer empty() over size() for emptiness check -fea7097 (origin/wip-rbd-python-tests) librbd: Python unit tests now use unique pools and images +fea7097 librbd: Python unit tests now use unique pools and images c11cf2a bufferlist: Don't call rebuild(), c_strt() call it if bufferlist not contiguous. -cd784ea (origin/wip-9854) osdc: Constrain max number of in-flight read requests +cd784ea osdc: Constrain max number of in-flight read requests 12913c0 AsyncMessenger: Eating up pipe buffer for waking up -2704914 (origin/wip-10045) common/Readahead: use correct lock when waiting on the pending ops -42b0a35 (origin/wip-scrub-coverity) mds: remove dead code from inode_t::compare() +2704914 common/Readahead: use correct lock when waiting on the pending ops +42b0a35 mds: remove dead code from inode_t::compare() f78cfa7 mds: CInode: catch exception by reference, not value dafd335 osd/OSDMap: verify CRC on decode 33490b7 mon/OSDMonitor: populate Incremental::full_crc @@ -2627,11 +2827,11 @@ a0c1f22 tests: use kill -0 to check process existence c3b51ef tests: remove vstart_wrapped_tests.sh 7a6ca17 tests: use different ports for each mon bdca0ac tests: tolerate a disk 99% full -f80499e (origin/wip-flush-snaps) osd/ReplicatedPG: flush snaps immediately -560e22e (origin/wip-gtest-warnings) test: use unsigned ints to compare against size() +f80499e osd/ReplicatedPG: flush snaps immediately +560e22e test: use unsigned ints to compare against size() a21bca1 mailmap: Loic Dachary affiliation -740a1bd (origin/wip-10025) tools: error handling on journal import/export -3e0295f (origin/wip-doc-dumpling-to-firefly) doc: Added Dumpling to Firefly upgrade section. +740a1bd tools: error handling on journal import/export +3e0295f doc: Added Dumpling to Firefly upgrade section. 15d487f MDS: clean up internal MDRequests the standard way 07e0831 MDS: CInode: break out of validation early on symlinks f1677e7 common/ceph_strings: add some MDS internal op names to ceph_mds_op_name() @@ -2667,19 +2867,19 @@ abc995b qa/workunits/fs/misc: combine sudo and echo effectively 3aa7797 qa: use sudo even more when rsyncing /usr 2a61735 Fedora 19 uses systemd but there is no systemd-run available in the release (rhbz#1157938), this patch makes sure that the init scripts check for availability of systemd-run before they use it (otherwise, they fall back to the default method) 5ac05d4 Fix tests on btrfs: leftover subvolumes removed -762eda8 (origin/wip-blacklist-respawn) osdc: fix Journaler write error handling -61ebfeb (origin/wip-10030) librbd: don't close an already closed parent image upon failure +762eda8 osdc: fix Journaler write error handling +61ebfeb librbd: don't close an already closed parent image upon failure d13b478 EC: Allow bench.sh to test ISA backend also -52cb44c (origin/wip-9887) osd, mon: Send initial pg create time from mon to osd -2e63944 (origin/wip-rbd-test-fixtures) librbd: Refactor librbd unit tests to use test fixtures -5d9f36f (origin/wip-9918) rgw: update swift subuser perm masks when authenticating -ef6d3ad (origin/wip-9973) rgw: remove swift user manifest (DLO) hash calculation -b1bfc3a (origin/wip-9479) rgw: send back ETag on S3 object copy -3196345 (origin/wip-9478) rgw: S3 object copy content type fix +52cb44c osd, mon: Send initial pg create time from mon to osd +2e63944 librbd: Refactor librbd unit tests to use test fixtures +5d9f36f rgw: update swift subuser perm masks when authenticating +ef6d3ad rgw: remove swift user manifest (DLO) hash calculation +b1bfc3a rgw: send back ETag on S3 object copy +3196345 rgw: S3 object copy content type fix 3103c8a ObjectStore: Fix a error comment. a1aa70f ObjectStore: Don't use largest_data_off to calc data_align. 8ba504d buffer: Add _memcopy_count to track total count of memcopy by rebuild/rebuild_page_aligned/c_str. -3d45a68 (origin/wip-log-client) mds: fix log_client config +3d45a68 mds: fix log_client config 7dc2ca8 osd: configure log_client properly da6a8a3 mon: move log config parsing into LogClient.h helper 0fd54a7 move Monitor::update_log_client to LogChannel::update_config @@ -2687,17 +2887,17 @@ da6a8a3 mon: move log config parsing into LogClient.h helper 84fec86 osd: add 'cluster_log [type] [message ...]' tell command 4f40975 commong/LogEntry: string_to_clog_type 705a1e3 osd: cache pool: delete dead code in ReplicatedPG::agent_choose_mode -fe7bf06 (origin/wip-9877) rgw: RGWRados::get_obj() returns wrong len if len == 0 +fe7bf06 rgw: RGWRados::get_obj() returns wrong len if len == 0 f4ee949 osd: cache pool: flush object ignoring cache min flush age when cache pool is full Signed-off-by: Xinze Chi 6da9405 doc: Edited Key/Value store config reference. 03be944 doc: Added Key/Value store config reference to index. -72fc262 (origin/wip-doc-openstack-juno) doc: Update for OpenStack Juno. -65c3350 (origin/wip-9977) tools: skip up to expire_pos in journal-tool -e0166a2 (origin/wip-9986) osdc/Objecter: Fix a bug of dead looping in Objecter::handle_osd_map +72fc262 doc: Update for OpenStack Juno. +65c3350 tools: skip up to expire_pos in journal-tool +e0166a2 osdc/Objecter: Fix a bug of dead looping in Objecter::handle_osd_map 31c584c osdc/Objecter: e shouldn't be zero in Objecter::handle_osd_map -093c5f0 (origin/wip-9987) mon/PGMap and PGMonitor: update last_epoch_clean cache from new osd keys +093c5f0 mon/PGMap and PGMonitor: update last_epoch_clean cache from new osd keys 3fb731b mon/PGMap: invalidate cached min_last_epoch_clean from new-style pg keys -8924158 (origin/wip-6756) JounralingObjectStore: journal->committed_thru after replay +8924158 JounralingObjectStore: journal->committed_thru after replay 122c503 client: Inform mds file size when approaching quota limit a50b8eb client: Enforce quota check when changing file size bbfeaae client: Forbid moving files across quota trees @@ -2722,30 +2922,30 @@ fb57e84 ceph: Add MClientQuota message type da488ce test: add test case for quota_info_t a071201 ceph: Add quota_info_t to store quota info 3619ea8 ceph: Add quota feature flags -a554766 (origin/wip-buffer) buffer: implement list::get_contiguous +a554766 buffer: implement list::get_contiguous 4a9ad7d osd/ReplicatedPG: fix compile error 29d7786 ceph.in: remove '--' from injectargs, if there, as well 7533245 Fix rados_shutdown hang forever when using radosstriper -c5f8d6e (origin/wip-9752-past-intervals) osd: past_interval display bug on acting -50c2c75 (origin/wip-9944) osdc/Objecter: fix null dref when pool dne -1eb9bcb (origin/wip-9945) messages: fix COMPAT_VERSION on MClientSession +c5f8d6e osd: past_interval display bug on acting +50c2c75 osdc/Objecter: fix null dref when pool dne +1eb9bcb messages: fix COMPAT_VERSION on MClientSession c96fe59 doc: update RBD for Juno 56ee3b4 doc/release-notes: it's 8MB, not 32MB f7431cc msg/Pipe: discard delay queue before incoming queue c51c8f9 (tag: v0.87) 0.87 ce6f22d AsyncMessenger: Add kqueue support -5a4c3aa (origin/wip-9800-giant) client: allow xattr caps in inject_release_failure -214ac9f (origin/wip-doc-fs-quickstart) doc: include 'fs new' stuff in cephfs quickstart +5a4c3aa client: allow xattr caps in inject_release_failure +214ac9f doc: include 'fs new' stuff in cephfs quickstart 1fef4c3 Get the currently atime of the object in cache pool for eviction 66b4cd9 tests: fix signed/unsigned warning 4b87a81 rbd: Fix the rbd export when image size more than 2G ef1980f osd: tiering: calculate object age during eviction when there is no hit set -6fca23f (origin/wip-9919-injectargs-side-effects) qa: avoid qa/workunits/cephtool/test.sh unstability +6fca23f qa: avoid qa/workunits/cephtool/test.sh unstability 5691c68 client: allow xattr caps in inject_release_failure 5950710 Fix the match error when starting OSD daemons. If we have osd.7 and osd.77 on the same host, osd.7 will not be mounted if osd.77 is mounted. Signed-off-by: huangjun abd3fd3 fix can not disable max_size quota 622c5ac osd: cache tiering: fix the atime logic of the eviction -b90b483 (origin/wip-objectstore) remove collection_rename +b90b483 remove collection_rename a80f2f6 ceph_filestore_dump: use "remove" marker instead of collection rename 5dc990c osd: remove pgs with "remove" flag on startup 856504c ceph_test_filestore_idempotent_sequence: drop collection_rename @@ -2760,9 +2960,9 @@ de52873 osd, filestore: move automatic upgrade into mount() 86919f5 osd, filestore: mount in upgrade() caller 5f8a1df osd, filestore: move convertfs into FileStore b889b6b remove ceph_dupstore -a5184cf (origin/wip-9869) client: cast m->get_client_tid() to compare to 16-bit Inode::flushing_cap_tid -a4caed8 (origin/wip-9894) client: fix I_COMPLETE_ORDERED checking -387d5d8 (origin/wip-vstart) init-ceph: make ./init-ceph behave from src dir on systemd +a5184cf client: cast m->get_client_tid() to compare to 16-bit Inode::flushing_cap_tid +a4caed8 client: fix I_COMPLETE_ORDERED checking +387d5d8 init-ceph: make ./init-ceph behave from src dir on systemd a6357f2 unittest_shared_cache: fix build line 1abb620 doc/release-notes: giant notes 6a43809 rgw_rest_client.cc: remove self assignment of new_info.effective_uri @@ -2783,7 +2983,7 @@ c952cb9 rgw/rgw_formats.cc: fix realloc memory leak 5c7b8c6 rgw/rgw_rest_swift.cc: use empty() instead of size() 17c327f rgw/rgw_rest_s3.cc: use !empty() instead of size() > 0 84a5c84 vstart.sh: Fix usage -a9a2185 (origin/wip-crush-link-id) mon: fix `osd crush link` id resolution +a9a2185 mon: fix `osd crush link` id resolution 1877670 Remove dead code in EC LRC plugin a05dedc check to_remove before setting transaction f99c5f9 rgw/rgw_rados.cc: remove unused variable 'objs' @@ -2815,9 +3015,9 @@ d9abd53 ErasureCodeIsa.cc: reduce scope of variable e145bff ErasureCodePlugin.cc: reduce scope of variable c3ee13a cls_rbd_client.cc: reduce scope of variable 53e2ba0 mailmap: Federico Gimenez affiliation -eea9803 (origin/wip-enoent-race) os/LevelDBStore, RocksDBStore: fix race handling for get store size +eea9803 os/LevelDBStore, RocksDBStore: fix race handling for get store size 06a73c3 doc/release-notes: v0.87 giant (draft) -ecbbf87 (origin/wip-da-SCA-20141010) Paxos.cc: use reinterpret_cast instead of c-style cast +ecbbf87 Paxos.cc: use reinterpret_cast instead of c-style cast 784f6d5 fuse_ll.cc: use reinterpret_cast instead of c-style cast 3994cca librados.cc: use static_cast instead of c-style cast 719dc17 Revert "Enforce cache size on read requests" @@ -2826,18 +3026,18 @@ c2cebe5 Revert "osdc: Fix compiler warning" a1f23b7 Revert "rbd: ObjectCacher reads can hang when reading sparse files" b808cdf Revert "Fix read performance regression in ObjectCacher" c4b2abd .gitmodules: ignoring changes in rocksdb submodule -082416f (origin/wip-rbd-revert) Revert "Enforce cache size on read requests" +082416f Revert "Enforce cache size on read requests" 544b9a8 Revert "rbd: ObjectCacher reads can hang when reading sparse files" 3b1eafc Revert "Fix read performance regression in ObjectCacher" -d8442eb (origin/wip-rwtimer) common/Timer: kill RWTimer -f76f83c (origin/wip-9873) osdc/Objecter: fix tick_event handling in shutdown vs tick race +d8442eb common/Timer: kill RWTimer +f76f83c osdc/Objecter: fix tick_event handling in shutdown vs tick race 4848435 common/Timer: recheck stopping before sleep if we dropped the lock 8d51142 erasure-code: remove LRC dead code 9d09e37 ECTransaction: Remove unused typedef. 60eaeca .gitmodules: ignoring changes in rocksdb submodule a9dd4af rgw: send http status reason explicitly in fastcgi -44a8d59 (origin/fix-fstat-mode) java: fill in stat structure correctly -cb9262a (origin/wip-9806-giant) Objecter: resend linger ops on any interval change +44a8d59 java: fill in stat structure correctly +cb9262a Objecter: resend linger ops on any interval change 1a3ad30 ReplicatedPG: writeout hit_set object with correct prior_version 8ae942a Remove unnecessary expressions about conf_journal_sz 024efeb EC: document the LRC per layer plugin configuration @@ -2847,8 +3047,8 @@ fa07c04 qa: use sudo when rsyncing /usr so we can read everything 4128814 FDCache: purge hoid on clear 3abbd4c shared_cache: add purge and tests c116b4b shared_cache::add: do not delete value if existed -227ecd8 (origin/wip-9859) mon: Monitor: MMonGetMap doesn't require caps -9803ced (origin/wip-init-radosgw) init-radosgw.sysv: set ulimit -n before starting daemon +227ecd8 mon: Monitor: MMonGetMap doesn't require caps +9803ced init-radosgw.sysv: set ulimit -n before starting daemon e81d887 Make better error reporting for client's call to rados.Rados d9ff3a6 PG:: reset_interval_flush and in set_last_peering_reset a49d745 objecter: Unlock in shutdown before waiting for timer thread @@ -2860,21 +3060,21 @@ fdeeeb1 erasure code: use 32-byte aligned buffers 3ce0615 erasure code: use a function for the chunk mapping index 6154339 common: add an aligned buffer with less alignment than a page 681dad8 common: remove dead code in buffer.cc -12f1151 (origin/wip-9852) mon: MDSMonitor: have 'filesystem_command' return int instead of bool +12f1151 mon: MDSMonitor: have 'filesystem_command' return int instead of bool c589f3f mon: MDSMonitor: proper error output if pool DNE on 'add_data_pool' 52180a5 mon: MDSMonitor: update function doxygen description -64cf8ea (origin/wip-msgr) msg/async/AsyncConnection: drop unused port +64cf8ea msg/async/AsyncConnection: drop unused port 86d3b18 msg/Messenger: allow ms_type 'random' 57d8195 msg/Makefile: keep headers c025632 msg/async: rename ms_event_ -> ms_async_, drop unused config options ddc9bc0 libcephfs.cc: use reinterpret_cast instead of c-style cast -fbf89f5 (origin/wip-9857) rbd: Correct readahead divide by zero exception +fbf89f5 rbd: Correct readahead divide by zero exception d9e340c Makefile.am: remove also old *.o/lo files 89eb2fe crush/CrushWrapper.cc: use reinterpret_cast instead of c-style cast 32665fa client/Client.cc: prefer empty() over size() for emptiness check 4cf3b5c FileJournal.cc: use reinterpret_cast instead of c-style cast e72dfb4 Default configure with nss instead of cryptopp -2ec3609 (origin/wip-9372-injectargs) cli: CEPH_ARGS must be before injectargs +2ec3609 cli: CEPH_ARGS must be before injectargs a566610 doc: update injectargs syntax a458bd8 cli: do not parse injectargs arguments twice f1afb18 cli: add verbose information related to argument parsing @@ -2886,8 +3086,8 @@ d80ea6a mailmap: Mehdi Abaakouk affiliation 4eee5f0 mailmap: VRan Liu affiliation d8b260a mailmap: Yann Dupont affiliation 65be257 Fix read performance regression in ObjectCacher -349eb51 (origin/wip-9836-test-mon-id) tests: mon id is incorrectly skipped -9fbc083 (origin/wip-9031-9262) rados command: Add format support for ls operation +349eb51 tests: mon id is incorrectly skipped +9fbc083 rados command: Add format support for ls operation 81f1a54 doc: Changes to librados to fix doc errors 09a6186 doc: The dot package is included in graphviz package aae0976 doc: Remove unused PendingReleaseNotes file @@ -2905,8 +3105,8 @@ aa837b0 pybind: Add previously missed basic namespace to python bindings 21a0eb3 test, key_value_store: Use pool rbd since no default data pool present d7a8148 ceph_test_rados_api_*: expose RadosTest::nspace Expose RadosTestEC::nspace Rename others to nspace for consistency e42fb5e Revert "ceph_test_rados_api_*: expose nspace" -ac3c1cb (origin/wip-9820) qa/workunits: cephtool: don't remove self's key on auth tests -98d7760 (origin/sponce-wip-9356) Added missing semaphore in libradosstriper AIO tests leading to potential memory corruption and thus test failures +ac3c1cb qa/workunits: cephtool: don't remove self's key on auth tests +98d7760 Added missing semaphore in libradosstriper AIO tests leading to potential memory corruption and thus test failures f26cd1b Fixed remaining part of the seg fault described in bug 9356 by adding reference counting to CompletionData 783fc66 Fixed part of the seg fault described in bug 9356 by adding reference counting on RadosReadCompletionData 52c97b0 Fixed part of the seg fault described in bug 9356 by cleaning reference counting on MultiAioCompletionImpl @@ -2918,18 +3118,18 @@ ea100ac KeyValueStore: Add clone op detect to promote error f207416 mailmap: Cheng Cheng name normalization f76a676 osd: log when scrub,deep scrub, repair starts 64d977b client: fix signed/unsigned compilation warnings -cb290a1 (origin/wip-adamcrume) osdc: Fix compiler warning +cb290a1 osdc: Fix compiler warning 2ae1cba mon: MDSMonitor: wait for osdmon to be writable when requesting proposal 0dd473c mon: MDSMonitor: have management_command() returning int instead of bool 91b2a2b mon: MDSMonitor: don't return -EINVAL if function is bool 1d1ae41 mon: MDSMonitor: check all conditions are met *before* osdmon proposal 07b7f10 mon: MDSMonitor: return if fs exists on 'fs new' -2c06413 (origin/wip-mds-coverity) mds: fix null dereference -9e6ae73 (origin/giant-unknown-locktype) mds: reply -EOPNOTSUPP for unknown lock type +2c06413 mds: fix null dereference +9e6ae73 mds: reply -EOPNOTSUPP for unknown lock type bb9add6 test: fix compile warning in bufferlist.cc a49255f librbd: fix compile warning in librbd/internal.cc. 69b5c72 doc: updates on Backfill Reservation -4606af7 (origin/wip-9526-crush-rename-bucket) mon: unit tests for osd crush rename-bucket +4606af7 mon: unit tests for osd crush rename-bucket aa67560 mon: add the osd crush rename-bucket command 29d13d4 crush: unit tests for CrushWrapper rename item/bucket methods 30f3ac3 crush: add CrushWrapper::rename_bucket and can_rename_bucket @@ -2937,25 +3137,25 @@ aa67560 mon: add the osd crush rename-bucket command f810710 add unittest for Striper::get_num_objects 236895e crush: improve constness of CrushWrapper methods 7b66ee4 when non-default striping is used, internal methods can operate on extra objects -3741aab (origin/wip-9790-display-auid) auth: unit tests for auid display +3741aab auth: unit tests for auid display 5558afa qa/workunits/rbd/import_export.sh: be case insensitive fcc3692 auth: add display auid to KeyServer::encode_secrets fa2ff33 auth: add display auid to KeyRing::encode_formatted 2cbebc3 doc: correct command of `config push` 107cb0d rgw: correct "If-Modified-Since" handle. -ac92c45 (origin/wip-client-flock) qa/workunits/fs/misc: Add a workunit for file lock interruption +ac92c45 qa/workunits/fs/misc: Add a workunit for file lock interruption b0e6e85 mds: fix neighbor lock check b61468d doc/dev/sepia: notes about sepia email list and irc channels 6705180 doc/release-notes: v0.80.7 -c9f9e72 (origin/wip-9598) Revert "Objecter: disable fast dispatch of CEPH_MSG_OSD_OPREPLY messages" +c9f9e72 Revert "Objecter: disable fast dispatch of CEPH_MSG_OSD_OPREPLY messages" 00907e0 msg/simple: do not stop_and_wait on mark_down 22637f4 doc: update lab notes -7022679 (origin/wip-5977) librbdpy: Added missing method docstrings +7022679 librbdpy: Added missing method docstrings 6753923 mds: reply -EOPNOTSUPP for unknown lock type -c4bac3e (origin/wip-inotable-init) mds: fix inotable initialization/reset +c4bac3e mds: fix inotable initialization/reset c95bb59 mds: fix inotable initialization/reset f1fccb1 rpm: 95-ceph-osd-alt.rules is not needed for centos7 / rhel7 -b73fe1a (origin/wip-9730) doc: remove node requirement from 'mon create-initial' +b73fe1a doc: remove node requirement from 'mon create-initial' 264f0fc doc: remove whitespace 20b2766 Update vstart to setup users for s3-tests 0969945 client: use finisher to abort MDS request @@ -2967,14 +3167,14 @@ e464a77 client: use atomic variable to track reference of MetaRequeset fbf4d47 KeyValueStore: Make clone error message more friendly b426460 GenericObjectMap: sync transaction avoid lookup_parent failed 674c911 StoreTest: Add clone xattr test -d947050 (origin/wip-9718) osd/osd_types: consider CRUSH_ITEM_NONE in check_new_interval() min_size check -5ff4a85 (origin/wip-9747-ceph-spec) rpm: 95-ceph-osd-alt.rules is not needed for centos7 / rhel7 +d947050 osd/osd_types: consider CRUSH_ITEM_NONE in check_new_interval() min_size check +5ff4a85 rpm: 95-ceph-osd-alt.rules is not needed for centos7 / rhel7 50987ec libcephfs.h libcephfs.cc : Defined error codes for the mount function Used new error codes from libcephfs.h to replace the magic numbers in the mount functon found in libcephfs.cc. 7bab093 return value of handle_message for MSG_OSD_SUBOP/MSG_OSD_SUBOPREPLY should be true -d955676 (origin/wip-8983) rados: Use strict_strtoll instead of strtoll -809ddd2 (origin/wip-9706) osdc/Objecter: fix use-after-frees in close_session, shutdown +d955676 rados: Use strict_strtoll instead of strtoll +809ddd2 osdc/Objecter: fix use-after-frees in close_session, shutdown 72a2ab1 osdc/Objecter: fix tick() session locking -d98b755 (origin/wip-9716) librados: Fix function prototypes in librados.h +d98b755 librados: Fix function prototypes in librados.h d458b4f PGLog::IndexedLog::trim(): rollback_info_trimmed_to_riter may be log.rend() 022bace rados: Add tests for CLI strict parsing 26fe180 test: Fix rmpool in test_rados_tool.sh @@ -2986,16 +3186,16 @@ e075c27 common: link mds/flock.o to libcommon 89ebcaa Fixed JSON output for stray OSDs a8d597f Fix error message when stripping with format 1 66afcd9 Check pointer before deleting -2c7c03c (origin/wip-coverity-20141003) ceph_erasure_code_benchmark: fix parameter handling +2c7c03c ceph_erasure_code_benchmark: fix parameter handling 8021581 client: add missing dendl and s/dout/ldout/ -fa539b9 (origin/wip-9692) qa/workunits/fs/misc: fix syntax error -9b18d99 (origin/wip-9696) PG::choose_acting: in mixed cluster case, acting may include backfill -3dd4cca (origin/wip-7796) rgw: set length for keystone token validation request -3cd8a7f (origin/giant-locker-null) mds: Locker: fix a NULL deref in _update_cap_fields +fa539b9 qa/workunits/fs/misc: fix syntax error +9b18d99 PG::choose_acting: in mixed cluster case, acting may include backfill +3dd4cca rgw: set length for keystone token validation request +3cd8a7f mds: Locker: fix a NULL deref in _update_cap_fields 3b9dcff rados: Parse command-line arguments strictly aa138eb mds: MDirUpdate: initialize discover count to 0 if we're not discovering 2a9ed93 mds: MDSAuthCaps: init "read" param in default constructor -ce4436c (origin/wip-print-mode) client: print out mode, uid, gid if they are changed +ce4436c client: print out mode, uid, gid if they are changed 7cb2840 test_rgw_admin_log.cc: refactor to use calloc() c43c85f test_rgw_admin_log.cc: fix use-after-free c60a170 test/librados/c_write_operations.cc: free ressources @@ -3009,9 +3209,9 @@ d75856b osd/ReplicatedBackend.cc: prefer ++operator for non-primitive iterators 72e708c osd/OSDMap.cc: prefer ++operator for non-primitive iterators 4669233 mount.ceph.c: ensure '\0' terminated string 865a0dc build: add ceph-erasure-code-corpus to gitmodule_mirrors -f06ffba (origin/wip-da-fix-make_check) Makefile.am: make sure everything was build before make check +f06ffba Makefile.am: make sure everything was build before make check 9b3d345 qa: move mon_mds tests last -e27cf41 (origin/wip-9437) qa: cephtool tests for `tell mds.X` +e27cf41 qa: cephtool tests for `tell mds.X` 620a722 qa: fixup cephtool test when MDS exists 82ecf60 test: unit tests for MDSAuthCaps d15ecaf vstart: create fewer pgs for fs pools @@ -3043,11 +3243,11 @@ ed862ec AsyncMessenger: move Async* related file to msg/async 268db10 AsyncConnection: Rescheduler write event when connect successfully b8ae562 AsyncConnection: Avoid seq ack not send and skip sd<0 shutdown e25f2fe AsyncMessenger: Avoid join when worker thread not started -64ca744 (origin/wip-heap-profiler) doc: update memory-profiling with examples +64ca744 doc: update memory-profiling with examples 6f6e7e2 mon,mds: call ceph_heap_profiler_init() at boot time 472a4b3 perfglue: profiler stats need more than 1024 bytes cb36ccb mailmap: add yuandong to organizationmap -bc0209e (origin/wip-catch-options-errors) test,tools: indentation, whitespace only +bc0209e test,tools: indentation, whitespace only 3677fe0 tools: allow_unregistered() options 29b3771 tools: move po::collect_unrecognized in the try block 8e5b7ac tools: display boost::program_options errors @@ -3084,13 +3284,13 @@ d41bb28 Add STANDBY state process 071ba4a Add event option a653af1 Remove DispatchQueue in AsyncMessenger d09d28c Add AsyncMessenger support -82175ec (origin/wip-9513) Fix read performance regression in ObjectCacher -0dd3afd (origin/wip-9496) mon: PGMonitor: populate scrub timestamps with 'now' on pg creation +82175ec Fix read performance regression in ObjectCacher +0dd3afd mon: PGMonitor: populate scrub timestamps with 'now' on pg creation ccdbfb4 mon: PGMonitor: prettify access to pg_stats_t in register_pg -9b39033 (origin/wip-9419) osd: Return EOPNOTSUPP if a set-alloc-hint occurs with OSDs that don't support +9b39033 osd: Return EOPNOTSUPP if a set-alloc-hint occurs with OSDs that don't support 70ef4c1 osd: Remove unused PG functions queue_notify(), queue_info(), queue_log() d14ca34 0.86 -7c4e278 (origin/wip-9677-ioprio-class-giant) common: ceph_ioprio_string_to_class always returns -EINVAL +7c4e278 common: ceph_ioprio_string_to_class always returns -EINVAL 822b088 osd: log error if set_ioprio fails to parse class efb23b8 common: set_ioprio debug message including pid 62f0ef4 common: do not set ioprio if pid is not set @@ -3098,7 +3298,7 @@ efb23b8 common: set_ioprio debug message including pid 97dcc05 (tag: v0.86) 0.86 32e8bcd Run configure without liblttng on squeeze as well. be6de4a Run configure without liblttng on squeeze as well. -3535b7a (origin/wip-9677-ioprio-class) common: ceph_ioprio_string_to_class always returns -EINVAL +3535b7a common: ceph_ioprio_string_to_class always returns -EINVAL 5088e0d osd: log error if set_ioprio fails to parse class 33339c7 common: set_ioprio debug message including pid c7e4c0b common: do not set ioprio if pid is not set @@ -3107,32 +3307,32 @@ b2e4bd5 msg: move SimpleMessenger to msg/simple/ 5a860be librados: use Messenger factory method 5eff0ee msg: use localized cct for derr 06aef6f doc/release-notes: v0.86 -10fe7cf (origin/wip-ostool) ceph_objectstore_tool: Accept CEPH_ARGS environment arguments -6aba0ab (origin/wip-9128) Add reset_tp_timeout in long loop in add_source_info for suicide timeout -52ac520 (origin/wip-rm-legacy-cli) tools: remove old ceph.cc +10fe7cf ceph_objectstore_tool: Accept CEPH_ARGS environment arguments +6aba0ab Add reset_tp_timeout in long loop in add_source_info for suicide timeout +52ac520 tools: remove old ceph.cc 63c7e16 test/osd/Object: don't generate length of 0 -abe4c35 (origin/wip-os-recommend-doc-fix) doc: update kernel recommendations, add tunables link -6b9e20a (origin/wip-9658) ceph.spec: make ceph -> python-ceph dependency specify version +abe4c35 doc: update kernel recommendations, add tunables link +6b9e20a ceph.spec: make ceph -> python-ceph dependency specify version 69acc8a msg: make messenger type configurable 62b0bfd msg/Message: drop unneeded #include e55cb1f mon/MonClient: use generic Messenger factory -fe57fab (origin/wip-9663) client: clean-up objecter on failed client init +fe57fab client: clean-up objecter on failed client init ca10ce4 Add one more case ( "=" ) and test get_str_vec as well. Signed-off-by: Yann Dupont -257dcc9 (origin/wip-osd-op-macro) rados.h: use macros to generate osd ops definitons and strings -1858f06 (origin/johnugeorge-wip-9492-crush-giant) Crush: Ensuring at most num-rep osds are selected +257dcc9 rados.h: use macros to generate osd ops definitons and strings +1858f06 Crush: Ensuring at most num-rep osds are selected 01e389a Crush: Ensuring at most num-rep osds are selected -f1becf9 (origin/wip-9655-osd-tell) qa: ceph tell must retry on ENXIO -234b066 (origin/wip-9492-crush-indep) Crush: Ensuring at most num-rep osds are selected +f1becf9 qa: ceph tell must retry on ENXIO +234b066 Crush: Ensuring at most num-rep osds are selected 5c6c366 debian/control: fix python-ceph -> ceph file move to allow upgrades -35fd272 (origin/wip-9657) messages: provide an explicit COMPAT_VERSION in MMDSBeacon -177a33b (origin/wip-9661) MemStore: Need set/get_allow_sharded_objects() to work for ceph_objectstore_tool +35fd272 messages: provide an explicit COMPAT_VERSION in MMDSBeacon +177a33b MemStore: Need set/get_allow_sharded_objects() to work for ceph_objectstore_tool 0b155d0 ceph_objectstore_tool: MemStore needs a CephContext 7f6c31b debian/control: BuildDepend on lsb-release -73d5bdb (origin/wip-9245-test-mon-pending-giant) tests: remove tests requiring osdmonitor_prepare_command +73d5bdb tests: remove tests requiring osdmonitor_prepare_command e865781 mon: obsolete osdmonitor_prepare_command d0c2d7d test: minor case fix -d0ceb3a (origin/wip-9545) os/FileStore: do not loop in sync_entry on shutdown -7e2bd22 (origin/wip-9418) mon: Monitor: let 'handle_command()' deal with caps validation +d0ceb3a os/FileStore: do not loop in sync_entry on shutdown +7e2bd22 mon: Monitor: let 'handle_command()' deal with caps validation f0653c0 qa/workunits: mon: auth_caps: account for mon blank caps 87d06f1 mon: MonCommands: adjust indentation for 'auth add' c7d5c25 qa/workunits: mon: auth_caps: variables must be local @@ -3146,59 +3346,59 @@ ea96863 qa/workunits: cephtool: test auth profiles d6b702c mon: MonCap: add new profiles 940c4e2 mon: Monitor: match command module caps against what's on MonCommands.h 8612461 mon: AuthMonitor: validate caps when creating or changing mon caps -038de00 (origin/wip-9245-test-mon-pending) tests: remove tests requiring osdmonitor_prepare_command +038de00 tests: remove tests requiring osdmonitor_prepare_command 2abc8f4 mon: obsolete osdmonitor_prepare_command 6f69837 test: minor case fix -eb2f0f4 (origin/wip-9653-ceph-disk-bootstrap-osd-giant) ceph-disk: bootstrap-osd keyring ignores --statedir -fa0bd06 (origin/wip-9653-ceph-disk-bootstrap-osd) ceph-disk: bootstrap-osd keyring ignores --statedir +eb2f0f4 ceph-disk: bootstrap-osd keyring ignores --statedir +fa0bd06 ceph-disk: bootstrap-osd keyring ignores --statedir 19be358 PG::actingset should be used when checking the number of acting OSDs for a given PG. Signed-off-by: Guang Yang 8253ead osdc/Objecter: use SafeTimer; make callbacks race-tolerant 6c37984 mailmap: Yehuda Sadeh name normalization beff616 ceph-disk: set guid if reusing a journal partition -50e8040 (origin/wip-rados-empty-file) tools: rados put /dev/null should write() and not create() -0b0a373 (origin/wip-ysw-mailmap) mailmap: update email address +50e8040 tools: rados put /dev/null should write() and not create() +0b0a373 mailmap: update email address 188370a doc/release-notes: fix attributions for 8702 fix c0dc3a5 doc/release-notes: v0.80.6 -5b41d80 (origin/wip-8911) rgw: swift GET / HEAD object returns X-Timestamp field +5b41d80 rgw: swift GET / HEAD object returns X-Timestamp field 29356d8 qa: fix osd pool ls invalid test a1aa06b ReplicatedPG: dump snap_trimq on pg query 34f38b6 ReplicatedPG: do not queue the snap trimmer constantly b29bf00 ReplicatedPG: clean out completed trimmed objects as we go -3374a0b (origin/wip-coverity-20141002) BtrfsFileStoreBackend.cc: fix string overflow +3374a0b BtrfsFileStoreBackend.cc: fix string overflow 8b7fc61 test_librbd.cc: fix compiler warning, cast to size_t -e506f89 (origin/wip-objecter-shutdown) Objecter: check the 'initialized' atomic_t safely -0f731ae (origin/revert-2604-wip-9113) Revert "ReplicatedPG: clean out completed trimmed objects as we go" -fea0154 (origin/wip-mon-status) mon: break recovery status onto separate lines +e506f89 Objecter: check the 'initialized' atomic_t safely +0f731ae Revert "ReplicatedPG: clean out completed trimmed objects as we go" +fea0154 mon: break recovery status onto separate lines 46a76d5 mon: put 'ceph status' quorum status on new line e127c89 mon: put 'ceph status' health items on separate lines da9ae5c ceph.spec: fix typo -63b30d4 (origin/wip-8187) librbd: Skip tier pools in list_children and snap_unprotect -63d0ec7 (origin/wip-9013) rgw: add civetweb as a default frontend -d8ae14f (origin/wip-8188) librados: Add rados_pool_get_base_tier call -5b58f16 (origin/wip-coverity-20141001) test_librbd.cc: fix compiler warning +63b30d4 librbd: Skip tier pools in list_children and snap_unprotect +63d0ec7 rgw: add civetweb as a default frontend +d8ae14f librados: Add rados_pool_get_base_tier call +5b58f16 test_librbd.cc: fix compiler warning 58c732f client/SyntheticClient.cc: remove dead code 3184a20 doc: A couple of fixes to the CloudStack documentation 88022e8 SyntheticClient.cc: remove dead code 17fa397 LogEntry.h: init LogEntry::prio in constructor 7d6e21d osd: fix need_journal call -8388836 (origin/wip-rpm-epoch) ceph.spec.: add epoch -a470c96 (origin/wip-fsls-json) mon: fix JSON `fs ls` output +8388836 ceph.spec.: add epoch +a470c96 mon: fix JSON `fs ls` output 2955b3d ObjectStore: Add "need_journal" interface to make aware of journal device 05fd507 Pipe: avoid redundancy new/delete for struct iovec -cefb1a3 (origin/wip-9635) mon: wait for paxos writes before touching state +cefb1a3 mon: wait for paxos writes before touching state 46c1d93 mon: flush paxos write before setting shutdown state 4072ef7 mon: move paxos write wait into a helper 624aaf2 PG: release backfill reservations if a backfill peer rejects -62e2bca (origin/wip-8822) osd: swap state spinlock for atomic_t +62e2bca osd: swap state spinlock for atomic_t a8ac4b6 osdc/Filer: drop probe/purge locks before calling objecter 0ea20a6 Locker: accept ctime updates from clients without dirty write caps 2e9c7c9 test-shared-cache: Add test for "lower_bound" method. Add multithread tests for "lookup" and "lower_bound" methods. d34c21c test-shared-cache: Initial draft for the unit test of "common/shared_cache.hpp". de87d54 common: document C_GatherBuilder and C_Gather -a67c2f9 (origin/wip-9628) mds: Add session to sessionmap when its state becomes opening +a67c2f9 mds: Add session to sessionmap when its state becomes opening 1feba20 Objecter: init with a constant of the correct type -46d5518 (origin/wip-osd-objecter) osd: do not bind ms_objecter messenger -fe3434f (origin/wip-python-flask) debian: move ceph_rest_api.py into ceph +46d5518 osd: do not bind ms_objecter messenger +fe3434f debian: move ceph_rest_api.py into ceph 8cda623 ceph.spec.in: move ceph_rest_api.py into ceph b241624 ceph.spec: fix python-flask dependency e42424e debian: python-flask is needed by ceph, not python-ceph @@ -3223,24 +3423,24 @@ b167f70 mailmap: Sahid Ferdjaoui affiliation b386b59 mailmap: JuanJose Galvez affiliation e6bba0d mailmap: Roman Haritonov affiliation e133a92 mailmap: Yongyue Sun affiliation -beade63 (origin/wip-9620-test-mon-thrash) qa/workunits/cephtool/test.sh: fix thrash (ultimate) +beade63 qa/workunits/cephtool/test.sh: fix thrash (ultimate) 5d1d9db librados: cap the IoCtxImpl::{aio_}*{write,append} buffer length 5f029ff os/FileStore: using FIEMAP_FLAGS_SYNC instead of fsync() before call fiemap. 69fc171 Clock: Using clock_gettime instead of gettimeofday in linux os. becc114 librados: test s/E2BIG/TooBig/ 32195f9 librados: cap the rados_aio_*{write,append} buffer length f777fc6 osd: Make RPGTransaction::get_bytes_written return the correct size. -7849d79 (origin/wip-crush-location) crushtool: add --show-location command +7849d79 crushtool: add --show-location command 33501d2 librados: cap the rados*{write,append} buffer length f8ac224 ceph-disk: add Scientific Linux as a Redhat clone -6b4d1aa (origin/johnugeorge-wip-9492-crush) Crush: Ensuring at most num-rep osds are selected +6b4d1aa Crush: Ensuring at most num-rep osds are selected 5ca7ea5 ceph-disk: add Scientific Linux as a Redhat clone 7827e00 os: io_event.res is the size written d851c3f osd: improve debug output for do_{notifies,queries,infos} -126d0b3 (origin/wip-9582) osdc/Objecter: only post_rx_buffer if no op timeout -ba02a5e (origin/wip-9536-isa-alignment) erasure-code: test isa encode/decode with various object sizes +126d0b3 osdc/Objecter: only post_rx_buffer if no op timeout +ba02a5e erasure-code: test isa encode/decode with various object sizes eb8fdfa erasure-code: add test for isa chunk_size method -7a468f3 (origin/wip-msgr-shutdown) msg: allow calling dtor immediately after ctor +7a468f3 msg: allow calling dtor immediately after ctor af07d29 erasure-code: isa encode tests adapted to per chunk alignment aa9d70b erasure-code: isa test compare chunks with memcmp instead of strncmp ed77178 erasure-code: run isa tests via libtool and valgrind @@ -3248,26 +3448,26 @@ ed77178 erasure-code: run isa tests via libtool and valgrind 28c2b6e erasure-code: isa uses per chunk alignment constraints 6f4909a erasure-code: [ISA] modify get_alignment function to imply a platform/compiler independent alignment constraint of 32-byte aligned buffer addresses & length 7552571 doc/release-notes: v0.67.11 -8dc94a2 (origin/wip-9562) osdc/Filer: drop probe/purge locks before calling objecter +8dc94a2 osdc/Filer: drop probe/purge locks before calling objecter 9593d87 documentation: erasure-code plugin isa does not require k/m 6886224 mailmap: Yan Zheng affiliation fc1380b mailmap: Thorsten Glaser affiliation -7973280 (origin/wip-zafman-cleanup) osd: Remove unused PG functions queue_notify(), queue_info(), queue_log() -0f884fd (origin/wip-9008) For pgls OP, get/put budget on per list session basis, instead of per OP basis, which could lead to deadlock. +7973280 osd: Remove unused PG functions queue_notify(), queue_info(), queue_log() +0f884fd For pgls OP, get/put budget on per list session basis, instead of per OP basis, which could lead to deadlock. 7f87cf1 ReplicatedPG: clean out completed trimmed objects as we go 2cd9b5f tests: use memcmp to compare binary buffers -c17ac03 (origin/wip-9487) ReplicatedPG: don't move on to the next snap immediately +c17ac03 ReplicatedPG: don't move on to the next snap immediately 255b430 osd: initialize purged_snap on backfill start; restart backfill if change -f833f12 (origin/wip-5595) rgw: rados->set_attrs() updates bucket index +f833f12 rgw: rados->set_attrs() updates bucket index 44cfd88 rgw: PutObjMetadata, clear bufferlist before appending into it 4be53d5 PG: check full ratio again post-reservation 9c825ec documentation: revise placement group number guide -7f71c11 (origin/wip-mon-fix-checks) ceph-mon: check fs stats just before preforking +7f71c11 ceph-mon: check fs stats just before preforking 9687150 erasure-code: isa/lrc plugin feature -f51d21b (origin/wip-9572-erasure-code-blaumroth) erasure-code: restore jerasure BlaumRoth default w +f51d21b erasure-code: restore jerasure BlaumRoth default w e270216 mailmap: William A. Kennington III affiliation 9f0202b mailmap: Jason Dillaman affiliation -89fceb3 (origin/wip-mon-data-space-die) mon: Monitor: log RO commands on 'debug' level, RWX on 'info' +89fceb3 mon: Monitor: log RO commands on 'debug' level, RWX on 'info' 2c5b12d mon: Monitor: use MonCommand::requires_perm() when checking perms bb55862 mon: Monitor.h: add 'requires_perm()' function to MonCommand struct f1b814e mon: Monitor: log RO admin socket commands on 'debug' level @@ -3279,16 +3479,16 @@ f1b814e mon: Monitor: log RO admin socket commands on 'debug' level 9996d44 mon: DataHealthService: use get_fs_stats() instead 3d74230 common: util: add get_fs_stats() function f421d5c documentation: comment the CompatSet data members -ce8eefc (origin/wip-8629) osd/ReplicatedPG: do not clone or preserve snapdir on cache_evict +ce8eefc osd/ReplicatedPG: do not clone or preserve snapdir on cache_evict 398c74e ceph_test_rados_api_tier: add EvictSnap2 test case 682b9da os/FileJournal: do not request sync while shutting down 544b8c7 ReplicatedPG::on_removal: clear rollback info 781f05c Revert "PG::init: clear rollback info for backfill as well" a53ead1 osd: Cleanup boost optionals -28b7b93 (origin/wip-log-msgs) mds: remove spurious logging -226c0c7 (origin/wip-9547-python-rados-truncate) test: check python rados aio_read with buffers containing null +28b7b93 mds: remove spurious logging +226c0c7 test: check python rados aio_read with buffers containing null 8bda44f pybind: Fix aio_read handling of string buffer -9d9c8c7 (origin/wip-9539) Filer: add lock to protect strcut PurgeRange +9d9c8c7 Filer: add lock to protect strcut PurgeRange b47fdd4 rbd: Use a rolling average to compute RBD write throughput f3acae4 rgw_main.cc: add missing virtual destructor for RGWRequest eeb74a1 os/GenericObjectMap.cc: pass big parameter by reference @@ -3296,10 +3496,10 @@ eeb74a1 os/GenericObjectMap.cc: pass big parameter by reference f2a7d62 ErasureCodeLrc.h: fix UNINIT_CTOR 1a74822 ErasureCodeLrc.h: fix data_chunk_count UNINIT_CTOR 0e15df4 LogEntry.h: init LogEntry::seq with 0 -5bb94ed (origin/wip-9529) rgw: calculate hash after writing data +5bb94ed rgw: calculate hash after writing data 7b13724 crypto: don't hash zero sized buffer 76eff95 include/util.h: prevent multiple inclusion of header -b82ceda (origin/wip-coverity-20140919) rgw_main.cc: add missing virtual destructor for RGWRequest +b82ceda rgw_main.cc: add missing virtual destructor for RGWRequest 13b8c92 os/GenericObjectMap.cc: pass big parameter by reference 45e0b33 common/buffer.cc: catch exception by reference 7e82950 test/kv_store_bench.cc: fix coverity REVERSE_INULL @@ -3311,36 +3511,36 @@ ea02dc3 ErasureCodeLrc.h: fix UNINIT_CTOR af039ce test/librados/aio.cc: close resource leak 639c981 documentation: explain ceph osd reweight vs crush weight f51e368 erasure-code: fix assert overflow -13780d7 (origin/wip-9538-format-plain) mon: osd find / metadata --format plain fallback +13780d7 mon: osd find / metadata --format plain fallback 0fb0967 documentation: tiering typo -7ac60d8 (origin/wip-cephtool-test) tests: check osd health in cephtool/test.sh +7ac60d8 tests: check osd health in cephtool/test.sh 4d75c4c tests: qa/workunits/cephtool/test.sh ! and -e be97b7d documentation: fix bugous osd stop/start example -3f23709 (origin/wip-giant-messenger-fixes) Objecter: disable fast dispatch of CEPH_MSG_OSD_OPREPLY messages +3f23709 Objecter: disable fast dispatch of CEPH_MSG_OSD_OPREPLY messages 681a754 Pipe: stop delayed delivery fast_dispatch in stop_and_wait() fb5a244 osd/Watch: handle con without sessions 93dccdb osd/ReplicatedPG: handle sessionless op con in do_osd_op_effects 5d37850 osd: drop dead shutdown message handler bb45621 common: Add cctid meta variable -c421b55 (origin/wip-9301) mon: re-bootstrap if we get probed by a mon that is way ahead +c421b55 mon: re-bootstrap if we get probed by a mon that is way ahead d81cd7f mon/Paxos: fix off-by-one in last_ vs first_committed check -9132ca4 (origin/wip-5768) rbd-fuse: Fix memory leak in enumerate_images -9a1ab95 (origin/wip-6926) rbd: Fix rbd diff for non-existent objects +9132ca4 rbd-fuse: Fix memory leak in enumerate_images +9a1ab95 rbd: Fix rbd diff for non-existent objects d6913ae mds: fix not journaling client metadata -1395275 (origin/wip-9518) mds: fix not journaling client metadata -346c06c (origin/wip-6613) client: preserve ordering of readdir result in cache +1395275 mds: fix not journaling client metadata +346c06c client: preserve ordering of readdir result in cache 600af25 client: introduce a new flag indicating if dentries in directory are sorted -59c8976 (origin/wip-acl-test) qa/workunits/fs/misc: Add a workunit for ACL -2bd7cee (origin/wip-9341) client: trim unused inodes before reconnecting to recovering MDS -95ee699 (origin/wip-rbd-readahead) client: Replace client readahead logic with Readahead +59c8976 qa/workunits/fs/misc: Add a workunit for ACL +2bd7cee client: trim unused inodes before reconnecting to recovering MDS +95ee699 client: Replace client readahead logic with Readahead ad45d8c librbd: Add read-ahead 830373e osdc: Fix ObjectCounter::_readx perf counters 4809418 doc: Change listed RBD cache defaults to actual defaults -4089684 (origin/wip-decode-dump) msg: hexdump bad messages at debug level 1 (not 30) +4089684 msg: hexdump bad messages at debug level 1 (not 30) 5495570 msg: hexdump messages we can't decode at configurable debug level 7e13ac8 rgw: Export user stats in get-user-info Adminops API 480c372 Revert "crushtool: safeguard for missing --num-rep when --test" -288f05a (origin/wip-9189) mds: use new Session::human_name in health msgs +288f05a mds: use new Session::human_name in health msgs 6320e53 mds: implement const SessionMap::get_session 32b51bb mds: generate friendly name for client sessions 920cac9 ceph_fuse: include mount point in client metadata @@ -3353,9 +3553,9 @@ cd215c7 messages: add cephfs client metadata to MClientSession 0769310 PGLog::claim_log_and_clear_rollback_info: fix rollback_info_trimmed_to 07f54f2 PG::find_best_info: let history.last_epoch_started provide a lower bound 92cfd37 PG::choose_acting: let the pg go down if acting is smaller than min_size -1f450fa (origin/wip-xattr-fix) client: request xattrs if xattr_version is 0 +1f450fa client: request xattrs if xattr_version is 0 c837fb9 mds: return xattrs when client explictly requests xattrs -681a49c (origin/wip-9435) mon: forbid tier changes when in use by FS +681a49c mon: forbid tier changes when in use by FS 80441cd mon: prevent cache pools being used CephFS 86a4bed FileStore: Race condition during object delete is fixed 10b8966 crushtool: safeguard for missing --num-rep when --test @@ -3375,13 +3575,13 @@ daf6379 mailmap: correcting Zhiqiang Wang's mailmap and org affiliation 1a8b91b doc: Add keyvaluestore config description bb49547 KeyValueStore: Reduce redundancy set_header call 306fb2f mds: set new inode's xattr version to 1 -1b9226c (origin/wip-9219-giant) osd: subscribe to the newest osdmap when reconnecting to a monitor -56ba341 (origin/wip-objecter-cancel) osdc/Objecter: fix command op cancellation race +1b9226c osd: subscribe to the newest osdmap when reconnecting to a monitor +56ba341 osdc/Objecter: fix command op cancellation race baf7be9 osdc/Objecter: cancel timeout before clearing op->session -1149639 (origin/wip-xfs-inode64) ceph-disk: mount xfs with inode64 by default +1149639 ceph-disk: mount xfs with inode64 by default ded1b30 erasure-code: preload fails if < 0 -27208db (origin/wip-doc-preflight) doc: Added feedback. -a140439 (origin/wip-9284) mds: limit number of caps inspected in caps_tick +27208db doc: Added feedback. +a140439 mds: limit number of caps inspected in caps_tick bf590f8 mds: keep per-client revoking caps list a6a0fd8 xlist: implement copy constructor fd04d5e mds: health metric for late releasing caps @@ -3396,7 +3596,7 @@ e6062b8 mds: add a health metric for failure to recall caps c328486 client: fix crash in trim_caps 83fd1cf bugfix: wrong socket address in log msg of Pipe.cc 868b6b9 doc: osd_backfill_scan_(min|max) are object counts -cdb7675 (origin/wip-rbd-objectcacher-hang) rbd: ObjectCacher reads can hang when reading sparse files +cdb7675 rbd: ObjectCacher reads can hang when reading sparse files ddd52e8 init-radosgw.sysv: Support systemd for starting the gateway d32b428 doc: Added bucket management commands to ops/crush-map d446a65 documentation: jerasure plugin is sub section of erasure code profile @@ -3404,28 +3604,28 @@ d446a65 documentation: jerasure plugin is sub section of erasure code profile 75f0fb2 documentation: erasure code profile update b8a1ec0 doc: fixes a formatting error on ops/crush-map c3c6468 mds: update segment references during journal rewrite -a8c943a (origin/wip-9445) log: add simple test to verify an internal SEGV doesn't hang -2313ce1 (origin/wip-client-msg-leak) client: fix a message leak +a8c943a log: add simple test to verify an internal SEGV doesn't hang +2313ce1 client: fix a message leak e3fe18a global/signal_handler: do not log if SEGV originated inside log code 558463e log: add Log::is_inside_log_lock() -386f2d7 (origin/wip-9427-rewrite) mds: update segment references during journal rewrite -d41c3e8 (origin/wip-9307) rgw: push hash calculater deeper +386f2d7 mds: update segment references during journal rewrite +d41c3e8 rgw: push hash calculater deeper 28d4460 DBObjectMap: restructure map_header_in_use locking 0a1abac osd_types: fix pg_log_t tail dump 4d3579d doc: Added clarifications and added additional preflight steps for CentOS/RHEL. 1c8485e doc: Deleted redundant text string. ce7b2ec erasure-code: fix erasure_code_benchmark goop (decode) -9ba4e78 (origin/wip-9446) mon: fix MDS health detail output -2b45bfa (origin/majianpeng-fix3) buffer: Add a test for bufferlist::rebuild_page_aligned +9ba4e78 mon: fix MDS health detail output +2b45bfa buffer: Add a test for bufferlist::rebuild_page_aligned c268400 buffer: In rebuild_page_aligned for the last ptr is page aligned, no need call rebuild(). -bccb0eb (origin/wip-always-create-pidfile) daemons: write pid file even when told not to daemonize +bccb0eb daemons: write pid file even when told not to daemonize aa5234e doc: Add file system osd config settings Add documentation for osd mkfs and osd mount options. f54d5c7 rbd-replay: Add code documentation 8d23e8d rbd-replay: Add --dump-perf-counters option 675a6a6 rbd-replay: Add rbd-replay-many 398ebc0 librbd: Add missing tracepoints 3911354 rbd-replay: Add --anonymize flag to rbd-replay-prep -0e0a8d4 (origin/wip-7767-b) msg: prefetch data when doing recv() +0e0a8d4 msg: prefetch data when doing recv() 16bd457 ReplicatedPG: cancel cb on blacklisted watcher b7bdb93 erasure-code: fix erasure_code_benchmark goop 11082f7 OpTracker: Race condition removed while dumping ops through admin socket @@ -3434,27 +3634,27 @@ b7bdb93 erasure-code: fix erasure_code_benchmark goop 3fac790 OpTracker: Sharding logic is implemented to improve performance 2fbe82d doc: Fixed syntax error. 7dbf750 doc: Updated authentication notes. Fixed syntax error. -7281638 (origin/wip-mds-beacon) mds: sleep in progress thread if laggy and waiting_for_nolaggy waiters +7281638 mds: sleep in progress thread if laggy and waiting_for_nolaggy waiters 6fb5769 mds/Beacon: do not reconnect to mon in quick succession -4ad5db0 (origin/wip-client-ll-ref) client: include ll_ref when printing inode -cf70b90 (origin/wip-7934) test: Fix ceph_test_rados_watch_notify to delete the pools it creates +4ad5db0 client: include ll_ref when printing inode +cf70b90 test: Fix ceph_test_rados_watch_notify to delete the pools it creates 2e4e98b ReplicatedPG: Make perfcounter record the read-size for async-read. cf34e00 ReplicatedPG: record correctly subop for perfcounter. -117de00 (origin/wip-9413-erasure-code-version-check) erasure-code: mon, osd etc. depend on the plugins +117de00 erasure-code: mon, osd etc. depend on the plugins 5a05e6b [rgw][s3] Allow colon ':' in access key -f05c977 (origin/wip-pool-ls) mon: add 'osd pool ls [detail]' command -46bbe30 (origin/wip-osdc-leak) osdc/Objecter: fix leak of MStatfsReply +f05c977 mon: add 'osd pool ls [detail]' command +46bbe30 osdc/Objecter: fix leak of MStatfsReply 1ff94cc EC-ISA: avoid usage of table cache lock outside the class implementation by introducing the setEncodingTable/setEncodingCoefficient methods 5b41dac EC-ISA: add intelligent table cache -83bd343 (origin/wip-replay-locking) mds: fix replay locking +83bd343 mds: fix replay locking 3448d85 Cache tiering: do not allow flush/evict when there are requests pending b40cce7 osd: set min_read_recency_for_promote to default 1 when doing upgrade d734600 Change CrushWrapper::crush to private -5a784cd (origin/wip-9241) osdc/Objecter: drop bad session nref assert +5a784cd osdc/Objecter: drop bad session nref assert 3c6e888 osd/ClassHandler: fix build d165238 FileStore: report l_os_j_lat as commit latency -70ce400 (origin/wip-9365) osd/ClassHandler: improve error logging -2305b28 (origin/wip-9362) osdc/Objecter: revoke rx_buffer on op_cancel +70ce400 osd/ClassHandler: improve error logging +2305b28 osdc/Objecter: revoke rx_buffer on op_cancel f295c1f ceph_test_rados_api_io: add read timeout test 977d289 ceph_test_rados_api_*: expose nspace 1349383 Objecter::_recalc_linger_op: resend for any acting set change @@ -3464,7 +3664,7 @@ f917166 erasure-code: refactor jerasure Liberation parameters checks 937d2b0 Revert "ReplicatedPG:start_flush send a second delete" 78d7499 Revert "osd/ReplicatedPG: avoid dereferencing iterator at end()" 3578b11 ReplicatedPG: create max hitset size -e9b09e8 (origin/wip-9381-erasure-code-rpm) packaging: add all erasure code plugins to RPM packages +e9b09e8 packaging: add all erasure code plugins to RPM packages c5bafae erasure-code: Avoid k/m that we set are not equal in erasure-plugin. 9606232 KeyValueStore: Fix scrub causing inconsistence state ae05edd ObjectStore Test: Add test for simulating scrub behavior @@ -3474,40 +3674,40 @@ c664179 KeyValueStore: Fix upgrade from non-exist superblock OSD version error 2f2c37f mailmap: Marco Garcês affiliation 0204998 mailmap: Erik Logtenberg affiliation 284fb49 mailmap: François Lafont affiliation -6307536 (origin/wip-yasm) configure: do not try yasm on x32 +6307536 configure: do not try yasm on x32 d5777c4 doc: Fixed broken links and clarified terms for new authentication docs. e2de11a doc: Minor cleanup. 9ab46dc debian: only B-R yasm on amd64 836a670 doc/release-notes: v0.85 -591a179 (origin/wip-doc-qemu) doc: Added more robust usage example for uid and conf for QEMU. +591a179 doc: Added more robust usage example for uid and conf for QEMU. b178e97 doc: Clean up syntax to suppress warnings. 4ad1106 doc: Clean up syntax. -7531b28 (origin/wip-9366) lttng: Fix 'make tag' when configured --without-lttng -1c34601 (origin/wip-paxos-dout) mon/Paxos: make is_readable debug output show result +7531b28 lttng: Fix 'make tag' when configured --without-lttng +1c34601 mon/Paxos: make is_readable debug output show result 62ca27d mon/Paxos: don't spam log with is_readable at dout level 1 a0c2284 (tag: v0.85) 0.85 f0e0c31 Include types.h after stdint.h to accomodate for older distributions. This fixes compilation on CentOS 5. -9254792 (origin/wip-rbd-force-write-back) rbd should use write-back when caching is enabled +9254792 rbd should use write-back when caching is enabled 0fb3e52 correct error of repeatedly adding io_size to off in do_bench_write -4fc9fff (origin/wip-6494) Enforce cache size on read requests +4fc9fff Enforce cache size on read requests f0a4a2f tests: flush logs before grepping them 03aa113 erasure-code: init function is extern "C" 484fb85 doc: Update logging path to reflect log rotate script default path. f0a1d28 doc: Add a contributing file at the root of repo 4673242 rgw: add .log to default log path -6fac815 (origin/wip-formatter-va) formatter: clean up dump_format() +6fac815 formatter: clean up dump_format() df3c70a qa: scripts to help test ceph-qa-suite -2280736 (origin/wip-9358) osdc/Journaler: fix try_read_entry()/wait_for_readable() locking -94173a3 (origin/wip-9282) mds: warn clients which aren't revoking caps +2280736 osdc/Journaler: fix try_read_entry()/wait_for_readable() locking +94173a3 mds: warn clients which aren't revoking caps d8e672f rgw: Implementation for S3 Get Bucket Location 9e503b5 test/formatter: Add tests for dump_format_ns eaa2bb0 rgw_formats: dump_format_ns implementation 2fb51b2 Formatter: add a dump_format_ns to base Formatter -14d87bd (origin/xiaoxichen-refactor_lrc_crush) Refactor ErasureCodeLrc::create_ruleset -eae88da (origin/wip-8648) mds: clear objects' dirty flags after log segment is expired +14d87bd Refactor ErasureCodeLrc::create_ruleset +eae88da mds: clear objects' dirty flags after log segment is expired 69638df doc: fix missing bracket 35663fa doc: attempt to get the ayni JS into all head tags -409c955 (origin/wip-SCA-20140902) OSDMonitor.cc: fix potential division by zero +409c955 OSDMonitor.cc: fix potential division by zero 7b77210 objectstore/store_test.cc: fix unintentional integer overflow 6b70483 os/HashIndex.cc: fix unintentional integer overflow f29e5b3 mount.ceph.c: free memory before return @@ -3515,18 +3715,18 @@ f29e5b3 mount.ceph.c: free memory before return ece990d rados_list_parallel.cc: cleanup before return from run() 135ccad erasure-code: warning fix 7de8d17 FileStore: Remove unused code. -41df414 (origin/wip-mds-lock) mds: don't take mds_lock when doing journal operations +41df414 mds: don't take mds_lock when doing journal operations 7ccabbf librbd.cc: add check to prevent null deref in rbd_list() -4f35714 (origin/wip-9311) Parallelize RBD import/export +4f35714 Parallelize RBD import/export f53bf53 PendingIO.cc: use static_cast instead of c-style cast cbd324d FileStore.cc: use static_cast instead of c-style cast -ca6eb61 (origin/wip-9026) client: vxattr support for rstat -c2443b9 (origin/wip-doc-authentication) doc: Provided additional detail on daemon-specific caps syntax. +ca6eb61 client: vxattr support for rstat +c2443b9 doc: Provided additional detail on daemon-specific caps syntax. 8569b93 doc: Updated Keyring settings from comments and ceph-deploy defaults. b6a97d8 documentation: disk thread ioprio options 1b9e670 systemd support in ceph-disk activate 6ec08e0 client/Client.cc: fix null pointer checks for 'in' -c8d2388 (origin/wip-9151) mon: add MDS metric metadata to health detail +c8d2388 mon: add MDS metric metadata to health detail 9ee8015 mds: add thread to progress queues outside dispatch 1058a9e mon: handle beacon health metrics in MDSMonitor 0fc8a0d mds: populate health metrics in beacon @@ -3539,8 +3739,8 @@ f5e7a4b mds: use HeartbeatMap to control beacons e69f321 include/CompatSet: make merge const() 46c94e9 mds/CInode.h: prefer ++operator for non-primitive iterators a5468ab ceph_objectstore_tool.cc: prefer ++operator for non-primitive iterators -4d9927e (origin/wip-session-stats) mds: cap and lease count in `session ls` asok -ea2a8d0 (origin/wip-request-count) mds: Fix Session::get_request_count +4d9927e mds: cap and lease count in `session ls` asok +ea2a8d0 mds: Fix Session::get_request_count 15df8ac rbd_replay/Replayer.cc: pass const string parameter by reference 9d926f1 ReplicatedPG.cc: prefer ++operator for non-primitive iterators dae0593 IndexManager.cc: prefer ++operator for non-primitive iterators @@ -3554,7 +3754,7 @@ a754ce5 ErasureCodeLrc.cc: fix -Wmaybe-uninitialized compiler warning 16cbaba osd/PGLog.h: prefer ++operator for non-primitive iterators 8f368c5 mailmap: Ashish Chandra affiliation 5fd50c9 mailmap: Boris Ranto affiliation -a5b4c58 (origin/wip-9309) lockdep: increase max locks (1000 -> 2000) +a5b4c58 lockdep: increase max locks (1000 -> 2000) 9fac072 documentation: add the mark_unfound_lost delete option bec3032 osd: MissingLoc::get_all_missing is const e13ddc7 tests: qa/workunits/cephtool/test.sh early fail @@ -3562,12 +3762,12 @@ fc499aa mailmap: add .peoplemap 177202e erasure-code: lowercase LRC plugin name 4c9fdbf common/LogEntry: fix warning on x86_64 a24c8ba common/LogEntry: fix warning on i386 -acfe62e (origin/wip-aio-journal) Revert "os/FileJournal: For journal-aio-mode, don't use aio when closing journal." +acfe62e Revert "os/FileJournal: For journal-aio-mode, don't use aio when closing journal." c776a89 os/FileJournal: stop aio completion thread *after* writer thread -fa45ed8 (origin/wip-9285) osd/ReplicatedPG: do not evict blocked objects -ded1cf4 (origin/wip-9294) osd/ReplicatedPG: avoid dereferencing iterator at end() +fa45ed8 osd/ReplicatedPG: do not evict blocked objects +ded1cf4 osd/ReplicatedPG: avoid dereferencing iterator at end() d20432e erasure-code: preload LRC plugin -982c9dd (origin/wip-hitset-bytes) osd/ReplicatedPG: adjust avg_size calculation in agent_choose_mode +982c9dd osd/ReplicatedPG: adjust avg_size calculation in agent_choose_mode 3fc6a73 osd/ReplicatedPG: calculate num_user_bytes 6ce36b0 osd/ReplicatedPG: scrub and repair hit_set_archive bytes 3409c38 osd/ReplicatedPG: account for hit_set_archive bytes @@ -3585,17 +3785,17 @@ c2ca011 erasure-code: delegate chunk remapping to the plugin b517ca4 erasure-code: override the default only if the plugin match 4670d9e erasure-code: relax profile parameter syntax e2e07d9 erasure-code: add ErasureCodeInterface::get_coding_chunk_count -9fc2684 (origin/wip-9281) tools: use cout instead of cerr in journal tool -a994145 (origin/wip-mds-recover) mds/RecoveryQueue: do not start prioritized items synchronously -e0b19e3 (origin/wip-hadoop) qa: fix+cleanup hadoop wordcount test +9fc2684 tools: use cout instead of cerr in journal tool +a994145 mds/RecoveryQueue: do not start prioritized items synchronously +e0b19e3 qa: fix+cleanup hadoop wordcount test 76b8e57 erasure-code: preload the default plugins in the mon c3e1466 Test: fixing a compile warning in ceph_objectstore_tool.cc 1b42726 Cache tiering: use local_mtime to calculate the age of objects during evicting 335c1f7 doc: Added rbd-replay-prep and rbd-replay manpages to block device TOC. b965398 doc: Fixed broken hyperlink. 7948e13 doc: Added sysctl max thread count discussion. -a257291 (origin/wip-9266) client: fix dispatcher ordering (broken fuse) -ce29b76 (origin/wip-8231-forreview) Fix ceph_scratchtoolpp to create and delete its own pool +a257291 client: fix dispatcher ordering (broken fuse) +ce29b76 Fix ceph_scratchtoolpp to create and delete its own pool a03f719 ceph_objectstore_tool: Bug fixes and test improvements 23ec93a ceph_objectstore_tool, test: Implement import-rados feature and unit test code b193812 tools/rados: Improve trigger for op_size rounding info message @@ -3638,12 +3838,12 @@ dc6bd3b mds/Locker: if a client asks for file caps, prioritize file recovery bd3c8bc mds/RecoveryQueue: add method to prioritize a file recovery; fix logging 8f4ea81 mds: change mds_max_file_recover from 5 -> 32 0747ca7 mds: make max file recovers configurable -848fcf7 (origin/wip-8718) rgw: don't try to authenticate a CORS preflight request +848fcf7 rgw: don't try to authenticate a CORS preflight request e440fb4 test/mon/*: prime mon with initial command before injection -7a93258 (origin/wip-mds-namespace) mds: remove `using namespace std` in headers +7a93258 mds: remove `using namespace std` in headers fc89c27 messages: remove `using namespace std` in headers e5930a3 tests: reduce osd-crush.sh execution time -b059bcd (origin/wip-jerasure-upgrade) erasure-code: assert the PluginRegistry lock is held when it must +b059bcd erasure-code: assert the PluginRegistry lock is held when it must 3c4220e erasure-code: add Ceph version check to plugins d4ea682 erasure-code: implement ErasureCodePluginRegistry::remove c02c41c erasure-code: wrap lines for emacs compile command @@ -3656,8 +3856,8 @@ e9a05b8 doc: Update docs about OSD benchmark syntax a087f03 Revert "doc: Update docs about OSD benchmark syntax" 36f15c3 doc: Update docs about OSD benchmark syntax ae3d873 PG::can_discard_op: do discard old subopreplies -97e4e11 (origin/wip-9148) civetweb: update submodule -1434e5c (origin/wip-blacklist-mds) mds: restart on -EBLACKLISTED +97e4e11 civetweb: update submodule +1434e5c mds: restart on -EBLACKLISTED bb11936 mon: flush paxos write on shutdown b1cf210 mon/Paxos: WRITING != WRITING_PREVIOUS 96030d6 mon: _reset() before updating state @@ -3675,7 +3875,7 @@ bb50371 mon/MonitorDBStore: drop useless ctor a6a1e99 mon: interact with MonitorDBStore::Transactions by shared_ptr Ref cfc6830 common/Finisher: fix perfcounter 97f9b6d mon/OSDMonitor: fix double-free on old MOSDBoot -06b92ce (origin/wip-rewrite-PR2189) Move fedora patch file (used by ceph.spec.in) to rpm/ subdir +06b92ce Move fedora patch file (used by ceph.spec.in) to rpm/ subdir 7474f72 ceph.spec.in: tests for rhel or centos need to not include _version e37b262 ceph.spec.in: Add a small comment on the empty %files section 875a99e ceph.spec.in: Obsolete all older versions. @@ -3687,7 +3887,7 @@ e9da2d8 ceph.spec.in: Add obsoletes for libcephfs 6c264f2 ceph.spec.in: add ceph-libs-compat 62d74b3 civetweb: update submodule 11acb70 rgw: convert header field underscores into dashes -06ec5ef (origin/wip-7988) test: common: test_config: whitelist '$channel' meta-variable +06ec5ef test: common: test_config: whitelist '$channel' meta-variable 8a9831f osd/mds/monc: Adjust for LogClient/LogChannel usage bb9d4ca mon: LogMonitor: debug update_from_paxos 8f9e105 mon: LogMonitor: expand meta variables at time-of-call @@ -3710,43 +3910,43 @@ b1af4bd common: str_map: add helper methods to get values from maps 0d2a6c7 common: LogEntry: change field name from 'type' to 'prio' (aka priority) f25bca3 systemd: ceph-mds and ceph-mon need networking too c6f4b42 sample.ceph.conf: some updates -2b13de1 (origin/wip-8863) osd/PG: fix crash from second backfill reservation rejection -5a63215 (origin/wip-reweight) mon/OSDMonitor: make reweight_by_* output less misleading +2b13de1 osd/PG: fix crash from second backfill reservation rejection +5a63215 mon/OSDMonitor: make reweight_by_* output less misleading 146e60d osd: Remove extra call to release_op_ctx_locks in eval_repop. It is called in remove_repop. 3bfbc14 test/mon/mkfs.sh: fix test -c2f21c0 (origin/wip-9218) osd: fix osd_tp shutdown +c2f21c0 osd: fix osd_tp shutdown 8346e10 PG: mark_log_for_rewrite on resurrection cb4c5e8 OSD::session_notify_pg_create: requeue at the start of the queue -3c847c5 (origin/wip-config-diff) common: ceph_context: add admin socket command 'config diff' +3c847c5 common: ceph_context: add admin socket command 'config diff' ef51160 common: config: let us obtain a diff between current and default config 4b8b25e tests: histogram prevent re-use of local variables -a525bf3 (origin/wip-9054) ReplicatedPG:start_flush send a second delete +a525bf3 ReplicatedPG:start_flush send a second delete ee02293 tests: histogram prevent re-use of local variables 66c7439 ReplicatedPG::start_flush: remove superfluous loop 0416b88 update license for libcephfs e6da732 PG: recover from each osd at most once 8a1723f PG: make the reservation sets more descriptively named -bf3e483 (origin/wip-9238) mds: fix FP error in ROUND_UP_TO +bf3e483 mds: fix FP error in ROUND_UP_TO 4672e50 osd/OSDMap: encode blacklist in deterministic order a15ad38 vstart: start rgw on port specified by env var dbe6c79 don't update op_rw_rlatency/op_w_rlatency when rlatency is zero f3bf246 fix wrong value of op_w_latency perf counter 501dd3c ceph_filestore_dump: Export omap in batches for large omap case 398b418 ceph_filestore_dump: Remove unused bufferlist databl -9449520 (origin/wip-9209-round-up-to) common: ROUND_UP_TO accepts any rounding factor +9449520 common: ROUND_UP_TO accepts any rounding factor df3b6fc Fix syntax error in rst documentation cef1299 doc: Added links. Clarified namespace comments. Added limitations. d817a6a doc: Minor changes. 16d946b qa/workunits/hadoop/wordcount: remove bogus rm -r 5db51d6 doc: Added a few comments and links to other relevant docs. -751b3e2 (origin/wip-9226) rgw: fix test to identify whether object has tail -c7e1b9e (origin/wip-9221) ceph_test_rados_api_tier: make PromoteOn2ndRead test tolerate retries +751b3e2 rgw: fix test to identify whether object has tail +c7e1b9e ceph_test_rados_api_tier: make PromoteOn2ndRead test tolerate retries 73733dd documentation: update recovery config options defaults 97b1916 CollectionIndex: Collection name is added to the access_lock name 3e85041 rgw: admin ops create user API can not determine existing user f7ca1bf Update python.rst -f651f93 (origin/wip-9079) msg/Accepter: do not unlearn_addr on bind() -a67421a (origin/wip-objecter) osd: update handle_osd_map call +f651f93 msg/Accepter: do not unlearn_addr on bind() +a67421a osd: update handle_osd_map call ef44292 common/Timer: fix deadlock in RWTimer::shutdown 10efe17 osdc/Objecter: fix op_cancel on homeless session 28110ff osdc/Objecter: hold session ref longer in resend @@ -3863,25 +4063,25 @@ bcc69ed mds: adapt to new objecter interface 74ce4f2 rbd: fix signess warning f7c0001 common: remove spurious uint32_t in buffer.c 6ad8e61 Fix FTBFS on alpha due to incorrect check on BLKGETSIZE -2554243 (origin/wip-mds-pc) mds/Server: rename perfcounters +2554243 mds/Server: rename perfcounters b0cc869 mds: rename a bunch of metrics 31ef1a9 mds: set l_mds_req on client request 06682c4 vstart.sh: debug rgw = 20 on -d -00c677b (origin/wip-civetweb-log) rgw: use a separate callback for civetweb access log +00c677b rgw: use a separate callback for civetweb access log 850242c rgw: separate civetweb log from rgw log -f246b56 (origin/wip-weak-refs) common/shared_cache: dump weak refs on shutdown +f246b56 common/shared_cache: dump weak refs on shutdown 6cf583c common/shared_cache: take a cct 2c27485 Doc: Add config option to turn off crush update 78e84f3 CrushWrapper: pick a ruleset same as rule_id 1835778 needs network or it will not start if enabled 8c69054 osd: make coll_t::META static to each file -493577b (origin/wip-9173) mds: fix crash killing sessions without conn +493577b mds: fix crash killing sessions without conn dcf8c03 mds: logging in SessionMap 01ce249 Revert "Merge pull request #2253 from adamcrume/wip-lttng" -3ced97b (origin/wip-9176) mon: make dispatch(), _ms_dispatch() void +3ced97b mon: make dispatch(), _ms_dispatch() void 610f4be mon: always process the message in dispatch 19df386 mon: fix occasional message leak after session reset -b245d60 (origin/wip-fingerprint) mon: generate cluster_fingerprint if null +b245d60 mon: generate cluster_fingerprint if null 675b004 mon: add a cluster fingerprint 552c4b4 rbd_replay: Add unit test for batch_unreachable_from 7616092 rbd-replay: Add unit test for Ser @@ -3964,10 +4164,10 @@ ae59946 lttng: Trace OpRequest 3ac99e3 lttng: add pg and osd tracepoints 7fa513e lttng: trace mutex::unlock 115cfb3 tracing: bootstrap lttng-ust with mutex events -e870fd0 (origin/wip-filejournal) os/FileJournal: For journal-aio-mode, don't use aio when closing journal. +e870fd0 os/FileJournal: For journal-aio-mode, don't use aio when closing journal. a66a493 os/FileJournal: Only using aio then alloc the related resources. c8e2b89 os/FileJournal: Tune the judge logic for read_header. -3ed8c68 (origin/wip-9153-jerasure-upgrade) erasure-code: do not preload the isa plugin +3ed8c68 erasure-code: do not preload the isa plugin 4c2ae69 add pom.xml so to deploy the libcephfs to maven repository. to build a jar, version=0.80-rc1-2008-gf71c889 mvn package -Dversioin=; and mvn deploy command will deploy the jar to maven central e45f5c2 TrackedOp:_dump_op_descriptor is renamed to _dump_op_descriptor_unlocked f680a24 TrackedOp: Removed redundant lock in OpTracker::_mark_event() @@ -3980,8 +4180,8 @@ e665e62 Rebased and changed debug option 615d2d9 CollectionIndex: Collection name is added to the access_lock name 9b80270 erasure-code: preload the jerasure plugin fc41273 mon: fix signed/unsigned warnings -1441ffe (origin/wip-8587) rgw: subuser creation fixes -82409ee (origin/wip-reweight-tunables) mon: make reweight-by-* sanity limits configurable +1441ffe rgw: subuser creation fixes +82409ee mon: make reweight-by-* sanity limits configurable 3304841 mon/OSDMonitor: respect CRUSH weights for reweight-by-pg 1ecf44e mon/OSDMonitor: reweight-by-pg for pool(s) 8b971e9 mon/OSDMonitor: adjust weights up, when possible @@ -3997,8 +4197,8 @@ da37273 Add a new field 'expected_num_objects' to pg_pool_t which denotes the ex ab886c4 doc: Removed quick guide and wireshark from top-level IA. acee2e5 doc: Move wireshark documentation to dev. ce6e9a9 doc/release-notes: v0.84 -b016f84 (origin/wip-fs-docs) doc: add notes on using "ceph fs new" -948178a (origin/wip-mon-empty-store) ceph_mon: check for existing mon store before opening db +b016f84 doc: add notes on using "ceph fs new" +948178a ceph_mon: check for existing mon store before opening db 8336f81 (tag: v0.84) 0.84 bda2301 qa/workunits/rbd/qemu-iotests: touch common.env 1dc1fb8 qa/workunits/hadoop: move all hadoop tests into a hadoop/ dir @@ -4019,7 +4219,7 @@ cc3b5ad mailmap: Abhishek Lekshmanan affiliation 3279f3e qa/workunits/rest/test.py: do snap test on our data2/3 pool 6d7a229 qa/workunits/rest/test.py: fix rd_kb -> rd_bytes 0e07f7f osd: fix theoretical use-after-free of OSDMap -904a5f1 (origin/wip-misplaced) vstart.sh: make filestore fd cache size smaller +904a5f1 vstart.sh: make filestore fd cache size smaller 932e478 mon: track stuck undersized 190dc2f mon: track pgs that get stuck degraded 5168907 osd: track last_fullsized in pg_stat_t @@ -4033,14 +4233,14 @@ d734d7f mon: warn about misplaced objects, just like degraded a314999 osd: num_objects_misplaced 14614e0 qa/workunits/rest/test.py: fix 'df' test to use total_used_bytes 93c5b25 Revert "os/FileJournal: Update the journal header when closing journal" -29e93f7 (origin/wip-9144) os/FileStore: rename start_sync() -> do_force_sync() +29e93f7 os/FileStore: rename start_sync() -> do_force_sync() dd11042 os/FileStore: fix mount/remount force_sync race 0395914 mailmap: Loic Dachary affiliation -c83c90c (origin/wip-8621) rgw: update civetweb submodule -0d6d1aa (origin/wip-init-ceph) init-ceph: don't use bashism +c83c90c rgw: update civetweb submodule +0d6d1aa init-ceph: don't use bashism 7df67a5 Fix -Wno-format and -Werror=format-security options clash -ae0b9f1 (origin/wip-osd-mon-feature) osd: fix feature requirement for mons -0db3e51 (origin/wip-9119) ReplicatedPG::maybe_handle_cache: do not forward RWORDERED reads +ae0b9f1 osd: fix feature requirement for mons +0db3e51 ReplicatedPG::maybe_handle_cache: do not forward RWORDERED reads 5040413 ReplicatedPG::cancel_copy: clear cop->obc 2f0e295 unittest_osdmap: test EC rule and pool features 0b27610 Remove Old Wireshark Dissectors @@ -4048,9 +4248,9 @@ ae0b9f1 (origin/wip-osd-mon-feature) osd: fix feature requirement for mons 1d95486 crush: add is_v[23]_rule(ruleid) methods b22d693 lttng: Add distro packaging 6891f4e lttng: Fix "make distcheck" -c54f1e4 (origin/wip-9053) mon/Paxos: share state and verify contiguity early in collect phase +c54f1e4 mon/Paxos: share state and verify contiguity early in collect phase 3e5ce5f mon/Paxos: verify all new peons are still contiguous at end of round -5c2d232 (origin/wip-9025-chunk-remapping) erasure-code: remap chunks if not sequential +5c2d232 erasure-code: remap chunks if not sequential 164cfe8 erasure-code: parse function for the mapping parameter 298da45 erasure-code: ErasureCodeInterface::get_chunk_mapping() 240764f rgw: update civetweb submodule @@ -4065,16 +4265,16 @@ b04d84d shared_cache: pass key (K) by const ref in interface methods 95ac43f FileStore: remove the fdcache_lock a9f76d4 FDCache: implement a basic sharding of the FDCache 4c2828e shared_cache: expose prior existence when inserting an element -a1e79db (origin/wip-9039) rgw_admin: add --min-rewrite-stripe-size for object rewrite +a1e79db rgw_admin: add --min-rewrite-stripe-size for object rewrite 46d8c97 doc: Add documentation about Wireshark dissector. 6a55543 rgw: fix compilation f6771f2 shared_cache: use a single lookup for lookup() too -cec40da (origin/historic/old-wireshark-dissectors) qa/workunits/cephtool: verify setmaxosd doesn't let you clobber osds +cec40da qa/workunits/cephtool: verify setmaxosd doesn't let you clobber osds a1c3afb OSDMonitor: Do not allow OSD removal using setmaxosd 16a4360 rgw: pass set_mtime to copy_obj_data() 800eff2 rgw: copy_obj_data() uses atomic processor 5d3a7e5 rgw: copy object data if target bucket is in a different pool -aec684b (origin/wip-9005) add calamari to the api/index section +aec684b add calamari to the api/index section ac70490 doc: update kernel recommendations (avoid 3.15!) 5374386 doc: Added user management link to quick start. 5e8eae7 doc: Removed cephx intro. Moved details to user management, config, and architecture. @@ -4083,13 +4283,13 @@ aac6aa2 doc: Removed auth intro and auth docs and added user management to index 4c651b7 doc: Restructured auth configuration reference. 3faf37a doc: Put architectural details of authentication in to architecture doc. 118ae72 doc: Created a new User Management doc to replace authentication. -0a49db8 (origin/wip-9062) msg/PipeConnection: make methods behave on 'anon' connection +0a49db8 msg/PipeConnection: make methods behave on 'anon' connection 8512904 lttng: Support --with-lttng=check bb046ed mon/Paxos: put source mon id in a temp variable -d74d3f1 (origin/wip-8725) mds/MDSMap: fix incompat version for encoding +d74d3f1 mds/MDSMap: fix incompat version for encoding 369c639 mds/MDSMap: drop trailing else in favor of early return -b2c1fa8 (origin/wip-9087) test/system/systest_runnable.cc: debugging on start and end -d74ed9d (origin/wip-9102) ceph-disk: linter cleanup +b2c1fa8 test/system/systest_runnable.cc: debugging on start and end +d74ed9d ceph-disk: linter cleanup 3efa30d lttng: Remove tracing from libcommon 520b75b rbd-replay: Fix bug in rbd-replay-prep, Thread::issued_io with wrong IO 89c3860 rbd-replay: Remove extent tracepoints and inline extents @@ -4157,13 +4357,13 @@ d5b16e4 lttng: Trace OpRequest c5687b1 mon: fix potential divide by zero on can_mark_{down,out} f81d2b0 mon: fix divide by zero when pg_num adjusted and no osds 8a647f7 mon: fix potential divide by zero on can_mark_{down,out} -5ed9f4e (origin/wip-9029) mds: Revert from mds_mksnap_ setting to mds_snap_ settings -6f7798e (origin/wip-ceph-disk) ceph-disk: warn about falling back to sgdisk (once) +5ed9f4e mds: Revert from mds_mksnap_ setting to mds_snap_ settings +6f7798e ceph-disk: warn about falling back to sgdisk (once) b1651af ceph-disk: only fall back to sgdisk for 'list' if blkid seems old b75e8a3 ceph-disk: add get_partition_base() helper c7a1ceb ceph-disk: display information about dmcrypted data and journal volumes 5be56ff osd/ReplicatedPG: only do agent mode calculations for positive values -7b3714c (origin/wip-9096) osd: fix some line wrapping +7b3714c osd: fix some line wrapping df945a9 osd: fix require_same_peer_instance from fast_dispatch 3d7e2b3 osd: inline require_osd_up_peer e86fdef rgw: move generic server usage after all options @@ -4172,7 +4372,7 @@ f80ed26 ceph-disk: move fs mount probe into a helper 6c77f5f ceph-disk: use partition type UUIDs, and blkid ea90d9f Revert "ReplicatedPG: do not pass cop into C_Copyfrom" 300b5e8 ReplicatedPG: do not pass cop into C_Copyfrom -24aeca9 (origin/wip-9064) ReplicatedPG::maybe_handle_cache: do not skip promote for write_ordered +24aeca9 ReplicatedPG::maybe_handle_cache: do not skip promote for write_ordered 984f614 erasure-code: isa plugin must link with ErasureCode.cc 1088d6c ceph-disk: fix log syntax error 41e4461 doc/changelog: v0.67.10 notes @@ -4184,18 +4384,18 @@ ea90d9f Revert "ReplicatedPG: do not pass cop into C_Copyfrom" 78dc4df doc: Replace [default] with [global]. e5324ed doc: Added yum-priorities procedure to manual install. a01252a doc: Added priority = 2 to packages. -3dfa72d (origin/wip-8912) librbd: fix error path cleanup for opening an image +3dfa72d librbd: fix error path cleanup for opening an image 2edf01f Revert "Fix for bug #6700" d6e6ba1 ceph-disk: fix verify_no_in_use check 0a2b4c2 rgw: Don't send error body when it's a HEAD request -b0f5ba9 (origin/wip-rados-df-json) rados: remove {read,write}_kb fields from rados df json output +b0f5ba9 rados: remove {read,write}_kb fields from rados df json output 5663f91 rados: fix {read,write}_bytes value -8180713 (origin/wip-9057) msg/Pipe: do not wait for self in Pipe::stop_and_wait() +8180713 msg/Pipe: do not wait for self in Pipe::stop_and_wait() fd421b2 mon/MonitorDBStore: add get_{keys,bytes}() accounting to Transaction -d7fb7bf (origin/wip-9055) ceph_test_rados_api_tier: fix cache cleanup (ec too) +d7fb7bf ceph_test_rados_api_tier: fix cache cleanup (ec too) ebbe8aa ceph_test_rados_api: fix cleanup of cache pool 1d199fb librados/TestCase: inheret cleanup_default_namespace -5808d6a (origin/wip-9044-use-ruleset) osd: improve ruleno/ruleset consistency +5808d6a osd: improve ruleno/ruleset consistency 3f5d86a erasure-code: ErasureCodeIsa::create_ruleset must return a ruleset 0029a35 erasure-code: ErasureCodeJerasure::create_ruleset must return a ruleset 04a484a erasure-code: OSDMonitor::crush_ruleset_create_erasure needs ruleset @@ -4206,7 +4406,7 @@ ebbe8aa ceph_test_rados_api: fix cleanup of cache pool 4a0c941 OSD: introduce require_self_aliveness(OpRequestRef&,epoch_t) function 48c9b38 OSD: use OpRequestRef& for a few require_* functions f86bf1d OSD: introduce require_up_osd_peer() function for gating replica ops -ee790e3 (origin/wip-problem-osds) osd/osd_types: s/int/int32_t/ in pg_stat_t +ee790e3 osd/osd_types: s/int/int32_t/ in pg_stat_t d862731 osd/PG: bound number of blocked_by OSDs we report per PG bee79ec qa/workunits/cephtool: add trivial 'ceph osd blocked-by' test 6380f47 qa/workunits/cephtool: add simple 'ceph osd perf' test @@ -4217,9 +4417,9 @@ d55e973 mon/PGMap: track histogram of pg blocked_by ceaca9f osd/PG: set blocked_by during peering GetLog 6e96c2d osd/PG: set blocked_by during peering GetInfo e4b0071 RadosClient: Enable pool existence check -c34f935 (origin/wip-fsx-flatten) test_librbd_fsx: also flatten as part of randomize_parent_overlap +c34f935 test_librbd_fsx: also flatten as part of randomize_parent_overlap 214630b mds: Also check min/max uid on snap removal -a52a855 (origin/wip-pg-epoch) osd: fix pg epoch floor tracking +a52a855 osd: fix pg epoch floor tracking 2120f4b OSD: move waiting_for_pg into the session structures 71cb4d3 doc: Removed Debian reference from Upstart. 8357cae doc: Incorporated user feedback to clarify upgrade doc. @@ -4229,15 +4429,15 @@ b6bf33c doc: Added configuration discussion at end of gateway install with links 11d6e5a OSD: rename session_waiting_for_map_lock to session_waiting_lock 20fd714 OSD: wake_pg_waiters outside of the pgmap write_lock, pg_lock 6e7b86a OSD: fix wake_pg_waiters revert error in _open_lock_pg -4260767 (origin/wip-8625) osd_types: s/stashed/rollback_info_completed and set on create +4260767 osd_types: s/stashed/rollback_info_completed and set on create d0ccb1c make ceph-disk use the new init flag for cluster 23b4915 allow passing a --cluster flag to the init script 6bd2b0f mds: Make min/max UID configurable for who is allowed to create a snapshot a5ecf15 powerdns: Update README with better markdown -bf9726a (origin/xiaoxichen-fix_crush_ruleset) mon/OSDMonitor : Use user provided ruleset for replicated pool +bf9726a mon/OSDMonitor : Use user provided ruleset for replicated pool f1aad8b RadosClient: Fixing potential lock leaks. -26750fc (origin/wip-filestore-bigxattr) os/FileStore: force any new xattr into omap on E2BIG -cc3112e (origin/wip-rados-xattr) rados: use STD{IN,OUT}_FILENO for magic values +26750fc os/FileStore: force any new xattr into omap on E2BIG +cc3112e rados: use STD{IN,OUT}_FILENO for magic values e3819b6 qa/workunits/rados/test_rados_tool: add a few xattr tests 645c28a rados: optionally read setxattr value from stdin 59a715a rados: don't add \n to getxattr @@ -4258,25 +4458,25 @@ ee2dbdb mon/PGMonitor: remove {rd,wr}_kb from pool stat dumps adb2791 mon/PGMonitor: add _bytes fields for all usage dumps 895318c README.md: word wrap 500b95e README: symlink from README.md -0114b33 (origin/wip-8496-erasure-code-base-class) erasure-code: rework ErasureCode*::parse methods +0114b33 erasure-code: rework ErasureCode*::parse methods 77690f6 erasure-code: move to ErasureCode::decode_concat 54394fa erasure-code: move to ErasureCode::to_{int,bool} b4b7c51 erasure-code: move to ErasureCode::minimum_to_decode* 4ff981f erasure-code: move to ErasureCode::{encode,decode}{,chunk} 1ebce98 erasure-code: ErasureCode base class -859944d (origin/wip-test-ceph-disk) test/osd/osd-test-helpers: mkdir -p for ceph-disk +859944d test/osd/osd-test-helpers: mkdir -p for ceph-disk 4b45e25 Add handles for the ceph-mon starting with upstart c2f58e6 test/ceph-disk.sh: mkdir -p a923e2c Renamed README to README.md to render in markdown 52cf693 Developer quick start guide c09036a enable info_log_level config option for rocksdb -66de51d (origin/wip-8875) be a bit more explicit about 'ceph-deploy new' in quickstart +66de51d be a bit more explicit about 'ceph-deploy new' in quickstart b4c80e3 Do not make directories by mistake. f773b24 powerdns: Define a application variable when not invoked from Shell 1682e62 doc: typo s/loose/lose 466aba4 osd/osd_types: add blocked_by to pg_stat_t b9b022e add annotation for rocksdb config option -8dcfbd8 (origin/wip-8998) osd: simplify dout_prefix macros +8dcfbd8 osd: simplify dout_prefix macros 80829d7 osd: reorder OSDService methods under proper dout_prefix macro 047c18d doc/release-notes: make note about init-radosgw change 354c411 doc: Added 'x' to monitor cap. @@ -4291,7 +4491,7 @@ e11c3fc erasure-code: rework benchmark suite 90592e9 erasure-code: properly indent ErasureCodePluginSelectJerasure.cc be3e1e4 erasure-code: control jerasure plugin variant selection 5fb4354 erasure-code: reduce jerasure verbosity -c7daaaf (origin/wip-8475) erasure-code: implement alignment on chunk sizes +c7daaaf erasure-code: implement alignment on chunk sizes 3987ac2 erasure-code: cauchy techniques allow w 8,16,32 cb54605 mailmap: sort entries accf8c2 mailmap: Tommi Virtanen is not with Red Hat @@ -4304,11 +4504,11 @@ b1ba72f mailmap: George Ryall affiliation 6652494 mailmap: Accela Zhao affiliation 794f70a mailmap: Kevin Cox affiliation d8e6415 mailmap: Ma Jianpeng affiliation -3230060 (origin/wip-ceph-conf) ceph-conf: flush log on exit +3230060 ceph-conf: flush log on exit 076f33a ECBackend: Don't directly use get_recovery_chunk_size() in RecoveryOp::WRITING state. -98997f3 (origin/wip-8891) msg/SimpleMessenger: drop msgr lock when joining a Pipe +98997f3 msg/SimpleMessenger: drop msgr lock when joining a Pipe e36babc os/MemStore: fix lock leak -e93818d (origin/wip-rgw-need-to-wait) rgw: need to pass need_to_wait for throttle_data() +e93818d rgw: need to pass need_to_wait for throttle_data() 3de7b7c doc/release-notes: fix syntax error c95e91e os/KeyValueStore: clean up operator<< for KVSuperBlock 1417ede ceph_test_rados_api_tier: test promote-on-second-read behavior @@ -4325,21 +4525,21 @@ da5edb8 add rocksdb bz2 dep 3329352 rocksdb: require less shiny autoconf bcebf9c do_autogen.sh: build with static librocksdb eb1cd78 rocksdb: update submodule makefile -2e549b4 (origin/wip-ec-isa) unittest_erasure_code_[plugin_]isa: conditionally compile -04037ef (origin/wip-osd-leaks) osd: do not leak Session* ref in _send_boot() +2e549b4 unittest_erasure_code_[plugin_]isa: conditionally compile +04037ef osd: do not leak Session* ref in _send_boot() d00f23b erasure-code/isa: fix signed/unsigned comparison 8a193ab erasure-code/isa: don't use typename outside of template 92d0bbe ECBackend: Using ROUND_UP_TO to refactor function get_recovery_chunk_size() e4ed2cb ReplicatedPG: For async-read, set the real result after completing read. 6e52efa doc/release-notes: tweak quoting -8091173 (origin/wip-round) use llrintl when converting double to micro +8091173 use llrintl when converting double to micro d8b291f configure: check for 'better' yasm that can build ISA-L 1520b47 erasure-code/isa/Makefile: add missing \, and missing headers e1f32d9 yasm-wrapper: fix -f ... 1670fd6 yasm-wrapper: turn -I foo into -i foo 6d95797 yasm-wrapper: echo original args b7d0017 EC: add plugin for Intel ISA-L library -383536a (origin/wip-8982) mon/OSDMonitor: warn when cache pools do not have hit_sets configured +383536a mon/OSDMonitor: warn when cache pools do not have hit_sets configured caf554b osd/ReplicatedPG: improve agent_choose_mode args ce4e559 vstart.sh: limit open files ea4996d osd/ReplicatedPG: evict blindly if there is no hit_set @@ -4347,25 +4547,25 @@ ea4996d osd/ReplicatedPG: evict blindly if there is no hit_set 51c1f2a FileStore: Add omap_backend to "<<" operator 7faed14 Add superblock to KeyValueStore b879e74 KeyValueStore: use generic KeyValueDB::create() -9df9d28 (origin/wip-8969) mon/OSDMonitor: fix i386 floating point rounding error -aa9ae1f (origin/wip-8944) qa/workunits/cephtool/test_daemon.sh: verify ceph -c works with daemon +9df9d28 mon/OSDMonitor: fix i386 floating point rounding error +aa9ae1f qa/workunits/cephtool/test_daemon.sh: verify ceph -c works with daemon 22d20f3 qa/workunits/cephtool/test_daemon.sh: typo 97a8d5a qa/workunits/cephtool/test_daemon.sh: allow local ceph command 9686312 atomic: fix read() on i386, clean up types 6d89a99 ceph.in: Pass global args to ceph-conf for proper lookup -0190df5 (origin/wip-8714) osd: prevent old clients from using tiered pools -605064d (origin/wip-cli-integration) test/cli-integration/rbd: fix trailing space -d700076 (origin/wip-double-pc) mon: s/%%/%/ -0f8929a (origin/wip-8972) cls_rgw: fix object name of objects removed on object creation -061c8e9 (origin/wip-rbd-flush) librbd: enable rbd cache by default; writethrough until flush -4e1405e (origin/wip-erasure-code-profile-default) erasure-code: create default profile if necessary +0190df5 osd: prevent old clients from using tiered pools +605064d test/cli-integration/rbd: fix trailing space +d700076 mon: s/%%/%/ +0f8929a cls_rgw: fix object name of objects removed on object creation +061c8e9 librbd: enable rbd cache by default; writethrough until flush +4e1405e erasure-code: create default profile if necessary 5f65b4d os/FileJournal: When dump journal, using correctly seq avoid misjudging joural corrupt. 7b169a0 rocksdb backend optimization 708b5b8 add --with-librocksdb-static configure options 101954c get a stable rocksdb (3.0) 6eea02c add rocksdb submodule cbd0043 add rocksdb support -5d5902a (origin/wip-filestore-omap) os/KeyValueStore: rename osd_keyvaluedb -> keyvaluestore_backend +5d5902a os/KeyValueStore: rename osd_keyvaluedb -> keyvaluestore_backend 1a5dea7 os/FileStore: use generic KeyValueDB::create(); store omap_backend in superblock a2a3619 mon/MonitorDBStore: use generic KeyValueDB::create() 86a0b9d os/KeyValueDB: make compaction interface generic @@ -4373,7 +4573,7 @@ a2a3619 mon/MonitorDBStore: use generic KeyValueDB::create() e141872 config: allow unsafe setting of config values 2f9fe02 mailmap: Red Hat names normalization 3cfda57 doc/release-notes: v0.83 -18ea2a8 (origin/wip-8586) rgw: fix crash in swift CORS preflight request +18ea2a8 rgw: fix crash in swift CORS preflight request 6bb3aea mds: remove some rogue "using namespace std;" c283ad4 mds: handle replaying old format journals 07665ec mds: introduce explicit DaemonState instead of int @@ -4386,42 +4586,42 @@ e587088 mds: remove unused purge_prealloc_ino 06c4736 Remove reference from mkcephfs. 4045b2e doc/release-notes: typo df1bad8 doc/release-notes: v0.80.5 release notes -e99acf9 (origin/wip-8880) OSD: add require_same_peer_inst(OpRequestRef&,OSDMap&) helper +e99acf9 OSD: add require_same_peer_inst(OpRequestRef&,OSDMap&) helper e179e92 OSD: introduce require_self_aliveness(OpRequestRef&,epoch_t) function f36cffc unittest_crush_wrapper: fix build eb2f1ea OSD: use OpRequestRef& for a few require_* functions 1526546 Remove reference from mkcephfs. 9b03752 Fix some style and checking issue -5773a37 (origin/wip-upstart-nfile) upstart/ceph-osd.conf: bump nofile limit up by 10x -d3e5961 (origin/wip-undump) tools/cephfs: fuller header in dump/undump -e183a4d (origin/wip-fsx-overlap) test_librbd_fsx: clone/flatten probabilities +5773a37 upstart/ceph-osd.conf: bump nofile limit up by 10x +d3e5961 tools/cephfs: fuller header in dump/undump +e183a4d test_librbd_fsx: clone/flatten probabilities bb095ff test_librbd_fsx: randomize_parent_overlap f6d1a92 test_librbd_fsx: introduce rbd_image_has_parent() eb697dd librbd: make rbd_get_parent_info() accept NULL out params 04d0526 PGMonitor: fix bug in caculating pool avail space -b08470f (origin/wip-libs) configure.ac: link libboost_thread only with json-spirit +b08470f configure.ac: link libboost_thread only with json-spirit 9d23cc6 configure: don't link blkid, udev to everything -de9cfca (origin/wip-flush-set) Only write bufferhead when it's dirty +de9cfca Only write bufferhead when it's dirty 1c26266 ObjectCacher: fix bh_{add,remove} dirty_or_tx_bh accounting 727ac1d ObjectCacher: fix dirty_or_tx_bh logic in bh_set_state() 5283cfe Wait tx state buffer in flush_set d858fdc Add rbdcache max dirty object option b8a5668 Reduce ObjectCacher flush overhead 288908b Revert "Merge pull request #2129 from ceph/wip-librbd-oc" -0553890 (origin/wip-8937) rgw: call processor->handle_data() again if needed +0553890 rgw: call processor->handle_data() again if needed d3de69f mds: fix journal reformat failure in standbyreplay -8fb761b (origin/wip-8931) osd/ReplicatedPG: requeue cache full waiters if no longer writeback +8fb761b osd/ReplicatedPG: requeue cache full waiters if no longer writeback 36aaab9 osd/ReplicatedPG: fix cache full -> not full requeueing when !active -ba9d52e (origin/wip-librbd-snap-meta) librbd: store and retrieve snapshot metadata based on id -c5f766b (origin/wip-8932) ceph_test_rados_api_tier: do fewer writes in HitSetWrite +ba9d52e librbd: store and retrieve snapshot metadata based on id +c5f766b ceph_test_rados_api_tier: do fewer writes in HitSetWrite f360920 common/RefCountedObject: fix use-after-free in debug print -14cad5e (origin/wip-rgw-align) rgw: object write should not exceed part size +14cad5e rgw: object write should not exceed part size fc83e19 rgw: align object chunk size with pool alignment 1f9c732 doc: Add additional hyperlink to Cache Tiering defaults. 4047660 doc: Update doc from user feedback. d1dfb9b osd: fix bad Message* defer in C_SendMap and send_map_on_destruct 5740266 test: catch a straggler still using 'data' pool -4eb18dd (origin/wip-journal-header) os/FileJournal: Update the journal header when closing journal +4eb18dd os/FileJournal: Update the journal header when closing journal 63c1711 msg/SimpleMessenger: drop local_conneciton priv link on shutdwon 2545e80 librbd: fix crash using clone of flattened image 4fe0792 doc: Updated mon doc per feedback. Fixed hyperlinks. @@ -4456,12 +4656,12 @@ afb4c37 msg: factor policy handling out of SimpleMessenger 6597c20 mon: clean up ref counting for forwarded messages' sessions 29e04c8 msgr: move PipeConnection out of Connection.h; make anon ea14d7b Refactor Messenger class family. -63abf11 (origin/wip-8882) osd/ReplicatedPG: observe INCOMPLETE_CLONES in is_present_clone() +63abf11 osd/ReplicatedPG: observe INCOMPLETE_CLONES in is_present_clone() 4136471 osd/ReplicatedPG: observed INCOMPLETE_CLONES when doing clone subsets 956f287 osd/ReplicatedPG: do not complain about missing clones when INCOMPLETE_CLONES is set 54bf055 osd/osd_types: add pg_pool_t FLAG_COMPLETE_CLONES 67d13d7 mon/OSDMonitor: improve no-op cache_mode set check -d4faf74 (origin/wip-8701) ceph_test_objectstore: clean up on finish of MoveRename +d4faf74 ceph_test_objectstore: clean up on finish of MoveRename 3ec9a42 os/LFNIndex: use FDCloser for fsync_dir 6fb3260 os/LFNIndex: only consider alt xattr if nlink > 1 ec36f0a os/LFNIndex: remove alt xattr after unlink @@ -4476,36 +4676,36 @@ c57811f Fix/add missing dependencies: dae6ecb ceph.spec.in: split out ceph-common as in Debian a05a0da common/random_cache: fix typo 5efdc62 common/RandomCache: Fix inconsistence between contents and count -356af4b (origin/wip-8889) osd/ReplicatedPG: debug obc locks +356af4b osd/ReplicatedPG: debug obc locks 6fe2782 osd/ReplicatedPG: greedily take write_lock for copyfrom finish, snapdir 0962650 osd: allow greedy get_write() for ObjectContext locks ccd0eec OSD: introduce require_up_osd_peer() function for gating replica ops -253ca2b (origin/wip-8897) os: make name/attr max methods unsigned +253ca2b os: make name/attr max methods unsigned daac750 os/KeyValueStore: make get_max_object_name_length() sane e311a08 uncomment cleanup command c264774 init: add systemd service files d87e5b9 powerdns: RADOS Gateway backend for bucket directioning -b551ae2 (origin/wip-8851) mon: AuthMonitor: always encode full regardless of keyserver having keys +b551ae2 mon: AuthMonitor: always encode full regardless of keyserver having keys 1518fa2 osd: init local_connection for fast_dispatch in _send_boot() -34b0efd (origin/wip-librbd-oc) ObjectCacher: fix bh_{add,remove} dirty_or_tx_bh accounting +34b0efd ObjectCacher: fix bh_{add,remove} dirty_or_tx_bh accounting 8a05f1b ObjectCacher: fix dirty_or_tx_bh logic in bh_set_state() d358741 Wait tx state buffer in flush_set 3c7229a Add rbdcache max dirty object option 5cb4b00 Reduce ObjectCacher flush overhead 9061988 osd: init local_connection for fast_dispatch in _send_boot() b6f3aff Fix mismatched tags (struct vs. class) inconsistency -2aa3edc (origin/wip-8174) os/FileStore: fix max object name limit +2aa3edc os/FileStore: fix max object name limit f4bffec ceph_test_objectstore: test memstore 6f312b0 os/MemStore: copy attrs on clone 8dd6b8f os/MemStore: fix wrlock ordering checks a2594a5 osd/MemStore: handle collection_move_rename within the same collection -3467110 (origin/wip-dencoder) ceph-dencoder: don't link librgw.la (and rados, etc.) +3467110 ceph-dencoder: don't link librgw.la (and rados, etc.) b1a641f rgw: move a bunch of stuff into rgw_dencoder 1c17077 libosd_types, libos_types, libmon_types 58cc894 Revert "ceph.spec: move ceph-dencoder to ceph from ceph-common" f181f78 Revert "debian: move ceph-dencoder to ceph from ceph-common" ad4a4e1 unittest_osdmap: revert a few broken changes -d7209c1 (origin/wip-8858) rgw: dump prefix unconditionally +d7209c1 rgw: dump prefix unconditionally dc417e4 rgw: list extra objects to set truncation flag correctly 82d2d61 rgw: account common prefixes for MaxKeys in bucket listing 924686f rgw: add NextMarker param for bucket listing @@ -4516,58 +4716,58 @@ e6cf618 rgw: improve delmited listing of bucket bd3367e osd: add config for osd_max_attr_name_len = 100 7c0b2a0 os: add ObjectStore::get_max_attr_name_length() 7e0aca1 osd: add config for osd_max_object_name_len = 2048 (was hard-coded at 4096) -e60dd0f (origin/wip-8811) osdc: refactor JOURNAL_FORMAT_* constants to enum +e60dd0f osdc: refactor JOURNAL_FORMAT_* constants to enum 8eef89e doc: fix example s/inspect/journal inspect/ 5438500 mds: fix journal reformat failure in standbyreplay ed3bc4c osdc/Journaler: validate header on load and save 18ca6b6 test: add a missing semicolon -0cd0268 (origin/wip-vstart-existing-mds) qa: generalise cephtool for vstart+MDS +0cd0268 qa: generalise cephtool for vstart+MDS bb5a574 mon: carry last_failure_osd_epoch across `fs new` b936a27 mon/MDSMonitor: fix msg on idempotent `fs rm` 06a8f7b configure: do not link leveldb with everything 0193d3a AUTHORS -14a9ca6 (origin/wip-logrotate) logrotate.conf: fix osd log rotation under upstart +14a9ca6 logrotate.conf: fix osd log rotation under upstart 7b342ef doc: Add Note about European mirror in Quick Start -0f11aae (origin/wip-8849) remove suse service restarts +0f11aae remove suse service restarts e3a5756 remove ceph restarts on upgrades for RPMs 4d6899c qa/workunits/cephtool/test.sh: fix erasure_code_profile get test ce9f12d qa/workunits/cephtool/test.sh: test osd pool get erasure_code_profile e8ebcb7 mon: OSDMonitor: add "osd pool get erasure_code_profile" command 5ccfd37 vstart.sh: default to 3 osds -5f6b11a (origin/wip-8857) mon/MDSMonitor: make legacy 'newfs' command idempotent +5f6b11a mon/MDSMonitor: make legacy 'newfs' command idempotent b89ab5f rgw: don't try to wait for pending if list is empty -19e68ac (origin/wip-rbd-defaults) rbd: respect rbd_default_* parameters +19e68ac rbd: respect rbd_default_* parameters e891a93 rbd: remove accidental repeated option 0f87c55 librbd: use order-agnostic default stripe parameters -f9f2417 (origin/wip-8846) rgw: don't try to wait for pending if list is empty -420f0a4 (origin/wip-8813) set the default log level to WARNING +f9f2417 rgw: don't try to wait for pending if list is empty +420f0a4 set the default log level to WARNING 3e0d980 init-ceph: wrap daemon startup with systemd-run when running under systemd 99dfaf7 doc/release-notes: v0.80.4 80ea606 Fix size of network protocol intergers. 2f43cef doc: Extended discussion for building docs on CentOS / RHEL. 124f97f doc: Added a script to build docs on CentOS / RHEL. -6c48d07 (origin/wip-set_layout) doc: add cephfs layout documentation +6c48d07 doc: add cephfs layout documentation af740ec cephfs: pool safety & print deprecation warning d915ceb update hadoop-wordcount test to be able to run on hadoop 2.x. The hadoop and mapreduce library are no longer hard coded so they can be specified to point to the right path. The relative paths hdfs are changed to absolute paths. A sample command to run the test on hadoop 2.x is TESTDIR=/home/test HADOOP_HOME=/usr/lib/hadoop HADOOP_MR_HOME=/usr/lib/hadoop-mapreduce sh workunits/hadoop-wordcount/test.sh starting hadoop-wordcount test cceab2b qa: retire kclient-specific layout test 95f5a44 ceph.spec: move ceph-dencoder to ceph from ceph-common b37e3bd debian: move ceph-dencoder to ceph from ceph-common -01cd3cd (origin/wip-8830) XfsFileStoreBackend: default to disabling extsize on xfs +01cd3cd XfsFileStoreBackend: default to disabling extsize on xfs fc597e5 doc/release-notes: some additional warnings and recommendations against adjusting tunables -e17e9d8 (origin/wip-8823) ceph_test_rados_api_tier: fix [EC] HitSet{Read,Write,Trim} tests -a4ed336 (origin/wip-mds-session-asok-squash) mds: add `session ls` and `session evict` to asok +e17e9d8 ceph_test_rados_api_tier: fix [EC] HitSet{Read,Write,Trim} tests +a4ed336 mds: add `session ls` and `session evict` to asok 0e0be07 client: include ID in mds_sessions asok 52a2bc5 mon: remove unused attribute notified_global_id b120a48 common/admin_socket: remove dead code bb47ff3 osd: fix confusing debug output for op_applied 586d3ee doc: Fixes a broken link on the rados deploy osd page. 447f849 doc/release-notes: v0.80.3 -29f20b7 (origin/wip-test-post-file) qa/workunits/post-file.sh +29f20b7 qa/workunits/post-file.sh c9e1e82 rbdmap: per-device post-map/pre-unmap hooks -c93da05 (origin/wip-8815) osd/osd_types: be pedantic about encoding last_force_op_resend without feature bit +c93da05 osd/osd_types: be pedantic about encoding last_force_op_resend without feature bit 712d5d1 osd/osd_types: remove useless encode_compat local var for pg_pool_t::encode -50e93c2 (origin/wip-8696) qa/workunits: cephtool: adjust pool name where missing as it has changed -cf94cf3 (origin/wip-dump-new-crush) crush: include CRUSH_V3, v2/v3 rules checks in dump_tunables() +50e93c2 qa/workunits: cephtool: adjust pool name where missing as it has changed +cf94cf3 crush: include CRUSH_V3, v2/v3 rules checks in dump_tunables() daadff4 doc: minor format fix for radosgw admin docs b844ec9 rbdmap: per-device mount (Closes: #8538) 02683ac rbd.cc: Check io-size avoid floating point exception. @@ -4580,13 +4780,13 @@ df59449 qa/workunits: cephtool: split get/set on tier pools from get/set tests 64bdf6c osd: pg_pool_t: clear tunables on clear_tier() f131dfb mon: OSDMonitor: limit tier-specific pool set/get on non-tier pools 026b127 doc/changelog/v0.80.2: include tag -59c00e5 (origin/wip-kinetic-os) os: add prototype KineticStore +59c00e5 os: add prototype KineticStore 74f5e5e PG::op_must_wait_for_map: pass the epoch rather than the map 98f92d8 doc: Added CentOS/RHEL install for git. 115c078 rgw: modelines c4afaf9 rgw: fix RGWObjManifestRule decoder 0839e2a doc: Added keyring location note to resolve pull abandoned pull request #1946. -4692257 (origin/wip-nuke-dlist) nuke dlist +4692257 nuke dlist a3e5c6d Add random_cache.hpp to Makefile.am f51f162 test: fix make_pair() for c++11 79e3761 Remove some not-resolving make_pair() invocations. @@ -4608,37 +4808,37 @@ bb881e5 doc: fix a few typos in architecture page fcbdd2f doc: Fix a typo in the rbd man page ef117fe Use submit_transaction_sync to make change durable 6ff5fed Add random cache and replace SharedLRU in KeyValueStore -c0dc245 (origin/wip-7891) osd: cancel agent_timer events on shutdown +c0dc245 osd: cancel agent_timer events on shutdown ef40737 osd: s/applying repop/canceling repop/ cafceae osd: clear PGBackend state on shutdown e299357 osd: separate cleanup from PGBackend::on_change() b16b64e Support for READFORWARD in the caching tier -b927c0d (origin/wip-8523) qa/workunits: cephtool: test for 'osd pool {get,set}-quota' +b927c0d qa/workunits: cephtool: test for 'osd pool {get,set}-quota' 714a9bb mon: OSDMonitor: add 'osd pool get-quota' command -c92feeb (origin/wip-8727) messages: MForward: fix compat version +c92feeb messages: MForward: fix compat version 0bf4f65 osd: clear sessions_waiting_on_map on shutdown aefbac5 osd: fix session leak when waiting on map 17ad083 osd: clear Sessions for loopback Connections on shutdown 231fe1b Revert "OSD: move waiting_for_pg into Session" aa1be2e OSD: fix debug logging output -b700963 (origin/wip-8306-rebase) ceph.spec.in: add bash completion file for radosgw-admin +b700963 ceph.spec.in: add bash completion file for radosgw-admin 235e4c7 ceph.spec.in: rhel7-related changes: 7cf8132 Fix/add missing dependencies: ec8af52 ceph.spec.in: whitespace fixes e131b9d ceph.spec.in: split out ceph-common as in Debian 08fa16b common: seq_read_bench argument order changed The argument order for seq_read_bench in src/common/obj_bencher.h has been changed to match the argument order in obj_bencher.cc -cca5841 (origin/wip-8751) test: generalise default_pools in test_rados -a7a631d (origin/wip-8754) tests: don't depend on 'data' pool in rbd test +cca5841 test: generalise default_pools in test_rados +a7a631d tests: don't depend on 'data' pool in rbd test cf5f535 doc/release-notes: clarify CRUSH notes about tunables d84d720 decrement WBThrottle perfcounters in clear_object -16df4c3 (origin/wip-8745) mds: use client-provided time stamp for user-visible file metadata +16df4c3 mds: use client-provided time stamp for user-visible file metadata 73b2928 Remove exclusive lock on GenericObjectMap d104979 Add Header cache to KeyValueStore c0806bb doc: mention kernel support for rbd format 2 c7937ff doc: Fix a typo regarding requiretty for RHEL based platforms -54af810 (origin/wip-8738-next) mon: check changes to the whole CRUSH map and to tunables against cluster features +54af810 mon: check changes to the whole CRUSH map and to tunables against cluster features 2280c0e OSDMonitor: fix quorum_features comparison in check_cluster_features -c0ba58c (origin/wip-refs) msg: debug refs on incoming Messages +c0ba58c msg: debug refs on incoming Messages c0dcf3b common/RefCountedObject: make nref, cct private b0da92b msg/Message: use RefCountedObject ctor to set initial ref count e621856 msg/Pipe: debug Pipe refs @@ -4652,34 +4852,34 @@ f7086d3 Automagically setup submodules on first run. 0c7c722 ceph_argparse_flag has no regular 3rd parameter. 909850e [werror] Fix c++11-compat-reserved-user-defined-literal fde99e6 OSD: adjust share_map() to handle the case that the osd is down -ddc04c8 (origin/wip-8670) mon: OSDMonitor: 'osd pool' - if we can set it, we must be able to get it +ddc04c8 mon: OSDMonitor: 'osd pool' - if we can set it, we must be able to get it 0392ddb ReplicatedPG: Removed the redundant register_snapset_context call 2f089d8 OpTracker: The optracker enabled/disabled check is added 63be0f2 OpTracker: use mark_event rather than _mark_event -bb3e1c9 (origin/wip-8728) qa/workunits/rest/test.py: make osd create test idempotent -7e1deb6 (origin/wip-async-log) mds: defer encoding/submitting log events to separate thread +bb3e1c9 qa/workunits/rest/test.py: make osd create test idempotent +7e1deb6 mds: defer encoding/submitting log events to separate thread 44199d6 mds: use mutex to protect log segment list 6d8ccdd mds: add thread to encode/submit log events -70c0723 (origin/wip-osd-dumpres) osd: add dump_reservations asok command +70c0723 osd: add dump_reservations asok command 6483710 common/AsyncReserver: add dump() -9ce5ff9 (origin/wip-8692) mon: clear osd request queue latency info on down or up +9ce5ff9 mon: clear osd request queue latency info on down or up f8c88a4 OSD: wake_pg_waiters after dropping pg lock -e2b151d (origin/wip-fs-cmds-oops) mds: Update default FS name +e2b151d mds: Update default FS name f62f7f5 qa: update cephtool EC pools test to respect IDs 710561c mon/MDSMonitor: EC check in 'fs new' like newfs 44eb259 qa: add a check for crash_replay_interval autoset c0ffa01 mon: Set crash_replay_interval automatically 82d3fcc qa: Update data pool ID for vxattrs test 917ef15 test: use 0U with gtest to avoid spurious warnings -522174b (origin/wip-vstart-wrapped) qa: support running under non privileged user +522174b qa: support running under non privileged user 8697d6a OSD: await_reserved_maps() prior to calling mark_down -6f97206 (origin/wip-osd-map-cache-size) osd: allow osd map cache size to be adjusted at runtime +6f97206 osd: allow osd map cache size to be adjusted at runtime bcc09f9 qa/workunits/cephtool/test.sh: sudo ceph daemon -959f2b2 (origin/wip-fix-pglog-unittest) PGLog: fix clear() to avoid the IndexLog::zero() asserts -e0d3b78 (origin/wip-8699) rgw: fix uninit ofs in RGWObjManifect::obj_iterator +959f2b2 PGLog: fix clear() to avoid the IndexLog::zero() asserts +e0d3b78 rgw: fix uninit ofs in RGWObjManifect::obj_iterator 73b929b osd: improve tests for configuration updates -2dec8a8 (origin/wip-8542) qa/workunits/suites/fsx.sh: don't use zero range -83f1906 (origin/wip-fs-cmds) mon/MDSMonitor: log warning while MDS up but no FS +2dec8a8 qa/workunits/suites/fsx.sh: don't use zero range +83f1906 mon/MDSMonitor: log warning while MDS up but no FS b7f09c2 mon/MDSMonitor: fix incorrect comment fc0f8bd mon/MDSMonitor: s/enabled/get_enabled()/ 641b419 mds: Handle setting 'enabled' in upgrades @@ -4697,14 +4897,14 @@ f6d029d mon: warn in newfs if crash_replay_interval=0 13305d5 mds: no initial filesystem 8f7900a mds: add 'enabled' flag to MDSMap ef7d1bc doc: RPM instructions correction -fcdf273 (origin/wip-port-fixes) mds: avoid comparing MutationRef with 0 -e473790 (origin/wip-krbd-settle) krbd: rework the unmap retry loop +fcdf273 mds: avoid comparing MutationRef with 0 +e473790 krbd: rework the unmap retry loop 59d18ac [RGW, memory leak] Memory leak in RGW has been fixed: deletion of allocated pointer to pointer to Log object has been added to "on_exit" handler. 8e5c921 [RGW, memory leak] Memory leak in RGW GC (losing pointer during allocating Ceph-context) has been fixed. 8706b74 [RGW, memory leaks] Memory leak in RGW initialization (Inserting new connection into connections map w/o check) has been fixed. -9bcc19d (origin/wip-map-unmap) map-unmap.sh: fail if 'rbd rm' fails +9bcc19d map-unmap.sh: fail if 'rbd rm' fails 16b14ea map-unmap.sh: drop the get_id() logic -abdb168 (origin/wip-fsx-random-ctx) test_librbd_fsx: use private RNG context +abdb168 test_librbd_fsx: use private RNG context 9517cea os/FileStore: put SUPER usage in ifdef __linux__ b066e16 common: move #include syscall into ifndef DARWIN 2db500b client: handle missing O_RSYNC constant @@ -4733,8 +4933,8 @@ a17462c mds: add get_metablob() to log events 1c93c61 MOSDOp: The functions are returned by const ref and parameters passed by ref ad81a98 Revert "ceph-disk: Enable creating multiple osds per dev" e02957d test: use (unsigned)0 with gtest to avoid spurious warnings -f8df9bd (origin/wip-da-SCA-20140623) scratchtool.c: cleanup do_rados_getxattrs() -4e9c2c1 (origin/wip-osd-ints) osd: fix pg_stat_t int -> int32_t +f8df9bd scratchtool.c: cleanup do_rados_getxattrs() +4e9c2c1 osd: fix pg_stat_t int -> int32_t 238b1a3 osd: fix pg_shard_t int -> int32_t 709f0c4 osd: fix pg_interval_t int -> int32_t a5f9a09 Fixed build on 32 bits platforms @@ -4744,7 +4944,7 @@ f5a72b7 Added a couple of ASSERTS for avoiding coverity to complain about the po 605d180 mount.ceph.c: fix strdup related memory leak 7f7e56c scratchtool.c: fix resource leak and error handling bdb1346 scratchtool.c: fix resource leak -48e38ac (origin/wip-refactor-cephtool-test) qa/workunits: cephtool: fix 'osd bench' test +48e38ac qa/workunits: cephtool: fix 'osd bench' test 802290d osd: OSD: better explanation on 'max_count' calculation for 'osd bench' 4b0809a qa/workunits: cephtool: only run heap profiler test if tcmalloc enabled 5c4616e qa/workunits: cephtool: set +e for the tcmalloc tests @@ -4756,35 +4956,35 @@ f418408 qa/workunits: cephtool: cleanup state after erasure-code-profile test 3d14a96 qa/workunits: cephtool: split into properly indented functions 04658b7 qa/workunits: cephtool: move test line to where it's more appropriate db6cc13 qa/workunits: cephtool: split into functions -3953053 (origin/wip-da-fix-make-check) test/ceph-disk.sh: fix for SUSE +3953053 test/ceph-disk.sh: fix for SUSE be70c1f osdmaptool/test-map-pgs.t: fix escaping to fix run dc1a4df Revert "Give meaningful error when submodules are not checked out" 9695535 Make in "ceph osd tier --help" clearer. 76361b8 mon: simplify output -385fd6c (origin/wip-disable-static) do_autogen.sh: --disable-static +385fd6c do_autogen.sh: --disable-static 14085f4 (tag: v0.82) 0.82 152bbd6 osd: workaround race condition in tests -cb740b3 (origin/wip-mon-perf) mon: shut down perfcounters last +cb740b3 mon: shut down perfcounters last 524700f doc: Fix malformed parameters in librados.h 56cad1a libcephfs/test.cc: fix use after free a5c704b RadosStriperImpl.cc: catch exception by reference 6d79863 rgw/rgw_rados.h: use static_cast instead of c-style cast -0b3a398 (origin/wip-8654) osd/OSD.cc: parse lsb release data via lsb_release -d7350a3 (origin/wip-fix-rados-tool) rados.cc: fix pool alignment check -2b007c2 (origin/wip-8624) mon: MDSMonitor: print pool name along with id during 'newfs' errors +0b3a398 osd/OSD.cc: parse lsb release data via lsb_release +d7350a3 rados.cc: fix pool alignment check +2b007c2 mon: MDSMonitor: print pool name along with id during 'newfs' errors 378b5ad qa/workunit: cephtool: test mds newfs and add_data_pool with ec pools d6f6813 mon: MDSMonitor: do not allow ec pools to be used for data or metadata -20a1664 (origin/wip-mon-sanity-checks) common: LogClient: output to derr (i.e., dout(-1)) on CLOG_ERROR +20a1664 common: LogClient: output to derr (i.e., dout(-1)) on CLOG_ERROR 9804360 mon: Monitor: observe conf changes and report on unsage option values ec73888 mon: Monitor: sanitize options at start 87f9dba Give meaningful error when submodules are not checked out 58212b1 osd: Only normalize extent if op uses extent -4225e2f (origin/wip-leveldb-stress) osd: remove OSD-specific leveldb options +4225e2f osd: remove OSD-specific leveldb options 52b147c ceph-mon: override 'leveldb_*' config options for the monitor d42d19d mon: MonitorDBStore: remove mon-specific leveldb options. 9844885 mon: DataHealthService: s/mon_leveldb_size_warn/mon_data_size_warn/ -57c5d05 (origin/wip-8610) osd: ignore CRUSH_ITEM_NONE in compat_must_dispatch_immediately -d9073f4 (origin/wip-disk-ioprio) osd: allow io priority to be set for the disk_tp +57c5d05 osd: ignore CRUSH_ITEM_NONE in compat_must_dispatch_immediately +d9073f4 osd: allow io priority to be set for the disk_tp dd6badc common/WorkQueue: allow io priority to be set for wq 1b87410 common/Thread: allow io priority to be set for a Thread a2b4911 common/io_priority: wrap ioprio_set() and gettid() @@ -4795,7 +4995,7 @@ da03e9e MDCache.h: init 'umaster::safe' in constructor 3e93d4a osd: tests for osd bench 74be320 Use sized integer. 66a5f3b doc: Fixed Typo in pools documentation - replaced '-' with '_' in example set-quota comands. -e189a66 (origin/wip-8603) log the command that is being run with subprocess +e189a66 log the command that is being run with subprocess 78cbac4 mailmap: Dmitry Smirnov name normalization efefbfd mailmap: koleosfuscus affiliation 1cdea98 mailmap: Walter Huf name normalization @@ -4811,9 +5011,9 @@ a58fbf7 mailmap: Colin Mattson affliation 22c028d mailmap: Red Hat acquires InkTank c270172 mailmap: Sebastien Ponce affiliation 39a4b78 mon: test that pools used in tiers cannot be removed -1de9071 (origin/wip-misc-fixes) osd/osd_types.cc: dump correct pg_log_entry_t member variable +1de9071 osd/osd_types.cc: dump correct pg_log_entry_t member variable 363496a osd: use appropriate json types instead of stream when dumping info -97772c2 (origin/wip-tiermsg) mon: name instead of id in "has tiers" message +97772c2 mon: name instead of id in "has tiers" message 4d5469a osd: ECMsgTypes: dump json bools instead of strings 3f0ea95 osd: have 'tid' dumped as a json unsigned int where appropriate debaf61 mon: dump 'epoch' as json unsigned instead of int @@ -4822,7 +5022,7 @@ debaf61 mon: dump 'epoch' as json unsigned instead of int b7ff393 mon: OSDMonitor: dump 'acting' as json array instead of string 78f94a9 mailmap: Ailing Zhang affiliation d2e852e doc: Fixed an incorrect flag in radosgw admin docs. -741ad3f (origin/fix_ut) autotools: avoid check_SCRIPTS duplication +741ad3f autotools: avoid check_SCRIPTS duplication c0d78c6 Fix dist package run unit test failed. b3ace76 tests: prevent gitbuilder trigger in test-erasure-code.sh 3a9c0fc test: fix -Wsign-compare warnings @@ -4831,22 +5031,22 @@ c35ceef ReplicatedPG: 'ajusted' typo de2c085 rgw-admin: Fix the 'show log' command 304b08a enforce rados put aligment 8d9201f tests: remove spurious and harmless find command -cdca7b7 (origin/wip-osd-stats) osd: move osd_stat into OSDService +cdca7b7 osd: move osd_stat into OSDService 4afffb4 osd: fix filestore perf stats update -0985ae7 (origin/wip-backfill-priority) osd: prioritize backfill based on *how* degraded +0985ae7 osd: prioritize backfill based on *how* degraded d20da8d osd: add osd_min_recovery_priority tunable b65ceb6 common/AsyncReserver: add a min_priority knob 0e7a979 osd: fix word sizes in MBackfillReserve -c4e8451 (origin/wip-scrub-sleep) osd: introduce simple sleep during scrub +c4e8451 osd: introduce simple sleep during scrub 7b580a2 mon: Monitor: complex code deduplication algorithm applied to tick() 0ed1fe6 mon: Monitor: rework tick() so we don't calculate the same thing over and again -ef8a128 (origin/wip-6703) support dmcrypt partitions when activating +ef8a128 support dmcrypt partitions when activating 7dc93a9 Fix EINVAL err when use "ceph tell osd.* bench" -3ed7f2d (origin/wip-8593) mon: ensure HealthService warning(s) include a summary +3ed7f2d mon: ensure HealthService warning(s) include a summary 82e47db mon: refactor check_health() 98883f6 mon: fix typos, punctuation for mon disk space warning(s) 55a9778 mon/OSDMonitor: make down osd count sensible -c5b5ed6 (origin/wip-ec-hitset) ceph_test_rados_api_tier: disable LibRadosTierECPP::HitSetWrite +c5b5ed6 ceph_test_rados_api_tier: disable LibRadosTierECPP::HitSetWrite 0bb0095 Revert "erasure-code: create default profile if necessary" f53bed1 mon/OSDMonitor: fix build error 1c72465 osd: verify osd config sanity checks @@ -4854,43 +5054,43 @@ f53bed1 mon/OSDMonitor: fix build error d93e74e common: Enforces the methods lru_pin() and lru_unpin() d48ed68 common: Fixes issue with lru_clear() + add new test 62aa5c5 common: Adds simple tests to verify good behavior -64f6232 (origin/wip-ceph-isatty) ceph: output prompt only if stdin is tty -8d1cb8b (origin/wip-vstart-conf) vstart.sh: echo CEPH_{CONF,KEYRING} exports if necessary +64f6232 ceph: output prompt only if stdin is tty +8d1cb8b vstart.sh: echo CEPH_{CONF,KEYRING} exports if necessary 2eb1f55 vstart.sh: rename conf variable to conf_fn 18f5807 Make KeyValueStore not use expected_write_size 360de6a erasure-code: create default profile if necessary -f3ec7d0 (origin/wip-osd-configs) osd: add sanity check/warning on a few key configs +f3ec7d0 osd: add sanity check/warning on a few key configs 4786a48 osd: remove non const get_erasure_code_profile a1c13c5 tests: prevent kill race condition 5c1f9aa osd: improve osd pool create error message readability 6bf8183 erasure-code: consistent argument parsing for profiles 3c63811 erasure-code: OSDMonitor::get_erasure_code is a const ff2eb23 erasure-code: pool create must not create profiles -0d63cf2 (origin/wip-import-purge) qa: extend cephfs_journal_tool_smoke +0d63cf2 qa: extend cephfs_journal_tool_smoke acd6ebb qa: set +x on cephfs_journal_tool_smoke ee487b4 tools/cephfs: Purge trailing objects during import ac05799 tools/cephfs: error handling in journal_export 381163c tools/cephfs: Clean up waits in Dumper 3fe1699 osd/OSDMap: do not require ERASURE_CODE feature of clients 250677c osd/OSDMap: make get_features() take an entity type -e29beff (origin/wip-8071) erasure-code: remove jerasure internals dependencies -e720314 (origin/wip-doc-os-recommendations) doc: Updated the OS Recommendations for Firefly. +e29beff erasure-code: remove jerasure internals dependencies +e720314 doc: Updated the OS Recommendations for Firefly. 2e3302c doc: Updated the example configuration. 5a31df2 doc: Updated doc for more recent versions. 2eab1c1 Update RBD doc for OpenStack -a290d34 (origin/wip-fsx-sizeof) test_librbd_fsx: fix sign-compare gcc warning +a290d34 test_librbd_fsx: fix sign-compare gcc warning 40c48bc qa: add script to test krbd setting ro/rw ioctl -b2542f8 (origin/wip-8585) rgw: set a default data extra pool name +b2542f8 rgw: set a default data extra pool name 94c8f70 doc: Made mention of "incomplete" status. 29c33f0 qa: add an fsx run which turns on kernel debugging -f978722 (origin/wip-xattr-spillout) FileStore: remove the user_only param from _fgetattrs +f978722 FileStore: remove the user_only param from _fgetattrs bb4e3a9 FileStore: remove user_only options from getattrs through the ObjectStore stack fbe6009 FileStore: do not use user_only in collection_getattrs 7267a37 FileStore: remove dead code e3b995e FileStore: set XATTR_NO_SPILL_OUT when creating new files. 239476a FileStore: make _clone() copy spill out marker af8052b Add xattr test to ceph_test_objectstore -d9fac9c (origin/wip-7774-3) rgw: chain to multiple cache entries in one call +d9fac9c rgw: chain to multiple cache entries in one call c616358 rgw: chain binfo_cache to multiple cache entries 7e81185 rgw: bucket info uses cache chaining a2f6709 rgw: user info uses cache chaining @@ -4912,8 +5112,8 @@ a4923f5 fix compilation warnings 737c13e Remove SequencerPosition from KeyValueStore ef06515 doc: fix typo in erasure coding section 1080e7a Add upper limit to the write size of set_alloc_hint in KeyValueStore -6a7e201 (origin/wip-8554) init-ceph: continue after failure doing osd data mount -1f99cda (origin/wip-mon) mon: gather perf stats on elections +6a7e201 init-ceph: continue after failure doing osd data mount +1f99cda mon: gather perf stats on elections 8f36d96 mon: gather perf stats on session adds, removes, counts ecda2fe OSD: move waiting_for_pg into Session 1f40c35 Add set_alloc_hint test to ceph_test_objectstore @@ -4922,14 +5122,14 @@ b0c66a7 doc: Fixes spelling errors on README 910d73c Added RPM and debian packaging for libradosstriper, creating a new package called libradosstriper1 fa01ca6 Added unit test suite for the Rados striping API. d160ce2 Implementation of the radosstriper interface. -a6c34e4 (origin/wip-flag-known-redirs) osdc/Objecter: mark all ops as known-if-redirected -bc3b30e (origin/wip-set-extsize-fix) XfsFileStoreBackend: call ioctl(XFS_IOC_FSSETXATTR) less often +a6c34e4 osdc/Objecter: mark all ops as known-if-redirected +bc3b30e XfsFileStoreBackend: call ioctl(XFS_IOC_FSSETXATTR) less often 750b1db XfsFileStoreBackend: nuke redundant goto in set_extsize() -524a155 (origin/wip-rgw-manifest-iter) rgw: reduce calls to rgw_obj.set_obj() +524a155 rgw: reduce calls to rgw_obj.set_obj() e31d3fe doc: Descrption => Description Correct spelling error. 0ca43d8 doc: Use write_full for C++ example Latest version of librados uses write_full when writing entire object. 0bd6f67 OSD::calc_priors_during: handle CRUSH_ITEM_NONE correctly -2081c99 (origin/wip-i386-atomic) include/atomic: make 32-bit atomic64_t unsigned +2081c99 include/atomic: make 32-bit atomic64_t unsigned 64e99d8 ceph-objectstore-test: fix warning in collect_metadata test e1ad0bf Added a striper interface on top of rados called radosstriper. 7ceeb9f Completed librados documentation of rados_write_op_cmpxattr and rados_read_op_cmpxattr concerning their error reporting @@ -4937,11 +5137,11 @@ e1ad0bf Added a striper interface on top of rados called radosstriper. 8c12491 Fixed usage of rhel_version in spec file : it should have been rhel f92d7bb Fixed missing include of assert.h in RWLock interface b9a35b3 Extracted RadosXattrIter from librados.cc into independent .h anc .cc files. This makes this interface usable by clients of librados. -aede832 (origin/wip-os-rename) os: rename get_*() -> decode_*() -5bb078f (origin/wip-sahid-dist) Populate ChangeLog when distribute +aede832 os: rename get_*() -> decode_*() +5bb078f Populate ChangeLog when distribute b22cc85 Populate AUTHORS when distribute d76936b OSD::calc_priors_during: fix confusing for loop bracing (cosmetic) -59d727d (origin/wip-da-SCA-20140604) kv_flat_btree_async.cc: remove consecutive break after return +59d727d kv_flat_btree_async.cc: remove consecutive break after return 82f5df4 JournalScanner.cc: catch exception by reference 53533ee KeyValueStore.cc: silence gcc -Wunused-variable e24213e MemStore.cc: silence gcc -Wunused-variable @@ -4950,21 +5150,21 @@ a325e3e Revert "Remove unused variables in KeyValueStore.cc" cac902e os/KeyValueStore.cc: fix possible null pointer deref warning 3ee3e66 librbd/internal.cc: check earlier for null pointer f17a963 test/librbd/fsx.c: fix gcc warning -f31e4c8 (origin/wip-da-update-libs3) libs3: update to latest git master of ceph/libs3 +f31e4c8 libs3: update to latest git master of ceph/libs3 18c07ec common/addr_parsing.c: fix realloc memory leak 5f86652 daemon_config.cc: add some more asserts -703d0eb (origin/wip-8452-2) rgw: set meta object in extra flag when initializing it +703d0eb rgw: set meta object in extra flag when initializing it 23b657c Remove unused variables in KeyValueStore.cc 307ba48 Remove unused variables in MemStore.cc -5185a36 (origin/wip-autotools-dummy) automake: add dummy.cc to fix 'make tags' -35509d274 bloom_filter, add test to validate assignement operator +5185a36 automake: add dummy.cc to fix 'make tags' +35509d2 bloom_filter, add test to validate assignement operator c50f85e bloom_filter, remove unecessary operators 90cc6dd bloom_filter, add assertion to test validate element_count() c323c5b Fix keyvaluestore fiemap bug -3ec32a6 (origin/wip-8447) librados: simplify/fix rados_pool_list bounds checks +3ec32a6 librados: simplify/fix rados_pool_list bounds checks 5569d40 documentation: add osd erasure-code-profile {set,rm,get,ls} 8ff4edd documentation: update osd pool create erasure -22bc886 (origin/wip-rbd-doc-fix) doc: fix 'rbd map' example +22bc886 doc: fix 'rbd map' example 4f834fa doc/release-notes: v0.81 f4e81d3 librbd: clarify license header 884a6b3 RadosClient: Avoid the DispatchQueue for OSD responses. @@ -4974,7 +5174,7 @@ f4e81d3 librbd: clarify license header cabb8f0 doc: Added a section for ceph df. 8de9501 (tag: v0.81) 0.81 4bc5aef doc: Updated packages to reference firefly. -c18cbef (origin/wip-runxfstests) qa: add run_xfstests_krbd.sh wrapper +c18cbef qa: add run_xfstests_krbd.sh wrapper cd65246 qa: catch up with xfstests changes 703166c qa: cp run_xfstests.sh run_xfstests-obsolete.sh 601e25e erasure-code: Ceph distributed storage system @@ -4983,23 +5183,23 @@ e158ad9 erasure-code: make decode_concat virtual 6aa45b1 common: s/stringstream/ostream/ in str_map 319cb50 Make KeyValueStore support "ceph osd perf" command 06c0a42 Update INSTALL to mention the submodules/recursive -2dbd85c (origin/wip-sharded-threadpool) WorkQueue: The variable name is corrected. Modified the variable name from shardedpol_cond->shardedpool_cond +2dbd85c WorkQueue: The variable name is corrected. Modified the variable name from shardedpol_cond->shardedpool_cond 3e3632e WorkQueue: Removed the unused in_process variable b05da1c WorkQueue: Taking care of potential race condition during pause() Introduced two variables to keep track of number of threads paused and drained during threadpool pause/drain. The pause()/drain() call is waiting till number of pause/drain threads equals to toral number of thread pool threads. b15bf6b OSD:Derived sharded queue implementation is changed All the threadpool related stuff like stop/pause/drain etc. are not handled by sharded queue anymore. All it is implementing are related to processing,enqueue , signaling of waiting threads and shard queue status. The pg ordering is been taken care of by introducing a map in each shard. c24ef00 ceph-common: The Sharded threadpool worker logic changed Now, the _process() of the derived queue is processing one request at a time and the outer loop is controlled by the sharded threadpool. The stop/pause/drain functionalities are controlled by the sharded TP. 06845d0 OSD: Sharded Op worker queue implementation for handling OSD ops This is the implementation for the client of the sharded thread pool/sharded workQ. Removed the op_wq class and now OSD ops are going through sharded workqueue model which is used by the sharded threadpool. Derived ShardedOpWQ implementation has a data structure called ShardData which has it's own lock/cond and storage. ShardedOpWQ holds a vector of that and the size of the vector is a config option. During enqueue operation on the queue, the ops are sharded across these ShardData based on pg hash % number of shards. Similarly, in the _process function the sharded thread pool threads are divided across ShardData based on thread index % number of shards 8369c08 ceph-common: Implementation of the sharded threadpool. Threadpool will only be having a single work queue and internally the work queue will be having multiple storage data structures. Based on some logic (which is derived class implementation specific) the work queue will shard the requests among these storage structures. Each storage will be guarded by finer grained sunchronization objects. Sharded threadpool threads will be assigned to work on a shard based on some algorithm which is again derived class implementation specific. -83ccba3 (origin/wip-sock-cmp) msg: remove comparison operators for sockaddr_storage -70afaaa (origin/wip-8452) rgw: fetch object attrs on multipart completion +83ccba3 msg: remove comparison operators for sockaddr_storage +70afaaa rgw: fetch object attrs on multipart completion 669b605 PGLog: initialize complete_to -b300318 (origin/wip-8311) rgw: if extra data pool name is empty, use data pool name instead -38405d3 (origin/wip-8265) qa/workunits/cephtool: test setting options using SI units +b300318 rgw: if extra data pool name is empty, use data pool name instead +38405d3 qa/workunits/cephtool: test setting options using SI units 5500437 common/config.cc: allow integer values to be parsed as SI units 40587d4 test/strtol.cc: Test 'strict_strtosi()' 67dc575 common/strtol.cc: strict_strtosi() converts str with SI units to uint64_t 9c56c86 rgw: calc md5 and compare if user provided appropriate header -cae085b (origin/wip-8472) msg_types.h: Don't use strncmp for comparing sockaddr_in. +cae085b msg_types.h: Don't use strncmp for comparing sockaddr_in. 00b9211 doc: Improve man page for rados bench 2da2699 doc: update pools documentation ab59a10 doc: Improve man page for bench @@ -5012,20 +5212,20 @@ e52b9c6 doc: Added osd pool default size setting example. 20a04c6 doc: Moved redundant text out of quick-common. 6786d60 common: WRITE_{EQ,CMP}_OPERATORS_1 8679cdb osd_types: add pg_log_t::rollback_info_trimmed_to -f1b890e (origin/wip-8465) osd: fix bad is_active() assert in share_map() +f1b890e osd: fix bad is_active() assert in share_map() f153bc1 doc: Made additional changes s/CRUSH/Ceph for pull request #1855 c08f481 doc: alter doc CSS for the removal of Apex Sans 7f46b7b doc: removed Apex Sans font, replace with font from GFE 692f998 doc: Fixes broken hyperlinks -93a61df (origin/wip-8259) Makefile: make install-deps rule +93a61df Makefile: make install-deps rule 6fe7564 debian: improve package dep list -e06c58c (origin/wip-smart-df) mon: set min_size to data chunk count for erasure pools +e06c58c mon: set min_size to data chunk count for erasure pools 7a9652b mon: include 'max avail' in df output 2f63a30 mon: right justify df values 2339d4a vstart.sh: -e to create an ec pool called 'ec' 297f616 crush: add get_rule_weight_map 0b5a674 rest-api: key missing for per "rx" and "rwx" -634780a (origin/wip-8321) remove unused variables, gets all tox envs passing +634780a remove unused variables, gets all tox envs passing 23b75b5 add backport of collections.Counter for python2.6 59b7113 intial take on ceph-brag-client and tox. Python 2.7 passes bc85b5d mailmap: Aristoteles Neto affiliation @@ -5041,45 +5241,45 @@ dbc66d7 mailmap: Walter Huf affiliation be9f743 mailmap: Daniel J. Hofmann affiliation c758584 mailmap: Kevin Dalley affiliation 7d1a493 mailmap: Florent Flament affiliation -2815e4d (origin/wip-tier-doc) doc: Fix cache tier docs +2815e4d doc: Fix cache tier docs 08b3cff os: FileStore::create_backend unit tests 3081652 os: ObjectStore::collect_metadata unit tests -97023dc (origin/wip-reweight-tree) mon/OSDMonitor: simplify 'osd crush reweight ...' flow +97023dc mon/OSDMonitor: simplify 'osd crush reweight ...' flow 576315a mon/OSDMonitor: add 'osd crush reweight-subtree ...' 2916148 crush: add adjust_subtree_weight() 4021fb6 osd/: move split_list and split_request into OSD 26862ca Fix Documentation Typo d4e8119 doc: Added primary affinity. Some minor rewrap edits. -1ac3a50 (origin/wip-8292) better error reporting on incompatible device requirements +1ac3a50 better error reporting on incompatible device requirements c2225f8 mon: fix set cache_target_full_ratio -4c22c6f (origin/wip-pybind-timeout) pybind/rados: Fix timeouts for small t -1e0a82f (origin/wip-map-advance) osd: fix map advance limit to handle map gaps +4c22c6f pybind/rados: Fix timeouts for small t +1e0a82f osd: fix map advance limit to handle map gaps 641732d documentation: update pid file description c9ff481 Improvements to radosgw docs - Correct a typo (`rados-admin`) in admin docs - Reorder sections in config so "above example" is in expected position e741ea4 os/FileStore: include filestore backend, f_type in osd metadata 827df7d Fix Doc Typo 9312c5e os/FileStore: refactor backend instantiation 3cf723c os/FileStore: fix journal-less operation -200d0ae (origin/wip-multipartition) ceph-disk: Enable creating multiple osds per dev -2ceb13a (origin/wip-8428) rgw: check appropriate entity permission on put_metadata +200d0ae ceph-disk: Enable creating multiple osds per dev +2ceb13a rgw: check appropriate entity permission on put_metadata ab0db34 documentation: adapt PG formula for erasure coded pools d3af8fa Update architecture.rst:Calculating PG IDs 99b9682 documentation: update osd pool default size from 2 to 3. -4d4b77e (origin/wip-java-build) cephfs-java: build against older jni headers +4d4b77e cephfs-java: build against older jni headers 6069ff0 doc/release-notes: v0.67.9 -f51e33b (origin/wip-librbd-flush) Avoid extra check for clean object -9235dcb (origin/wip-mon-get-version) mon: set MMonGetVersionReply tid +f51e33b Avoid extra check for clean object +9235dcb mon: set MMonGetVersionReply tid ba53889 README: move package dependencies into separate files 77066a2 README: clean up some whitespace c08adbc Fix set_alloc_hint op cause KeyValueStore crash problem -d04b386 (origin/wip-8342) init-ceph: if we fail to set an OSD's crush position, continue +d04b386 init-ceph: if we fail to set an OSD's crush position, continue 46f1eb6 init-ceph: continue loop immediately on daemon start failure 3bbe29e common/Finisher: add queue(list&) c2644b2 Update manual-deployment.rst 74218f3 Define AO_REQUIRE_CAS (fixes FTBFS on 'hppa') -fb504ba (origin/wip-8373) mon: Fix check of ruleset id on pool update +fb504ba mon: Fix check of ruleset id on pool update 1d9e4ac mon: Fix default replicated pool ruleset choice -799f76a (origin/wip-client-time) mds: remove unused Mutation::now +799f76a mds: remove unused Mutation::now 8768857 mds: use mds_stamp for mksnap d4bfa39 mds: reset mds_stamp for readdir, rename, link a09547b mds: use real timestamp for readdir leases @@ -5089,8 +5289,8 @@ fd1f9bd mds: do rstat timestamps (rctime, fragstat mtime) in terms of op stamp 29c6844 mds: make sure mds_stamp is set when we journal 3569e80 mds: set mds_stamp on lock acquisition e4c9c34 mds: add {mds,op}_stamp to Mutation -401319a (origin/wip-buildroot) ceph.spec.in: remove BuildRoot -93a5b88 (origin/wip-journal-tool) tools/cephfs: error handling in EventOutput +401319a ceph.spec.in: remove BuildRoot +93a5b88 tools/cephfs: error handling in EventOutput 3207c50 osdc/Journaler: fix obj count in Journaler:erase 2621b5d tools/cephfs-journal-tool: handle --help cleanly d66fa53 tools/MDSUtility: fix crash on bad config @@ -5126,19 +5326,19 @@ f7e9ff1 tools: Create cephfs-journal-tool 107821f Fix formatting of header ad2e20f client: set timestamp in MDS requests a91e072 mds: include timestamp in MClientRequest -d71839a (origin/wip-doc-openstack) doc: clarify openstack cow sentence +d71839a doc: clarify openstack cow sentence 0f7f1e8 doc: note cinder multi-backend restriction e92f2d9 doc: link to ephemeral rbd patches 13d6c3c doc: quick-ceph-deploy cleanup Improve documentation in quick-ceph-deploy.rst Use admin-node consistently. ceph should be installed on admin-node for the following reasons: "ceph-deploy admin admin-node" assumes that /etc/ceph exists. "ceph health" requires the use of ceph d40ba05 doc: mention admin-node in common documentation -29f615b (origin/wip-8334) ReplicatedPG::start_flush: fix clone deletion case -5ff95db (origin/wip-8332) HashIndex: in cleanup, interpret missing dir as completed merge +29f615b ReplicatedPG::start_flush: fix clone deletion case +5ff95db HashIndex: in cleanup, interpret missing dir as completed merge bc897b8 rados.py: clarify recent change on write return value 6372118 doc: Clean up pre-flight documentation Mention recent Ceph releases. Move important message about sudo and ceph-deploy closer to the use of ceph-deploy. Mention files created by ceph-deploy comment Separate apt-get from yum command 06d05fd doc: fix link to FAQ The location of the ceph wiki FAQ has changed. Now, the link from ceph documentation matches the current FAQ location 03e3ccd doc: Restored glance_api_version=2 setting. -e8756be (origin/wip-8380-b) osdc/Objecter: flag ops that have been redirected -cf2b172 (origin/wip-8380) osd: skip out of order op checks on tiered pools +e8756be osdc/Objecter: flag ops that have been redirected +cf2b172 osd: skip out of order op checks on tiered pools e47049b erasure-code: fix URL in developer notes 23787ba mailmap: Sahid Orentino Ferdjaoui affiliation 30ae96a Ensure autogen.sh to be executed at the top-level @@ -5159,7 +5359,7 @@ e56b88f mds: Add ENoOp for padding journals e3a9f66 objecter: Don't warn on multiple admin sockets d4a250c common: Add write_stream(ostream) to bufferlist 5b20deb mds: Add LogEvent::get_type_str() -d776ec4 (origin/wip-multimds) mds: queue waiters in MDCache::force_dir_fragment() +d776ec4 mds: queue waiters in MDCache::force_dir_fragment() b223055 mds: fix remote auth pin race 57c89bf mds: fix Server::submit_mdlog_entry() f19cd4f mds: drop locks after removing import/export state @@ -5169,19 +5369,19 @@ affce7a mds: journal rename source inode when rollback rename 6fe7d17 mds: skip journaling slave rename when possible 3783653 mds: include all of directory inode's replicas in rmdir witnesses 08b79ea mds: journal EImportFinish after adjusting subtree auth -c18da04 (origin/wip-osd-refs) osd: fix narrow session refcount race +c18da04 osd: fix narrow session refcount race 2c4391b osd: fix session leak in ms_handle_fast_connect 15350de Add header cache to DBObjectMap ee92a39 MDS: add admin socket cleanup on shutdown -a78b14e (origin/wip-osdmon-pa-wait) OSDMonitor: set next commit in mon primary-affinity reply +a78b14e OSDMonitor: set next commit in mon primary-affinity reply 6dfc544 sample.ceph.conf: minor update -290ac81 (origin/wip-osdmap-sub-bug) OSD: fix an osdmap_subscribe interface misuse -6ec3c46 (origin/osd-metadata) osd: include osd_objectstore in metadata reported to mon +290ac81 OSD: fix an osdmap_subscribe interface misuse +6ec3c46 osd: include osd_objectstore in metadata reported to mon 405063b workunits: provide some output in the dirfrag.sh test -aec5634 (origin/wip-8104) osd_types: remove the pool_id argument from (is|check)_new_interval +aec5634 osd_types: remove the pool_id argument from (is|check)_new_interval f47c160 PG: replace is_split, acting_up_affected with should_restart_peering 2ee3551 osd_types: factor out is_new_interval from check_new_interval -c48a4ef (origin/wip-perf-atomic) common/perf_counters: use second atomic to make counters safe to read +c48a4ef common/perf_counters: use second atomic to make counters safe to read ab907c5 doc: Clarified Debian uses sysvinit. c71c292 doc: Added rgw print continue guidance. b082fd6 doc: Minor edit. @@ -5194,8 +5394,8 @@ ca833bd doc: Added clarifying text to CRUSH add command. 26151ec mds: lower IO priority of storing backtrace 019483f mds: reduce verbosity of handle_client_file_{readlock,setlock} ca313c2 mds: add a Server::submit_mdlog_entry() to provide event marking -9f0825c (origin/wip-8338) OSD: verify that client ops are targeted correctly in the current epoch -7411477 (origin/wip-8011) ReplicatedPG: block scrub on blocked object contexts +9f0825c OSD: verify that client ops are targeted correctly in the current epoch +7411477 ReplicatedPG: block scrub on blocked object contexts 2ec2182 ReplicatedPG::start_flush: send delete even if there are no snaps ca91743 Locker: mark_event in acquire_locks() when blocking or succeeding 2df68b6 Server: mark events when journaling and replying @@ -5208,7 +5408,7 @@ ae80a1f MDS: add stubs for an AdminSocketHook 428319e doc/release-notes: v0.80.1 19f8849 doc: Improvements to qemu installation. 6e4455d doc: Added note on Default requiretty for CentOS and others. -8b682d1 (origin/java-gcj) prioritise use of `javac` executable (gcj provides it through alternatives). +8b682d1 prioritise use of `javac` executable (gcj provides it through alternatives). 89fe035 pass '-classpath' option (gcj/javah ignores CLASSPATH environment variable). 0f4120c look for "jni.h" in gcj-jdk path, needed to find "jni.h" with gcj-jdk_4.9.0 2001572 mds: deny reconnect for closed session @@ -5217,7 +5417,7 @@ f35648b mds: properly clear new flag for stale client cap 58ee556 mds: propagate inode rstat if it has never been propagated 54a9037 mds: avoid journaling unnecessary dir context 1f92f55 mds: cleanup usage of MDCache::predirty_journal_parent() -3d7f527 (origin/wip-da-SCA-20140510) BtrfsFileStoreBackend.cc: fix ::unlinkat() result handling +3d7f527 BtrfsFileStoreBackend.cc: fix ::unlinkat() result handling 5f89128 TestLFNIndex.cc: remove unused variable 'mangled_name' a445529 rgw_user.cc: remove dead assignment in generate_key() b119679 rgw_user.cc: cleanup RGWAccessKeyPool::check_op() @@ -5238,12 +5438,12 @@ d69fd90 test_rgw_admin_opstate.cc: prefer ++operators for iterators 0f899c8 test_rgw_admin_meta.cc: prefer ++operators for iterators f523d64 TestErasureCodePluginJerasure.cc: prefer ++operators for non-primitive types 014f050 test/ObjectMap/KeyValueDBMemory.cc: use empty() instead of size() -d9fff40 (origin/wip-old-out) mon: restore previous weight when auto-marked out osd boots +d9fff40 mon: restore previous weight when auto-marked out osd boots 87722a4 mon: remember osd weight when auto-marking osds out 45281d9 common/perf_counters: use atomics instead of a mutex bf3ba60 atomic_t: add atomic64_t b24b77a FileStore.cc: remove some dead assignments -39c071f (origin/wip-update-gitignore) .gitignore: ignore files generated by ctags on topdir +39c071f .gitignore: ignore files generated by ctags on topdir e847d56 add gitignore for wireshark subdir to track *.patch only here b9cf708 .gitignore: add some patch/diff related files f067013 .gitignore: add no longer used mkcephfs @@ -5251,7 +5451,7 @@ ea69f6b cls_kvs.cc: return 'r' from get_idata_from_key() 574a940 cls_kvs.cc: remove dead assignment 36c1c97 rgw_user.cc: a121d01 libcephfs.cc: fix possible NULL pointer deref -76568aa (origin/wip-8305) Objecter::_op_submit: only replace the tid if it's 0 +76568aa Objecter::_op_submit: only replace the tid if it's 0 94773ac osd/OSD.cc: fix possible NULL pointer deref in share_map() 0d67f9b osd/ReplicatedPG: do not queue NULL dup_op 79c6491 mds/flock.cc: remove dead initialization of 'new_lock_end' @@ -5263,7 +5463,7 @@ dd700bd osdc/Objecter: resend ops in the last_force_op_resend epoch b3203e5 rbd.cc: remove used parameter from set_pool_image_name() fe75075 test_librbd.cc: fix sizeof() in malloc call eb2def8 CrushWrapper.cc: fix sizeof() call in calloc -11e5eef (origin/wip-5021) client: fix whitespace in stat relpath +11e5eef client: fix whitespace in stat relpath cdbe6cf client: use __func__ instead of incorrect function name in insert_readdir_results 3eb2a77 client: make less noise when unlinking during readdir d1c872d client: invalidate dentry leases when unlinking @@ -5271,26 +5471,26 @@ d852a69 client: audit unlink() callers 3b867d3 TrackedOp: create an "initiated" event on construction bdee119 msg: Fix inconsistent message sequence negotiation during connection reset b5e4cd1 osd: fix MOSDMarkMeDown name -6b858be (origin/wip-8319) osd: handle race between osdmap and prepare_to_stop +6b858be osd: handle race between osdmap and prepare_to_stop b640301 osd: fix state method whitespace ba01445 Fixed missing initializers issues 60b1071 Removed extra semicolons 5986f74 :doc Ceph OSD is standard name This is a method of standardizing the usage of OSD so that "Ceph OSD" is the daemon, and OSD maintains its industry standard usage of Object Storage Device. -ddc2e1a (origin/wip-8169) rgw: calculate user manifest -589b639 (origin/wip-7588) osd/ReplicatedPG: carry CopyOpRef in copy_from completion +ddc2e1a rgw: calculate user manifest +589b639 osd/ReplicatedPG: carry CopyOpRef in copy_from completion db4ccb0 ReplicatedPG: block scrub on blocked object contexts 3152faf osd/osd_types: add last_force_op_resend to pg_pool_t -0f19626 (origin/wip-6966) ceph-disk: partprobe before settle when preparing dev -5690232 (origin/wip-da-sca-20140507) rbd-fuse.c: remove ridiculous linebreak +0f19626 ceph-disk: partprobe before settle when preparing dev +5690232 rbd-fuse.c: remove ridiculous linebreak 7a3724b rbd-fuse.c: fix indentation 8101f98 rbd-fuse.c: fix -Wmissing-field-initializers -65ca867 (origin/wip-krbd-fixes) krbd: fix sysfs path in the comment +65ca867 krbd: fix sysfs path in the comment f1d953e krbd: match new with delete, not free() 082367e rbd.cc: init 'snap_protected' to fix -Wconditional-uninitialized 0d01563 rbd-fuse.c: init 'rbd' in open_rbd_image() cfc885f ObjectCacher::_wait_for_write(): init 'bool done' 8322878 Objecter::calc_target(): init best_locality with 0 -13750a1 (origin/wip-jcsp-clang) rgw: Remove trailing ; from fn definitions +13750a1 rgw: Remove trailing ; from fn definitions 447335a os/FileJournal: remove unused attribute f0231ef mon: Fix % escaping (\% should be %%) d85b8fa mds: Remove redundant 'using namespace std' @@ -5310,14 +5510,14 @@ b4b79eb remove superfluous second semicolons at end of lines 635607f client: skip insert_trace on safe requests f1d412c doc: Common graph used in 2 quick start files d130763 vstart.sh: fix client admin socket path -0ee409b (origin/wip-7553) osd: Remove classic scrub code since Argonaut osd can't join +0ee409b osd: Remove classic scrub code since Argonaut osd can't join 81c7418 ECUtil.h: clarify calculation with braces 13f54b7 PG::start_peering_interval: use check_new_interval for same_interval_since 5752d76 rgw_acl_swift.h: fix #define header guard 8059c9f rgw_rest_metadata.cc: fix -Wparentheses-equality 8a0c016 ReplicatedPG.cc: fix -Wparentheses a0f59df test_rgw_manifest.cc: fix VLA of non-POD element type -817985b (origin/wip-fsx-krbd) test_librbd_fsx: align temporary buffers allocated in check_clone() +817985b test_librbd_fsx: align temporary buffers allocated in check_clone() ab9de9c test_librbd_fsx: wire up O_DIRECT mode c4a764c test_librbd_fsx: fix a bug in docloseopen() 421e6c5 test_librbd_fsx: add krbd mode support @@ -5328,7 +5528,7 @@ d63808e test_librbd_fsx: make resizes sector-size aligned 7df50ec test_librbd_fsx: align temp_buf by readbdy instead of writebdy d13e32e test_librbd_fsx: move prterrcode() and simple_err() 8d41f86 test_librbd_fsx: update usage -99400f8 (origin/wip-da-cleanup-includes) osdmaptool.cc: cleanup included headers +99400f8 osdmaptool.cc: cleanup included headers a5e0d80 monmaptool.cc: cleanup included headers 537385c ceph_osdomap_tool.cc: cleanup included headers d57561a ceph_monstore_tool.cc: cleanup included headers @@ -5355,8 +5555,8 @@ f9a91f2 Update doc to reflect the bahavior change for filestore_merge_threshold 334c43f client: avoid blindly removing dentries 25d2469 client: leave NULL dentry in place on ENOENT during lookup cc65c39 client: add debugging around traceless reply failures -545d8ad (origin/wip-8269) rgw: extend manifest to avoid old style manifest -9968b93 (origin/wip-8299) rgw: fix stripe_size calculation +545d8ad rgw: extend manifest to avoid old style manifest +9968b93 rgw: fix stripe_size calculation 6c2b173 mds: handle export freezen race a09070a mds: allow negetive rstat 22abd7b mds: cancel fragmenting dirfrags when cluster is degraded @@ -5373,21 +5573,21 @@ f386e16 mds: pre-allocate inode numbers less frequently 7a066f8 mds: include authpinned objects in remote authpin request 5b86a13 mds: send dentry unlink message to replicas of stray dentry 7d1fd66 mds: maintain auth bits during replay -09beebe (origin/wip-7157) ceph-disk: fix list for encrypted or corrupt volume +09beebe ceph-disk: fix list for encrypted or corrupt volume bd8e026 rgw: don't allow multiple writers to same multiobject part -03b0d1c (origin/wip-8289) rgw: cut short object read if a chunk returns error +03b0d1c rgw: cut short object read if a chunk returns error 2d5d309 Pipe: wait for Pipes to finish running, instead of just stop()ing them -6ec99f7 (origin/wip-rbd-clang) librbd: check return value during snap_unprotect +6ec99f7 librbd: check return value during snap_unprotect 6f2edda ObjectCacher: remove useless assignment -3e387d6 (origin/wip-8296) osd/ReplicatedPG: fix whiteouts for other cache mode -5cc5686 (origin/wip-8170) rgw: send user manifest header field +3e387d6 osd/ReplicatedPG: fix whiteouts for other cache mode +5cc5686 rgw: send user manifest header field e65a9da Revert "Fix installation into user home directory, broken by d3f0c0b" b78644e (tag: v0.80) 0.80 cdbbf86 doc: Fixed artifacts from merge. a31b9e9 doc: Added sudo to setenforce. Restored merge artifact. 5158272 doc: Added erasure coding and cache tiering notes. Special thanks to Loic Dachary. 08a4e88 Variable length array of std::strings (not legal in C++) changed to std::vector -ae434a3 (origin/wip-8290) client: check snap_caps in Incode::is_any_caps() +ae434a3 client: check snap_caps in Incode::is_any_caps() 4bf20af SimpleMessenger: Don't grab the lock when sending messages if we don't have to b038f0c OSD: rename share_map_incoming and share_map_outgoing e1277ba OSD: move the peer_epoch and map sharing infrastructure into OSDService @@ -5436,29 +5636,29 @@ ec16357 OSD: replace handle_pg_scan, handle_pg_backfill with handle_replica_op 37fac29 OSD::_share_map_incoming: line wrap debug output 78f310d PG: constify the init() function params 816b10e RWLock: assert pthread function return values -e2b62bc (origin/wip-messageless-tracker) TrackedOp: do not require a Message when creating new Ops +e2b62bc TrackedOp: do not require a Message when creating new Ops 95fc551 TrackedOp: do not track a Message 5a3efda TrackedOp: introduce an _unregistered() function to let implementations clean up 2e674de TrackedOp: rename arrived_at to initiated_at, specify when constructed 6a559a5 TrackedOp: introduce a _dump_op_descriptor function d7e04cc TrackedOp: remove the init_from_message function -fc3318e (origin/wip-doc-radosgw-80) doc: Fix hyperlink. +fc3318e doc: Fix hyperlink. a7e7219 doc: Index update and librados. fcbc5fa doc: Quotas for Admin Ops API. e97b56e doc: New Admin Guide for Ceph Object Storage. 7539281 Fix installation into user home directory, broken by d3f0c0b 24c5ea8 osd: check blacklisted clients in ReplicatedPG::do_op() -f92677c (origin/wip-blacklist) osd: check blacklisted clients in ReplicatedPG::do_op() +f92677c osd: check blacklisted clients in ReplicatedPG::do_op() c64b67b ceph-object-corpus: rebase onto firefly corpus 077e6f8 ceph-object-corpus: v0.80-rc1-35-g4812150 8bd4e58 Fix out of source builds 3aee1e0 Fix clone problem -fd970bb (origin/wip-8155) mon: OSDMonitor: disallow nonsensical cache-mode transitions -72fdd55 (origin/wip-8283) osd/ReplicatedPG: fix trim of in-flight hit_sets +fd970bb mon: OSDMonitor: disallow nonsensical cache-mode transitions +72fdd55 osd/ReplicatedPG: fix trim of in-flight hit_sets 8472805 Revert "ReplicatedPG: block scrub on blocked object contexts" -f47f867 (origin/wip-8113) osd: Prevent divide by zero in agent_choose_mode() +f47f867 osd: Prevent divide by zero in agent_choose_mode() b7d31e5 osd, common: If agent_work() finds no objs to work on delay 5 (default) secs -fe0031d (origin/wip-da-SCA-fixes-20140501) rados.cc: fix typo in help output +fe0031d rados.cc: fix typo in help output 8bf039d Dumper::dump_entries(): reduce scope of 'got_data' 296b8ed PG::read_info(): pass 'const coll_t coll' by reference 8fad144 PGBackend::be_compare_scrubmaps(): pass pgid by reference @@ -5478,16 +5678,16 @@ d024594 mailmap: Florent Bautista affiliation 7b192f7 mailmap: Guang Yang name normalization 4662890 sample.ceph.conf update: 9cf470c osd/ReplicatedPG: agent_work() fix next if finished early due to start_max -9f1a916 (origin/wip-snapmapper-debug) osd/SnapMapper: pass snaps set by const ref +9f1a916 osd/SnapMapper: pass snaps set by const ref 6105c35 osd/SnapMapper: debug -f065809 (origin/wip-7576) mon/OSDMonitor: do not reply to MOSDMarkMeDown if ack is not requested +f065809 mon/OSDMonitor: do not reply to MOSDMarkMeDown if ack is not requested 58ace1a osd: fix 'ack' to be 'request_ack' in MOSDMarkMeDown 49a3b22 osd: ignore MarkMeDown message if we aren't in PREPARING_TO_STOP state cf25bdf osd: prevent pgs from getting too far ahead of the min pg epoch 81e4c47 osd: track per-pg epochs, min c879e89 doc: Include links from hardware-recommendations to glossary Included :term: in parts of hardware-recommendations so that glossary links appear. Signed-off-by: Kevin Dalley -cc04322 (origin/wip-fix-master) mds: note MDiscoverReply encoding change in corpus -e597068 (origin/wip-mds-shutdown) mds: remove mdsdir in the final step of shutdown MDS +cc04322 mds: note MDiscoverReply encoding change in corpus +e597068 mds: remove mdsdir in the final step of shutdown MDS 1f4a3e1 mds: bump protocol 1ac05fd doc/release-notes: changelog link ffef20f doc/release-notes: final v0.67.8 notes and changelog @@ -5516,14 +5716,14 @@ ef0de7a OSDMap.cc: prefer prefix ++operator for non-trivial iterator 5562428 OSDMonitor.cc: prefer prefix ++operator for non-trivial iterator e4b3109 KeyValueStore: rename s/logger/perf_logger/ a84fed6 crush/mapper.c: fix printf format for unsigned variable -21bbdf5 (origin/wip-early-reply) mds: avoid adding replicas of target dentry to rename witnesses +21bbdf5 mds: avoid adding replicas of target dentry to rename witnesses 3a7d668 mds: allow early reply when request's witness list is empty 41d93aa mds: include authority of the source inode in rename witnesses -68b440d (origin/wip-8147) osd: automatically scrub PGs with invalid stats +68b440d osd: automatically scrub PGs with invalid stats d01aa5b mon: OSDMonitor: return immediately if 'osd tier cache-mode' is a no-op -f689e5f (origin/wip-no-anchor) mds: remove discover ino +f689e5f mds: remove discover ino 913a5dd mds: remove anchor table -8217600 (origin/wip-doc-radosgw) doc: Ensure fastcgi socket doesn't clash with gateway daemon socket. +8217600 doc: Ensure fastcgi socket doesn't clash with gateway daemon socket. 9c9b92f doc: Verified RHEL configuration. ec11bf7 doc: Fixed inconsistent header. 63b2964 doc: Added rhel-6-server-optional-rpms repo. @@ -5533,46 +5733,46 @@ f674f36 Copy range using fiemap not entire length e08b8b6 librbd: check return code and error out if invalidate_cache fails b1df2c3 Changed the -i parameter to -r in order to avoid a conflict with a generic flag interpreted by the common code. a027100 rgw: fix url escaping -9e3b860 (origin/wip-7500-wusui) Fix s3 tests in the rgw workunit. +9e3b860 Fix s3 tests in the rgw workunit. 3ec0040 Added a new command line parameter (-i or --image=) that allows rbd-fuse to specify a single image to be made available within the mount directory. The purpose of this is to allow a single RBD to be "mounted" in userspace without opening (and locking) the other RBDs in the pool. -060105c (origin/wip-8086) ReplicatedPG: we can get EAGAIN on missing clone flush +060105c ReplicatedPG: we can get EAGAIN on missing clone flush d83b8f5 ReplicatedPG: do not preserve op context during flush a60e15a doc/release-notes: v0.67.8 notes -bcf92c4 (origin/wip-8202) rgw: fix url escaping +bcf92c4 rgw: fix url escaping 27ec495 Added Java Example 8f64b5c Update librados-intro.rst -3e41f92 (origin/wip-client-sleep) client: cleanup unsafe requests if MDS session is reset +3e41f92 client: cleanup unsafe requests if MDS session is reset 70ab079 client: wake up cap waiters if MDS session is reset b8aa58a client: drop dirty/flushing caps if auth MDS' session is reset 09a1bc5 client: add asok command to kick sessions that were remote reset 998b365 Changed the java code example -5d49782 (origin/wip-7966) mds: terminate readlink result in resapwn -d0f1806 (origin/wip-8193) ceph_test_rados_api_tier: increase HitSetTrim timeouts +5d49782 mds: terminate readlink result in resapwn +d0f1806 ceph_test_rados_api_tier: increase HitSetTrim timeouts 9ac264a Skipping '_netdev' Debian fstab option -499adb1 (origin/wip-7941) rados.h,ReplicatedPG: add CEPH_OSD_FLAG_ENFORCE_SNAPC and use on flush -ddf37d9 (origin/wip-uselocalgithubforqemu-wusui) Use new git mirror for qemu-iotests -1885792 (origin/wip-8161) ECBackend::continue_recovery_op: handle a source shard going down +499adb1 rados.h,ReplicatedPG: add CEPH_OSD_FLAG_ENFORCE_SNAPC and use on flush +ddf37d9 Use new git mirror for qemu-iotests +1885792 ECBackend::continue_recovery_op: handle a source shard going down c0c2361 brag : implement --verbose on client 7009211 brag : document the zero argument behavior 2b16a81 brag : meaningfull error messages -83f8934 (origin/wip-8168) ReplicatedPG::do_osd_ops: consider head whiteout in list-snaps +83f8934 ReplicatedPG::do_osd_ops: consider head whiteout in list-snaps 39c1bfc ReplicatedPG::do_op: don't return ENOENT for whiteout on snapdir read a83aff5 test_rbd.py: ignore children in cache pools aae16ab mon: add ceph osd pool set auid -606e725 (origin/wip-7882-wusui) Support latest qemu iotest code -f631854 (origin/wip-libkrbd) rbd: deprecate --no-settle option +606e725 Support latest qemu iotest code +f631854 rbd: deprecate --no-settle option 0c2b0fb doc: 'rbd showmapped' doesn't need privileges 4238ffd doc: do not mention modprobe in rbd docs 0ba3960 rbd: switch to libkrbd for 'rbd {map,showmapped,unmap}' operations 2521e73 mount.ceph: switch to module_load() 2651750 rbd: add libkrbd convenience library -bad34e9 (origin/wip-fs-client) client: check cap ID when handling cap export message +bad34e9 client: check cap ID when handling cap export message 383d21d client: avoid releasing caps that are being used -d726251 (origin/wip-doc-cache-tier) doc: Fix hyperlink to CRUSH maps. +d726251 doc: Fix hyperlink to CRUSH maps. 6902e22 doc: Added cache tiering settings to ceph osd pool set. 0d964bc doc: Added new cache tiering doc to index/TOC. 44e4e3d doc: Added new cache tiering doc to main docs. -2182815 (origin/wip-7439) ReplicatedPG: handle ec pools in mark_all_unfound_lost +2182815 ReplicatedPG: handle ec pools in mark_all_unfound_lost 6769f4d (tag: v0.80-rc1) 0.80-rc1 245923e ReplicatedPG: enable mark_unfound_lost delete for ec pools 009e874 qa/workunits/rbd/copy.sh: skip some tests when tiering is enabled @@ -5583,11 +5783,11 @@ ac9b461 common: add module_{load,has_parameter}() 070a820 configure: check for blkid/blkid.h header 9004049 rbd: use stringify() in options parsing routines be081db stringify: use ostringstream instead of stringstream -cac15c7 (origin/wip-coverity-respawn) mds: make strncpy in ::respawn safer -b4eb502 (origin/wip-coverity) osd/osd_types: RWState: initialize snaptrimmer_write_marker +cac15c7 mds: make strncpy in ::respawn safer +b4eb502 osd/osd_types: RWState: initialize snaptrimmer_write_marker 4e5f442 osdc/Objecter: drop unused field 124a663 doc/release-notes: a bit of prose about firefly -18aded2 (origin/wip-8139) osd/osd_types: pg_interval_t: include primaries in operator<< +18aded2 osd/osd_types: pg_interval_t: include primaries in operator<< 931ae6b osd/osd_types: pg_interval_t: include up_primary in pg_interval_t 66170f3 osd/osd_types: pg_interval_t: dump primary 000233f osd: change in up set primary constitutes a peering interval change @@ -5603,7 +5803,7 @@ c3833d7 doc: Fixed syntax to include 'pool'. f3df501 ReplicatedPG: do not create whiteout clones caa6356 ReplicatedPG,rados: add CEPH_OSD_[COPY_FROM]_MAP_SNAP_TO_CLONE 2cb0bac qa/workunits/cephtool/test.sh: make set pg_num test non-racy -506dce8 (origin/wip-8124) ReplicatedPG: do not use shard for hit_set object names +506dce8 ReplicatedPG: do not use shard for hit_set object names f7e7588 ReplicatedPG::agent_load_hit_sets: take ondisk_read_lock 16eccdd PG,PGLog: update hit_set during peering 5821cc7 osd/: propogate hit_set history with repop @@ -5614,30 +5814,30 @@ ddf1e98 osd: track the number of hit_set archive objects in a pg 95d0278 ReplicatedPG::mark_all_unfound_lost: delete local copy if necessary 61b6564 Simple mechanical cleanups 7a61cdb buffer: adjust #include order -f9e9365 (origin/wip-8153) Revert "ReplicatedPG::get_snapset_context: assert snap obj is not missing" -4413670 (origin/wip-throttle-snap-master) osd: throttle snap trimmming with simple delay +f9e9365 Revert "ReplicatedPG::get_snapset_context: assert snap obj is not missing" +4413670 osd: throttle snap trimmming with simple delay 82edda2 test: handle the create-pg delay when testing cache split syntax -b2112d5 (origin/wip-7784) mon: OSDMonitor: HEALTH_WARN on 'mon osd down out interval == 0' -09985d2 (origin/wip-7997) mon: wait for PaxosService readable in handle_get_version +b2112d5 mon: OSDMonitor: HEALTH_WARN on 'mon osd down out interval == 0' +09985d2 mon: wait for PaxosService readable in handle_get_version 8fb2388 osd_types: pg_t: add get_ancestor() method -7e697b1 (origin/wip-8091) ReplicatedPG::recover_replicas: do not recover clones while snap obj is missing -3ad51c8 (origin/wip-num_objects_omap) osd_types::object_stat_sum_t: fix add/sub for num_objects_omap -3d0e80a (origin/wip-8048) osd/ReplicatedPG: check clones for degraded -93c0515 (origin/wip-8130) osdc/Objecter: fix osd target for newly-homeless op -881680e (origin/wip-8132) mon: set leader commands prior to first election -40e8dbb (origin/wip-poolset-noblock) mon: EBUSY instead of EAGAIN when pgs creating +7e697b1 ReplicatedPG::recover_replicas: do not recover clones while snap obj is missing +3ad51c8 osd_types::object_stat_sum_t: fix add/sub for num_objects_omap +3d0e80a osd/ReplicatedPG: check clones for degraded +93c0515 osdc/Objecter: fix osd target for newly-homeless op +881680e mon: set leader commands prior to first election +40e8dbb mon: EBUSY instead of EAGAIN when pgs creating f22e2e9 spelling corrections 18caa1c OSD: split pg stats during pg split 5e4a5dc osd_types::osd_stat_sum_t: fix floor for num_objects_omap a3d452a common/obj_bencher: Fix error return check from read that is negative on error 4db1984 osd/ReplicatedPG: add missing whitespace in debug output -924064f (origin/wip-mds-op-prio) mds: dynamically adjust priority of committing dirfrags -0640a08 (origin/wip-8092) mds: fix cap revoke confirmation +924064f mds: dynamically adjust priority of committing dirfrags +0640a08 mds: fix cap revoke confirmation 8c7a5ab Use string instead of char* when saving arguments for rest-bench 0d2177a ReplicatedPG::get_snapset_context: assert snap obj is not missing -015df93 (origin/wip-8043) mon/OSDMonitor: require force argument to split a cache pool -c252345 (origin/wip-8108) osd: OSDMap: have osdmap json dump print valid boolean instead of string -aa6df59 (origin/wip-7699) mds: Fix respawn (add path resolution) +015df93 mon/OSDMonitor: require force argument to split a cache pool +c252345 osd: OSDMap: have osdmap json dump print valid boolean instead of string +aa6df59 mds: Fix respawn (add path resolution) f6db1bc mds: share max size to client who is allowed for WR cap 358bde5 Add clone test on store_test 308758b Make rados/rest bench work for multiple write instances without metadata conflict. Signed-off-by: Guang Yang @@ -5646,8 +5846,8 @@ f6db1bc mds: share max size to client who is allowed for WR cap 3f7861e ReplicatedPG::agent_work: skip if head is missing d39e003 ReplicatedPG::cancel_flush: requeue dup_ops even if !op edda6f7 ReplicatedPG::_rollback_to: fix comment, clone certainly could be missing -37ed4b6 (origin/wip-stress-watch) ceph_test_stress_watch: test over cache pool -d0a7632 (origin/wip-strerror) Use cpp_strerror() wherever possible, and use autoconf for portability +37ed4b6 ceph_test_stress_watch: test over cache pool +d0a7632 Use cpp_strerror() wherever possible, and use autoconf for portability 502cc61 ReplicatedPG::agent_work: skip hitset objects before getting object context 0d4aed8 mon: fix Session ref leak in handle_get_version d563434 doc: Distro specific rgw.conf example. @@ -5657,30 +5857,30 @@ bd22cac doc: Distro specific rgw.conf example. 1310af2 doc: Reworked the simple configuration guide to be more generic. 6853d21 doc: New admin guide for Ceph Object Gateway. Needs some clarification (todo). e02b845 doc: Admin API usage for quotas. Needs additional clarification on syntax. -d0d162a (origin/wip-8097) buffer: use Mutex instead of Spinlock for raw crcs +d0d162a buffer: use Mutex instead of Spinlock for raw crcs 7c17fc4 mds: don't modify inode when calculating client ranges -65ec24e (origin/wip-client-debug) client: print inode max_size +65ec24e client: print inode max_size d6c71b7 osd/ReplicatedPG: add missing whitespace in debug output -171d5c5 (origin/wip-librados-tests) ceph_test_rados_api_*: fix build warnings, memset ranges -8905e3e (origin/wip-8089) osd/ReplicatedPG: handle dup ops earlier in do_op +171d5c5 ceph_test_rados_api_*: fix build warnings, memset ranges +8905e3e osd/ReplicatedPG: handle dup ops earlier in do_op 26659a5 mds: don't issue/revoke caps before client has caps bd8aa6f mds: do file recover after authpin inode -a72bcdd (origin/wip-8085) osd/ReplicatedPG: handle misdirected do_command -4ccc845 (origin/wip-mds-typo) mds: fix typo in Server::do_rename_rollback() -809d0fa (origin/wip-hitset-missing) osd/ReplicatedPG: handle missing hit_set on HITSET_GET rados op +a72bcdd osd/ReplicatedPG: handle misdirected do_command +4ccc845 mds: fix typo in Server::do_rename_rollback() +809d0fa osd/ReplicatedPG: handle missing hit_set on HITSET_GET rados op 53a4b71 ceph_test_rados_api_watch_notify: test over cache pool b31107b test/librados/TestCase: add Param option that can set up a cache pool -3ce4078 (origin/wip-7940) test: Add --pool-snaps option to ceph_test_rados +3ce4078 test: Add --pool-snaps option to ceph_test_rados 09b5538 test: Fix ceph_test_rados to not core dump with invalid arguments b6b0c3b librados: Add ObjectWriteOperation::snap_rollback() for pool snapshots 6e0496b librados: Rollback interface additions -6ff645f (origin/wip-8008) osd/PG: fix repair_object when missing on primary -19acfeb (origin/wip-8063) ceph_test_librados_tier: tolerage EAGAIN from pg scrub command -39b9d9d (origin/wip-osd-boot) mon/OSDMonitor: fix osd epoch in boot check -78df66f (origin/wip-8077) osd/ReplicatedPG: skip missing hit_sets when loading into memory -7077438 (origin/wip-8054) mds: finish table servers recovery after creating newfs +6ff645f osd/PG: fix repair_object when missing on primary +19acfeb ceph_test_librados_tier: tolerage EAGAIN from pg scrub command +39b9d9d mon/OSDMonitor: fix osd epoch in boot check +78df66f osd/ReplicatedPG: skip missing hit_sets when loading into memory +7077438 mds: finish table servers recovery after creating newfs 052519e Revert "mds: finish table servers recovery after creating newfs" -82d8397 (origin/wip-5170-firefly) rgw: update bucket / object rewrite +82d8397 rgw: update bucket / object rewrite 6f2ee99 radosgw-admin: add some conditions for bucket rewrite 9130e7d radosgw-admin: new 'bucket rewrite' command f12bccc radosgw-admin: check params for object rewrite @@ -5690,33 +5890,33 @@ ad40356 Included the total cluster size in components_count object db3e0b5 erasure-code: document the ruleset-root profile parameter 6d42bd9 While generating crush_types, avoiding item parsing, and calculating type count by just iterating thorugh buckets list 1987832 Bug fix in the way crush_type is extracted from osd crush dump -072d371 (origin/wip-lockdep) RWLock: make lockdep id mutable +072d371 RWLock: make lockdep id mutable da0d382 Revert "RWLock: don't assign the lockdep id more than once" 632098f common_init: remove dup lockdep message 3c54a49 Wordsmith the erasure-code doc a bit f6c2073 mds: finish table servers recovery after creating newfs 3db7486 mds: issue new caps before starting log entry -07e8ee2 (origin/wip-7437) test: Add EC testing to ceph_test_rados_api_aio +07e8ee2 test: Add EC testing to ceph_test_rados_api_aio 69afc59 test: Add multiple write test cases to ceph_test_rados_api_aio d99f1d9 test, librados: aio read *return_value consistency, fix ceph_test_rados_api_aio 3d290c2 test: Add EC unaligned append write test to ceph_test_rados_api_io 39bf68c pybind, test: Add python binding for append and add to test d211381 pybind: Check that "key" is a string 9812720 librados, test: Have write, append and write_full return 0 on success -008663a (origin/wip-7499) rgw, radosgw-admin: bucket link uses bucket instance id now -6ce7116 (origin/wip-7786) civetweb: update subproject +008663a rgw, radosgw-admin: bucket link uses bucket instance id now +6ce7116 civetweb: update subproject 43d837d rgw: radosgw-admin object rewrite -4c99e97 (origin/wip-8062) mon/OSDMonitor: ignore boot message from before last up_from +4c99e97 mon/OSDMonitor: ignore boot message from before last up_from a8f0953 osd/ReplicatedPG: adjust obc + snapset_obc locking strategy -86b8594 (origin/wip-6789) mon: Monitor: suicide on start if mon has been removed from monmap +86b8594 mon: Monitor: suicide on start if mon has been removed from monmap 02048dc mds: guarantee message ordering when importing non-auth caps ac51fca mds: include truncate_seq/truncate_size in filelock's state 808ba13 mds: remove wrong assertion for remote frozen authpin 860d727 osdc/Objecter: move mapping into struct, helper -18642ed (origin/wip-8042) mon: tell peers missing features during probe +18642ed mon: tell peers missing features during probe 39ca440 mon: move required_features back into Monitor c8039ab mon: ignore sync clients without required_features -50ed65f (origin/wip-6480) auth: remove unused get_global_id() method +50ed65f auth: remove unused get_global_id() method b297689 auth: make AuthClientHandler::validate_ticket() protected 3ccef66 auth: AuthClientHandler const cleanup 9af10b2 auth: CephxProtocol const cleanup @@ -5731,34 +5931,34 @@ b297689 auth: make AuthClientHandler::validate_ticket() protected edd542e tools: Improve ceph_scratchtoolpp 34d69cd mon: refresh elector required_features when they change b3b502f mon/Elector: ignore ACK from peers without required features -f1c6b65 (origin/wip-8028) ceph.spec.in: require redhat-lsb-core +f1c6b65 ceph.spec.in: require redhat-lsb-core ae09361 mailmap: Yan, Zheng name normalization 5ee0b7b mailmap: Nikola Kotur affiliation -02aedbc (origin/wip-8004) client: wake up umount waiter if receiving session open message +02aedbc client: wake up umount waiter if receiving session open message 409999c rbd: Prevent Seg fault by checking read result in snap_read_header() 9c6733e librados: Allow rados_pool_list() to get NULL buffer if len == 0 1848a23 librados: Fix typo for read functions documentation -a8330f5 (origin/wip-5469) librbd: fix zero length request handling -22a0c1f (origin/wip-8045) osd: do not block when updating osdmap superblock features +a8330f5 librbd: fix zero length request handling +22a0c1f osd: do not block when updating osdmap superblock features 43f0519 doc: Made minor changes to quick start preflight for RHEL. ab7a25c doc: Notes and minor modifications to gateway installation doc. 1d74170 pipe: only read AuthSessionHandler under pipe_lock -084db49 (origin/wip-die-mkcephfs) remove mkcephfs -277e7ac (origin/wip-5835) debian: update ceph description +084db49 remove mkcephfs +277e7ac debian: update ceph description 72dc732 ceph.spec: update ceph description -79ac2f7 (origin/wip-8001) osd/PG: set CREATING pg state bit until we peer for the first time -4de49e8 (origin/wip-8019) os/FileStore: reset journal state on umount +79ac2f7 osd/PG: set CREATING pg state bit until we peer for the first time +4de49e8 os/FileStore: reset journal state on umount 1cdb738 vstart.sh: make crush location match up with what init-ceph does -d2edd9c (origin/wip-8031) osd: drop unused same_for_*() helpers +d2edd9c osd: drop unused same_for_*() helpers 5d61161 osd: drop previous interval ops even if primary happens to be the same d3833dd osd: make misdirected checks explicit about replicas, flags -55cfb14 (origin/wip-8026) mds: fix shared_ptr MDRequest bugs -2ba00bd (origin/wip-7914) erasure-code: thread-safe initialization of gf-complete +55cfb14 mds: fix shared_ptr MDRequest bugs +2ba00bd erasure-code: thread-safe initialization of gf-complete 0022d91 mailmap: Paul Meserve affiliation f261ad1 mailmap: Michael Nelson affiliation 89a5ec7 mailmap: Sandon Van Ness name normalization 010dff1 osd_types: fix pg_stat_t::encode, object_stat_sum_t::decode version -22894c3 (origin/wip-4354-shared_ptr) SimpleLock: Switch MutationRef& for MutationRef in get_xlock() +22894c3 SimpleLock: Switch MutationRef& for MutationRef in get_xlock() 5f2ccab MDCache: use raw MutationImpl* instead of MutationRef in a few places 6c3fc3e Locker: use raw MutationImpl* instead of MutationRef in several places 920fd6c Locker: use a null_ref instead of NULL @@ -5771,33 +5971,33 @@ a6a0800 Server: use MutationRef instead of raw pointer 4dedab6 MDS: switch cache object classes to use MutationRef instead of raw pointers 9a4a429 ceph_test_rados_api_misc: print osd_max_attr_size 4b66868 doc: Removed --stable arg and replaced with --release arg for ceph-deploy. -7273d9e (origin/wip-7975) osd/ReplicatedPG: warn if invalid stats prevent us from activating agent +7273d9e osd/ReplicatedPG: warn if invalid stats prevent us from activating agent 02d7e84 osd/ReplicatedPG: dump agent state on pg query fa46aec osd/ReplicatedPG: kickstart the agent if scrub stats become valid -07099ec (origin/wip-8003) ReplicatedPG: do not evict head while clone is being promoted +07099ec ReplicatedPG: do not evict head while clone is being promoted 67b2342 ReplicatedPG::trim_object: account evicted prev clone for stats 6ff6c19 ReplicatedPG::make_writeable: check for evicted clone before adjusting for clone_overlap a8a49a0 ReplicatedPG: use get_clone_bytes on evict/promote 3286283 ReplicatedPG::_scrub: account for clone_overlap on each clone 4d5db06 ReplicatedPG::find_object_context: check obs.exists on clone obc before checking snaps d0e2c98 ReplicatedPG::finish_promote: add debugging assert for clone_size -e213ee1 (origin/wip-7919) qa: workunits: mon: auth_caps.sh: test 'auth' caps requirements +e213ee1 qa: workunits: mon: auth_caps.sh: test 'auth' caps requirements 85a1cf3 mon: MonCommands: have all 'auth' commands require 'execute' caps 4c2d73a (tag: v0.79) 0.79 51da3bb mds: fix uninit val in MMDSSlaveRequest -09586ec (origin/wip-shrink-icache) client: pin parent dentry of inode who has ll_ref > 0 +09586ec client: pin parent dentry of inode who has ll_ref > 0 76cbd5d mds: fix uninit MMDSSlaveRequest lock_type -4ea9e48 (origin/wip-8002) osd: fix map subscription in YOU_DIED osd_ping handler +4ea9e48 osd: fix map subscription in YOU_DIED osd_ping handler 2f7522c msgr: add ms_dump_on_send option 87e6a62 mds: fix uninitialized fields in MDiscover 67fd421 mon: wait for quorum for MMonGetVersion a75af4c client: try shrinking kernel inode cache when trimming session caps -82015e4 (origin/wip-7958) client: release clean pages if no open file want RDCACHE +82015e4 client: release clean pages if no open file want RDCACHE 9484daf osd: disable agent when stats_invalid (post-split) -232ac1a (origin/wip-7994) OSD: _share_map_outgoing whenever sending a message to a peer -6f40b64 (origin/wip-7993) ceph-post-file: use getopt for multiple options, add longopts to help -2f6a62b (origin/wip-7992) ceph-post-file: fix installation of ssh key files -e02b7f9 (origin/wip-7983) osd/ReplicatedPG: do not hit_set_persist while potentially backfilling hit_set_* +232ac1a OSD: _share_map_outgoing whenever sending a message to a peer +6f40b64 ceph-post-file: use getopt for multiple options, add longopts to help +2f6a62b ceph-post-file: fix installation of ssh key files +e02b7f9 osd/ReplicatedPG: do not hit_set_persist while potentially backfilling hit_set_* 4aef403 doc/release-notes: note about emperor backport of mon auth fix db266a3 mon: MonCommands.h: have 'auth' read-only operations require 'x' cap 9caf3db Migrator: use a null ref instead of NULL when calling into path_traverse @@ -5819,48 +6019,48 @@ abc19dd client: drop Fr cap before gettattr CEPH_STAT_CAP_SIZE 2d5bd84 client: assign implemented caps to caps field of MClientCaps 1538a98 client: hold Fcr caps during readahead 701c22a client: implement RDCACHE reference tracking -b219c8f (origin/wip-cache-create-fix) ReplicatedPG: fix CEPH_OSD_OP_CREATE on cache pools -be8b228 (origin/wip-7922) osd: Send REJECT to all previously acquired reservations +b219c8f ReplicatedPG: fix CEPH_OSD_OP_CREATE on cache pools +be8b228 osd: Send REJECT to all previously acquired reservations 18201ef doc/release-notes: v0.79 release notes 4dc6266 Fix byte-order dependency in calculation of initial challenge -6cb50d7 (origin/wip-7964) ReplicatedPG::_delete_oid: adjust num_object_clones +6cb50d7 ReplicatedPG::_delete_oid: adjust num_object_clones 0f2ab4d ReplicatedPG::agent_choose_mode: improve debugging -0552ecb (origin/wip-7978) rgw: only look at next placement rule if we're not at the last rule +0552ecb rgw: only look at next placement rule if we're not at the last rule eb23ac4 ReplicatedPG::agent_choose_mode: use num_user_objects for target_max_bytes calc cc9ca67 ReplicatedPG::agent_choose_mode: exclude omap objects for ec base pool a130a44 osd/: track num_objects_omap in pg stats 9894a55 ReplicatedPG: handle FLAG_OMAP on promote and copyfrom -a11b3e8 (origin/wip-7858) ReplicatedPG::do_op: use get_object_context for list-snaps +a11b3e8 ReplicatedPG::do_op: use get_object_context for list-snaps 78e9813 ReplicatedPG: do not create snapdir on head eviction -31df91e (origin/wip-backfill) osd: add 'osd debug reject backfill probability' option -d323634 (origin/wip-test-alloc-hint-ec-fix) qa: test_alloc_hint: set ec ruleset-failure-domain to osd -8e46fe0 (origin/wip-vstop-unmap) stop.sh: unmap rbd images when stopping the whole cluster +31df91e osd: add 'osd debug reject backfill probability' option +d323634 qa: test_alloc_hint: set ec ruleset-failure-domain to osd +8e46fe0 stop.sh: unmap rbd images when stopping the whole cluster afc5dc5 stop.sh: do not trace commands 0110a19 stop.sh: indent 4 spaces universally -e4a8535 (origin/wip-vstart-erasure-code-default) vstart: set a sensible default for ruleset-failure-domain -c43822c (origin/wip-7965) lockdep: reset state on shutdown +e4a8535 vstart: set a sensible default for ruleset-failure-domain +c43822c lockdep: reset state on shutdown 7a49f3d lockdep: do not initialize if already started -6bf46e2 (origin/wip-7915) OSDMap: bump snap_epoch when adding a tier -01445d5 (origin/wip-7937) ReplicatedPG::_scrub: don't bail early for snapdir -5f680f9 (origin/wip-7659) ReplicatedPG::_verify_no_head_clones: missing implies that the clone exists -7909262 (origin/wip-init) debian: fix control to allow upgrades +6bf46e2 OSDMap: bump snap_epoch when adding a tier +01445d5 ReplicatedPG::_scrub: don't bail early for snapdir +5f680f9 ReplicatedPG::_verify_no_head_clones: missing implies that the clone exists +7909262 debian: fix control to allow upgrades 17732dc debian: move rbdmap config and sysvinit/upstart scripts into ceph-common 1d42de5 init.d: correcting rbdmap init order: -771e88a (origin/wip-dirfrag) mds: fix check for merging/spliting dirfrag -43bc39b (origin/wip-largedir2, origin/wip-largedir) mds: ignore CDir::check_rstats() when debug_scatterstat is off +771e88a mds: fix check for merging/spliting dirfrag +43bc39b mds: ignore CDir::check_rstats() when debug_scatterstat is off 5a9b99a mds: initialize bloom filter according to dirfrag size 16af25f mds: add dentries in dirfrag to LRU in reverse order 06ecb2c mds: handle freeze authpin race d1967f3 mds: treat cluster as degraded when there is clientreplay MDS b65a818 mds: don't start new segment while finishing disambiguate imports ff44a99 mds: trim non-auth subtree more aggressively -c09f58e (origin/wip-7450) radosgw-admin: don't always generate access key for subusers +c09f58e radosgw-admin: don't always generate access key for subusers e1783a6 rgw: subuser creation can be idempotent f54c684 radosgw-admin: fix subuser modify e095b1d debian: make ceph-common own etc/ceph, var/log/ceph -d4d39a0 (origin/wip-7907) osd/ReplicatedPG: mark_unrollbackable when _rollback_to head +d4d39a0 osd/ReplicatedPG: mark_unrollbackable when _rollback_to head 1acd547 debian: move ceph-rest-api from ceph-common to ceph -a76a129 (origin/wip-7939) PG: set role for replicated even if role != shard +a76a129 PG: set role for replicated even if role != shard ef94fcd test: Add EC testing to ceph_test_rados_api_snaphots 1871fe7 test: Add EC testing to ceph_test_rados_api_lock 759878c test: Add EC testing to ceph_test_rados_api_tier @@ -5876,8 +6076,8 @@ c106976 librados: Add missing C variants for alignment 2d7da1d librados: Add missing rados_wait_for_latest_osdmap() dde1c91 osd/ReplicatedPG: continue scrub logic when snapset.head_exists doesn't match c2e5a42 osd/ReplicatedPG: handle snapdir properly during scrub -ed5a5e0 (origin/wip-7935) rgw: reverse logic to identify next part -48fbce9 (origin/wip-7916) ReplicatedPG: improve get_object_context debugging +ed5a5e0 rgw: reverse logic to identify next part +48fbce9 ReplicatedPG: improve get_object_context debugging 5c9b8a2 osd/PG: debug cached_removed_snaps changes 824da20 librbd: skip zeroes when copying an image e44f85c qa/workunits/cephtool/test.sh: test 'osd pg-temp ...' @@ -5887,8 +6087,8 @@ e44f85c qa/workunits/cephtool/test.sh: test 'osd pg-temp ...' 07dcffa OSDMonitor: add 'osd pg-temp ...' command d3183e3 java/test: ceph.file.layout xattr is still not there now cd1a9c4 Add ceph-client-debug and jerasure shared objects to RPM spec file. -81853c6 (origin/wip-7912) mon/PGMap: clear pool sum when last pg is deleted -8c761c4 (origin/wip-ec-profile-idempotent) mon: make 'ceph osd erasure-code-profile set ...' idempotent +81853c6 mon/PGMap: clear pool sum when last pg is deleted +8c761c4 mon: make 'ceph osd erasure-code-profile set ...' idempotent 7d321d8 qa/workunits/rados/test_alloc_hint: fix erasure syntax 2826fda doc: fix typos in glossary 7fa025e .gitignore: add examples/librados files @@ -5897,33 +6097,33 @@ cd1a9c4 Add ceph-client-debug and jerasure shared objects to RPM spec file. ff51d3f doc: pgbackend dev doc outdated notice d5973aa doc: update jerasure plugin 402e104 doc: erasure code developer notes updates -74fa3a7 (origin/wip-fuse-access) fuse: implement 'access' low level function +74fa3a7 fuse: implement 'access' low level function e672c52 osd/ReplicatedPG: fix cache tier scrub again ea47b4a ceph_test_rados_api_tier: improve promote+scrub test -fc1a424 (origin/wip-7849) ceph-conf: use global_pre_init to avoid starting logging +fc1a424 ceph-conf: use global_pre_init to avoid starting logging 98551fc global: separate first half of global_init into global_pre_init -c3292e4 (origin/wip-cache-scrub) ceph_test_rados_api_tier: improve cache tier + scrub test +c3292e4 ceph_test_rados_api_tier: improve cache tier + scrub test cfd6f23 osd/ReplicatedPG: tolerate trailing missing clones on cache tiers b8ea656 java/test: ceph.file.layout xattr is not there now 4f9f7f8 qa/workunits/fs/misc/layout_vxattrs: ceph.file.layout is not listed b71e64d mds: find approximal bounds when adjusting subtree auth fd28ad5 doc: erasure-code development complete -399de24 (origin/wip-sse-i386) erasure-code: do not attempt to compile SSE4 on i386 +399de24 erasure-code: do not attempt to compile SSE4 on i386 07ccc4e mds: commit new dirfrag before splitting it bd6e35c rbd.cc: yes, cover formatted output as well. sigh. 780fa91 Revert "ceph-conf: do not log" b5a6320 Revert "ceph-conf: no admin_socket" 44afc23 init: fix OSD startup issue fd76fec rbd.cc: tolerate lack of NUL-termination on block_name_prefix -056151a (origin/wip-7888) mon/MonClient: use keepalive2 to verify the mon session is live +056151a mon/MonClient: use keepalive2 to verify the mon session is live d747d79 msgr: add KEEPALIVE2 feature -1aa1d93 (origin/wip-7904) ReplicatedPG: hit_set_setup, agent_setup, skip if !active -f1c7b4e (origin/wip-7867) client: pin Inode during readahead +1aa1d93 ReplicatedPG: hit_set_setup, agent_setup, skip if !active +f1c7b4e client: pin Inode during readahead 032d4ec osdc/ObjectCacher: call read completion even when no target buffer -68dc0c6 (origin/wip-7903) rgw: move max_chunk_size initialization +68dc0c6 rgw: move max_chunk_size initialization a6be1d6 PG: always clear agent_state in clear_primary_state dfd3cb5 rgw: only look at prefetched data if we actually prefetched -d78e678 (origin/wip-7902) osd/PG: fix choose_acting revert to up case +d78e678 osd/PG: fix choose_acting revert to up case 0bb911c mds: don't trim non-auth root inode/dirfrag 90b4e53 mds: include authority of the overwrited inode in rename witnesses 367987f mds: don't increase nlink when rollback stray reintegration @@ -5945,7 +6145,7 @@ e535f7f mds: avoid journaling non-auth opened inode ffcbcdd mds: handle race between cache rejoin and fragmenting 6963a8f mds: handle interaction between slave rollback and fragmenting 72eaa5e doc: fix typos in tiering dev doc -1b5e8f4 (origin/wip-7880) mds: properly propagate dirty dirstat to auth inode +1b5e8f4 mds: properly propagate dirty dirstat to auth inode 38d4c71 Pipe: rename keepalive->send_keepalive c64d03d mon/OSDMonitor: require OSD_CACHEPOOL feature before using tiering features 69321bf mon/OSDMonitor: prevent setting hit_set unless all OSDs support it @@ -5953,12 +6153,12 @@ eb71924 osd/ReplicatedPG: tolerate missing clones in cache pools 6508d5e osd/ReplicatedPG: improve clone vs head checking 9e2cd5f osd/ReplicatedPG: do not assert on clone_size mismatch 7f026ba ceph_test_rados_api_tier: scrub while cache tier is missing clones -7cb1d3a (origin/wip-fix-pools) qa/workunits/mon/pool_ops.sh: fix test +7cb1d3a qa/workunits/mon/pool_ops.sh: fix test 233801c qa/workunits/mon/pool_ops.sh: use expect_false -72715b2 (origin/wip-7849-b) ceph-conf: no admin_socket +72715b2 ceph-conf: no admin_socket fb20823 jerasure: fix up .gitignore acc31e7 ceph-conf: do not log -ffd69ab (origin/wip-7876) rgw: use s->content_length instead of s->length +ffd69ab rgw: use s->content_length instead of s->length 501e31d logrotate: do not rotate empty logs (2nd logrotate file) 91176f1 erasure-code: test encode/decode of SSE optimized jerasure plugins b76ad97 erasure-code: test jerasure SSE optimized plugins selection @@ -5970,26 +6170,26 @@ cc0cc15 erasure-code: gf-complete / jerasure modules updates 12d4f38 erasure-code: allow loading a plugin from factory() 506d2bb logrotate improvement: do not rotate empty logs dc3ce58 osd: do not make pg_pool_t incompat when hit_sets are enabled -92859ed (origin/wip-7837) ReplicatedPG: include pending_attrs when reseting attrs in WRITEFULL -b6a431b (origin/wip-7874) ReplicatedPG: disable clone subsets for cache pools -56974b9 (origin/wip-7860) test: Wait for tier removal before next test starts -7999bc9 (origin/wip-7828) ReplicatedPG:: s/_delete_head/_delete_oid, adjust head_exists iff is_head +92859ed ReplicatedPG: include pending_attrs when reseting attrs in WRITEFULL +b6a431b ReplicatedPG: disable clone subsets for cache pools +56974b9 test: Wait for tier removal before next test starts +7999bc9 ReplicatedPG:: s/_delete_head/_delete_oid, adjust head_exists iff is_head 9865409 rgw: configurable chunk size -832c007 (origin/wip-7871) RadosModel: allow --no-omap to be specified seperately from --ec-pool -555ae12 (origin/wip-7870) ReplicatedPG::do_osd_ops: only return ENOTSUP on OMAP write ops -6cb8595 (origin/wip-7835) ReplicatedPG::make_writeable: fill in ssc on clone -21fc535 (origin/wip-7823) osd: trim copy-get backend read to object size +832c007 RadosModel: allow --no-omap to be specified seperately from --ec-pool +555ae12 ReplicatedPG::do_osd_ops: only return ENOTSUP on OMAP write ops +6cb8595 ReplicatedPG::make_writeable: fill in ssc on clone +21fc535 osd: trim copy-get backend read to object size 18c3e9e osd: fix tests due to no default erasure-code ruleset 29f7420 Revert "osd: create the erasure-code ruleset in OSDMap::build_simple" 4cf9a73 fix bug in 'defaultweight' calculation on OSD start. -2779e2a (origin/wip-7863-wusui) Make sure s3_utilities are found. +2779e2a Make sure s3_utilities are found. 38bcd3c osd: start_flush() should check for missing clones and return if requested bf87562 osd: Error from start_flush() not checked in agent_maybe_flush() ed43aa0 osd: Add logging of missed l_osd_agent_skip cases d1d99df osd: Improve logging output including pg_shard_t as osd#(shard) 4ac7808 minor corrections to package descriptions 012bb5f minor init.d scripts lintianisation: -14b743b (origin/wip-7676-firefly) rgw: don't modify rgw_bucket for data extra pool +14b743b rgw: don't modify rgw_bucket for data extra pool 7989cbd rgw: multipart meta object uses extra data pool f023f90 rgw: zone placement info includes extra data pool 3677076 rgw: add data_extra pool to bucket @@ -6001,19 +6201,19 @@ a310ea2 mailmap: Guang Yang affiliation 2faf271 mailmap: Mohammad Salehe affiliation 27c28ad mailmap: Sharif Olorin affiliation 9fd61c7 mailmap: Stephan Renatus affiliation -01b9966 (origin/wip-dz-watch-test) qa: Add ceph_multi_stress_watch for rep and ec -6ec28fd (origin/wip-6465) ensure pybind is in the PYTHONPATH +01b9966 qa: Add ceph_multi_stress_watch for rep and ec +6ec28fd ensure pybind is in the PYTHONPATH 37899fa be nitpicky about missing references 4186916 Revert "erasure-code: gf-complete detects SSE at runtime" -3f014da (origin/wip-status-function-names) mon: Monitor: s/_mon_status()/get_mon_status()/ +3f014da mon: Monitor: s/_mon_status()/get_mon_status()/ ed780ad mon: Monitor: s/get_status()/get_cluster_status()/ -08a3d6b (origin/wip-listxattr) client: don't include ceph.{file,dir}.layout vxattr in listxattr() +08a3d6b client: don't include ceph.{file,dir}.layout vxattr in listxattr() 1bc680e erasure-code: deactivate SSE optimizations -8116394 (origin/wip-7827) msg: set recv stamp for local delivery +8116394 msg: set recv stamp for local delivery 3ebeb8e mailmap: Allen Samuels affiliation a217cd6 mailmap: Warren Usui is with Inktank a4c652c document adding dev key for custom Apache/FCGI install -fb72330 (origin/wip-7810) mds: reset connection priv after connection's session is removed +fb72330 mds: reset connection priv after connection's session is removed e4f2d9f doc/release-notes: 0.78 final notes 185bcc4 doc/release-notes: final 0.78 1817c23 rgw: get rid of a memory allocation @@ -6023,16 +6223,16 @@ f6c746c (tag: v0.78) 0.78 49a0190 doc/release-notes: 0.78 notes dbcf447 erasure-code: gf-complete detects SSE at runtime 8c7f6c1 autotools: AX_SSE detects the compiler SSE capabilities -5a3f6c7 (origin/wip-7438) test: Add erasure coding to stress watch test +5a3f6c7 test: Add erasure coding to stress watch test 6fb6588 test: Reorg multi_stress_watch to prepare for ec option b110275 test: Fix ceph_filestore_dump.sh test for new EC pool creation dad0faf tests: use ^ instead of ! as invalid char d4d77d7 doc/release-notes: stop confusing sphinx -78ede90 (origin/wip-7780) objecter: waive OSDMAP_FULL check for MDS -a4849fb (origin/wip-flush-journal-asok) qa: test_alloc_hint: flush journal before prodding the FS +78ede90 objecter: waive OSDMAP_FULL check for MDS +a4849fb qa: test_alloc_hint: flush journal before prodding the FS 9d31c1b osd: add flush_journal admin socket command -b444e88 (origin/wip-multimds-fixes) mds: fix typo in MDCache::handle_cache_rejoin_strong -ddbb2f7 (origin/wip-jerasure-submodules) erasure-code: add gf-complete / jerasure submodules +b444e88 mds: fix typo in MDCache::handle_cache_rejoin_strong +ddbb2f7 erasure-code: add gf-complete / jerasure submodules 5c34a0f erasure-code: remove copy of gf-complete / jerasure 0d167d2 mds: fix NULL pointer dereference in Server::handle_client_rename 272b53b mds: avoid infinite loop in MDLog::submit_entry() @@ -6053,23 +6253,23 @@ e909eaf mds: drop auth pins before waiting for dir unfreeze bc3325b mds: fix stack overflow caused by nested dispatch 63a597b mds: rollback slave request after slave prepare is journalled a1ff489 mds: treat flushing as dirty when rejoining scattered locks -1268dbb (origin/wip-tid_t) Change tid_t to ceph_tid_t to avoid conflicts with a popular type -b227426 (origin/wip-no-version) Add NO_VERSION to avoid rebuilding ceph_ver.h and relinking -cfb04b2 (origin/wip-limit-libkeyutils) Makefiles: remove libkeyutils from every binary except two +1268dbb Change tid_t to ceph_tid_t to avoid conflicts with a popular type +b227426 Add NO_VERSION to avoid rebuilding ceph_ver.h and relinking +cfb04b2 Makefiles: remove libkeyutils from every binary except two e9eb641 remove gf-complete / jerasure sub modules -fdcf3eb (origin/wip-7777) ReplicatedPG::do_op: delay if snapdir is unreadable -7f7a998 (origin/wip-7708) mds/Locker: fix null deref on cap import +fdcf3eb ReplicatedPG::do_op: delay if snapdir is unreadable +7f7a998 mds/Locker: fix null deref on cap import 4221e0d build: add gf-complete/jerasure to gitmodule_mirrors -25d04fb (origin/wip-pq) osd: dump priority queue state on dequeue at level 30 +25d04fb osd: dump priority queue state on dequeue at level 30 ff11965 osd: fix OpWQ dump locking 4a3464c common/PrioritizedQueue: include first item's cost in dump de576d5 common/PrioritizedQueue: constify a few things 8bd8944 common/PrioritizedQueue: fix remove_by_class() corner case f1e3bc9 doc/dev/cache-pool: describe the tiering agent -d728426 (origin/wip-7733) PG::start_peering_interval: always send_notify if !primary -b4420ff (origin/wip-7755) PG::find_best_info: fix log_tail component +d728426 PG::start_peering_interval: always send_notify if !primary +b4420ff PG::find_best_info: fix log_tail component 1ddae7e erasure-code: jerasure and gf-complete moved to ceph namespace -01a0f2d (origin/wip-6806) mon: OSDMonitor: don't rely on client-side validation for command arguments +01a0f2d mon: OSDMonitor: don't rely on client-side validation for command arguments 074c880 mon: Monitor: handle invalid 'quorum' command argument 652056e mon: Properly handle errors from 'cmd_getval()' when needed 543c642 erasure-code: disable SSE extensions @@ -6087,19 +6287,19 @@ f8aa1ed mon: set the profile and ruleset defaults early 063de51 osd: obsolete pg_pool_t properties with erasure_code_profile 04d2fd1 mon: add the erasure-code-profile {set,get,rm,ls} MonCommand fa1d957 mon/Paxos: commit only after entire quorum acks -aed0744 (origin/wip-7738) os/FileJournal: return errors on make_writeable() if reopen fails -c31f38c (origin/wip-7728) ReplicatedPG: if !obc->obs->exists, lock snapdir obc if exists +aed0744 os/FileJournal: return errors on make_writeable() if reopen fails +c31f38c ReplicatedPG: if !obc->obs->exists, lock snapdir obc if exists 9ee1084 ReplicatedPG: disallow trans which atomically create and remove an object f094400 Add file to store mirror location of module's. -a9f8a9e (origin/wip-cli-err) ceph.in: Better error on bad arg to 'tell' +a9f8a9e ceph.in: Better error on bad arg to 'tell' 1a451f2 mon: functional tests teardown must be run on error 514b5e3 mon: add helper to selection functions implementing tests e4b4b1f osd: OSDMap::erasure_code_profile accessors c4f8f26 osd: add OSDMap::erasure_code_profile -2b9bd26 (origin/wip-tmap2omap-warn) mds: avoid spurious TMAP2OMAP warning -e39c213 (origin/wip-7611) ceph.in: do not allow using 'tell' with interactive mode -b2af217 (origin/wip-remotebit-dump) mds: Fix remotebit::dump for less common types -9d77ce1 (origin/wip-rados-outfile) tools/rados: Allow binary file output of omap data +2b9bd26 mds: avoid spurious TMAP2OMAP warning +e39c213 ceph.in: do not allow using 'tell' with interactive mode +b2af217 mds: Fix remotebit::dump for less common types +9d77ce1 tools/rados: Allow binary file output of omap data be31998 erasure-code: make libcommon include liberasure-code e6d9066 erasure-code: add ostream to factory() de62572 erasure-code: remove dependency to the global context @@ -6116,53 +6316,53 @@ cf25946 mon: create-erasure uses crush_ruleset_create_erasure 8e07dbc mon: crush_ruleset_create_erasure error codes 402e646 mon: crush_ruleset_create_erasure reduce verbosity 6a16eac mon: create crush_ruleset_create_erasure helper -1ae3314 (origin/wip-7684) client: force getattr when inline data is missing -04de781 (origin/wip-7740) OSD::handle_pg_query: on dne pg, send lb=hobject_t() if deleting +1ae3314 client: force getattr when inline data is missing +04de781 OSD::handle_pg_query: on dne pg, send lb=hobject_t() if deleting 9e21840 mds: include inline data in lock messages 5b3422a mds: fix corner case of pushing inline data -b2fcc6e (origin/wip-s3pm-wusui) Remove code duplication from s3 tests. -979e8b4 (origin/wip-7732) PG::build_might_have_unfound: check pg_whomai, not osd whoami -0f75c54 (origin/wip-7712) osd/ReplicatedPG: fix enqueue_front race +b2fcc6e Remove code duplication from s3 tests. +979e8b4 PG::build_might_have_unfound: check pg_whomai, not osd whoami +0f75c54 osd/ReplicatedPG: fix enqueue_front race ef1d7c9 rados.py: Fixed docstring syntax warnings. 02b746d doc: Fixed release notes syntax warnings. 9cd67bb doc: Fixed hyperlink. -599a8d7 (origin/wip-7698) test: Add ceph_filestore_dump.sh to test ceph_filestore_dump +599a8d7 test: Add ceph_filestore_dump.sh to test ceph_filestore_dump 31a6679 tools: Fix ceph_filestore_dump to fully operate on EC pools f633a03 tools: Cleanups in ceph_filestore_dump -bbc0d6d (origin/wip-7718) PG::issue_repop: only adjust peer_info last_updates if not temp +bbc0d6d PG::issue_repop: only adjust peer_info last_updates if not temp 35f1b04 RGWListBucketMultiparts: init max_uploads/default_max with 0 ab91b80 mon/OSDMonitor: fix fall-thru case -fc85075 (origin/wip-cache-last-epoch-clean) mon/PGMap: only recalculate min_last_epoch_clean if incremental touches old min +fc85075 mon/PGMap: only recalculate min_last_epoch_clean if incremental touches old min 208959a mon/PGMap: cache min_last_epoch_clean 6f9db6c unittest_mon_pgmap: fix warnings e941fef unittest_ceph_argparse: fix warnings f2c6ff3 tools/: make filenames consistent -e330097 (origin/wip-7719) PG: clear want_pg_temp in clear_primary_state only if primary +e330097 PG: clear want_pg_temp in clear_primary_state only if primary da159f8 doc/release-notes: note that radosgw's should be upgraded together -f1bd59f (origin/wip-7692) mon: only do timecheck with known monmap +f1bd59f mon: only do timecheck with known monmap fba88de ceph-mon: be a bit more verbose on error -62af51c (origin/wip-7696) PG::activate: handle peer contigious with primary, but not auth_log -70d87df (origin/wip-7489) ceph_mon: output error message if unable to bind. +62af51c PG::activate: handle peer contigious with primary, but not auth_log +70d87df ceph_mon: output error message if unable to bind. 5ad9c16 ceph_mon: all output after initial fork go to dout/derr c95234a ceph_mon: split postfork() in two and finish postfork just before daemonize ceac36b doc/release-notes: 0.78 draft nodes; firefly draft notes -87c911c (origin/wip-7709) osd/ReplicatedPG: release op locks on on commit+applied +87c911c osd/ReplicatedPG: release op locks on on commit+applied c5b557e qa/workunits: misc -> fs/misc 8c8b3e9 PGLog: remove unused variable 282497e osd: add tunables for cache_min_{flush,evict}_age fa6887b osd: set default cache_target_{dirty,full}_ratios based on configurable a72b636 mds: fix empty fs rstat -f2124c5 (origin/wip-7705) ceph_test_rados: wait for commit, not ack +f2124c5 ceph_test_rados: wait for commit, not ack dd946e0 MOSDOp: include reassert_version in print -73f6b4c (origin/wip-7706) config_opts: raise ms_pq_max_tokens_per_priority to 16MB +73f6b4c config_opts: raise ms_pq_max_tokens_per_priority to 16MB 2722a0a PrioritizedQueue: cap costs at max_tokens_per_subqueue -88cb1c4 (origin/wip-3863) tools: Create ceph-client-debug +88cb1c4 tools: Create ceph-client-debug d2ce029 libcephfs: add ceph_ll_lookup_inode 724f30e client: Add lookup_parent & lookup_name f1f2826 mds: Return EINVAL for parent lookup on root ino -a19ef01 (origin/wip-7703) rgw: manifest hold the actual bucket used for tail objects +a19ef01 rgw: manifest hold the actual bucket used for tail objects 33b889f rbd-fuse: fix signed/unsigned warning -c973e46 (origin/wip-coverity-20140312) mds/Mutation.h: init export_dir with NULL in ctor +c973e46 mds/Mutation.h: init export_dir with NULL in ctor fd383a9 mds/Migrator.h: init some members of import_state_t in ctor 5a53aa8 mds/Migrator.h: init some export_state_t members in ctor b10692f CInode::encode_cap_message: add assert for cap @@ -6176,33 +6376,33 @@ fe8a715 Make the configuration "filestore merge threshold" can be negative which 94acb6b test_librbd.cc: add missing va_end() to test_ls_pp fb4ca94 mailmap: Danny Al-Gaaf name normalization fb8ff44 doc/release-notes: note that WATCH can get ENOENT now -2cbad1b (origin/wip-7671) test/librados/watch_notify: create foo before watching +2cbad1b test/librados/watch_notify: create foo before watching 9d549eb test/system/st_rados_watch: expect ENOENT for watch on non-existent object b23a141 RGWListBucketMultiparts: init max_uploads/default_max with 0 4057a30 AbstractWrite: initialize m_snap_seq with 0 -90a2654 (origin/wip-7682) ReplicatedPG::already_(complete|ack) should skip temp object ops +90a2654 ReplicatedPG::already_(complete|ack) should skip temp object ops 72bc1ef AdminSocket: initialize m_getdescs_hook in the constructor f7529cf RGWPutCORS_ObjStore_S3::get_params: check data before dereference 5334d5c mds/Server.cc: check straydn before dereference 047287a doc: Add "nearest power of two" to PG rule-of-thumb 7bb0359 OSDMonitor::prepare_pool_op: add missing break in case -a4a91cc (origin/wip-7649) PG: do not wait for flushed before activation +a4a91cc PG: do not wait for flushed before activation a576eb3 PG: do not serve requests until replicas have activated -980d2b5 (origin/wip-7681) ECBackend: when removing the temp obj, use the right shard +980d2b5 ECBackend: when removing the temp obj, use the right shard dc00661 osd_types: print lb if incomplete even if empty -8e76e4e (origin/wip-7695) build-doc: fix checks for required commands for non-debian -dc82cd7 (origin/wip-7641) debian: make ceph depend on ceph-common >= 0.67 -d573710 (origin/wip-7687) rgw: don't overwrite bucket entry data when syncing user stats +8e76e4e build-doc: fix checks for required commands for non-debian +dc82cd7 debian: make ceph depend on ceph-common >= 0.67 +d573710 rgw: don't overwrite bucket entry data when syncing user stats 2fbd772 qa/workunits/cephtool/test.sh: fix thrash (more) 64a6b26 doc/release-notes: fill in some firefly history f4196cc doc/release-notes: firefly draft release notes 24774a8 osd/ReplicatedPG: fix typo 3d5a4b5 ReplicatedPG: CEPH_OSD_OP_WATCH return -ENOENT if !obs.exists -00bf3b5 (origin/wip-7674) osd/ReplicatedPG: do not include hit_set objects in full calculation -1836b6c (origin/wip-7592-final) osd: hit_set_persist(): Verify all objects aren't degraded -42ef8ba (origin/wip-6889) rgw: don't log system requests in usage log -406ff0b (origin/wip-is_down-boolean) OSDMap: clarify is_{down,in}() definitions -fe4ad29 (origin/wip-rbd-fuse-enumerate) rbd-fuse: fix enumerate_images() image names buffer size issue +00bf3b5 osd/ReplicatedPG: do not include hit_set objects in full calculation +1836b6c osd: hit_set_persist(): Verify all objects aren't degraded +42ef8ba rgw: don't log system requests in usage log +406ff0b OSDMap: clarify is_{down,in}() definitions +fe4ad29 rbd-fuse: fix enumerate_images() image names buffer size issue 377c919 rados_connect not thread-safe when using nss (documentation) 861e62a Update Python hashbang to respect environment fa30eb5 rados.py: fix typo in Ioctx::read() docstring @@ -6210,19 +6410,19 @@ fa30eb5 rados.py: fix typo in Ioctx::read() docstring 745f72c Fixed get_status() to find client.radosgw fields inside of ps output. 880bc3a Fix get_status() to find client.rados text inside of ps command results. fbd9c15 osd: Remove unused checkpoint code -d3e3df7 (origin/wip-flock) mds: fix owner check of file lock -8a72de3 (origin/wip-7663) ReplicatedPG: adjust pending_attrs correctly in copy_from +d3e3df7 mds: fix owner check of file lock +8a72de3 ReplicatedPG: adjust pending_attrs correctly in copy_from 6669e4d ReplicatedPG: _delete_head should adjust pending_attrs 60c1b9a ReplicatedPG: use pending_attrs in rollback d7c4d6a doc: Added init caps to Signed-off-by: and Fixes: -2b28407 (origin/wip-doc-prereq) doc: update build prerequisites +2b28407 doc: update build prerequisites 7ac98b2 doc: Updated sign-off by to sign-off-by -2e420f9 (origin/wip-build-doc) doc: rm duplicate info from release-process +2e420f9 doc: rm duplicate info from release-process 52a2d69 doc: fix reST formatting in release-process bb73711 doc: update release-process for packages dd5a378 doc: misc updates for release-process -e272f74 (origin/wip-coverity-20140409) rgw_rados.h: RGWRegion: initialize cct and store with NULL -8de8819 (origin/wip-7672) PG::choose_acting: filter CRUSH_ITEM_NONE out of have +e272f74 rgw_rados.h: RGWRegion: initialize cct and store with NULL +8de8819 PG::choose_acting: filter CRUSH_ITEM_NONE out of have c7c9ae3 RadosModel.h: initialize CopyFromOp::snap d7af7eb RadosModel.h: TestOp: initialize comp with NULL 9df9f4c ReplicatedPG.h: CopyResults() initialize final_tx with NULL @@ -6240,7 +6440,7 @@ d61fcfa ceph-filestore-dump.cc: pass OSDSuperblock by reference 62763d5 watch_info_t: pass parameter by reference 246564b pg_t::get_split_bits: add assert to silence coverity aba5b7c rbdmap: bugfix upstart script -2e342d6 (origin/wip-libxfs-flag) FileStore: support compiling without libxfs +2e342d6 FileStore: support compiling without libxfs 2626604 erasure-code: LARGEST_VECTOR_WORDSIZE is always 16 2beb2a5 erasure-code: upgrade to jerasure version 2 b74115a autotools: set SIMD_FLAGS with SSE flags @@ -6252,8 +6452,8 @@ eb6ffdb erasure-code: remove jerasure version 1 7884780 osd_types.cc: add missing break in operator<< case handling 83731a7 ReplicatedPG::finish_ctx: clear object_info if !obs.exists a7afa14 config.cc: add debug_ prefix to subsys logging levels -55c23a1 (origin/wip-hint-tests) qa: add script for testing rados allocation hint -54ffdcc (origin/wip-da-fix-doc) get-involved.rst: update information +55c23a1 qa: add script for testing rados allocation hint +54ffdcc get-involved.rst: update information d1a888e swift/containerops.rst: fix some typos 93b95a2 radosgw/troubleshooting.rst: s/ceph-osd/OSD/ 2223a37 radosgw/config-ref.rst: fix typo @@ -6269,73 +6469,73 @@ cf9f017 config.rst: fix typo f581bda rados: add set-alloc-hint command a4cbb19 rados/operations/control.rst: fix typo 9bf39e2 Broke down sysinfo's format into a histogram with a value and count so that we just see how many of each version/distro/kernel/os/arch/cpu/etc are running -2591668 (origin/wip-div) PGLog::proc_replica_log: select divergent log entries correctly +2591668 PGLog::proc_replica_log: select divergent log entries correctly 3befb93 PGLog::_merge_object_divergent_entries: handle missing.have == prior_version 7c77ff6 TestPGLog: add a test case verifying case where we have the prior_version e830f9f TestPGLog: check on last_update in run_test_case 4d6a74d TestPGLog::proc_replica_log: call doesn't adjust olog -71b4474 (origin/wip-nfs-export) client: fix Client::getcwd() +71b4474 client: fix Client::getcwd() 617ce67 mds: introduce LOOKUPNAME MDS request 1c8c618 qa/workunits/cephtool/test.sh: fix 'osd thrash' test -b62f9f0 (origin/wip-7642) mon/OSDMonitor: feature feature check bit arithmetic -8d52fb7 (origin/wip-7652) mon/PGMap: send pg create messages to primary, not acting[0] +b62f9f0 mon/OSDMonitor: feature feature check bit arithmetic +8d52fb7 mon/PGMap: send pg create messages to primary, not acting[0] c8b34f1 mon/PGMonitor: improve debugging on PGMap updates slightly 819cce2 mon/OSDMonitor: make osdmap feature checks non-racy b9bcc15 mon/OSDMonitor: prevent set primary-affinity unless all OSDs support it -5f7efec (origin/wip-7650) tools/rados/rados.cc: use write_full for sync_write for ec pools -38fd666 (origin/wip-7210) qa: workunits/mon/rbd_snaps_ops.sh: ENOTSUP on snap rm from copied pool +5f7efec tools/rados/rados.cc: use write_full for sync_write for ec pools +38fd666 qa: workunits/mon/rbd_snaps_ops.sh: ENOTSUP on snap rm from copied pool c13e1b7 mon: OSDMonitor: don't remove unamanaged snaps from not-unmanaged pools -135c27e (origin/wip-7575) osd: Add hit_set_flushing to track current flushes and prevent races +135c27e osd: Add hit_set_flushing to track current flushes and prevent races 3dd09e3 Removed nw_info from sysinfo 09a317f Made crush_types to be a map of type to count, so we can tell how many racks/rows/hosts/etc are there e53aed2 SubmittingPatches: clarify "github fork" in preference to "clone" c9eaa65 Changed Availability section of ceph-mds.rst to reference ceph-mds, not ceph-mon. Signed-off-by: James Ryan Cresawn -09668a4 (origin/wip-7637) osd: fix agent thread shutdown +09668a4 osd: fix agent thread shutdown 7411c3c logrotate: copy/paste daemon list from *-all-starter.conf -b6872b2 (origin/wip-7638) ReplicatedPG::trim_object: use old_snaps for rollback -b5b67d1 (origin/wip-7634) ReplicatedPG: use hobject_t for snapset_contexts map -b436930 (origin/wip-firefly-misc) qa/workunits/rest/test.py: do not test 'osd thrash' +b6872b2 ReplicatedPG::trim_object: use old_snaps for rollback +b5b67d1 ReplicatedPG: use hobject_t for snapset_contexts map +b436930 qa/workunits/rest/test.py: do not test 'osd thrash' 237f0fb os/ObjectStore: dump COLL_MOVE_RENAME -f888ab4 (origin/wip-7632) ReplicatedPG: consistently use ctx->at_version.version for stashed object -eca7e63 (origin/wip-7393) ReplicatedPG: clean up num_dirty adjustments -173116f (origin/wip-scrub-lock) osd: only register for scrub if we are the PG primary +f888ab4 ReplicatedPG: consistently use ctx->at_version.version for stashed object +eca7e63 ReplicatedPG: clean up num_dirty adjustments +173116f osd: only register for scrub if we are the PG primary d379b1f osd: bracket role changes with scrub reg/unreg c8c2f54 Client: fix build issue (lost semicolon) -d171418 (origin/wip-7610) obj_bencher: allocate contentsChars to object_size, not op_size -bafd76a (origin/wip-7624) ReplicatedPG: ensure clones are readable after find_object_context +d171418 obj_bencher: allocate contentsChars to object_size, not op_size +bafd76a ReplicatedPG: ensure clones are readable after find_object_context 90f5a68 1. Removed name of the pool from pool_metadata 2. Included pool type in pool_metadata 3. Renamed rep_size attribute to size in pool_metadata da97fee 1. simplified the 'bytes' info to just be bytes 2. prefix all the members of the components_info with 'num_' -2adc534 (origin/wip-pool-delete) mon/OSDMonitor: fix pool deletion checks, races -d9e8806 (origin/wip-7618) ReplicatedPG::wait_for_degraded_object: only recover if found +2adc534 mon/OSDMonitor: fix pool deletion checks, races +d9e8806 ReplicatedPG::wait_for_degraded_object: only recover if found a222e7a ReplicatedPG::recover_replicas: do not assume that missing objects are unfound 3f59f02 Revert "c_read_operations.cc: fix resource leak" -a71ddb0 (origin/wip-7562) mon: make quorum list (by name) be in quorum order -240446e (origin/wip-7487) test: merge unittest_crushwrapper and unittest_crush_wrapper +a71ddb0 mon: make quorum list (by name) be in quorum order +240446e test: merge unittest_crushwrapper and unittest_crush_wrapper 772968e mon/OSDMonitor: disallow crush buckets of type 0 -8b3934f (origin/wip-7616) PGBackend::rollback_stash: remove the correct shard +8b3934f PGBackend::rollback_stash: remove the correct shard 1ddec86 FileStore::_collection_move_rename: propogate EEXIST ca12e0d qa/workunits/mon/crush_ops: use expect_false -e016e83 (origin/wip-7608) test: Fix tiering test cases to use ---force-nonempty -0592368 (origin/wip-cache-warn-full) mon: warn when pool nears target max objects/bytes -f6edcee (origin/wip-pgmap-stat) mon/PGMap: return empty stats if pool is not in sum -640ff98 (origin/wip-vstart-paths) test: Use non-default out/ dev/ paths in vstart -1685c6f (origin/wip-crush-json) crush: revise JSON format for 'item' type +e016e83 test: Fix tiering test cases to use ---force-nonempty +0592368 mon: warn when pool nears target max objects/bytes +f6edcee mon/PGMap: return empty stats if pool is not in sum +640ff98 test: Use non-default out/ dev/ paths in vstart +1685c6f crush: revise JSON format for 'item' type d4950a1 mailmap: Danny Al-Gaaf affiliation 0eac1ba mailmap: Bjørnar Ness affiliation fdb644a mailmap: Ron Allred affiliation a85d0ef mailmap: Steve Stock affiliation 076bec8 mailmap: Christopher O'Connell affiliation -4cb1cbf (origin/wip-7607) ReplicatedPG::fill_in_copy_get: fix omap loop conditions +4cb1cbf ReplicatedPG::fill_in_copy_get: fix omap loop conditions 11393ab ReplicatedPG::fill_in_copy_get: remove extraneous if statement 8fdfece ReplicatedPG::fill_in_copy_get: fix early return bug -364fed8 (origin/wip-debian-files) packaging: use wildcard for test files in Debian -65f3354 (origin/wip-7293) Make symlink of librbd to qemu's folder so it can detect it. -d0b1094 (origin/wip-7447) ECBackend,ReplicatedPG: delete temp if we didn't get the transaction +364fed8 packaging: use wildcard for test files in Debian +65f3354 Make symlink of librbd to qemu's folder so it can detect it. +d0b1094 ECBackend,ReplicatedPG: delete temp if we didn't get the transaction f2a4eec PGBackend/ECBackend: handle temp objects correctly 308ea1b ECMsgTypes: fix constructor temp_added/temp_removed ordering to match users 3e21996 ReplicatedPG::finish_ctx: use correct snapdir prior version in events a7057e1 doc: Improve CloudStack RBD documentation -31eb533 (origin/wip-da-SCA-firefly-20140304) librados.cc: remove unused variable cpp_category +31eb533 librados.cc: remove unused variable cpp_category c2cc178 ECBackend.cc: use !empty() instead of size() 35ae7ed ceph_argparse.cc: prefer prefix ++operator for non-trivial iterator 39fc1db KeyValueStore: use !empty() instead of size() @@ -6350,15 +6550,15 @@ c2f3f2b close file descriptor in error case 724ad02 doc: update the operator create pool reference 7461410 doc: erasure coded pool developer documentation 6d323c0 mailmap: Mike Lundy affiliation -49e54ab (origin/wip-cache-add) mon/OSDMonitor: fix race in 'osd tier remove ...' +49e54ab mon/OSDMonitor: fix race in 'osd tier remove ...' 241b9e8 mon/OSDMonitor: fix some whitespace c029c2f mon/OSDMonitor: add 'osd tier add-cache ' command 62e0eb7 mon/OSDMonitor: handle 'osd tier add ...' race/corner case 0e5fd0e osd: make default bloom hit set fpp configurable eddf7b6 osd/ReplicatedPG: fix agent division by zero -08efb45 (origin/wip-tier-add) OSDMonitor: do not add non-empty tier pool unless forced -12909bb (origin/wip-2288) mds: check projected xattr when handling setxattr -20fe162 (origin/wip-7563) TestPGLog: tests for proc_replica_log/merge_log equivalence +08efb45 OSDMonitor: do not add non-empty tier pool unless forced +12909bb mds: check projected xattr when handling setxattr +20fe162 TestPGLog: tests for proc_replica_log/merge_log equivalence 9a64947 TestPGLog::proc_replica_log: adjust wonky test 6b6065a TestPGLog::proc_replica_log: adjust to corrected proc_replica_log behavior 97f3596 TestPGLog::proc_replica_log: add prior_version to some entries @@ -6370,9 +6570,9 @@ c99b7e1 PG,PGLog: replace _merge_old_entry with _merge_object_divergent_entries ff329ac TestPGLog:rewind_divergent_log: set prior_version for delete 9e43dd6 TestPGLog: ignore merge_old_entry return value 3cc9e22 TestPGLog: not worth maintaining tests of assert behavior -a234053 (origin/wip-osd-verbosity) OSD,config_opts: log osd state changes at level 0 instead +a234053 OSD,config_opts: log osd state changes at level 0 instead 68890b2 osd: be a bit more verbose on startup -4e06dfd (origin/wip-messenger-shutdown) msg: Make SimpleMessenger shutdown safer +4e06dfd msg: Make SimpleMessenger shutdown safer 371a80c librbd: prefix rbd writes with CEPH_OSD_OP_SETALLOCHINT osd op 8e49bc3 FileStore: add option to cap alloc hint size 1f5b796 FileStore: introduce XfsFileStoreBackend class @@ -6386,8 +6586,8 @@ d00a927 Revert "librbd: remove limit on number of objects in the cache" f3d6491 Following changes are made 1. Increased the String length for distro, version and os_desc columns in osds_info table 2. Corrected version information extraction in client/ceph-brag 3. Removed the version_id json entry when version list returned for UUID 4. Updated the README to reflect point 3 3cc8b27 Modifed the String variables in db.py to be of fixed length to support databases which doesn't have VARCHAR support 30a5bdb Added an instruction in 'How to deploy' field in README.md -aca6ac3 (origin/wip-7248) qa: workunits: cephtool: test 'osd bench' limits -09099c9 (origin/wip-osd-status) osd: 'status' admin socket command +aca6ac3 qa: workunits: cephtool: test 'osd bench' limits +09099c9 osd: 'status' admin socket command 25a9bd3 osd: OSD: limit the value of 'size' and 'count' on 'osd bench' ef25135 erasure-code: test rados put and get 0b612d1 mon: prepend current directory to PATH for tests @@ -6399,14 +6599,14 @@ e782051 mailmap: Andrey Kuznetsov affiliation 7b6d417 mailmap: Wang, Yaguang affiliation 855edc6 Fix typo ceph-disk 43b7b0b mailmap: The Linux Box affiliations -62fd382 (origin/wip-7539) osd_types,PG: trim mod_desc for log entries to min size +62fd382 osd_types,PG: trim mod_desc for log entries to min size d4118e1 MOSDECSubOpWrite: drop transaction, log_entries in clear_buffers 718cda6 TrackedOp: clear_payload as well in unregister_inflight_op 59ff572 OpTracker: clarify that unregister_inflight_op is only called if enabled fc9b8ef MOSDOp: drop ops vector in clear_data() 1ea59f6 ReplicatedPG: delete mark_all_unfound_lost transactions after completion -e19dffb (origin/wip-7572) mon: fix 'pg dump' JSON output -1a4657a (origin/wip-fix-coverity-20140228) req_state: fix uninitialized bool var +e19dffb mon: fix 'pg dump' JSON output +1a4657a req_state: fix uninitialized bool var 605e645 Objecter::recalc_op_target: fix uninitialized scalar variable 754a368 PGMonitor: fix uninitialized scalar variable 1747c58 MDCache: fix potential null pointer deref @@ -6417,8 +6617,8 @@ ad9b6d2 c_write_operations.cc: fix some ioctx resource leaks e8533ee ReplicatedBackend: check result of dynamic_cast to fix null pointer deref 8d6b25a mds: use "lookup-by-ino" helper to handle LOOKUPPARENT request dc20c7d OSDMonitor: enable getting hit set parameters We would like to get the hit set parameters: hit_set_type | hit_set_period | hit_set_count | hit_set_fpp via OSDMonitor -5b88856 (origin/wip-s3radoscheck-wusui) Use pgrep radosgw to determine if rados gateway is running. Fixes: 7528 Signed-off-by: Warren Usui -0ed63fd (origin/wip-libcephfs-fixes) client: fix Client::trim_caps() +5b88856 Use pgrep radosgw to determine if rados gateway is running. Fixes: 7528 Signed-off-by: Warren Usui +0ed63fd client: fix Client::trim_caps() cdbe413 client: update dirfragtree/fragmap according to mds request reply 214977a client: choose hash function according to dir layout 23de48b client: check inode's cap when looking up dentry @@ -6430,46 +6630,46 @@ a7b7c31 client: use ceph_seq_cmp() to compare cap seq/mseq 0bf5f86 store_test.cc: fix unchecked return value 7eefe85 histogram.h: fix potential div by zero 500206d ReplicatedPG.cc: fix ressource leak, delete cb -fbb1ec8 (origin/wip-7542) ECBackend: don't leak transactions +fbb1ec8 ECBackend: don't leak transactions b0d4264 OSD::handle_misdirected_op: handle ops to the wrong shard -123ff9e (origin/wip-7458) osd: stray pg ref on shutdown -448fc0e (origin/wip-pg-msg) mon/OSDMonitor: missing space in string +123ff9e osd: stray pg ref on shutdown +448fc0e mon/OSDMonitor: missing space in string 799cde0 Fix python-requests package dependencies. -bfad17b (origin/wip-librados-end-iterator) librados: fix ObjectIterator::operator= for the end iterator -a850a38 (origin/wip-doc-cache-pool) doc/dev/cache-pool: fix notes -f0241c8 (origin/wip-cache-pool) mon/OSDMonitor: make default false-positive-probability 5% +bfad17b librados: fix ObjectIterator::operator= for the end iterator +a850a38 doc/dev/cache-pool: fix notes +f0241c8 mon/OSDMonitor: make default false-positive-probability 5% 30aa2d6 client: clear migrate seq when MDS restarts c1e40c6 client: fix race between cap issue and revoke 5c55eb1 client: check mds_wanted for imported cap 9476f84 client: allow revoking duplicated caps issued by non-auth MDS 6797d30 client: call handle_cap_grant() for cap import message 154efb1 client: don't update i_max_size when handle reply from non-auth MDS -9a0ef6a (origin/wip-requests-dependencies) Fix python-requests package dependencies. -c07a758 (origin/wip-mds-dumper) mds: Add dump-journal-entries +9a0ef6a Fix python-requests package dependencies. +c07a758 mds: Add dump-journal-entries 7a985df mds: Create MDSUtility as base for Dumper/Resetter 410c507 mds: Fix Dumper shutdown 7ba3200 mds: fix nested_anchors update during journal replay -1040d1b (origin/wip-primary-temp-fix) osd/OSDMap: respect temp primary without temp acting -8020dcf (origin/wip-7375-wusui) Fixed get_status() to find client.radosgw fields inside of ps output. Fixes: 7375 Signed-off-by: Warren Usui -8200b8a (origin/wip-7374-wusui) Fix get_status() to find client.rados text inside of ps command results. Added port (fixed value for right now in teuthology) to hostname. Fixes: 7374 Signed-off-by: Warren Usui -be2748c (origin/wip-7537) OSDMap::_pg_to_up_acting_osds: use _acting_primary unless acting is empty +1040d1b osd/OSDMap: respect temp primary without temp acting +8020dcf Fixed get_status() to find client.radosgw fields inside of ps output. Fixes: 7375 Signed-off-by: Warren Usui +8200b8a Fix get_status() to find client.rados text inside of ps command results. Added port (fixed value for right now in teuthology) to hostname. Fixes: 7374 Signed-off-by: Warren Usui +be2748c OSDMap::_pg_to_up_acting_osds: use _acting_primary unless acting is empty dc079eb OSDMonitor: when thrashing, only generate valid temp pg mappings 891343a rados.py: add aio_remove -9f7f4ed (origin/wip-dz-scrub-fixes) Revert "osd/PG: fix assert when deep repair finds no errors" +9f7f4ed Revert "osd/PG: fix assert when deep repair finds no errors" 728e391 osd: Don't include primary's shard in repair result message -3ee71a5 (origin/wip-mon-docs) doc: troubleshooting-mons.rst: better document how to troubleshoot mons -69082a6 (origin/wip-7485) mds: add mds_kill_create_at for testing +3ee71a5 doc: troubleshooting-mons.rst: better document how to troubleshoot mons +69082a6 mds: add mds_kill_create_at for testing 27968a7 ceph_test_objectstore: fix i386 build (again) -14ea815 (origin/wip-osdmap-inc) mon/OSDMonitor: fix osdmap encode feature logic -7357b6e (origin/wip-7517) PG: skip pg_whoami.osd, not pg_whoami.shard in scrub feature check -696fa36 (origin/wip-7512) OSD::project_pg_history needs to account for acting_primary/up_primary +14ea815 mon/OSDMonitor: fix osdmap encode feature logic +7357b6e PG: skip pg_whoami.osd, not pg_whoami.shard in scrub feature check +696fa36 OSD::project_pg_history needs to account for acting_primary/up_primary 0442b45 Objecter/OSDMap: factor out primary_changed() into static OSDMap method d0359f7 PG: clarify same_primary_since updates regarding primary rank -73c59a0 (origin/wip-last-epoch-clean) mon/PGMap: fix osd_epochs update +73c59a0 mon/PGMap: fix osd_epochs update df3ba72 mon/PGMap: add unit test for min_last_epoch_clean 8913ab4 ECBackend: skip canceled xattr reads as well -0e376ee (origin/port/temp-failure-retry) compat: avoid unused warn with TEMP_FAILURE_RETRY -23e538e (origin/wip-create-null) client: fix possible null dereference in create +0e376ee compat: avoid unused warn with TEMP_FAILURE_RETRY +23e538e client: fix possible null dereference in create bcc18d4 osd: increase default leveldb write buffer, cache size c4a3a86 ceph_test_objectstore: fix i386 build error b25c22a ceph_test_objectstore: fix signed/unsigned warning @@ -6478,10 +6678,10 @@ cfafa0b README: add build dep 1340b36 erasure-code: test that changing the pool size is not allowed d74f128 os/ObjectStore: document interface 6d8cb22 unittest_ecbackend: fix signed/unsigned warnings -fed655e (origin/wip-scrub-primary) mon/PGMonitor: fix primary osd check on deep-scrub -7b0f3d9 (origin/wip-7513) PGLog::activate_not_complete: fix log.complete_to increment typo -e3e3328 (origin/wip-repair) osd/PG: fix assert when deep repair finds no errors -9da4d40 (origin/wip-ec-bugs) PGLog: test for missing using the correct shard value +fed655e mon/PGMonitor: fix primary osd check on deep-scrub +7b0f3d9 PGLog::activate_not_complete: fix log.complete_to increment typo +e3e3328 osd/PG: fix assert when deep repair finds no errors +9da4d40 PGLog: test for missing using the correct shard value ace65fe OSD: fix query for ec pgs 93983c9 Objecter: make is_pg_changed static and const for old/newacting 8b4cf1c OSDMap: make calc_pg_rank/role const for acting @@ -6490,7 +6690,7 @@ b7de0fd ECTransaction: require hash_infos for deleted objects ab4c9a6 ECUtil: clear() should reset hashes to -1, not 0 8593ad7 ReplicatedPG::cancel_pull: ECBackend might cancel_pull on a non-missing object 9b85241 ECBackend::filter_read_op: clean up read state properly -70d23b9 (origin/wip-subscribe) osd: fix off-by-one is boot subscription +70d23b9 osd: fix off-by-one is boot subscription 90ebdcc Rename keyvaluestore_check_backend to keyvaluestore_debug_check_backend a52d7cd Add KeyValueStore op thread options 62c1631 Remove eio inject codes in KeyValueStore @@ -6513,18 +6713,18 @@ c9fdcee Add test for omap interface 2b9e893 Move perf counter and add op queue reserve throttle 5eb7592 Fix deadlock caused by hold collection obj c278269 Added a note that the ceph-osd command requires the cluster option. -0da25e6 (origin/wip-librados-object-iterator) librados: implement ObjectIterator copying and assignment +0da25e6 librados: implement ObjectIterator copying and assignment d9bedb9 Added evaluation of cluster and fixed evaluation when setting initial weight on start in verbose mode 8a0017a librados: don't destroy ObjListCtx when iterator reaches the end d8a7bef librados: remove extra advance from objects_begin(position) -a9677e1 (origin/wip-6685-firefly) Revert "ReplicatedPG::recover_backfill: adjust last_backfill to HEAD if snapdir" +a9677e1 Revert "ReplicatedPG::recover_backfill: adjust last_backfill to HEAD if snapdir" 133ddb7 packaging: match all test files 1c129df packaging: add missing file -bd59db2 (origin/wip-corpus) ceph-object-corpus: prune some old releases -76046cf (origin/port/updates) dencoder: check for radosgw build option +bd59db2 ceph-object-corpus: prune some old releases +76046cf dencoder: check for radosgw build option 5373ee2 osd: use ceph scoped shared_ptr 0ebb1f8 mon/MDSMonitor: Cope with failures during creation -c6e6ced (origin/wip-copyget) PG::build_might_have_unfound: skip CRUSH_ITEM_NONE +c6e6ced PG::build_might_have_unfound: skip CRUSH_ITEM_NONE 1f30d1a ECBackend: deal with temp collection details in handle_sub_write c703a89 ReplicatedPG::on_global_recover: requeue degraded, then unreadable caf2edf rgw: minor cleanup @@ -6533,7 +6733,7 @@ caf2edf rgw: minor cleanup 2762ede mds/CDir: Remove a few lines of cruft a4d0eb1 mds: Remove some unused #defines 5fb90a2 Fix generate keystone token from credentials -541beb8 (origin/wip-mds-dencoder) mds: Add encode/decode/dump for use with dencoder +541beb8 mds: Add encode/decode/dump for use with dencoder ebd4397 RadosModel: copyfrom should result in a dirty object 68184d4 PG: fix scrub feature check 67d1f36 ReplicatedPG: assert no omap for ec pool in _write_copy_chunk and skip @@ -6546,11 +6746,11 @@ b3bb9ef doc/release-notes: v0.77 fa96de9 doc/release-notes: v0.67.7 1bca9c5 (tag: v0.77) v0.77 40bdcb8 osd/,mon/: add (up|acting)_primary to pg_stat_t -0427f61 (origin/wip-7099) rgw: fix swift range response -2b3e3c8 (origin/wip-6830) rgw: fix etag in multipart complete -859ed33 (origin/wip-6951) rgw: reset objv tracker on bucket recreation -53de641 (origin/wip-6936) radosgw-admin: don't generate access key if user exists -9e8882e (origin/wip-da-SCA-20140218) BackedUpObject::get_xattr() pass function parameter by reference +0427f61 rgw: fix swift range response +2b3e3c8 rgw: fix etag in multipart complete +859ed33 rgw: reset objv tracker on bucket recreation +53de641 radosgw-admin: don't generate access key if user exists +9e8882e BackedUpObject::get_xattr() pass function parameter by reference 53b3689 TestRados.cc: use !empty() instead of size() 86b0879 ErasureCodeBench: prefer prefix ++operator for non-trivial iterator 200ebb9 ceph_erasure_code.cc: prefer prefix ++operator for non-trivial iterator @@ -6579,20 +6779,20 @@ ab45d44 BarrierContext: prefer prefix ++operator for non-trivial iterator 4adcfa5 BarrierContext: reduce scope of 'done' variable 19dad03 MonClient: pass function parameter by reference 314116e PG: insert into stray set if !us_up() && !is_acting() -a5c5d92 (origin/wip-agent) osd/ReplicatedPG: EOPNOTSUPP on hit_set_get on non-replicated pools +a5c5d92 osd/ReplicatedPG: EOPNOTSUPP on hit_set_get on non-replicated pools a40cd50 osd/ReplicatedPG: load older HitSets into memory 0af7375 osd/ReplicatedPG: strengthen agent_work assertions 1d907c6 OSD: consider up/acting primary for new intervals -afbd58e (origin/wip-7064) rgw: don't try to read bucket's policy if it doesn't exist +afbd58e rgw: don't try to read bucket's policy if it doesn't exist 3ed68eb rgw: return error if accessing object in non-existent bucket b0dcc79 radosgw-admin: gc list --include-all 609f4c5 Throw a Timeout exception on timeout. -1975441 (origin/wip-rgw-manifest-2) dencoder: fix for new rgw manifest code +1975441 dencoder: fix for new rgw manifest code b3ce188 cls/rgw: fix debug output 3fb6e25 test/rgw: manifest unitest da64bf7 rgw: scalable manifest object -db88e7f (origin/wip-7463) ceph_rest_api.py: don't fail if no up OSDs found on startup -7a019b3 (origin/wip-librados-ops-and-rvals) test/librados: remove unused lines and fix return code for cmp guards +db88e7f ceph_rest_api.py: don't fail if no up OSDs found on startup +7a019b3 test/librados: remove unused lines and fix return code for cmp guards bfbfcd6 ReplicatedPG: fix successful write condition 18f08cd ReplicatedPG: clear osd op reply output for writes 1d661ca ReplicatedPG: set individual osd op rvals @@ -6624,14 +6824,14 @@ d3c6f17 test/librados: use connect_cluster_pp() instead of duplicating it 9630f2f test/librados: create general test case classes 6273ba4 test/librados: move test.cc into its own library abca34a Objecter: keep ObjectOperation rval pointers for writes -4bee6ff (origin/wip-cache-perf) osd/ReplicatedPG: clean up agent skip debug output +4bee6ff osd/ReplicatedPG: clean up agent skip debug output d1a185b osd: l_osd_agent_{wake,skip,flush,evict} dbec109 osd: l_osd_tier_[dirty|clean] 150e87a osd: l_osd_tier_whiteout 2d5371d osd: l_osd_tier_evict c45a477 osd: l_osd_tier_[try_]flush[_fail] 4b0a0a1 osd: l_osd_copyfrom -5e727bf (origin/wip-ecbackend-for-review, origin/wip-ecbackend-12) RadosModel: only output if missing header is actually a problem +5e727bf RadosModel: only output if missing header is actually a problem 11f288e Objecter: track primary explicitly to detect changing primaries bc31c4b ReplicatedPG: add some debugging if waiting_for_commit is non-empty b90584a osd/: instantiate the right backend based on pool @@ -6698,12 +6898,12 @@ e0b0508 ReplicatedPG: reject unaligned writes on ec pools bd8fcd2 osd: improve whiteout debug prints 63f5a79 osd/ReplicatedPG: make agent skip blocked obcs 7997646 ReplicatedBackend: print char ack_type as int -a71d829 (origin/wip-barrier) client: disable barrier support +a71d829 client: disable barrier support 747002c client: fix barrier interval d7457f7 client/barrier: drop unused active_commit_interval ce643e0 client: don't populate Client::barriers from read accesses a1dbc9c qa/workunits/suites/pjd: use test suite with acl tweak -623748e (origin/wip-dirfrags) mds: bump the protocol version +623748e mds: bump the protocol version 2a19a1b osd/ReplicatedPG: allow is_degraded_object() to be called outside of backfil e5457df mds: open sessions for rejoin imported caps c54b3ce mds: fix slave rename rollback @@ -6736,7 +6936,7 @@ b88034e mds: use discover_path to open remote inode 3154ee8 mds: acquire locks required by exporting dir 3fb408e mds: introduce nonlocking auth pin d0df841 mds: allow acquiring wrlock and remote wrlock at the same time -1dae27c (origin/wip-7371) ReplicatedPG: return no data if read size is trimmed to zero +1dae27c ReplicatedPG: return no data if read size is trimmed to zero 774125c osd: set client incarnation for Objecter instance 0dd1e07 osd: schedule agent from a priority queue a812982 osd/ReplicatedPG: simplify agent_choose_mode @@ -6779,27 +6979,27 @@ fb4152a histogram: move to common, add unit tests 8b68ad0 histogram: calculate bin position of a value in the histrogram d921d9b qa: do not create erasure pools yet 4560078 common: ping existing admin socket before unlink -c673f40 (origin/wip-primary-affinity) osd/OSDMap: include primary affinity in OSDMap::print +c673f40 osd/OSDMap: include primary affinity in OSDMap::print 87be7c1 osd/OSDMap: remove bad assert ba3eef8 mon/OSDMonitor: add 'mon osd allow primary affinity' bool option c360c60 ceph_psim: some futzing to test primary_affinity f825624 osd/OSDMap: add primary_affinity feature bit 8ecec02 osd/OSDMap: apply primary_affinity to mapping -871a5f0 (origin/wip-brag) ceph.spec: add ceph-brag +871a5f0 ceph.spec: add ceph-brag 4ea0a25 debian: add ceph-brag 57d7018 ceph-brag: add Makefile -cf4f702 (origin/wip-7212-sage-b) mon/Elector: bootstrap on timeout +cf4f702 mon/Elector: bootstrap on timeout 4595c44 mon: tell MonmapMonitor first about winning an election 7bd2104 mon: only learn peer addresses when monmap == 0 -3c76b81 (origin/wip-7395) OSD: use the osdmap_subscribe helper +3c76b81 OSD: use the osdmap_subscribe helper 6db3ae8 OSD: create a helper for handling OSDMap subscriptions, and clean them up 5b9c187 monc: new fsub_want_increment( function to make handling subscriptions easier 7d398c2 doc/release-notes: v0.67.6 -0ed6a81 (origin/wip-osdmaptool-pool-fix) osdmaptool: add tests for --pool option +0ed6a81 osdmaptool: add tests for --pool option f98435a osdmaptool: add --pool option for --test-map-pgs mode to usage() eedbf50 osdmaptool: fix --pool option for --test-map-object mode e44122f test: fix signed/unsigned warnings in TestCrushWrapper.cc -64cedf6 (origin/wip-7394) OSD: disable the PGStatsAck timeout when we are reconnecting to a monitor +64cedf6 OSD: disable the PGStatsAck timeout when we are reconnecting to a monitor 794c86f monc: backoff the timeout period when reconnecting 60da8ab monc: set "hunting" to true when we reopen the mon session 1a8c434 monc: let users specify a callback when they reopen their monitor session @@ -6824,8 +7024,8 @@ f77e8ea crush: add CrushWrapper::dump_rules() unit test 07c494b mon: add --mon-advanced-debug-mode 5ea156a mon: Monitor::send_reply gracefully handles no connection 53e92f6 mon: split prepare_command in two -d012119 (origin/wip-null-xattr) mds: remove xattr when null value is given to setxattr() -6e6a333 (origin/wip-open-truncate) mds: properly replay dentry trace for open truncate. +d012119 mds: remove xattr when null value is given to setxattr() +6e6a333 mds: properly replay dentry trace for open truncate. 9035227 doc/release-notes: do not downgrade from v0.67.6 7533b3b doc/release-notes: note about dumpling xattr backport cc1e844 PendingReleaseNotes: note about cephfs backtrace updates @@ -6834,25 +7034,25 @@ e107938 osd/OSDMap: fix _raw_to_up_osds for EC pools 1cc8c25 mon/OSDMonitor: add 'osd primary-affinity ...' command cee9142 osd/OSDMap: add osd_primary_affinity fields, accessors, encoding af4c142 mon/OSDMonitor: fix legacy tunables warning -a0b2c74 (origin/wip-moncap) osd/OSDCap: handle any whitespace (not just space) +a0b2c74 osd/OSDCap: handle any whitespace (not just space) 824dd52 mon/MonCap: handle any whitespace (not just space) 5a6c950 packaging: do not package libdir/ceph recursively 840e918 tests: fix packaging for s/filestore/objectstore/ b64f1e3 tests: fix objectstore tests -f34eb1b (origin/wip-update-backtrace) mds: force update backtraces for previously created FS +f34eb1b mds: force update backtraces for previously created FS b5c10bf Fix bad dealloctor a4b3b78 correct one command line at building packages section 33692a2 osdmaptool: fix cli test fed8396 tset_bufferlist: fix signed/unsigned comparison -8ca3d95 (origin/wip-7346) rgw: multi object delete should be idempotent -bf38bfb (origin/wip-7271) rgw: set bucket permissions, cors on swift creation -2682b64 (origin/wip-doc-librados-intro) doc: Incorporated feed back from Loic and Dan. +8ca3d95 rgw: multi object delete should be idempotent +bf38bfb rgw: set bucket permissions, cors on swift creation +2682b64 doc: Incorporated feed back from Loic and Dan. 0da9621 doc: Adds additional terms for use with librados. e1a49e5 ObjectCacher: remove unused target/max setters 0559d31 librbd: remove limit on number of objects in the cache db034ac ObjectCacher: use uint64_t for target and max values bf8cf2d ObjectCacher: remove max_bytes and max_ob arguments to trim() -d136eb4 (origin/wip-crush) mon: allow firefly crush tunables to be selected +d136eb4 mon: allow firefly crush tunables to be selected e3309bc doc/rados/operations/crush: describe new vary_r tunable 525b2d2 crush: add firefly tunables baseline test 37f840b crushtool: new cli tests for the vary-r tunable @@ -6873,17 +7073,17 @@ f2f4eb5 Updated client code to complete PUT and DELETE requests d389e61 msg/Pipe: add option to restrict delay injection to specific msg type 671a76d MonClient: add a timeout on commands for librados 3e1f7bb Objecter: implement mon and osd operation timeouts -9bcc42a (origin/wip-7334) alert the user about error messages from partx +9bcc42a alert the user about error messages from partx 42900ff use partx for red hat or centos instead of partprobe -6926272 (origin/wip-fsetpipesz-fix) common/buffer: fix build breakage for CEPH_HAVE_SETPIPE_SZ +6926272 common/buffer: fix build breakage for CEPH_HAVE_SETPIPE_SZ a5f479c configure: fix F_SETPIPE_SZ detection 450163e configure: don't check for arpa/nameser_compat.h twice c1d2a99 libcephfs: fix documentation for ceph_readlink dbaf71a mailmap: Moritz Möller is with Bigpoint.com 4cf2c72 Server changes to deploy in a production env 1. Added the wsgi entry point app.wsgi 2. Updated client code to mandate the update-metadata to have url to publish and unpublish 3. Updated the README to describe a bit about the server operations as well. -575566b (origin/wip-7329) ceph_test_rados_api_tier: try harder to trigger the flush vs try-flush race +575566b ceph_test_rados_api_tier: try harder to trigger the flush vs try-flush race a8e6c9f crush: add chooseleaf_vary_r tunable -f17caba (origin/wip-7370) crush: allow crush rules to set (re)tries counts to 0 +f17caba crush: allow crush rules to set (re)tries counts to 0 795704f crush: fix off-by-one errors in total_tries refactor ed32c40 crushtool: add cli test for off-by-one tries vs retries bug 75c5525 qa/workunits/rest: use larger max_file_size @@ -6917,7 +7117,7 @@ ff04629 client: add barrier and types 7f6d755 client: whitespace 7f9fdc3 osdc/Objecter: whitespace 548ccd9 mds/Server: whitespace -3a5fa87 (origin/wip-osdmap-primary) osd/OSDMap: populate *primary when pool dne +3a5fa87 osd/OSDMap: populate *primary when pool dne 5b7e2b2 rgw: initialize variable before call 45d31f0 osdmaptool: tests for --test-map-pgs b98eaa5 osdmaptool: test --import/export-crush @@ -6932,27 +7132,27 @@ e1e6c45 Completed model and controller code 1. GET, PUT and DELETE request are a 42a64e1 Revert test case of "mon: OSDMonitor: do not allow changing an erasure-coded pool's size" 0aa25b1 Some suggested changes, both errors and rewordings 30fd0c5 Intial version of the server code. 1. Database modelling is done 2. PUT request is completed -fc963ac (origin/wip-erasure-code-directory) erasure-code: move test files to a dedicated directory +fc963ac erasure-code: move test files to a dedicated directory 7baa62f erasure-code: move source files to a dedicated directory -9ecf3467 (origin/wip-rgw-vg) rgw: initialize variable before call +9ecf346 rgw: initialize variable before call ce0e3bd qa/workunits/snaps: New allow_new_snaps syntax 22b0057 mon: test osd pool create pg_pool_t::stripe_width behavior dfc90cf mon: osd pool create sets pg_pool_t::stripe_width 33b8ad8 common: add osd_pool_erasure_code_stripe_width 798b56a unittests: update osdmaptools with stripe_width 11c11ba mon: add erasure-code pg_pool_t::stripe_width -922e5cf (origin/port/fixes) osd: fix type mismatch warning +922e5cf osd: fix type mismatch warning 6fda45b os/kvstore: remove used var 994bdea os/kvstore: trivial portability fixes 377a845 common: simpler erasure code technique -04b1ae4 (origin/wip-7336) rgw: fix rgw_read_user_buckets() use of max param -fdeb18e (origin/wip-7109) mon: MDSMonitor: Forbid removal of first data pool +04b1ae4 rgw: fix rgw_read_user_buckets() use of max param +fdeb18e mon: MDSMonitor: Forbid removal of first data pool c7d265a mon: OSDMonitor: Refuse to delete CephFS pools -e80b084 (origin/wip-erasure-code-command) erasure-code: add ceph_erasure_code debug command -68e6dad (origin/wip-mds-cluster) mds: avoid sending duplicated discovers during recovery +e80b084 erasure-code: add ceph_erasure_code debug command +68e6dad mds: avoid sending duplicated discovers during recovery bec1209 erasure-code: benchmark moves to a dedicated directory ad8c666 mon: check cluster features before rule create-erasure -c8c4cc6 (origin/wip-7146) mon: OSDMonitor: do not allow changing an erasure-coded pool's size +c8c4cc6 mon: OSDMonitor: do not allow changing an erasure-coded pool's size 7b15cb1 mon: osd-pool-create test no longer use hardcoded ruleset 428c75e mon: osd-pool-create test EAGAIN when pending 59ba03b mon: test erasure code pool creation @@ -6991,7 +7191,7 @@ e5ed1b2 mon: do not force proposal when no osds 3b99013 (tag: v0.76) v0.76 7ff2b54 client: use 64-bit value in sync read eof logic 2f85b8c doc: Incorporated feedback. -684e5c4 (origin/wip-performance-configs) Pipe, cephx: Message signing under config option +684e5c4 Pipe, cephx: Message signing under config option 5fde828 cmp.h: boost tuple comparison is replaced by regular comparison 8e19488 TrackedOp: optionally disable the actual tracking operations 98ae059 Throttle: Turn off throttle based on max bytes @@ -6999,7 +7199,7 @@ e5ed1b2 mon: do not force proposal when no osds ee48c87 common/shared_cache.hpp: compact to a single lookup where possible 27b5f2b common/shared_cache.hpp: avoid list::size() ee4cfda doc: rgw: el6 documentation fixes -48fbcce (origin/wip-5997) osd: Change some be_compare_scrub_objects() args to const +48fbcce osd: Change some be_compare_scrub_objects() args to const ce1ea61 osd: Change be_scan_list() arg to const e1bfed5 common: buffer::ptr::cmp() is a const function 34eb549 osd: Move the rest of scrubbing routines to the backend @@ -7009,9 +7209,9 @@ f9128e8 osd: Move PG::_scan_list() to backend as ReplicatedBackend::be_scan_list d508079 OSDMonitor: use deepish_copy_from for remove_down_pg_temp 61914d8 OSDMap: deepish_copy_from() 802692e os/KeyValueStore: fix warning -0389f1d (origin/wip-osdmap-features) mon/OSDMonitor: encode full OSDMap with same feature bits as the Incremental +0389f1d mon/OSDMonitor: encode full OSDMap with same feature bits as the Incremental b9208b4 OSDMap: note encoding features in Incremental encoding -e4dd1be (origin/wip-pybind-enverr) pybind: improve EnvironmentError output +e4dd1be pybind: improve EnvironmentError output 754ddb1 rgw: fix build on centos 1628423 mailmap: Rutger ter Borg affiliation 3a1a8c3 mailmap: Laurent Barbe affiliation @@ -7036,7 +7236,7 @@ ad515bf ceph-disk: support and test the absence of PATH d70efe9 FileStore: avoid leveldb check for xattr when possible 6d1daea unittest_striper: fix warning f9071a7 doc: cls moved to subdirectory -e78f756 (origin/wip-rbd-rm-watchers) run-rbd-tests: run remove_with_watcher test +e78f756 run-rbd-tests: run remove_with_watcher test 4ebc32f rbd: don't forget to call close_image() if remove_child() fails 0a553cf rbd: check for watchers before trimming an image on 'rbd rm' dcbe872 pybind: work around find_library() not searching LD_LIBRARY_PATH @@ -7056,9 +7256,9 @@ b31c0f0 civetweb: fix warning fd260c9 cls_user: init cls_user_stats fields in ctor d0f13f5 OSDMap: fix deepish_copy_from d7b0c7f ceph-disk: run the right executables from udev -318e208 (origin/wip-7190) OSD: don't assume we have the pool in handle_pg_create +318e208 OSD: don't assume we have the pool in handle_pg_create 2a737d8 leveldb: add leveldb_* options -11cf9bb (origin/wip-7169-2) rgw: fix multipart min part size +11cf9bb rgw: fix multipart min part size 12ba8a3 Add a virtual interface init, open, create_and_open to KeyValueDB 2e7bd83 rgw: fix multipart upload listing f1b5309 osd: OSDMonitor: ignore pgtemps from removed pool @@ -7066,8 +7266,8 @@ ff5abfb buffer: make 0-length splice() a no-op 86c3c5a test/Makefile.am: update test_cls_rgw* rules 26ace1e test_rgw_admin_opstate: get it compiled 28c7388 osdc/Striper: test zero-length add_partial_result -f513f66 (origin/wip-7116-joao) osd: OSDMonitor: ignore pgtemps from removed pool -3c77c4c (origin/wip-7060) OSDMap: use deepish_copy_from in remove_redundant_temporaries +f513f66 osd: OSDMonitor: ignore pgtemps from removed pool +3c77c4c OSDMap: use deepish_copy_from in remove_redundant_temporaries 368852f OSDMap: fix damaging input osdmap from remove_down_temps bd54b98 OSDMap: deepish_copy_from() 9e52398 packaging: apply udev hack rule to RHEL @@ -7095,7 +7295,7 @@ eff9f02 If 'ceph osd metadata' isn't working, inform the user about it via stder fffbfc9 mon: test for MForward messages d9a689d mon: shell test helpers to run MONs from sources c06eca2 unittests: fail early when low on disk -9413a51 (origin/wip-user-quota-2) rgw: simplify a code path +9413a51 rgw: simplify a code path 1b0567b radosgw-admin: add usage for user stats [--sync-stats] 97edd2f doc: Switched logging to true. Now required for sync agent. 9a55fa1 cls_user: add generate_test_instances() implementation @@ -7103,7 +7303,7 @@ e5dc8d6 rgw, cls_user: handle error cases related to response decoding 8a69ac8 rgw: implement restful set user quota request 92cabd4 rgw: new restful api for retrieving user quota info 0f7b3c7 rgw: quota thread for full user stats sync -51ffede (origin/wip-7215-quorum-features) mon: do not use CEPH_FEATURES_ALL for things that touch the disk +51ffede mon: do not use CEPH_FEATURES_ALL for things that touch the disk 3d4a673 Elector: send an OP_NAK MMonElection to old peers who support it 687b570 Elector: ignore messages from mons without required feature capabilities 41796c0 Monitor: add a function to get the required quorum features from the local compatset @@ -7143,7 +7343,7 @@ b90570f Fix 404 broken links to logging and debug configuration 4553e6a Fix trailing space 7bed2d6 called sysinfo.append(meta) in get_sysinfo within the while loop ef3fe7b Updated README with How-to-use instructions -faae5b9 (origin/use-ceph-sharedptr) libc++: convert tr1 uses +faae5b9 libc++: convert tr1 uses ea026c6 doc: Added domain pool, and changed zone configs to use domain tool so they don't clash. 0303f0f doc: Change zone domain to include "domain" so it is clear. 95e63ac doc: Added space between {Query_String} and [E=HTTP ... to solve for 500 error. @@ -7151,16 +7351,16 @@ ea026c6 doc: Added domain pool, and changed zone configs to use domain tool so t df4df46 Monitor: use a single static accessor for getting CompatSet features off disk 6915053 doc: Adding more information on style and usage for documenting Ceph. 2216afd doc: Fixed omission of a comma in zone configuration. -55ab35b (origin/wip-7207) FileStore: perform LFNIndex lookup without holding fdcache lock -1560cc0 (origin/wip-rgw-civetweb-2) mongoose: git rm src/mongoose +55ab35b FileStore: perform LFNIndex lookup without holding fdcache lock +1560cc0 mongoose: git rm src/mongoose bd089b1 civetweb: md5.inl -> md5.h 1a2bed1 civetweb: add include to makefile 287ea5c rgw: modify the civetweb rule d26e766 civetweb: fix module uri 3f20a41 civetweb: update submodule f2f7475 rgw: switch mongoose to civetweb -08fa34d (origin/wip-erasure-rule) osd/OSDMap: do not create erasure rule by default -6f8541c (origin/use-unordered-map) osd: use ceph:: scoped hash_map +08fa34d osd/OSDMap: do not create erasure rule by default +6f8541c osd: use ceph:: scoped hash_map 289a400 Corrected ownership info which was presented as string, added stub code for unpublish ecbdeb1 PGBackend: clarify rollback_stash name and method comments 4fc4573 PG: drop messages from down peers @@ -7222,7 +7422,7 @@ b7d100b FileStore::_collection_move_rename: remove source before closing guard 06f7a98 ReplicatedBackend.h: don't need to be active for pushes 518774d ObjectStore: improve name of the queue_transaction which cleans up the transaction c03d027 hobject: admit that gen_t is actually version_t -8060afd (origin/wip-osdmapenc-fix) MOSDMap: reencode maps if target doesn't have OSDMAP_ENC +8060afd MOSDMap: reencode maps if target doesn't have OSDMAP_ENC 9792500 doc: add-or-rm-mons.rst: better explanation on number of monitors 9eac5e3 Added update_metadata, clear_metadata, and usage description code dcca413 added perl script for rgw bucket quota tests @@ -7230,11 +7430,11 @@ dcca413 added perl script for rgw bucket quota tests 54caa01 removing rgw_tests.sh 8b8ede7 modified the port to 7280 in the script instead of the default 80 850b4f4 script for rgw bucket quota testing -339bed1 (origin/wip-cache-mode-fix) mon/MonCommands: 'invalidate+forward' -> 'forward' +339bed1 mon/MonCommands: 'invalidate+forward' -> 'forward' b88c8ea doc: Added Documenting Ceph (draft) document. 90aea59 doc: Added documenting Ceph to the toc tree. ed2decb doc: Fixed end string from '' to `` to stop warnings. Enforced 80 char line. -584c2dd (origin/wip-stray-mdsmaps) mon/MDSMonitor: do not generate mdsmaps from already-laggy mds +584c2dd mon/MDSMonitor: do not generate mdsmaps from already-laggy mds 4c96853 packaging: ship libdir/ceph 6bee188 Docs: Add backfill_toofull to list of PG states 199e614 Initial version of the source code. Statistics extraction is done @@ -7246,27 +7446,27 @@ c78c300 Remove some almost-duplicate COMMAND definitions 586ad1f rgw: Use correct secret key for POST authn 52a9154 rgw: Fix signature variable naming/failure print 6dcf462 rgw: Document fields for access/secret key -7314cde (origin/wip-7184) osd: ignore num_objects_dirty for old pools -1b308b6 (origin/port/libc++) libc++: fix null pointer comparison +7314cde osd: ignore num_objects_dirty for old pools +1b308b6 libc++: fix null pointer comparison 1fcbddc libc++: avoid hash re-definitions aae4700 libc++: use ceph::shared_ptr in installed header 4c4e1d0 libc++: use ceph:: namespaced data types 8e86720 libc++: create portable smart ptr / hash_map/set -7e7eda4 (origin/wip-osdmap-7177) OSDMap: Populate primary_temp values a little more carefully +7e7eda4 OSDMap: Populate primary_temp values a little more carefully 47bc71a fixed the syntax for test maxmds=2 a13ebd3 fix for the test maxmds=2 ad203d5 doc: Fixed ruleset typo. -6b7f27c (origin/wip-rgw-contention) librados: use rwlock for lookup pool, cache results +6b7f27c librados: use rwlock for lookup pool, cache results 4b31456 rgw: add .h file to Makefile rule d1de32c doc: Added default-placement to list of placement targets. Added SSL commentary. 80212ea doc: Added additional comment about port number. -0215342 (origin/wip-rgw-loadgen) rgw: loadgen, configurable num of objs, buckets +0215342 rgw: loadgen, configurable num of objs, buckets 7c86764 rgw: loadgen shutdown, error out on failures 85267cf rgw: sign loadgen requests e8a4b30 rgw: loadgen frontend read uid, init access key 57137cb rgw: add a load generation frontend f01202d Fixes: #7172 -b1a853e (origin/wip-rbd-mount_timeout) rbd: expose mount_timeout map option +b1a853e rbd: expose mount_timeout map option 8ec7fa8 PendingReleaseNotes: note ceph -s fix 6e93132 doc: Removed Calxeda example. dd4a9e1 doc: Removed saucy salamander reference. @@ -7279,7 +7479,7 @@ f7f9bed doc: Added source file for graphic. c30b138 doc: Added third monitor icon. add59b8 doc: Added additional monitor icon. 4b03326 doc: Removed old file. Changed file name. -86c1548 (origin/wip-7168) rgw: handle racing object puts when object doesn't exist +86c1548 rgw: handle racing object puts when object doesn't exist 5c24a7e rgw: don't return -ENOENT in put_obj_meta() a84cf15 rgw: use rwlock for cache 790dda9 osd: OSDMap: fix output from ceph status --format=json for num_in_osds num_up_osds returns as an int value, while num_in_osds returns as a string. Since only an int can be returned from get_num_in_osds(), num_in_osds should should also be an int to remain consistant with num_up_osds. @@ -7288,14 +7488,14 @@ ec5f7a5 client: ceph-fuse use fuse_session_loop_mt to allow multithreaded operat e1fd0e8 first commit ac5a9fe mon: larger timeout for mon mkfs.sh test 50808af ceph-disk: larger timeout in the test script -1aa2601 (origin/wip-7166) osd: OSDMap: build reverse name->pool map upon decoding -f97264d (origin/wip-rgw-expose-bucket) 6748: rgw: Optionally return the bucket name in a response header. -2d0d48b (origin/wip-7117-redhat) packaging: ship libdir/ceph +1aa2601 osd: OSDMap: build reverse name->pool map upon decoding +f97264d 6748: rgw: Optionally return the bucket name in a response header. +2d0d48b packaging: ship libdir/ceph 8b09a43 doc/release-notes: v0.76 draft notes 2b36761 mon: favor 'mds set max_mds' over 'mds set_max_mds' e60dcfa packaging: add missing test files -5ed7865 (origin/wip-7073) rgw: use configurable prime number for gc hash -e7b3236 (origin/wip-temp-primary) OSDMonitor: make sure we don't send out maps with a primary_temp mapping +5ed7865 rgw: use configurable prime number for gc hash +e7b3236 OSDMonitor: make sure we don't send out maps with a primary_temp mapping 28e0b76 test: add an OSDMap unittest b183115 OSDMap: move temp manipulation functions out of OSDMonitor fafc8e9 OSDMap: pay attention to the temp_primary in _get_temp_osds @@ -7321,8 +7521,8 @@ c1a95f8 OSDMap: remove get_pg_primary() function 7a9c171 OSDMap: doc the different pg->OSD mapping functions 268ae82 osd: do not misuse calc_pg_role a09d4f1 PG: do not use role == 0 as a determinant of primacy -644afd6 (origin/wip-3454) radosgw-admin: add temp url params to usage -fdf1a41 (origin/fix-configure-rerunning) autogen: re-run aclocal after libtoolize +644afd6 radosgw-admin: add temp url params to usage +fdf1a41 autogen: re-run aclocal after libtoolize 970f938 doc: Updated paths for OSDs using the OS disk. 4425f9e librados: Add C API coverage for atomic write operations 1ffe422 mailmap: add athanatos @@ -7334,9 +7534,9 @@ caf7971 mds: Add inline fields to inode_t b67e9ef ceph: Add inline state definition 978ec18 ceph: Add inline data feature e268e95 updated "sample.ceph.conf": -91b8c78 (origin/wip-tier-bits) mon/OSDMonitor: simplify and make 'osd pool set ...' output consistent +91b8c78 mon/OSDMonitor: simplify and make 'osd pool set ...' output consistent 413fc23 osd/ReplicatedPG: no HitSet on non-primary -be8db8c (origin/wip-cache-snap) osd/ReplicatedPG: use get_object_context in trim_object +be8db8c osd/ReplicatedPG: use get_object_context in trim_object b5ae76e ceph_test_rados: do not delete in-use snaps 8b39719 osd/OSDMonitor: fix 'osd tier add ...' pool mangling d41a1d3 osd/ReplicatedPG: update ObjectContext's object_info_t for new hit_set objects @@ -7384,17 +7584,17 @@ b840aae osd/ReplicatedPG: adjust clone stats when promoting clones 6dd0a1f osd/ReplicatedPG: include snaps in copy-get results d22ecf3 osd/ReplicatedPG: using missing_oid to decide which object to promote c3c1541 osd/ReplicatedPG: make find_object_context() pass missing_oid -33b5ef4 (origin/wip-mon-pgmap) mon/PGMap: make decode version match encode version +33b5ef4 mon/PGMap: make decode version match encode version a5aaab3 ceph-dencoder: include offset in 'stray data' error message 1308225 buffer: do not append trailing newline when appending empty istream 946d603 (tag: v0.75) v0.75 9034370 doc: Added comment and example for SSL enablement in rgw.conf 9615645 doc: Added python example of handle, and closing session examples. -c0d92b6 (origin/wip-5858-rebase) osd: Implement multiple backfill target handling +c0d92b6 osd: Implement multiple backfill target handling a657fad osd: Interim backfill changes 54e588c doc: Modified doc examples to use rados_create2. -4c92dc6 (origin/wip-7141) DBObjectMap::clear_keys_header: use generate_new_header, not _generate_new_header -93a9b68 (origin/wip-vector-op) erasure-code: use uintptr_t instead of long long +4c92dc6 DBObjectMap::clear_keys_header: use generate_new_header, not _generate_new_header +93a9b68 erasure-code: use uintptr_t instead of long long 0082d88 doc: format man pages with s/2013/2014/ b4054fc doc: copyright s/2013/2014/ efbdd16 doc: update the crushtool manual page @@ -7409,15 +7609,15 @@ d3d75a2 crush: crushtool --build informative messages 2765f81 crush: parse CEPH_ARGS in crushtool cf9a764 osd: factorize build_simple_crush_map* rulesets creation 7676550 osd: ostream is enough for build_simple* -cec8d85 (origin/wip-omapdirfrag2) mds: require CEPH_FEATURE_OSD_TMAP2OMAP +cec8d85 mds: require CEPH_FEATURE_OSD_TMAP2OMAP 1d8429d osd/OSDMap: get_up_osd_features() b8dfcc1 mds: use OMAP to store dirfrags 0f0dd74 osd: introduce TMAP->OMAP conversion operation -90d6cec (origin/wip-7135) src/test/ObjectMap: test clear_keys_header() call +90d6cec src/test/ObjectMap: test clear_keys_header() call 617a50c src/test/librados/misc.cc: verify that omap_clear doesn't blast xattr 0c81849 os/DBObjectMap, FileStore: omap_clear should not remove xattrs 6225f2c mailmap: fix typo in Alexandre Maragone -d429ab5 (origin/wip-tier-snap) osd/OSDMonitor: fix 'osd tier add ...' pool mangling +d429ab5 osd/OSDMonitor: fix 'osd tier add ...' pool mangling f49d9cd osd: fix propagation of removed snaps to other tiers 3b3511c mon: debug propagate_snaps_to_tiers 631d0c7 erasure-code: erasure code decode interface helper @@ -7439,10 +7639,10 @@ f18b310 mailmap: remove company name from Pascal de Bruijn name 0e43ac9 rgw: add optional tenant name for swift urls 2626101 rgw: can set temp url key on user efb4cf6 doc: Removed extraneous comment from snapshot text. -5070597 (origin/install-erasure-headers) osd: add missing header to install list -a5f8cc7 (origin/wip-7110) rgw: convert bucket info if needed +5070597 osd: add missing header to install list +a5f8cc7 rgw: convert bucket info if needed 029b9ef remove spurious executable permissions on files -995a3cc (origin/wip-max-file-size) mds/MDSMap: include max_file_size in plaintext print output +995a3cc mds/MDSMap: include max_file_size in plaintext print output 2de2148 mailmap: add Yan Zheng fixes for Reviewed-by: 62fbcac mailmap: add Loic Dachary fixes for Reviewed-by: 3fe5f11 mailmap: add Gary Lowell fixes for Reviewed-by: @@ -7471,20 +7671,20 @@ b780f4b osd: Remove redundant incompat feature 31f3745 mailmap: Adds Christophe Courtaut 7d5674c doc: Added librados introduction doc. Still wip. 33e78a4 doc: Updated terminology. Added librados intro to index. -7acb0a1 (origin/port/onexit) on_exit: remove side effects from asserts +7acb0a1 on_exit: remove side effects from asserts e3d0b0a common: fix large output in unittest_daemon_config 822ad58 configure: support Automake 1.12 -b1976dd (origin/wip-7083) radosgw-admin: fix object policy read op +b1976dd radosgw-admin: fix object policy read op 3f34dc7 common: unit tests for config::expand_meta 9485409 common: recursive implementation of config::expand_meta 87db534 common: cosmetic inversion of tests arguments 5bb1545 common: multiple variable occurence expansion test -98ed9ac (origin/wip-7093) mon: only send messages to current OSDs +98ed9ac mon: only send messages to current OSDs f68de9f osd: ignore OSDMap messages while we are initializing 35da8f9 osd: do not send peering messages during init 7aa9805 log: use on exit manager to flush logs on exit 2181d25 onexit: add an on exit callback utility -3d19f7c (origin/port/misc) test: disable cross process sem tests on non-Linux +3d19f7c test: disable cross process sem tests on non-Linux 6342d05 pipe: handle missing MSG_MORE and MSG_NOSIGNAL 26c07d9 ipaddr: use IN6_ARE_ADDR_EQUAL for comparison ef6a56a keyutils: handle non-linux platform @@ -7493,7 +7693,7 @@ bb8b750 add autotools-generated files to .gitignore f2e33e8 mon: get rid of --keyring /dev/null hack d110c91 doc: Removed dash from --dmcrypt option. c772b6d ceph-disk: fix false positive for gitbuilder -e2ee528 (origin/wip-objectcacher-backoff) osdc/ObjectCacher: back off less during flush +e2ee528 osdc/ObjectCacher: back off less during flush daefe81 Be more explicit how to discover available API calls de8522f ceph-disk: tests for the --data-dir code path a71025d ceph-disk: implement --sysconfdir as /etc/ceph @@ -7516,7 +7716,7 @@ b82ccfb ceph-disk: fix Error() messages formatting 6b8d418 init-ceph: pass config file path when adjust crush position 2ba6930 ceph-disk: cannot run unit tests 24417f9 test/cli-integration/rbd: silence stderr -8220549 (origin/port/bitsandints) inttypes: detect and define missing integer types +8220549 inttypes: detect and define missing integer types 8f91cac endian: check byte order on OSX 46a5674 doc/release-notes: fix bobtail version f6bbcf4 mon: tests for ceph-mon --mkfs @@ -7528,10 +7728,10 @@ f6bbcf4 mon: tests for ceph-mon --mkfs 4c8a313 mon: implement --key for --mkfs ab6203f mon: fix indentation e946df1 mon: do not use the keyring if auth = none -f12abbf (origin/wip-6914) mds: don't allow changing layout for non-regular file +f12abbf mds: don't allow changing layout for non-regular file f292992 mds: always store backtrace xattr in the default pool cae663a osd/ReplicatedPG: improve debug output from check_local -ac547a5 (origin/wip-empty-rbd-ls) rbd: return 0 and an empty list when pool is entirely empty +ac547a5 rbd: return 0 and an empty list when pool is entirely empty e91fb91 librbd: better error when unprotect fails on unprotected snap 42e98ac Be more explicit how to discover available API calls eeba294 mon: remove fixture directory between runs @@ -7544,7 +7744,7 @@ a194513 mon: do not daemonize if CINIT_FLAG_NO_DAEMON_ACTIONS e0bae95 Fix typos in erasure code documents 2b0a435 osd_types: add missing osd op flags f8e413f msgr: fix rebind() race stop the accepter and mark all pipes down before rebind to avoid race -8fcfc91 (origin/wip-listomapvals) qa: test rados listomapvals with >512 keys +8fcfc91 qa: test rados listomapvals with >512 keys be5afa2 rados: allow listomapvals to list all k/v pairs c165483 (tag: v0.74) v0.74 b4fc16c make: conditionally build filestore backends @@ -7560,7 +7760,7 @@ f7a66d6 make: restrict use of --as-needed to Linux b5c17f6 vstart: set fsid in [global] d7d7ca8 Fix qa/workunits/rados/test_cache_pool.sh typos cc67b7b Fix test/filestore/store_test.cc error -e8e174e (origin/port/public-hdrs) rados: include struct timeval definition +e8e174e rados: include struct timeval definition 356d71a inttypes: use portable types in public headers 76ad85d test: include headers for struct statfs 93c125c test: remove platform specific header @@ -7572,7 +7772,7 @@ a48d038 test: fix VLA of non-POD type 891801e warning: fix typo and -Wmismatched-tags c7e1c4b c++11: fix std::lock naming conflicts bbcb022 kvstore: only build on linux -1fec818 (origin/port/spinlock) spinlock: add generic spinlock implementation +1fec818 spinlock: add generic spinlock implementation 12f4631 qa/workunits/rest/test.py: rbd pool ruleset is now 0 b286e4f ceph_test_rados_api_tier: retry EBUSY race checks b88af07 libcephfs: get osd location on -1 should return EINVAL @@ -7580,15 +7780,15 @@ b88af07 libcephfs: get osd location on -1 should return EINVAL d4f07cd crush: fix get_full_location_ordered fd57d99 Fix rbd bench-write improper behavior 30078e6 autoconf: trim duplicated headers -f9f5c37 (origin/wip-rgw-leak) rgw: fix leak of RGWProcess -96fe80d (origin/wip-snaps) osd: preserve user_version in snaps/clones +f9f5c37 rgw: fix leak of RGWProcess +96fe80d osd: preserve user_version in snaps/clones 80b5487 ceph_test_rados: test read from snapshots 2f8b602 osd/OSDMap: observe 'osd crush chooseleaf type' option for initial rules 9b7364d rbd: expose options available to rbd map b3bda08 Lack of "start" member function declare in WBThrottle.h 4a9c770 messages: add tid to string form of MForward 67f99f3 packaging: make check needs argparse and uuidgen -4cea789 (origin/wip-rbd-tinc-5426) librbd: call user completion after incrementing perfcounters +4cea789 librbd: call user completion after incrementing perfcounters f8a4001 osd: create default ruleset for erasure pools 8b2b5a3 mon: implement --osd-pool-default-crush-erasure-ruleset dd81858 mon: implement --osd-pool-default-crush-replicated-ruleset @@ -7604,9 +7804,9 @@ c6d876a mon: osd-pool-create must not loop forever on kill 272eed3 client: SyntheticClient uses the first available pool 20b3da0 mon: MDS data and metadata pool numbers are hardcoded bf24317 Fix WBThrottle thread disappear problem -87b8e54 (origin/wip-argparse-fix) ceph_argparse: kill _daemon versions of argparse calls +87b8e54 ceph_argparse: kill _daemon versions of argparse calls ea4724d rados: deprecated attribute has no argument -e7bf5b2 (origin/wip-librados-lock) librados: lockless get_instance_id() +e7bf5b2 librados: lockless get_instance_id() 771da13 objecter, librados: create Objecter::Op in two phases 5ff30d6 crush/CrushWrapper: note about get_immediate_parent() 0cdbc97 librados: mark old get_version() as deprecated @@ -7618,18 +7818,18 @@ ac14d4f osdc/Objecter: maintain crush_location multimap dcc5e35 crush/CrushWrapper: add get_common_ancestor_distance() 0903f3f mon/OSDMonitor: use generic CrushWrapper::parse_loc_map helper 8f48906 crush/CrushWrapper: add parse_loc_[multi]map helpers -8fc66a4 (origin/wip-7056) osd/ReplicatedPG: fix copy-get iteration of omap keys +8fc66a4 osd/ReplicatedPG: fix copy-get iteration of omap keys 0c9acf1 ceph_test_rados: s/tmap/omap/ 3b0d9b2 vstart/stop: do not loop forever on kill 4ce6400 config: add 'crush location' option 19213e6 doc: Fix caps documentation for Admin API -ac10aa5 (origin/wip-fix-mon-fwd) mon: fix forwarded request features when requests are resent +ac10aa5 mon: fix forwarded request features when requests are resent 2e4c61b osd/ReplicatedPG: include omap header in copy-get -537a7c3 (origin/wip-crush-shrink-diff) crush: misc formatting and whitespace fixes +537a7c3 crush: misc formatting and whitespace fixes fa6a99a crush: use kernel-doc consistently 6e36794 crush/mapper: unsigned -> unsigned int d8512f1 mon: use kill instead of pkill in osd-pool-create -c030569 (origin/wip-7051) osd: OSDMap: dump osd_xinfo_t::features as an int +c030569 osd: OSDMap: dump osd_xinfo_t::features as an int b4fbe4f mon: Monitor: Forward connection features 93c44cb mon: unit test for osd pool create 59941b1 mon: erasure code pool properties defaults @@ -7664,7 +7864,7 @@ cdc178f Revert "Enable libs3 support for debian packages" 1e238e6 mon: pool create will not fail if the type differs 5f1957d doc/release-notes: v0.67.5 98a1525 unittests: fail if one test fail -9ab947c (origin/port/buffer) buffer: use int64_t instead of loff_t +9ab947c buffer: use int64_t instead of loff_t 03693ac osd: git ignore erasure code benchmark binary 42b4fe1 osd: erasure code benchmark is installed is part of ceph-test 81dee1b osd: erasure code benchmark workunit @@ -7674,7 +7874,7 @@ c7d8ba7 osd: better performances for the erasure code example ff9455b osd: conditionally disable dlclose of erasure code plugins 8879e43 osd: Fix assert which doesn't apply when compat_mode on 0bd5cb6 Add backward comptible acting set until all OSDs updated -8d31f71b osd/ReplicatedPG: fix promote cancellation +8d31f71 osd/ReplicatedPG: fix promote cancellation 923bff1 osd/ReplicatedPG: drop RepGather::ondone callback 2a9c6fc vstart.sh: go faster bc893f5 osd/ReplicatedPG: fix undirty on clean object @@ -7699,18 +7899,18 @@ ea519b4 qa/workunits/rados: test cache-{flush,evict,flush-evict-all} 71cd4a2 rados: add cache-flush, cache-evict, cache-flush-evict-all commands ad3b466 osd/ReplicatedPG: implement cache-flush, cache-try-flush edaec9a osd: Fix assert which doesn't apply when compat_mode on -ac16a9d (origin/wip-kill-raid4) osd: remove remaining instances of raid4 pool types (never implemented) +ac16a9d osd: remove remaining instances of raid4 pool types (never implemented) 40a48de mds: fix Resetter locking 087fe57 packaging: revert adding argparse and uuidgen 8272538 packaging: make check needs argparse and uuidgen f193925 autogen: test compare strings with != not -ne 98af37d Fix segmentation fault when handler is NULL pointer -44aacae (origin/wip-mds-coverity2) mds: fixes for coverity scan +44aacae mds: fixes for coverity scan 8b38f10 crush/mapper: fix crush_choose_firstn comment ea3a0bb crush/mapper: attempts -> tries 0497db4 crush/mapper: finish adding choose_local_[fallback_]tries -99f41de (origin/sage-valgrind) vstart.sh: NOTE, not WARNING, to make gitbuilder happy -b3ee598 (origin/wip-6028) qa: workunit: cephtool: test osd pool create with erasure type +99f41de vstart.sh: NOTE, not WARNING, to make gitbuilder happy +b3ee598 qa: workunit: cephtool: test osd pool create with erasure type 250b446 pybind: test_ceph_argparse: test 'ceph osd pool create' with pool type c996f66 mon: OSDMonitor: add optional 'pool type' arg to 'osd pool create' bdeaa84 osd: OSDMap: add 'get_up_osds()' function @@ -7729,7 +7929,7 @@ e6ad4d4 osd: make obc copyfrom blocking generic 8dec2b2 librados, osd: add flags to COPY_FROM e624e16 crush: silence error messages in unit tests 9414970 ARCH: adding SSE2 flag to arch-test -7e0c84b (origin/wip-crush-2) mon/OSDMonitor: 'osd crush show-tunables' +7e0c84b mon/OSDMonitor: 'osd crush show-tunables' 88365c2 crush: expand info about tunables that we dump d0f14df mon: warn if crush has non-optimal tunables d129e09 crush: add set_choose_local_[fallback_]tries steps @@ -7737,14 +7937,14 @@ d129e09 crush: add set_choose_local_[fallback_]tries steps b86d450 upstart: add rbdmap script e4537d3 ARCH: add variable for sse2 register 0d217cf qa/workunits/cephtool/test.sh: clean up our client.xx.keyring -7e4a800 (origin/wip-7026) osd/ReplicatedPG: fix hit_set_setup() on_activate() -19cff89 (origin/wip-6990) Add backward comptible acting set until all OSDs updated +7e4a800 osd/ReplicatedPG: fix hit_set_setup() on_activate() +19cff89 Add backward comptible acting set until all OSDs updated b153067 erasure-code: tests must use aligned buffers f5d32a3 mds: drop unused find_ino_dir c60a364 Fix typo in #undef in ceph-dencoder 9e45655 qa: add ../qa/workunits/cephtool/test.sh to unittests c1eb55c qa: vstart wrapper helper for unittests -0edbda2 (origin/wip-rbd-coverity) rbd: make coverity happy +0edbda2 rbd: make coverity happy d93881f vstart/stop: use pkill instead of killall ae56cef qa: recursively remove .gcno and .gcda b082c09 crushtool: reorg test-map-* cli tests @@ -7752,16 +7952,16 @@ b082c09 crushtool: reorg test-map-* cli tests 685c695 crush/mapper: generalize descend_once 6f43120 ceph_test_rados_api_tier: fix HitSetTrim vs split, too c5bccfe ceph_test_rados_api_tier: fix HitSetRead test race with split -7e618c9 (origin/wip-7009) mon: move supported_commands fields, methods into Monitor, and fix leak -deded44 (origin/wip-rgw-standalone-2) mongoose: update submodule +7e618c9 mon: move supported_commands fields, methods into Monitor, and fix leak +deded44 mongoose: update submodule ef10a5c rgw: fix memory leak -824b3d8 (origin/wip-linux-version) FileJournal: use pclose() to close a popen() stream +824b3d8 FileJournal: use pclose() to close a popen() stream 6696ab6 FileJournal: switch to get_linux_version() fcf6e98 common: introduce get_linux_version() a2babe2 configure: break up AC_CHECK_HEADERS into one header-file per line fae569d Rename filestore_perf_t to objectstore_perf_t 015e981 Move PerfCounter from ObjectStore.h to FileStore.h -4526d13 (origin/wip-mds-cluster2) mds: fix stale session handling for multiple mds +4526d13 mds: fix stale session handling for multiple mds 43f7268 mds: properly set dirty flag when journalling import 802df76 mds: properly update mdsdir's authority during recovery b6d1d8f mds: finish opening sessions even if import aborted @@ -7771,7 +7971,7 @@ ebb3ad9 osd/PG: move some pg stat update into a helper 05274f3 osd: include peer_info in pg query 5fdcc56 mds: fix bug in MDCache::open_ino_finish 71d1eb3 mds: add CEPH_FEATURE_EXPORT_PEER and bump the protocal version -d0b744a1 client: handle session flush message +d0b744a client: handle session flush message 05b192f mds: simplify how to export non-auth caps 9dc52ff mds: send cap import messages to clients after importing subtree succeeds 6a56588 mds: re-send cap exports in resolve message. @@ -7870,14 +8070,14 @@ b371dd8 ReplicatedPG: promote: first draft pass at doing object promotion a3e50b0 rgw: rework framework configuration b7946ff doc: Added additional comments on placement targets and default placement. 902f19c doc: Updates to federated config. -29cc722 (origin/wip-hitset) test_ipaddr: add another unit test +29cc722 test_ipaddr: add another unit test 026b724 osd/ReplicatedPG: drop unused hit_set_start_stats 3d768d2 osd/ReplicatedPG: maintain stats for the hit_set_* objects 9814b93 osd/ReplicatedPG: set object_info_t, SnapSet on hit_set objects dabd5d6 vstart.sh: --hitset 5bb0476 test/libcephfs: release resources before umount -897dfc1 (origin/wip-6979) use the new get_command helper in check_call -eae8531 (origin/wip-rbd-single-major) rbd: modprobe with single_major=Y on newer kernels +897dfc1 use the new get_command helper in check_call +eae8531 rbd: modprobe with single_major=Y on newer kernels 8a473bc rbd: add support for single-major device number allocation scheme 784cc89 rbd: match against both major and minor on unmap on newer kernels 462b389 rbd: match against whole disks on unmap @@ -7885,7 +8085,7 @@ a421305 rbd: switch to strict_strtol for major parsing 24a048b Document librados's rados_write's behaviour in reguards to return value. a865fec osd/ReplicatedPG: debug: improve hit_set func banners b6871cf osd/ReplicatedPG: do not update current_last_update on activate -bcde200 (origin/wip-vstart-memstore) vstart.sh: add --memstore option +bcde200 vstart.sh: add --memstore option a9334a1 use the absolute path for executables if found 43561f7 remove trailing semicolon a33c95f radosgw: increase nofiles ulimit on sysvinit machines @@ -7896,8 +8096,8 @@ ee3173d doc/release-notes: fix indentation; sigh bb50276 Revert "Partial revert "mon: osd pool set syntax relaxed, modify unit tests"" 0cd36e0 mon/OSDMonitor: take 'osd pool set ...' value as a string again e19e380 replace sgdisk subprocess calls with a helper -4b6d721 (origin/wip-hashpspool) osd: enable HASHPSPOOL by default -fb47d54 (origin/wip-mon-api) mon: if we're the leader, don't validate command matching +4b6d721 osd: enable HASHPSPOOL by default +fb47d54 mon: if we're the leader, don't validate command matching 2bfd34a mon: by default, warn if some members of the quorum are "classic" e620057 add apt-get install pkg-config for ubuntu server b8884e0 MemStore: update for the new ObjectStore interface @@ -7915,7 +8115,7 @@ a888a57 crush: implement --show-bad-mappings for indep fbc4f99 crush: remove scary message string 472f495 crush: document the --test mode of operations ea86444 Monitor: Elector: share the classic command set if we have a classic mon -f1ccdb41 Elector: share local command set when deferring +f1ccdb4 Elector: share local command set when deferring ba673be Monitor: import MonCommands.h from original Dumpling and expose it 3cb58f7 Monitor: validate incoming commands against the leader's set too cb51b1e Monitor: disseminate leader's command set instead of our own @@ -7935,19 +8135,19 @@ c928f07 crush: output --show-bad-mappings on err ef4061f librbd: remove unused private variable ad3825c TrackedOp: remove unused private variable 3b39a8a librbd: rename howmany to avoid conflict -539fe26 (origin/port/fdatasync) wbthrottle: use feature check for fdatasync +539fe26 wbthrottle: use feature check for fdatasync 663da61 rados_sync: fix mismatched tag warning 60a2509 rados_sync: remove unused private variable 43c1676 mon: check for sys/vfs.h existence c99cf26 make: increase maximum template recursion depth -e2be099 (origin/port/compat) compat: define replacement TEMP_FAILURE_RETRY -3b3cbf5 (origin/wip-fix-tunables) crush/CrushCompiler: make current set of tunables 'safe' +e2be099 compat: define replacement TEMP_FAILURE_RETRY +3b3cbf5 crush/CrushCompiler: make current set of tunables 'safe' 8535ced crushtool: remove scary tunables messages 4eb8891 crush/CrushCompiler: start with legacy tunables when compiling e8fdef2 crush: add indep data set to cli tests -564de6e (origin/wip-fix-3x) osdmaptool: fix cli tests for 3x +564de6e osdmaptool: fix cli tests for 3x 6704be6 osd: default to 3x replication -8d0180b (origin/wip-objecter-full-2) objecter: don't take extra throttle budget for resent ops +8d0180b objecter: don't take extra throttle budget for resent ops 38647f7 Revert "osd: default to 3x replication" cbeb1f4 crush: detach_bucket must test item >= 0 not > 0 2cd73f9 crush: remove obsolete comments from link_bucket @@ -8027,12 +8227,12 @@ cb88763 crush/mapper: fix up the indep tests b819018 crush: unittest use const instead of define dc09521 crush: unittest CrushWrapper::check_item_loc 000c59a crush: unittest remove useless c->create() -7a9a088 (origin/wip-6940) rgw: fix reading bucket policy in RGWBucket::get_policy() -cb26fbd (origin/wip-3x) osd: default to 3x replication +7a9a088 rgw: fix reading bucket policy in RGWBucket::get_policy() +cb26fbd osd: default to 3x replication aedbc99 crush: check for invalid names in loc[] fe03ad2 osd: queue pg deletion after on_removal txn aa63d67 os/MemStore: implement reference 'memstore' backend -47ee797 (origin/wip-mon-mds-trim) mon: ceph-kvstore-tool: get size of value for prefix/key +47ee797 mon: ceph-kvstore-tool: get size of value for prefix/key c98c104 tools: ceph-kvstore-tool: output value contents to file on 'get' 00048fe mon: Have 'ceph report' print last committed versions cc64382 mon: MDSMonitor: let PaxosService decide on whether to propose @@ -8051,8 +8251,8 @@ a70200e os/ObjectStore: pass cct to ctor cae1083 ObjBencher: add rand_read_bench functions to support rand test in rados-bench e829859 doc/rados/operations/crush: fix more 7709a10 doc/rados/operations/crush: fix rst -68fdcfa (origin/wip-6922) FileSTore: do not time out threads while they're waiting for op throttle -7ff7cf2 (origin/wip-doc-build-cluster) doc: Partially incorporated comments form Loic Dachary and Aaron Ten Clay. +68fdcfa FileSTore: do not time out threads while they're waiting for op throttle +7ff7cf2 doc: Partially incorporated comments form Loic Dachary and Aaron Ten Clay. 5e34beb init, upstart: prevent daemons being started by both c43c893 crush/mapper: new SET_CHOOSE_LEAF_TRIES command 2731d30 crush/mapper: pass parent r value for indep call @@ -8068,7 +8268,7 @@ d51a219 osd/osd_types: pg_pool_t: fix /// -> ///< comments 86e9780 crush: use breadth-first search for indep mode b1d4dd4 crush: return CRUSH_ITEM_UNDEF for failed placements with indep 1cfe140 crush: eliminate CRUSH_MAX_SET result size limitation -858a21b (origin/wip-filestore-remount) common/WorkQueue: allow start() after stop() +858a21b common/WorkQueue: allow start() after stop() 36505e8 os/FileStore: allow mount after umount cd6be29 common/Finisher: allow finisher to be restarted 941875d doc: Partially incorporated comments from Aaron Ten Clay. @@ -8082,7 +8282,7 @@ de09778 test/filestore: add check of return values in StoreTest::SetUp f502530 pybind: syntax check osd metadata 6570197 ceph-disk: blacklist /dev/fd0 bcb6bfd test/ceph_decoder: add return value check for read_file() -20507b5 (origin/wip-crush-tunables) crush/CrushWrapper: default to the "new" bobtail-era tunables +20507b5 crush/CrushWrapper: default to the "new" bobtail-era tunables 07978bb crush/CrushWrapper: explicitly set tunables on create, decode 3f1352f doc/rados/operations/crush-map: describe crush locations, hook 396ee0d add script/run-coverity @@ -8095,11 +8295,11 @@ f57dad6 OSDMonitor: prevent extreme multipliers on PG splits c77ce90 doc: Fixed hyperlink to the manual installation section. 648f3bc doc: Added a link to get packages. 16b7576 osd/OSDMap: fix typo and crush types helper -6298a57 (origin/wip-crush-chassis) osd/OSDMap: add region, pdu, pod types while we are at it +6298a57 osd/OSDMap: add region, pdu, pod types while we are at it 3a6707a osd/OSDMap: add 'chassis' to default type hierarchy 5e1fc14 README: update a list of build deps for rpm-based systems e80ab94 Partial revert "mon: osd pool set syntax relaxed, modify unit tests" -fd175ab (origin/wip-6699) sysvinit, upstart: use df -P when weighting new OSDs +fd175ab sysvinit, upstart: use df -P when weighting new OSDs 4d140a7 os/ObjectStore: add {read,write}_meta 6bb42a0 osd: move peek_journal_fsid() into ObjectStore (from OSD) bf5a7b2 os/ObjectStore: generalize the FileStore's target_version @@ -8112,15 +8312,15 @@ ea9dabf mon/OSDMonitor: include osd metadata in 'ceph report' c4f817f mon/OSDMonitor: move osd metadata dump into a helper 838b6c8 PG: don't query unfound on empty pgs 964c8e9 PG: retry GetLog() each time we get a notify in Incomplete -14cf4ca (origin/wip-6892) rgw: don't error out on empty owner when setting acls +14cf4ca rgw: don't error out on empty owner when setting acls 7ec21ed Mark libcls_kvs as a module e5357c0 test: remove zero-copy read_fd test temporarily bafb5c3 doc: clarify crush rule create-simple and fix typos 371dc71 doc: fix formatting typo in mon configuration 00ee9a5 doc: improve ceph-mon usage, fix ceph tell examples 4fa8f68 README: add yum command line -b0dce8a (origin/wip-mds-assert) mds: Add assertion to catch object mutation error -09a4c1b (origin/wip-5871) mds: remove superfluous warning of releasing lease +b0dce8a mds: Add assertion to catch object mutation error +09a4c1b mds: remove superfluous warning of releasing lease c409e36 mon: osd dump should dump pool snaps as array, not object 03d63c4 buffer: turn off zero-copy reads for now 784d188 mds: Release resource before return @@ -8130,7 +8330,7 @@ c409e36 mon: osd dump should dump pool snaps as array, not object ab05580 Add missing stuff to clean target ae46c38 Correctly mark library modules 94ca1cc ceph-object-corpus: revert accidental revert -75d4a72 (origin/wip-zero-copy-bufferlist-last) buffer: enable tracking of calls to c_str() +75d4a72 buffer: enable tracking of calls to c_str() 445fb18 buffer: try to do zero copy in read_fd be29b34 buffer: attempt to size raw_pipe buffers 3f6fa05 buffer: add methods to read and write using zero copy @@ -8145,14 +8345,14 @@ fc5789d doc: Added commentary to configure pg defaults. Clarified size commentar dceaef4 doc: PG splitting added to docs. d39676b doc: Took out "future" reference to namespaces. 9a55d89 doc: Clarification of terms. -b35fc1b (origin/wip-6804) rgw: lower some debug message -561e7b0 (origin/wip-6829) rgw: initialize RGWUserAdminOpState::system_specified -b2ee935 (origin/wip-6796) PendingReleaseNotes: mention 6796 and 'ceph osd pool set' behavior change +b35fc1b rgw: lower some debug message +561e7b0 rgw: initialize RGWUserAdminOpState::system_specified +b2ee935 PendingReleaseNotes: mention 6796 and 'ceph osd pool set' behavior change 7c6d43c doc: rados: operations: pools: document 'osd pool set foo hashpspool' 49d2fb7 mon: OSDMonitor: don't crash if formatter is invalid during osd crush dump 337195f mon: OSDMonitor: receive CephInt on 'osd pool set' instead on CephString 7191bb2 mon: OSDMonitor: drop cmdval_get() for unused variable -50868a5 (origin/wip-6705) qa: workunits: mon: ping.py: test 'ceph ping' +50868a5 qa: workunits: mon: ping.py: test 'ceph ping' 6b5aaf3 doc: Minor updates to manual deployment document. 3502d4f init: fix typo s/{$update_crush/${update_crush/ 29178d8 doc: Cleanup of Add/Remove OSDs. @@ -8161,7 +8361,7 @@ de2bcd5 doc: Added a manual deployment doc. 10b4bf6 doc: Added manual deployment section to index. f753d56 test: use older names for module setup/teardown 72bba1f doc: Added fixes to osd reporting section. -86e4fd4 (origin/wip-flush-5855-review) osd: Backfill peers should not be included in the acting set +86e4fd4 osd: Backfill peers should not be included in the acting set 19dbf7b osd: Simple dout() fix 82e1e7e PG: remove unused Peering::flushed 9ff0150 PG: don't requeue waiting_for_active unless flushed and active @@ -8172,7 +8372,7 @@ da77553 ReplicatedPG,PG: move duplicate FlushedEvt logic info on_flushed() 68e0e06 doc: warn about #6796 in release notes 574cb61 man: re-generate changed man pages 0de0efa RBD Documentation and Example fixes for --image-format -40a76ef (origin/wip-osd-bench-size) osd: fix bench block size +40a76ef osd: fix bench block size 703f9a0 Revert "JounralingObjectStore: journal->committed_thru after replay" f0c8931 release-notes: clarify that the osd data directory needs to be mounted ba67b9f doc/release-notes.rst: v0.72.1 release notes @@ -8182,10 +8382,10 @@ bf7c09a osd_types: fix object_info_t backwards compatibility 1212a21 CephContext: unregister lockdep after stopping service thread dd9d8b0 ReplicatedPG: test for missing head before find_object_context d8d27f1 JounralingObjectStore: journal->committed_thru after replay -a7063a1 (origin/wip-6768) Use clearer "local monitor storage" in log messages -dcef9fb (origin/po-pr838) automake: replaced hardcoded '-lboost_program_options' with a macro +a7063a1 Use clearer "local monitor storage" in log messages +dcef9fb automake: replaced hardcoded '-lboost_program_options' with a macro 125582e autoconf: add check for the boost_program_options library -cfb82a1 (origin/port/fallocate) filejournal: add journal pre-allocate for osx +cfb82a1 filejournal: add journal pre-allocate for osx d39ff4c mon/OSDMonitor: 'osd metadata N' command ea16435 mon/OSDMonitor: record osd metadata key/value info 6d40e94 osd: send host/kernel metadata to mon on boot @@ -8194,10 +8394,10 @@ aef3402 doc/release-notes: fix dup 8b5719f doc: Added Emperor upgrade. 7f45e72 doc: Added dumpling to the sequence. efe55b1 doc: Remove redundant command for quick start preflight -fbdfe61 (origin/port/unused-headers) trace: remove unused header +fbdfe61 trace: remove unused header 762acec mon: Monitor: make 'quorum enter/exit' available through the admin socket -01f7b46 (origin/port/stat) client: use platform-specific stat time members -2f76ac3 (origin/wip-da-SCA-master) mon/MDSMonitor.cc: remove some unused variables +01f7b46 client: use platform-specific stat time members +2f76ac3 mon/MDSMonitor.cc: remove some unused variables 91627f2 test_seek_read.c: remove unused variable 'off64_t so' 0da5a01 rgw: remove unused variables 6566dfb osd/ReplicatedPG.cc: remove unused variable @@ -8219,11 +8419,11 @@ d8f0502 doc/release-notes: note crush update timeout on startup change 082e7c9 Ceph: Fix memory leak in chain_flistxattr() c7a30b8 ReplicatedPG: don't skip missing if sentries is empty on pgls 5fe3dc6 objecter: clean pause / unpause logic -98ab7d6 (origin/wip-objecter-full) objecter: set op->paused in recalc_op_target(), resend in not paused -afb3566 (origin/port/detect-clang) conf: use better clang detection -ac04481 (origin/port/func-name) assert: choose function-var name on non-gnu -1d030d1 (origin/port/gtest-death-tests) test: Only build death tests on platforms that support them -c6826c1 (origin/wip-6719) PG: fix operator<<,log_wierdness log bound warning +98ab7d6 objecter: set op->paused in recalc_op_target(), resend in not paused +afb3566 conf: use better clang detection +ac04481 assert: choose function-var name on non-gnu +1d030d1 test: Only build death tests on platforms that support them +c6826c1 PG: fix operator<<,log_wierdness log bound warning f4648bc PGLog::rewind_divergent_log: log may not contain newhead 25b7349 osd/ErasureCodePlugin: close library before return on error c3d20f2 osd/erasurecode: free allocated memory before return NULL @@ -8231,16 +8431,16 @@ bfd5b90 mon/MDSMonitor: remove unnecessary assignment 89d5396 osd/erasurecode: correct one variable name in jerasure_matrix_to_bitmatrix() 2aaed99 Revert "doc: radosgw workaround for OpenStack Horizon bug" c5c399d objecter: don't resend paused ops -5a44e17 (origin/wip-6677) rgw: add compatibility for MultipartUpload +5a44e17 rgw: add compatibility for MultipartUpload a3ccd29 RadosModel: use sharedptr_registry for snaps_in_use c22c84a osdmaptool: don't put progress on stdout -81a3ea1 (origin/port/rgw) rgw: add compat file for name service macros +81a3ea1 rgw: add compat file for name service macros 5dc6419 rgw: avoid sighandler_t in favor of sig_t -e9880cf (origin/port/missing-headers) crush: add mising header for count +e9880cf crush: add mising header for count a10345a auth: add missing header for list 01a5a83 mon: add missing header for std::find e71a2f0 auth: add missing header file for std::replace -0209568 (origin/port/utime) utime: use to_timespec for conversion +0209568 utime: use to_timespec for conversion 4c3b6d6 rgw: allow multiple frontends of the same framework e25d32c rgw: clean up shutdown signaling 6d737ce rgw: clean up front end configuration @@ -8248,8 +8448,8 @@ abc2177 rgw: more flexible frotnend handler config bbcddef Add a verbose argument and some verbosity c4b0431 Verify that radosgw started, return appropriate exit code 0c61091 We should exit 1 if radosgw is not executable -1cc8558 (origin/port/detect-libresolv) autoconf: check for res_nquery explicitly -ea725d3 (origin/port/bootstrap) autogen.sh: use glibtoolize when available +1cc8558 autoconf: check for res_nquery explicitly +ea725d3 autogen.sh: use glibtoolize when available 00734ec autogen: set exit on error 154ee0b FileStore::_collection_move_rename: handle missing dst dir on replay 1fe762c rgw: refactor request handling processing @@ -8262,44 +8462,44 @@ fe6cd9b rgw: rebase mongoose prototype ed3caf7 mongoose: submodule, v4.1 2fcaa1f pdatedoc: Added index link to new install doc. Requires merge of wip-doc-install to work. 917dd71 doc: Deleted old manual install doc. -195e861 (origin/wip-doc-install) doc: Mentioned that install procedure is for manual deployments, not ceph-deploy or others. +195e861 doc: Mentioned that install procedure is for manual deployments, not ceph-deploy or others. 2aa6cde doc: Changed text for ceph-extras. Made it required. Mentioned newer versions. -d03924c (origin/wip-da-fix-galois-warning) galois.c: fix compiler warning -6821a6e (origin/wip-static-cast) assert: use feature test for static_cast +d03924c galois.c: fix compiler warning +6821a6e assert: use feature test for static_cast 330a6a7 wbthrottle: use posix_fadvise if available 2bf8ff4 doc: Added DNS and SSL dialog. cd0d612 OSD: allow project_pg_history to handle a missing map 9ab5133 OSD: don't clear peering_wait_for_split in advance_map() 545135f ReplicatedPG::recover_backfill: adjust last_backfill to HEAD if snapdir -324dd54 (origin/wip-blkdev) test: test helper for get_block_device_size +324dd54 test: test helper for get_block_device_size 268785f blkdev: support blkdev size query on osx 75b4b47 doc: Implemented changes suggested from feedback. -41e052d (origin/revert-struct-init) Revert "fix -Wgnu-designator warnings" +41e052d Revert "fix -Wgnu-designator warnings" 96f4607 test/libcephfs: free cmount after tests finishes c0bcdc3 osd/erasurecode: correct one variable name in jerasure_matrix_to_bitmatrix() -09e1597 (origin/wip-pgmap) mon/PGMap: use const ref, not pass-by-value +09e1597 mon/PGMap: use const ref, not pass-by-value fb0f198 rbd: omit 'rw' option during map 2db20d9 qa: don't run racy xfstest 008 -1bb5aad (origin/wip-6698) upstart: fix ceph-crush-location default +1bb5aad upstart: fix ceph-crush-location default c3c962e doc: radosgw workaround for OpenStack Horizon bug cbc15bf doc: fix typo in openstack radosgw integration 4032501 mon/OSDMonitor: refix warning -9834ab9 (origin/wip-6673b) OSDMonitor: be a little nicer about letting users do pg splitting -59a55fd (origin/wip-pipe) pipe: use pipe2 feature test; check fcntl retval +9834ab9 OSDMonitor: be a little nicer about letting users do pg splitting +59a55fd pipe: use pipe2 feature test; check fcntl retval 5d0d0a9 fix -Wmismatched-tags warnings 6efc2b5 fix -Wgnu-designator warnings 382149c OSD: remove unused private var [-Wunused-private-field] cf29574 CrushTester: remove unused private var [-Wunused-private-field] cc08a4a auth: remove unused private var [-Wunused-private-field] 306ec71 rgw: don't turn 404 into 400 for the replicalog api -cd30e5f (origin/master-new) common/buffer.cc: fix rebuild_page_aligned typo +cd30e5f common/buffer.cc: fix rebuild_page_aligned typo ffdd30e test: add gcc compile test for installed headers 12238d0 libcephfs: Fix compilation for C compiler b3b1650 ceph: Fix compilation with GCC compiler 524aee6 Really use the hostname, otherwise ambiguous f2622a4 ceph-object-corpus: revert accidental revert df3af6c docs: Fix a typo in RGW documentation -588ed60 (origin/next-new) Wrap hex_to_num table into class HexTable +588ed60 Wrap hex_to_num table into class HexTable 148023d [rgw] Set initialized to true after populating table in hex_to_num() 28e4271 sharedptr_registry.hpp: removed ptrs need to not blast contents 4402898 prio-q: initialize cur iterator @@ -8334,44 +8534,44 @@ fba056a doc: Removed install libvirt. Consolidated to install-vm-cloud. 6b9104d doc/release-notes: formatting 04710b5 doc/release-notes: fix formatting b605c73 doc/release-notes: fix indentation -1de46d6 (origin/next-fix) os/chain_listxattr: fix leak fix +1de46d6 os/chain_listxattr: fix leak fix 6efd82c ceph: Release resource before return in BackedObject::download() e22347d ceph: Fix memory leak in chain_listxattr 905243b Fix memory leak in Backtrace::print() -be12f7f (origin/wip-6683) mon: OSDMonitor: proper error msg on invalid epoch on 'osd getmap/dump' +be12f7f mon: OSDMonitor: proper error msg on invalid epoch on 'osd getmap/dump' e5efd88 mon: MonmapMonitor: support 'mon getmap [epoch]' e11c975 (tag: v0.72-rc1) v0.72-rc1 -a3119bc (origin/wip-crush-hook) upstart, sysvinit: use ceph-crush-location hook +a3119bc upstart, sysvinit: use ceph-crush-location hook 9f6af8b ceph-crush-location: new crush location hook 1e2e429 Revert "ceph-crush-location: new crush location hook" 22ff717 Revert "upstart, sysvinit: use ceph-crush-location hook" -0c18609 (origin/wip-6605) mon: OSDMonitor: fix comparison between signed and unsigned integer warning +0c18609 mon: OSDMonitor: fix comparison between signed and unsigned integer warning e02740a mon: OSDMonitor: only allow an osd to boot iff it has the fsid on record 42c4137 mon: OSDMonitor: fix some annoying whitespace 60264f9 doc: Fixed formatting. Fixed hyperlink. 46d897a doc: fix formatting. 111a37e upstart, sysvinit: use ceph-crush-location hook fc49065 ceph-crush-location: new crush location hook -df229e5 (origin/wip-6673) mon/PGMonitor: always send pg creations after mapping +df229e5 mon/PGMonitor: always send pg creations after mapping 2181b4c mon/OSDMonitor: fix signedness warning on poolid 7a06a71 ReplicatedPG::recover_backfill: update last_backfill to max() when backfill is complete -e46d2ca (origin/wip-pr781) fix the bug ctypes.util.find_library to search for librados failed on Centos6.4. Signed-off-by: huangjun +e46d2ca fix the bug ctypes.util.find_library to search for librados failed on Centos6.4. Signed-off-by: huangjun f8fa309 ReplicatedPG: src_obcs can now be empty -3b99cd0 (origin/wip-readdirend) mds: fix readdir end check +3b99cd0 mds: fix readdir end check 6eded8a doc: Fixes to normalize header hierarchy. Tweaked IA slightly. bd507ef doc: Updated with a verified installation procedure and latest usage. -4e48dd5 (origin/wip-6585) osd/ReplicatedPG: use MIN for backfill_pos +4e48dd5 osd/ReplicatedPG: use MIN for backfill_pos 4139e75 ReplicatedPG: recover_backfill: don't prematurely adjust last_backfill ecddd12 ReplicatedPG: add empty stat when we remove an object in recover_backfill 9ec35d5 ReplicatedPG: replace backfill_pos with last_backfill_started 8774f03 PG::BackfillInfo: introduce trim_to 46dfd91 PG::BackfillInterval: use trim() in pop_front() 0a9a2d7 ReplicatedPG::prepare_transaction: info.last_backfill is inclusive -5939eac (origin/wip-5612) upstart: fail osd start if crush update fails +5939eac upstart: fail osd start if crush update fails 177e2ab init-ceph: make crush update on osd start time out -b28b64a (origin/wip-scripts) pybind: use find_library for libcephfs and librbd -d5d36d0 (origin/wip-6621) radosgw-admin: accept negative values for quota params -9d136a4 (origin/wip-obc) ReplicatedPG: no need to clear repop->*obc +b28b64a pybind: use find_library for libcephfs and librbd +d5d36d0 radosgw-admin: accept negative values for quota params +9d136a4 ReplicatedPG: no need to clear repop->*obc f58396a doc/release-notes: emperor blurb 8db03ed ReplicatedBackend: don't hold ObjectContexts in pull completion callback 5a416da ReplicatedPG: put repops even in TrimObjects @@ -8385,7 +8585,7 @@ ce33892 PG: call on_flushed on FlushEvt 9b003b3 OpRequest: move method implementations into cc c4442d7 ReplicatedPG: reset new_obs and new_snapset in execute_ctx 8a62bf1 fix the bug if we set pgp_num=-1 using "ceph osd pool set data|metadata|rbd -1" will set the pgp_num to a hunge number. -c7d975a (origin/wip-ceph-context) ceph_context: use condition variable for wake-up +c7d975a ceph_context: use condition variable for wake-up e5efc29 test: Use a portable syntax for seq(1) fbabd42 test: Change interpreter from /bin/bash to /bin/sh 0a1579d test: Use portable arguments to /usr/bin/env @@ -8400,7 +8600,7 @@ f0f6750 common: add an hobject_t::is_min() function fe30ac6 rgw: Use JSONFormatter to use keystone API 5733f9c rgw: Use keystone password to validate token too bd04a77 rgw: Adds passwd alternative to keystone admin token -8282e24 (origin/wip-6635) mon/OSDMonitor: make racing dup pool rename behave +8282e24 mon/OSDMonitor: make racing dup pool rename behave 66a9fbe common: rebuild_page_aligned sometimes rebuilds unaligned c14c98d mon: OSDMonitor: Make 'osd pool rename' idempotent 284b73b packages: ceph.spec.in is missing make as a build dependency @@ -8420,13 +8620,13 @@ e17ff19 osd/osd_types: init SnapSet::seq in ctor d2b661d os/FileStore: fix getattr return value when using omap 3a469bb os/ObjectStore: fix RMATTRS encoding 847ea60 PGLog::read_log: don't add items past backfill line to missing -3c0042c (origin/wip-rbd-parent-info) rbd.py: increase parent name size limit +3c0042c rbd.py: increase parent name size limit 87d3f88 PGMap::dirty_all should be asserting about osd_epochs, not in.osd_epochs 0388b71 Update init-rbdmap 0d326c3 ceph: tolerate commands without any child args cfe8451 rgw: eliminate one unnecessary case statement 80384a1 Update init-rbdmap -f9a6d71 (origin/wip-rgw-sync-next) radosgw-admin: remove unused function escape_str() +f9a6d71 radosgw-admin: remove unused function escape_str() ec45b3b rgw: escape bucket and object names in StreamReadRequests dd308cd rgw: move url escaping to a common place e0e8fb1 rgw: update metadata log list to match data log list @@ -8434,10 +8634,10 @@ c275912 rgw: include marker and truncated flag in data log list api e74776f cls_log: always return final marker from log_list ea816c1 rgw: skip read_policy checks for system_users 1d7c204 Add a configurable to allow bucket perms to be checked before key perms through rgw_defer_to_bucket_acls config option. This configurable defaults to an empty string. Option values include: -0e8182e (origin/wip-6620) mds: MDSMap: adjust buffer size for uint64 values with more than 5 chars +0e8182e mds: MDSMap: adjust buffer size for uint64 values with more than 5 chars af1dee5 doc: clarify that mons must have qurorum during deploy 4c8be79 rename test_arch.c --> test_arch.cc to avoid undefined reference to `__gxx_personality_v0' error. Signed-off-by: huangjun -7ba4bc4 (origin/wip-monc-ping) cli: ceph: add support to ping monitors +7ba4bc4 cli: ceph: add support to ping monitors 400cb18 pybind: rados: ping a monitor via librados 1a2e0eb pybind: rados: support ETIMEDOUT on make_ex() 2d7ccab librados: support pinging a monitor without auth via RadosClient @@ -8464,7 +8664,7 @@ df9315c doc: Removed RGW from quick start, since it is not ceph-deploy enabled. 8a36503 doc: Moved CPU Profiler docs to dev. 06ec0f6 doc: Removed Calxeda reference since it is now the same as normal install. b422d4a doc: Removed old files. Consolidated contents into new IA. -1821ad7 (origin/wip-6242-b) pybind/rados: create InterruptedOrTimeoutError exception +1821ad7 pybind/rados: create InterruptedOrTimeoutError exception 1230886 ceph: move timeout 8baeac0 ceph: catch exceptions thrown during the rados handle init d60e532 ceph: show basic help before initializing cluster connection @@ -8473,8 +8673,8 @@ b33c315 ceph: default 5 second timeout for -h e922475 ceph: print basic options before connecting 445e8c9 ceph: fixup do_help() function connection check 32a23c5 ceph.in: add emacs modeline -771b0c5 (origin/wip-6606) rgw: don't bother to call c_str() on strings passed to dump_string() -dff41cd (origin/wip-test-librbd) ceph_test_librbd: fix heap overrun +771b0c5 rgw: don't bother to call c_str() on strings passed to dump_string() +dff41cd ceph_test_librbd: fix heap overrun eb5dd55 test_ceph_argparse.py: No assert_not_in and assert_in in nose.tools Signed-off-by: huangjun ccaab2a rgw: init src_bucket_name, src_object in the S3 handler db7eb77 rgw: get rid of req_state.bucket_name @@ -8482,14 +8682,14 @@ cbf8f9a rgw: turn swift COPY into PUT 1f6b8b2 librbd: parse args to ceph_test_librbd ad4553a librbd: fix build error bd2eeb7 ceph-mon: add debug to ip selection -a107030 (origin/wip-5668-b) librbd: wire up flush counter -715d2ab (origin/wip-6603) common/BackTrace: fix memory leak +a107030 librbd: wire up flush counter +715d2ab common/BackTrace: fix memory leak 687ecd8 common/cmdparse: fix memory leak -9fa357d (origin/wip-backtrace) mds: update backtrace when old format inode is touched -34d0941 (origin/wip-6599) client: fix invalid iterator dereference in Client::trim_caps() +9fa357d mds: update backtrace when old format inode is touched +34d0941 client: fix invalid iterator dereference in Client::trim_caps() 4f299ca autoconf: fix typo on AM_COMMON_CFLAGS 94080de common: get_command_descriptions use cout instead of dout -8586c75 (origin/wip-6582) ReplicatedPG: copy: conditionally requeue copy ops when cancelled +8586c75 ReplicatedPG: copy: conditionally requeue copy ops when cancelled 6dff926 PG: add a requeue_op() function to complement requeue_ops(). 45d1846 doc: Removed references to Chef. 89995ef doc/release-notes: missed mds snaps @@ -8497,10 +8697,10 @@ a107030 (origin/wip-5668-b) librbd: wire up flush counter 5d2cf46 Update ceph-authtool.rst 7bcfe09 ceph.spec.in: Add erasure-code related files. Signed-off-by: huangjun 533626c Add Redhat init script option -3cfe9f6 (origin/wip-cache-crc) common/buffer: invalidate crc on zero, copy_in +3cfe9f6 common/buffer: invalidate crc on zero, copy_in 8ec3aed common/buffer: fix crc_map types 394ec17 common/buffer: drop unused fields -2edc04c (origin/wip-6475-gl) ceph.spec.in: Need to cread radosgw log directory. +2edc04c ceph.spec.in: Need to cread radosgw log directory. 1f291f5 qa/workunits/rest/test.py: fix mds {add,remove}_data_pool test 11fc80d doc/release-notes: link ot the changelog eb0a3b7 doc/release-notes: v0.61.9 @@ -8508,10 +8708,10 @@ d3f0c0b Makefile: fix /sbin vs /usr/sbin behavior 15ec533 OSD: check for splitting when processing recover/backfill reservations 08177f2 ceph: Remove unavailable option with clang e509cb1 (tag: v0.71) v0.71 -10b466e (origin/wip-6475) radosgw: create /var/log/radosgw in package, not init script +10b466e radosgw: create /var/log/radosgw in package, not init script 5c280a2 .gitignore: ceph-kvstore-tool 14e91bf debian, specfile: fix ceph-kvstore-tool packaging -fd6e2b8 (origin/wip-kvstore-tool) ceph-kvstore-tool: copy one leveldb store to some other place +fd6e2b8 ceph-kvstore-tool: copy one leveldb store to some other place 85914b2 ceph-kvstore-tool: calc store crc da69fa0 tools: move 'test_store_tool' to 'tools/ceph-kvstore-tool' eafdc92 common/buffer: behave when cached crc stats don't start at 0 @@ -8527,21 +8727,21 @@ a3e9344 common/buffer: explicitly init zbuf to zeros 6464516 common/buffer: instrument utilization of cached crcs 0c23a56 common/buffer: cache crcs in buffer::raw 8757775 include: add Spinlock -72ce2ef (origin/wip-4047) cls_rbd: do not make noise in osd log on rbd removal +72ce2ef cls_rbd: do not make noise in osd log on rbd removal e550e3d test_ceph_argparse: fix typo dbd6d97 test_ceph_argparse: fix mds {add,remove}_data_pool tests 5838c09 common: fix non-daemon init 1d4f501 test/filestore/run_seed_to.sh: avoid obsolete --filestore-xattr-use-omap 982511e MonCommands: note that pg dump options don't work in plaintext -c7acc2a (origin/wip-5716) rgw: gracefully handle bad root pool names +c7acc2a rgw: gracefully handle bad root pool names 488678f ceph_test_rados: fix snap remove vs rollback fix 2701231 os/LevelDBStore: handle deletion race when checking store size 92ea0d1 test/librados/cmd: fix compile error -c69e76c (origin/wip-6059) ReplicatedPG: remove the other backfill related flushes +c69e76c ReplicatedPG: remove the other backfill related flushes 3469dd8 RadosModel: send racing read on write 0246d47 ReplicatedPG: block reads on an object until the write is committed c658258 OSD: ping tphandle during pg removal -4f403c2 (origin/wip-6334) common: don't do special things for unprivileged daemons +4f403c2 common: don't do special things for unprivileged daemons 5aa237e mon, osd: send leveldb log to /dev/null by default ab8f9b1 doc: Update from user feedback. Needed to enable S3/Keystone. 4bb2a4b doc: Updated to ensure that socket name isn't static. @@ -8550,21 +8750,21 @@ bd7a7dd os/FileStore: fix fiemap double-free(s) 8b43d72 vstart.sh: create dev/ automatically 8d7dbf8 rgw: change default log level 70cc681 mon/PGMonitor: set floor below which we do not warn about objects/pg -bebbd6c (origin/wip-6553) rgw: fix authenticated users acl group check +bebbd6c rgw: fix authenticated users acl group check 08327fe mon: osd pool set syntax relaxed, modify unit tests 02b5eb2 ceph.spec.in: do not list ceph-rest-api twice; add missing cls_hello files dd33c98 osd/osd_types: generalize pg_pool_t::get_flags_string() -5abe5c2 (origin/wip-6147) mon: OSDMonitor: add 'osd pool stats' command +5abe5c2 mon: OSDMonitor: add 'osd pool stats' command 2cd5320 mon: PGMap: rework client IO rate calc and output e3ba8e8 mon: PGMap: reuse existing summary functions to output pool stats 82e3317 mon: PGMap: keep track of per-pool stats deltas -e2602c5 (origin/wip-pool) mon: make 'mon {add,remove}_data_pool ...' take pool name or id -d6146b0 (origin/wip-formatter-newlines) common/Formatter: add newline to flushed output if m_pretty +e2602c5 mon: make 'mon {add,remove}_data_pool ...' take pool name or id +d6146b0 common/Formatter: add newline to flushed output if m_pretty f2645e1 rgw: swift update obj metadata also add generic attrs 6641273 SignalHandler: fix infinite loop on BSD systems 2cc5805 doc: Removed underscore for consistency. -4b8eb4f (origin/wip-rgw-quota) radosgw-admin: add --quota-scope param to usage -f568501 (origin/wip-5025) mds: flock: fix F_GETLK +4b8eb4f radosgw-admin: add --quota-scope param to usage +f568501 mds: flock: fix F_GETLK 3c6710b qa/workunits/misc/dirfrag: make it work on ubuntu b0f49e0 ReplicatedPG.h: while there cannot be a read in progress, there may be a read blocked bf82ba9 doc: disable cephx requires auth_supported = none @@ -8585,14 +8785,14 @@ cdd851b doc: Moved installation portion to the installation section. a182535 librados: add some clarifying comments 7ef5eb0 librados: drop reference to completion in container destructor f13cc68 doc: Fixed hyperlinks. Cleanup of old references to Chef. -70250e8 (origin/wip-mon-pool-set) osd: osd_types: Output pool's flag names during dump -7113186 (origin/wip-objecter-errors) osdc/Objecter: clean up completion handlers that set *prval=0 +70250e8 osd: osd_types: Output pool's flag names during dump +7113186 osdc/Objecter: clean up completion handlers that set *prval=0 82e9330 osdc/Objecter: only make handlers set *prval if EIO 1c28869 mon: OSDMonitor: allow (un)setting 'hashpspool' flag via 'osd pool set' 2fe0d0d mon: OSDMonitor: split 'osd pool set' out of 'prepare_command' 6bbb772 test/filestore/run_seed_to_range.sh: fix -d syntax -4e2ff53 (origin/wip-truncate2) mds: avoid leaking objects when purging file. -eb381ff (origin/wip-filerecover) mds: don't decrease file size when recovering file +4e2ff53 mds: avoid leaking objects when purging file. +eb381ff mds: don't decrease file size when recovering file 1803f3b radosgw-admin: limit user bucket-level quota 18a271d mds: optimize map element dereference d8faa82 ReplicatedPG: remove unused RWTracker::ObjState::clear @@ -8604,8 +8804,8 @@ fc35807 rgw: protect against concurrent async quota updates 2e4ecc2 rgw: async quota update 5bc6327 doc: Merge cleanup. c0c332c doc: minor clean up. -007f06e (origin/wip-4405) mds: fix infinite loop of MDCache::populate_mydir(). -1f50750 (origin/wip-5992-3) ReplicatedPG: remove the other backfill related flushes +007f06e mds: fix infinite loop of MDCache::populate_mydir(). +1f50750 ReplicatedPG: remove the other backfill related flushes db6623f RadosModel: send racing read on write 2b216c3 ReplicatedPG: block reads on an object until the write is committed e8a2992 rgw: rearrange includes @@ -8614,7 +8814,7 @@ e8a2992 rgw: rearrange includes 768fb0a doc: fix openstack rbd installation command e21e573 os: stronger assert on FileStore::lfn_open 0f323bc common: unintended use of the wrong bloom_filter prototype -4b911cf (origin/wip-rval) ReplicatedPG: copy: use aggregate return code instead of individual Op return +4b911cf ReplicatedPG: copy: use aggregate return code instead of individual Op return 6da4b91 os/FileStore: fix ENOENT error code for getattrs() 71ee6d7 mon: allow MMonGetMap without authentication f279641 mon: do not put() unhandle message @@ -8647,9 +8847,9 @@ f989396 mds: properly store fragmenting dirfrags 4014ba2 mds: delete orphan dirfrags during MDS recovers a881c1d mds: journal original dirfrags for rollback e927941 doc/release-notes: v0.67.4 -3fc6cfb (origin/wip-optracker) Makefile: add include/histogram.h to noinst_HEADERS -bb9b9c8 (origin/wip-6143) common, os: Perform xattr handling based on detected fs type -b87bc23 (origin/wip-5992-2) ReplicatedPG: lock snapdir obc during write +3fc6cfb Makefile: add include/histogram.h to noinst_HEADERS +bb9b9c8 common, os: Perform xattr handling based on detected fs type +b87bc23 ReplicatedPG: lock snapdir obc during write 0c2769d PGLog: on split, leave log head alone 391a885 FileStore: make _setattrs not return -ENOENT most of the time 0c1e251 ReplicatedPG: add debugging in recover_replicas for objects added for backfill @@ -8663,7 +8863,7 @@ e73ec48 common/hobject: add is_degenerate method c8a4411 PGMap: calc_min_last_epoch_clean() will now also use osd_epochs 091809b PGMap,PGMonitor: maintain mapping of osd to recent stat epoch e3bb065 (tag: v0.70, tag: mark-v0.70-wip) v0.70 -806725a (origin/wip-start-copy) ReplicatedPG: copy: add op progression output +806725a ReplicatedPG: copy: add op progression output 639ff9f ReplicatedPG: copy: don't leak a ctx on failed copy ops 469d471 ReplicatedPG: assert that we have succeeded in do_osd_ops on copyfrom repeats f3733a2 ReplicatedPG: copy: switch CopyCallback to use a GenContext @@ -8688,7 +8888,7 @@ f1e2393 mon: Monitor: reuse 'src_is_mon' bool on dispatch b8a1488 mon: Monitor: dissociate msg handling from session & connection logic d0d61b4 mon: Monitor: drop client msg if no session exists and msg is not MAuth ed1a54e mon: Monitor: assert on absense of connection during dispatch -dce3d26 (origin/wip-5896) mon: MonmapMonitor: make 'ceph mon add' idempotent +dce3d26 mon: MonmapMonitor: make 'ceph mon add' idempotent 8cfeb83 common/bloom_filter: note that uint32_t interface requires well-mixed values 9299f50 common/bloom_filter: speed up unit tests a bit 4b23b65 common/bloom_filter: test binning fpp behavior @@ -8706,7 +8906,7 @@ a8761a5 TrackedOp: just make CephContext member public ebae077 rgw: bucket stats also dump quota info 7973d44 OpTracker: give TrackedOp a default dump() function baf1d40 rgw: init quota -721f170 (origin/wip-fuse) client: remove requests from closed MetaSession +721f170 client: remove requests from closed MetaSession 63f5814 ceph: Update FUSE_USE_VERSION from 26 to 30. f8a947d client: trim deleted inode 563517d rgw: update quota stats when needed @@ -8783,7 +8983,7 @@ b032931 PendingReleaseNotes: update regarding librados change b245ca1 os/FileStore: add sloppy crc tracking 8912462 rgw: drop async pool create completion reference 4605792 librados: pool async create / delete does not delete completion handle -7d1dc55 (origin/wip-doc-quickstart) doc: Diagram update and clarification on ceph-deploy admin results. +7d1dc55 doc: Diagram update and clarification on ceph-deploy admin results. b23718a doc: Diagram update from feedback. 245296a doc: Diagram updates from feedback. 71ba833 doc: Updated block device quick start to use ceph-deploy. OS neutral. @@ -8934,7 +9134,7 @@ ed73e0a doc: Adding context to the federated configuration guide. 157754b common/config: include --cluster in default usage message 362dba1 os, ceph_osd: Rename on_disk_version to target_version 7b7e004 os: Prior version bump should have updated this -27fb44b (origin/automake-fix-common) make: build common/secret only on linux +27fb44b make: build common/secret only on linux 8407669 os: Code conformance of os/LFNIndex.cc 0d47bf8 os: Fix typo in comment c4bcb46 common: Fix get_namespace() definition in hobject_t @@ -8948,7 +9148,7 @@ c4bcb46 common: Fix get_namespace() definition in hobject_t 67386e4 mds: don't trim stray inode from the cache. 0f3ba29 mds: remove unnecessary MDCache::maybe_eval_stray() calls cbf1f3c mds: evaluate stray when releasing inode/dentry's reference -0a43974 (origin/automake-flags) automake: add per-target AM_CPPFLAGS +0a43974 automake: add per-target AM_CPPFLAGS 11d8d75 makefile-env: separate cppflags and cflags usage 2b75abb ceph_test_rados: fix COPY_FROM completion 935eb22 ceph_test_rados: fix seq_num, improve error output @@ -8964,7 +9164,7 @@ c55d7ac doc: Updated graphic to use same name as command line examples. 5eb4db1 doc: Removed Get Involved from Quick Start. af7ad1d doc: Changed title, and removed recommendations sections. dc19d24 doc: Moved recommendations sections to Intro. -b1eeadd (origin/wip-6361) qa: workunits: cephtool: check if 'heap' commands are parseable +b1eeadd qa: workunits: cephtool: check if 'heap' commands are parseable 296f2d0 osd: OSD: add 'heap' command to known osd commands array 238fe27 mds: MDS: pass only heap profiler commands instead of the whole cmd vector c98b910 perfglue/heap_profiler.cc: expect args as first element on cmd vector @@ -8990,7 +9190,7 @@ a8bbb81 OpTracker: remove the references to "osd" in config variables 5c46fc4 doc: Made some changes and incorporated a draft diagram. 5bb7417 doc: Added draft of region/zone diagram. bcc1680 mon: fix inverted test in osd pool create -f3718c2 (origin/prctl-getname-test) code_env: use feature test for PR_GET_NAME support +f3718c2 code_env: use feature test for PR_GET_NAME support 08fe028 rgw: use bufferlist::append() instead of bufferlist::push_back() fd6646f Makefile: fix unittest_arch 5421d6d Makefile: fix unittest_crc32c @@ -9031,7 +9231,7 @@ df7c36a osd/ReplicatedPG: factor some bits into finish_copy 59147be osd: compute full ratio from kb_avail 89e8b8b ErasureCode: improve API implementation example 3966e6e ErasureCode: proofread abstract API documentation -971bf60 (origin/wip-buck-centos-core) Remove unneeded junit4 check +971bf60 Remove unneeded junit4 check e38bd8d Removing extraneous code cd6f4bc Use a loop for testing jdk paths 3cef755 fix some comments @@ -9045,7 +9245,7 @@ abd2fcd ErasureCode: fix uninitialized variable warning 4216eac rgw: try to create log pool if doesn't exist b86c068 hadoop: remove hadoop shim e7f7483 rgw: NULL terminate buffer before parsing it -3f8c969 (origin/fix-no-tcmalloc-build) make: add tmalloc lib dep in tcmalloc guard +3f8c969 make: add tmalloc lib dep in tcmalloc guard daf417f osd/ReplicatedPG.cc: Verify that recovery is truly complete 139a714 osd/OSD.cc: Use MIN() so that we don't exceed osd_recovery_max_active 4633729 mon/OSDMonitor: make busy creating pgs message more explicit @@ -9098,7 +9298,7 @@ e435468 ErasureCodeJerasure: base class for jerasure ErasureCodeInterface 661b377 os/FileStore: pass old + new object name to lfn_link deea63f osd: expose bytes used/avail via perf / asok 3bc618b qa: workunits: mon: crush_ops: test 'ceph osd crush move' -7d3799f (origin/wip-6230) mon: MonCommands: expect a CephString as 1st arg for 'osd crush move' +7d3799f mon: MonCommands: expect a CephString as 1st arg for 'osd crush move' 132e403 autoconf: use $(LIBOSD) $(LIBCOMMON) instead of libosd.a libcommon.la 4c5b3c7 doc: Syntax fix to suppress gitbuilder errors. 8bf858f doc: Removed mkcephfs reference. @@ -9275,7 +9475,7 @@ ea2fc85 SharedPtrRegistry: get_next must not delete while holding the lock af5281e common: move SharedPtrRegistry test after t.join c5b5ce1 osd: install admin socket commands after signals 76a38c3 mon/DataHealthService: preserve compat of data stats dump -f0805cb (origin/wip-6122) test/librados/cmd.cc: tolerate thrashing on pg_command tests +f0805cb test/librados/cmd.cc: tolerate thrashing on pg_command tests d571825 WBThrottle: use fdatasync instead of fsync 3528100 FileStore: add config option to disable the wbthrottle ed712c1 fix nss lib name @@ -10279,7 +10479,7 @@ d31ed95 mon/PaxosService: allow paxos service writes while paxos is updating 7a2566c rgw: remove test placement info 224130c rgw (test): remove some warnings 1b162ce rgw: initialize user system flag -7681c58 (origin/wip-rgw-geo-bucketinstance) rgw: log in the same shard for bucket entry point and instance +7681c58 rgw: log in the same shard for bucket entry point and instance d4e39a7 rgw: unlink/link don't always update entry point 5680fa1 doc/release-notes: v0.65 6673b2d rgw: tie metadata put to bucket link/unlink @@ -10382,7 +10582,7 @@ ab79ba4 cls_replica_log: integrate with RGWRados e4ef5c6 cls_replica_log: add the actual class 22a02e9 cls_replica_log: add ops for new class d1c9594 cls_replica_log: add types for new class -0deb6d4 (origin/wip-rgw-geo-enovance) rgw: lock related modifications +0deb6d4 rgw: lock related modifications 3b4c11b rgw: add max-entries, marker for log operations 714f212 osdc: re-calculate truncate_size for strip objects ebb46c4 qa/workunits/misc/multiple_rsync.sh: wtf @@ -10471,7 +10671,7 @@ f5f8314 rgw: object mtime the same for both object and bucket index 92997a4 mon: fix 'osd dump ' 8c6b24e ceph-disk: add some notes on wth we are up to 94b3700 rgw: intra-region copy, preserve mtime -29eb333 (origin/wip-log-rewrite-sam) test/osd/TestPGLog: %s/dirty()/is_dirty() +29eb333 test/osd/TestPGLog: %s/dirty()/is_dirty() f164a32 PGLog: check for dirty_to != eversion_t() and dirty_from != eversion_t::max() c6dd60d PGLog: rename dirty() to is_dirty() 2ad319b PGLog: only iterate over dirty portions of the log @@ -11255,7 +11455,7 @@ f36ec02 doc: Updated architecture document. 1c53991 fix typos and add hyperlink to peering b7d4012 typo s/come/some/ dbddffe update op added to a waiting queue or discarded -e9935f2 (origin/wip-rgw-bucketlog-3) ceph_json: fix bool decoding +e9935f2 ceph_json: fix bool decoding 67ecd75 rgw: json_encode json a bit differently afeb8f2 md/Sever.cc: fix straydn assert e69257e rgw/rgw_user.cc: fix possible NULL pointer dereference @@ -13501,7 +13701,7 @@ e51299f mds: open mydir after replay 7cd4e50 client: Wait for caps to flush when flushing metadata. 907c709 mds: Send created ino in journaled_reply cf7c3f7 client: Don't use geteuid/gid for fuse ll_create -0b66994 (origin/wip-3930) ceph.spec.in: package rbd udev rule +0b66994 ceph.spec.in: package rbd udev rule a7d15af mon: smooth pg stat rates over last N pgmaps ecda120 doc: fix overly-big fixed-width text in Firefox 3f6837e mon/PGMap: report IO rates @@ -15393,7 +15593,7 @@ a1cfe74 client: Mods to fix #3184 for messenger shutdown eb27f9a Add howto for changing man pages d37ca79 mon: update 'auth' help/usage 1d552a4 rados: fix man page -8740ddf doc: fix rpm url (part deux) +8740ddf9 doc: fix rpm url (part deux) 6c5c939 librbd: fix includes for portability c9266d6 rgw: check that realloc succeeded 4513397 ReplicatedPG: track incoming pushes with perf counters @@ -19131,7 +19331,7 @@ cf279a8 workunits: print tests pjd runs 798ef38 osd: delay pg list on a snapid until missing is empty e2a9450 obsync: add swift support to obsync d21f4ab msgr: turn up socket debug printouts -891025e udev: drop device number from name +891025e5 udev: drop device number from name a5606ca pybind: trivial fix of missing argument e4db129 crush: whitespace 808763e osdmap: initialize cluster_snapshot_epoch @@ -21028,7 +21228,7 @@ cbeedeb proflogger: Unlink our UNIX domain sockets on exit adafec4 test/proflogger.cc: read length of message first f8b4aa3 ProfLogger: write out length of message first 325951d test/proflogger: Add TeardownSetup and SimpleTest -134a680a Add test/proflogger.cc, fix ProfLogger::init() +134a680 Add test/proflogger.cc, fix ProfLogger::init() 5517b8f Rework ProfLogger 6424149 osd: remove unused variables d07c480 mon: remove unused variables @@ -22820,7 +23020,7 @@ cae43fc Makefile: drop libradosgw_a LDFLAGS 32fce3c rados_create: correctly handle null id f06f4ee librados: always call keyring_init in connect 586fc66 librados: don't call keyring_init in init_internal -9e1828af objecter: make response_data bufferlist static +9e1828a objecter: make response_data bufferlist static 251fd50 rados_create_internal calls keyring_init c548976 rados_create: set id based on parameter b1c3321 librados: add rados_create_internal @@ -25315,7 +25515,7 @@ b01cc38 rgw: set default log level to 20 6bd40ac qa: consistent snaptest-%d.sh naming 9127cd9 mds: fix uninitialized LeaseStat for null lease 5c714bf osd: log when we get marked down but aren't -7fbe1655 debug: no name symlink when explicit --log-file +7fbe165 debug: no name symlink when explicit --log-file 3de9c8d client: some whitespace cleanup 8195899 qa: add localized version of Thomas Mueller's snaptest-2.sh 2d35d24 rgw: exit after 5 seconds from SIGUSR1 anyway @@ -26481,7 +26681,7 @@ ee127d2 src/README is required 21b88da rados_bencher: Don't re-initialize passed-in pool, it breaks stuff 99e48ee osd: Fix up OSDCaps::get_pool_cap to work/make more sense 2860eea rados: add interface to change pool owners -c2e7eed6 librados: add change_pool_auid functions +c2e7eed librados: add change_pool_auid functions 1a4899d objecter: add change_pool_auid function. a33e9e7 mds: allow rdlock on replica to request sync from auth 8d9f4fa mon: Set MForward::client_caps explicitly; this fixes a bad connection deref. @@ -26909,7 +27109,7 @@ ba515fe mkcephfs: generate cephx keys during mkfs 329178d mount: set flags when getting -o sync 6ea3030 mds: fix dumpcache 6285b61 authtool: only create keyring if --create-keyring (or -c) -f40957eb config: rename 'keys file' to 'keyring' +f40957e config: rename 'keys file' to 'keyring' 3ebf9a4 filestore: optionally checkpoint with snaps 5bdb348 journal: make sure max_size is multiple of block_size 54898b3 mds: print setattr'd values with MClientRequest @@ -27154,7 +27354,7 @@ e439bd3 config: add kill arguments for mds import/export b709a72 mds: bracket mds journal events with {start,submit}_entry 95ee211 todo adbd7d8 dropped old aleung mds branch code -714a9af (origin/historic/aleung_mds_security) mon: fix allocation of low global_ids after mon restart +714a9af mon: fix allocation of low global_ids after mon restart 89603b6 test_ioctls: print preferred_osd value from GET_LAYOUT ioctl 54b8537 hash: fix whitespace fd0195a mds: set mdr->in[n] in rdlock_path_xlock_dentry @@ -27419,7 +27619,7 @@ e97c152 auth: fix verify_authorize_reply stupid 08fbca8 auth: simplify challenge key encoding 05e198b buffer: make [], hexdump const 6133f02 auth: break client/server challenge calc into helper -9ea4e4a5 auth: CEPH_AUTH_NONE auth and caps working +9ea4e4a auth: CEPH_AUTH_NONE auth and caps working e98eb90 auth: return correct auth type 8de5de0 auth: auth-none protocol stubs 0717270 auth: redefine CEPH_AUTH_NONE @@ -30099,7 +30299,7 @@ c46e1b3 (tag: v0.7) mkcephfs: btrfsctl -a between mkfs and mount f5a3d61 kclient: fix /sys/fs/ceph/mdsmap e2afd17 kclient: sysfs whitespace cleanup cbd43e3 kclient: fix patch series -c057c834 osdmap: use generic crush_build_bucket +c057c83 osdmap: use generic crush_build_bucket f05b1be kclient: fix osdmap decoding of straw buckets a098a3f kclient: sysfs, free path after build_path c90746a kclient: sysfs cleanup @@ -35836,7 +36036,7 @@ eba9e7e *** empty log message *** ee63c70 *** empty log message *** 90a1c02 *** empty log message *** bac0031 *** empty log message *** -25764921 import is currently broken +2576492 import is currently broken b247412 *** empty log message *** 61a5130 *** empty log message *** 9475610 *** empty log message *** diff --git a/ceph/ceph.spec b/ceph/ceph.spec index 795c1264..f0bd3ad4 100644 --- a/ceph/ceph.spec +++ b/ceph/ceph.spec @@ -1,28 +1,33 @@ %bcond_with ocf %bcond_without cephfs_java -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) +%if (0%{?el5} || (0%{?rhel_version} >= 500 && 0%{?rhel_version} <= 600)) %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} -################################################################################# -# common -################################################################################# +# LTTng-UST enabled on Fedora, RHEL 6, and SLES 12 +%if 0%{?fedora} || 0%{?rhel} == 6 || 0%{?suse_version} == 1315 +%global _with_lttng 1 +%endif + Name: ceph -Version: 0.94.5 +Version: 0.94.6 Release: 0%{?dist} Epoch: 1 Summary: User space components of the Ceph file system -License: GPL-2.0 +License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT Group: System Environment/Base URL: http://ceph.com/ Source0: http://ceph.com/download/%{name}-%{version}.tar.bz2 -%if 0%{?fedora} || 0%{?centos} || 0%{?rhel} +%if 0%{?fedora} || 0%{?rhel} Patch0: init-ceph.in-fedora.patch %endif +################################################################################# +# dependencies that apply across all distro families +################################################################################# Requires: librbd1 = %{epoch}:%{version}-%{release} Requires: librados2 = %{epoch}:%{version}-%{release} Requires: libcephfs1 = %{epoch}:%{version}-%{release} @@ -32,13 +37,17 @@ Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python Requires: python-requests -Requires: python-flask +Requires: grep Requires: xfsprogs +Requires: logrotate Requires: parted Requires: util-linux Requires: hdparm Requires: cryptsetup Requires(post): binutils +%if 0%{with cephfs_java} +BuildRequires: sharutils +%endif BuildRequires: gcc-c++ BuildRequires: boost-devel %if 0%{defined suse_version} @@ -49,6 +58,7 @@ BuildRequires: bzip2-devel BuildRequires: cryptsetup BuildRequires: gdbm BuildRequires: hdparm +BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libcurl-devel BuildRequires: libedit-devel @@ -57,10 +67,9 @@ BuildRequires: libuuid-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: libudev-devel BuildRequires: libtool -BuildRequires: leveldb-devel > 1.2 BuildRequires: make -BuildRequires: perl BuildRequires: parted +BuildRequires: perl BuildRequires: pkgconfig BuildRequires: python BuildRequires: python-nose @@ -77,13 +86,12 @@ BuildRequires: net-tools %endif ################################################################################# -# specific +# distro-conditional dependencies ################################################################################# -%if ! 0%{?rhel} || 0%{?fedora} -BuildRequires: sharutils -%endif - %if 0%{defined suse_version} +Requires: python-Flask +BuildRequires: net-tools +BuildRequires: libbz2-devel %if 0%{?suse_version} > 1210 Requires: gptfdisk BuildRequires: gperftools-devel @@ -91,7 +99,6 @@ BuildRequires: gperftools-devel Requires: scsirastools BuildRequires: google-perftools-devel %endif -Recommends: logrotate BuildRequires: %insserv_prereq BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel @@ -106,6 +113,18 @@ Requires(post): chkconfig Requires(preun):chkconfig Requires(preun):initscripts BuildRequires: gperftools-devel +Requires: python-flask +%endif +# lttng and babeltrace for rbd-replay-prep +%if 0%{?_with_lttng} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel +%endif +%if 0%{?suse_version} +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel +%endif %endif %description @@ -126,9 +145,6 @@ Requires: python-rados = %{epoch}:%{version}-%{release} Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python-requests -%if 0%{?rhel} || 0%{?fedora} -Requires: redhat-lsb-core -%endif # python-argparse is only needed in distros with Python 2.6 or lower %if (0%{?rhel} && 0%{?rhel} <= 6) || (0%{?suse_version} && 0%{?suse_version} <= 1110) Requires: python-argparse @@ -190,7 +206,7 @@ managers such as Pacemaker. Summary: RADOS distributed object store client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librados2 @@ -223,7 +239,7 @@ object store. Summary: RADOS striping interface Group: System Environment/Libraries License: LGPL-2.0 -Requires: librados2 = %{epoch}:%{version} +Requires: librados2 = %{epoch}:%{version}-%{release} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using @@ -245,7 +261,7 @@ Summary: RADOS block device client library Group: System Environment/Libraries License: LGPL-2.0 Requires: librados2 = %{epoch}:%{version}-%{release} -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librbd1 @@ -280,7 +296,7 @@ block device. Summary: Ceph distributed file system client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} Obsoletes: ceph-libcephfs %endif @@ -325,17 +341,13 @@ Summary: Ceph benchmarks and test tools Group: System Environment/Libraries License: LGPL-2.0 Requires: ceph-common -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -BuildRequires: lttng-ust-devel -BuildRequires: libbabeltrace-devel -%endif %description -n ceph-test This package contains Ceph benchmarks and test tools. %if 0%{with cephfs_java} %package -n libcephfs_jni1 -Summary: Java Native Interface library for CephFS Java bindings. +Summary: Java Native Interface library for CephFS Java bindings Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -346,7 +358,7 @@ This package contains the Java Native Interface library for CephFS Java bindings. %package -n libcephfs_jni1-devel -Summary: Development files for CephFS Java Native Interface library. +Summary: Development files for CephFS Java Native Interface library Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -357,7 +369,7 @@ This package contains the development files for CephFS Java Native Interface library. %package -n cephfs-java -Summary: Java libraries for the Ceph File System. +Summary: Java libraries for the Ceph File System Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -376,7 +388,7 @@ This package contains the Java libraries for the Ceph File System. %endif %package libs-compat -Summary: Meta package to include ceph libraries. +Summary: Meta package to include ceph libraries Group: System Environment/Libraries License: LGPL-2.0 Obsoletes: ceph-libs @@ -436,7 +448,7 @@ python-cephfs instead. ################################################################################# %prep %setup -q -%if 0%{?fedora} || 0%{?rhel} || 0%{?centos} +%if 0%{?fedora} || 0%{?rhel} %patch0 -p1 -b .init %endif @@ -529,8 +541,10 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/tmp mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mon mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/radosgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-rgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/radosgw %clean @@ -613,6 +627,10 @@ fi %{_libdir}/rados-classes/libcls_version.so* %dir %{_libdir}/ceph/erasure-code %{_libdir}/ceph/erasure-code/libec_*.so* +%if 0%{?_with_lttng} +%{_libdir}/libos_tp.so* +%{_libdir}/libosd_tp.so* +%endif %{_udevrulesdir}/60-ceph-partuuid-workaround.rules %{_udevrulesdir}/95-ceph-osd.rules %config %{_sysconfdir}/bash_completion.d/ceph @@ -646,6 +664,7 @@ fi %dir %{_localstatedir}/lib/ceph/bootstrap-osd %dir %{_localstatedir}/lib/ceph/bootstrap-mds %ghost %dir %{_localstatedir}/run/ceph/ +%dir %{_localstatedir}/lib/ceph/bootstrap-rgw ################################################################################# %files -n ceph-common @@ -659,6 +678,11 @@ fi %{_bindir}/ceph-crush-location %{_bindir}/rados %{_bindir}/rbd +%{_bindir}/rbd-replay +%{_bindir}/rbd-replay-many +%if 0%{?_with_lttng} +%{_bindir}/rbd-replay-prep +%endif %{_bindir}/ceph-post-file %{_bindir}/ceph-brag %{_mandir}/man8/ceph-authtool.8* @@ -670,11 +694,16 @@ fi %{_mandir}/man8/ceph.8* %{_mandir}/man8/rados.8* %{_mandir}/man8/rbd.8* +%{_mandir}/man8/rbd-replay.8* +%{_mandir}/man8/rbd-replay-many.8* +%{_mandir}/man8/rbd-replay-prep.8* %{_datadir}/ceph/known_hosts_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com.pub %dir %{_sysconfdir}/ceph/ %dir %{_localstatedir}/log/ceph/ +%dir %{_datarootdir}/ceph/ +%dir %{_libexecdir}/ceph/ %config %{_sysconfdir}/bash_completion.d/rados %config %{_sysconfdir}/bash_completion.d/rbd %config(noreplace) %{_sysconfdir}/ceph/rbdmap @@ -718,6 +747,7 @@ fi %config(noreplace) %{_sysconfdir}/logrotate.d/radosgw %config %{_sysconfdir}/bash_completion.d/radosgw-admin %dir %{_localstatedir}/log/radosgw/ +%dir %{_localstatedir}/lib/ceph/radosgw %post radosgw /sbin/ldconfig @@ -756,6 +786,9 @@ fi %files -n librados2 %defattr(-,root,root,-) %{_libdir}/librados.so.* +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so.* +%endif %post -n librados2 /sbin/ldconfig @@ -776,6 +809,9 @@ fi %{_includedir}/rados/rados_types.hpp %{_includedir}/rados/memory.h %{_libdir}/librados.so +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so +%endif ################################################################################# %files -n python-rados @@ -805,6 +841,9 @@ fi %files -n librbd1 %defattr(-,root,root,-) %{_libdir}/librbd.so.* +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so.* +%endif %post -n librbd1 /sbin/ldconfig @@ -822,6 +861,9 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_includedir}/rbd/librbd.hpp %{_includedir}/rbd/features.h %{_libdir}/librbd.so +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so +%endif ################################################################################# %files -n python-rbd @@ -883,14 +925,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_bindir}/ceph-monstore-tool %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-kvstore-tool -%{_mandir}/man8/rbd-replay.8* -%{_mandir}/man8/rbd-replay-many.8* -%{_mandir}/man8/rbd-replay-prep.8* -%{_bindir}/rbd-replay -%{_bindir}/rbd-replay-many -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -%{_bindir}/rbd-replay-prep -%endif ################################################################################# %if 0%{with cephfs_java} @@ -898,6 +932,12 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %defattr(-,root,root,-) %{_libdir}/libcephfs_jni.so.* +%post -n libcephfs_jni1 +/sbin/ldconfig + +%postun -n libcephfs_jni1 +/sbin/ldconfig + ################################################################################# %files -n libcephfs_jni1-devel %defattr(-,root,root,-) diff --git a/ceph/ceph.spec.in b/ceph/ceph.spec.in index 140e0e31..3f9a126c 100644 --- a/ceph/ceph.spec.in +++ b/ceph/ceph.spec.in @@ -1,28 +1,33 @@ %bcond_with ocf %bcond_without cephfs_java -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) +%if (0%{?el5} || (0%{?rhel_version} >= 500 && 0%{?rhel_version} <= 600)) %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} -################################################################################# -# common -################################################################################# +# LTTng-UST enabled on Fedora, RHEL 6, and SLES 12 +%if 0%{?fedora} || 0%{?rhel} == 6 || 0%{?suse_version} == 1315 +%global _with_lttng 1 +%endif + Name: ceph Version: @VERSION@ Release: @RPM_RELEASE@%{?dist} Epoch: 1 Summary: User space components of the Ceph file system -License: GPL-2.0 +License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT Group: System Environment/Base URL: http://ceph.com/ Source0: http://ceph.com/download/%{name}-%{version}.tar.bz2 -%if 0%{?fedora} || 0%{?centos} || 0%{?rhel} +%if 0%{?fedora} || 0%{?rhel} Patch0: init-ceph.in-fedora.patch %endif +################################################################################# +# dependencies that apply across all distro families +################################################################################# Requires: librbd1 = %{epoch}:%{version}-%{release} Requires: librados2 = %{epoch}:%{version}-%{release} Requires: libcephfs1 = %{epoch}:%{version}-%{release} @@ -32,13 +37,17 @@ Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python Requires: python-requests -Requires: python-flask +Requires: grep Requires: xfsprogs +Requires: logrotate Requires: parted Requires: util-linux Requires: hdparm Requires: cryptsetup Requires(post): binutils +%if 0%{with cephfs_java} +BuildRequires: sharutils +%endif BuildRequires: gcc-c++ BuildRequires: boost-devel %if 0%{defined suse_version} @@ -49,6 +58,7 @@ BuildRequires: bzip2-devel BuildRequires: cryptsetup BuildRequires: gdbm BuildRequires: hdparm +BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libcurl-devel BuildRequires: libedit-devel @@ -57,10 +67,9 @@ BuildRequires: libuuid-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: libudev-devel BuildRequires: libtool -BuildRequires: leveldb-devel > 1.2 BuildRequires: make -BuildRequires: perl BuildRequires: parted +BuildRequires: perl BuildRequires: pkgconfig BuildRequires: python BuildRequires: python-nose @@ -77,13 +86,12 @@ BuildRequires: net-tools %endif ################################################################################# -# specific +# distro-conditional dependencies ################################################################################# -%if ! 0%{?rhel} || 0%{?fedora} -BuildRequires: sharutils -%endif - %if 0%{defined suse_version} +Requires: python-Flask +BuildRequires: net-tools +BuildRequires: libbz2-devel %if 0%{?suse_version} > 1210 Requires: gptfdisk BuildRequires: gperftools-devel @@ -91,7 +99,6 @@ BuildRequires: gperftools-devel Requires: scsirastools BuildRequires: google-perftools-devel %endif -Recommends: logrotate BuildRequires: %insserv_prereq BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel @@ -106,6 +113,18 @@ Requires(post): chkconfig Requires(preun):chkconfig Requires(preun):initscripts BuildRequires: gperftools-devel +Requires: python-flask +%endif +# lttng and babeltrace for rbd-replay-prep +%if 0%{?_with_lttng} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel +%endif +%if 0%{?suse_version} +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel +%endif %endif %description @@ -126,9 +145,6 @@ Requires: python-rados = %{epoch}:%{version}-%{release} Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python-requests -%if 0%{?rhel} || 0%{?fedora} -Requires: redhat-lsb-core -%endif # python-argparse is only needed in distros with Python 2.6 or lower %if (0%{?rhel} && 0%{?rhel} <= 6) || (0%{?suse_version} && 0%{?suse_version} <= 1110) Requires: python-argparse @@ -190,7 +206,7 @@ managers such as Pacemaker. Summary: RADOS distributed object store client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librados2 @@ -223,7 +239,7 @@ object store. Summary: RADOS striping interface Group: System Environment/Libraries License: LGPL-2.0 -Requires: librados2 = %{epoch}:%{version} +Requires: librados2 = %{epoch}:%{version}-%{release} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using @@ -245,7 +261,7 @@ Summary: RADOS block device client library Group: System Environment/Libraries License: LGPL-2.0 Requires: librados2 = %{epoch}:%{version}-%{release} -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librbd1 @@ -280,7 +296,7 @@ block device. Summary: Ceph distributed file system client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} Obsoletes: ceph-libcephfs %endif @@ -325,17 +341,13 @@ Summary: Ceph benchmarks and test tools Group: System Environment/Libraries License: LGPL-2.0 Requires: ceph-common -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -BuildRequires: lttng-ust-devel -BuildRequires: libbabeltrace-devel -%endif %description -n ceph-test This package contains Ceph benchmarks and test tools. %if 0%{with cephfs_java} %package -n libcephfs_jni1 -Summary: Java Native Interface library for CephFS Java bindings. +Summary: Java Native Interface library for CephFS Java bindings Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -346,7 +358,7 @@ This package contains the Java Native Interface library for CephFS Java bindings. %package -n libcephfs_jni1-devel -Summary: Development files for CephFS Java Native Interface library. +Summary: Development files for CephFS Java Native Interface library Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -357,7 +369,7 @@ This package contains the development files for CephFS Java Native Interface library. %package -n cephfs-java -Summary: Java libraries for the Ceph File System. +Summary: Java libraries for the Ceph File System Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -376,7 +388,7 @@ This package contains the Java libraries for the Ceph File System. %endif %package libs-compat -Summary: Meta package to include ceph libraries. +Summary: Meta package to include ceph libraries Group: System Environment/Libraries License: LGPL-2.0 Obsoletes: ceph-libs @@ -436,7 +448,7 @@ python-cephfs instead. ################################################################################# %prep %setup -q -%if 0%{?fedora} || 0%{?rhel} || 0%{?centos} +%if 0%{?fedora} || 0%{?rhel} %patch0 -p1 -b .init %endif @@ -529,8 +541,10 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/tmp mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mon mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/radosgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-rgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/radosgw %clean @@ -613,6 +627,10 @@ fi %{_libdir}/rados-classes/libcls_version.so* %dir %{_libdir}/ceph/erasure-code %{_libdir}/ceph/erasure-code/libec_*.so* +%if 0%{?_with_lttng} +%{_libdir}/libos_tp.so* +%{_libdir}/libosd_tp.so* +%endif %{_udevrulesdir}/60-ceph-partuuid-workaround.rules %{_udevrulesdir}/95-ceph-osd.rules %config %{_sysconfdir}/bash_completion.d/ceph @@ -646,6 +664,7 @@ fi %dir %{_localstatedir}/lib/ceph/bootstrap-osd %dir %{_localstatedir}/lib/ceph/bootstrap-mds %ghost %dir %{_localstatedir}/run/ceph/ +%dir %{_localstatedir}/lib/ceph/bootstrap-rgw ################################################################################# %files -n ceph-common @@ -659,6 +678,11 @@ fi %{_bindir}/ceph-crush-location %{_bindir}/rados %{_bindir}/rbd +%{_bindir}/rbd-replay +%{_bindir}/rbd-replay-many +%if 0%{?_with_lttng} +%{_bindir}/rbd-replay-prep +%endif %{_bindir}/ceph-post-file %{_bindir}/ceph-brag %{_mandir}/man8/ceph-authtool.8* @@ -670,11 +694,16 @@ fi %{_mandir}/man8/ceph.8* %{_mandir}/man8/rados.8* %{_mandir}/man8/rbd.8* +%{_mandir}/man8/rbd-replay.8* +%{_mandir}/man8/rbd-replay-many.8* +%{_mandir}/man8/rbd-replay-prep.8* %{_datadir}/ceph/known_hosts_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com.pub %dir %{_sysconfdir}/ceph/ %dir %{_localstatedir}/log/ceph/ +%dir %{_datarootdir}/ceph/ +%dir %{_libexecdir}/ceph/ %config %{_sysconfdir}/bash_completion.d/rados %config %{_sysconfdir}/bash_completion.d/rbd %config(noreplace) %{_sysconfdir}/ceph/rbdmap @@ -718,6 +747,7 @@ fi %config(noreplace) %{_sysconfdir}/logrotate.d/radosgw %config %{_sysconfdir}/bash_completion.d/radosgw-admin %dir %{_localstatedir}/log/radosgw/ +%dir %{_localstatedir}/lib/ceph/radosgw %post radosgw /sbin/ldconfig @@ -756,6 +786,9 @@ fi %files -n librados2 %defattr(-,root,root,-) %{_libdir}/librados.so.* +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so.* +%endif %post -n librados2 /sbin/ldconfig @@ -776,6 +809,9 @@ fi %{_includedir}/rados/rados_types.hpp %{_includedir}/rados/memory.h %{_libdir}/librados.so +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so +%endif ################################################################################# %files -n python-rados @@ -805,6 +841,9 @@ fi %files -n librbd1 %defattr(-,root,root,-) %{_libdir}/librbd.so.* +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so.* +%endif %post -n librbd1 /sbin/ldconfig @@ -822,6 +861,9 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_includedir}/rbd/librbd.hpp %{_includedir}/rbd/features.h %{_libdir}/librbd.so +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so +%endif ################################################################################# %files -n python-rbd @@ -883,14 +925,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_bindir}/ceph-monstore-tool %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-kvstore-tool -%{_mandir}/man8/rbd-replay.8* -%{_mandir}/man8/rbd-replay-many.8* -%{_mandir}/man8/rbd-replay-prep.8* -%{_bindir}/rbd-replay -%{_bindir}/rbd-replay-many -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -%{_bindir}/rbd-replay-prep -%endif ################################################################################# %if 0%{with cephfs_java} @@ -898,6 +932,12 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %defattr(-,root,root,-) %{_libdir}/libcephfs_jni.so.* +%post -n libcephfs_jni1 +/sbin/ldconfig + +%postun -n libcephfs_jni1 +/sbin/ldconfig + ################################################################################# %files -n libcephfs_jni1-devel %defattr(-,root,root,-) diff --git a/ceph/configure b/ceph/configure index ced8866d..c2278d73 100755 --- a/ceph/configure +++ b/ceph/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ceph 0.94.5. +# Generated by GNU Autoconf 2.69 for ceph 0.94.6. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ceph' PACKAGE_TARNAME='ceph' -PACKAGE_VERSION='0.94.5' -PACKAGE_STRING='ceph 0.94.5' +PACKAGE_VERSION='0.94.6' +PACKAGE_STRING='ceph 0.94.6' PACKAGE_BUGREPORT='ceph-devel@vger.kernel.org' PACKAGE_URL='' @@ -1542,7 +1542,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.94.5 to adapt to many kinds of systems. +\`configure' configures ceph 0.94.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1613,7 +1613,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ceph 0.94.5:";; + short | recursive ) echo "Configuration of ceph 0.94.6:";; esac cat <<\_ACEOF @@ -1786,7 +1786,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ceph configure 0.94.5 +ceph configure 0.94.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2862,7 +2862,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.94.5, which was +It was created by ceph $as_me 0.94.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4979,7 +4979,7 @@ fi # Define the identity of the package. PACKAGE='ceph' - VERSION='0.94.5' + VERSION='0.94.6' cat >>confdefs.h <<_ACEOF @@ -12883,7 +12883,7 @@ fi # Define the identity of the package. PACKAGE='ceph' - VERSION='0.94.5' + VERSION='0.94.6' cat >>confdefs.h <<_ACEOF @@ -22902,7 +22902,7 @@ 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_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' @@ -22944,7 +22944,7 @@ $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+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' @@ -23956,7 +23956,7 @@ $as_echo "$am_cv_python_pyexecdir" >&6; } ac_config_headers="$ac_config_headers src/acconfig.h" -ac_config_files="$ac_config_files Makefile src/Makefile src/ocf/Makefile src/ocf/ceph src/ocf/rbd src/java/Makefile src/tracing/Makefile man/Makefile ceph.spec" +ac_config_files="$ac_config_files Makefile src/Makefile src/ocf/Makefile src/ocf/ceph src/ocf/rbd src/java/Makefile man/Makefile ceph.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -24700,7 +24700,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.94.5, which was +This file was extended by ceph $as_me 0.94.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24766,7 +24766,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.94.5 +ceph config.status 0.94.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -25279,7 +25279,6 @@ do "src/ocf/ceph") CONFIG_FILES="$CONFIG_FILES src/ocf/ceph" ;; "src/ocf/rbd") CONFIG_FILES="$CONFIG_FILES src/ocf/rbd" ;; "src/java/Makefile") CONFIG_FILES="$CONFIG_FILES src/java/Makefile" ;; - "src/tracing/Makefile") CONFIG_FILES="$CONFIG_FILES src/tracing/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "ceph.spec") CONFIG_FILES="$CONFIG_FILES ceph.spec" ;; diff --git a/ceph/configure.ac b/ceph/configure.ac index 969baed8..67ed08db 100644 --- a/ceph/configure.ac +++ b/ceph/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.94.5], [ceph-devel@vger.kernel.org]) +AC_INIT([ceph], [0.94.6], [ceph-devel@vger.kernel.org]) # Create release string. Used with VERSION for RPMs. RPM_RELEASE=0 @@ -988,7 +988,7 @@ AC_MSG_RESULT([no]) ]) AC_MSG_CHECKING([for sched.h]) -+AC_LANG_PUSH([C++]) +AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #define _GNU_SOURCE #include @@ -1005,7 +1005,7 @@ AC_DEFINE([HAVE_SCHED], 1, [Define to 1 if you have sched.h.]) ], [ AC_MSG_RESULT([no]) ]) -+AC_LANG_POP([C++]) +AC_LANG_POP([C++]) # @@ -1191,7 +1191,6 @@ AC_CONFIG_FILES([Makefile src/ocf/ceph src/ocf/rbd src/java/Makefile - src/tracing/Makefile man/Makefile ceph.spec]) AC_OUTPUT diff --git a/ceph/man/ceph-authtool.8 b/ceph/man/ceph-authtool.8 index ec4c7b28..8239e26e 100644 --- a/ceph/man/ceph-authtool.8 +++ b/ceph/man/ceph-authtool.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-AUTHTOOL" "8" "November 30, 2014" "dev" "Ceph" +.TH "CEPH-AUTHTOOL" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-authtool \- ceph keyring manipulation tool . @@ -287,7 +287,7 @@ mount \-t ceph serverhost:/ mountpoint \-o name=foo,secret=\(gaceph\-authtool \- .UNINDENT .SH AVAILABILITY .sp -\fBceph\-authtool\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBceph\-authtool\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 diff --git a/ceph/man/ceph-clsinfo.8 b/ceph/man/ceph-clsinfo.8 index 684cb9ed..29032d87 100644 --- a/ceph/man/ceph-clsinfo.8 +++ b/ceph/man/ceph-clsinfo.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-CLSINFO" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-CLSINFO" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-clsinfo \- show class object information . @@ -84,7 +84,7 @@ Shows the class architecture .UNINDENT .SH AVAILABILITY .sp -\fBceph\-clsinfo\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBceph\-clsinfo\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 diff --git a/ceph/man/ceph-conf.8 b/ceph/man/ceph-conf.8 index cbe59a02..9fb84645 100644 --- a/ceph/man/ceph-conf.8 +++ b/ceph/man/ceph-conf.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-CONF" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-CONF" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-conf \- ceph conf file tool . @@ -147,7 +147,7 @@ ceph\-conf \-c foo.conf \-L .UNINDENT .SH AVAILABILITY .sp -\fBceph\-conf\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer +\fBceph\-conf\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 diff --git a/ceph/man/ceph-create-keys.8 b/ceph/man/ceph-create-keys.8 index a634e7a1..75de8fd6 100644 --- a/ceph/man/ceph-create-keys.8 +++ b/ceph/man/ceph-create-keys.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-CREATE-KEYS" "8" "June 02, 2015" "dev" "Ceph" +.TH "CEPH-CREATE-KEYS" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-create-keys \- ceph keyring generate tool . @@ -30,6 +30,33 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. .SH SYNOPSIS .nf \fBceph\-create\-keys\fP [\-h] [\-v] [\-\-cluster \fIname\fP] \-\-id \fIid\fP @@ -40,7 +67,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] \fBceph\-create\-keys\fP is a utility to generate bootstrap keyrings using the given monitor when it is ready. .sp -it creates following auth entities (or users) +It creates following auth entities (or users) .sp \fBclient.admin\fP .INDENT 0.0 @@ -56,7 +83,7 @@ and their keys for bootstrapping corresponding services .UNINDENT .UNINDENT .sp -To list all users in cluster: +To list all users in the cluster: .INDENT 0.0 .INDENT 3.5 .sp diff --git a/ceph/man/ceph-debugpack.8 b/ceph/man/ceph-debugpack.8 index e232ee65..311ab34d 100644 --- a/ceph/man/ceph-debugpack.8 +++ b/ceph/man/ceph-debugpack.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-DEBUGPACK" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-DEBUGPACK" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-debugpack \- ceph debug packer utility . @@ -82,7 +82,7 @@ startup. .UNINDENT .SH AVAILABILITY .sp -\fBceph\-debugpack\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBceph\-debugpack\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 diff --git a/ceph/man/ceph-dencoder.8 b/ceph/man/ceph-dencoder.8 index caf626aa..6f899e4c 100644 --- a/ceph/man/ceph-dencoder.8 +++ b/ceph/man/ceph-dencoder.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-DENCODER" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-DENCODER" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-dencoder \- ceph encoder/decoder utility . @@ -100,6 +100,12 @@ Select the given type for future \fBencode\fP or \fBdecode\fP operations. .UNINDENT .INDENT 0.0 .TP +.B skip +Seek into the imported file before reading data structure, use +this with objects that have a preamble/header before the object of interest. +.UNINDENT +.INDENT 0.0 +.TP .B decode Decode the contents of the in\-memory buffer into an instance of the previously selected type. If there is an error, report it. @@ -143,7 +149,7 @@ versions of the software (for those types that support it). .UNINDENT .SH EXAMPLE .sp -Say you want to examine an attribute on an object stored by \fBceph\-osd\fP\&. You can do: +Say you want to examine an attribute on an object stored by \fBceph\-osd\fP\&. You can do this: .INDENT 0.0 .INDENT 3.5 .sp @@ -179,9 +185,29 @@ $ ceph\-dencoder type object_info_t import /tmp/a decode dump_json .fi .UNINDENT .UNINDENT +.sp +Alternatively, perhaps you wish to dump an internal CephFS metadata object, you might +do that like this: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ rados \-p metadata get mds_snaptable mds_snaptable.bin +$ ceph\-dencoder type SnapServer skip 8 import mds_snaptable.bin decode dump_json +{ "snapserver": { "last_snap": 1, + "pending_noop": [], + "snaps": [], + "need_to_purge": {}, + "pending_create": [], + "pending_destroy": []}} +.ft P +.fi +.UNINDENT +.UNINDENT .SH AVAILABILITY .sp -\fBceph\-dencoder\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBceph\-dencoder\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 diff --git a/ceph/man/ceph-deploy.8 b/ceph/man/ceph-deploy.8 index 3a9a1209..1056136f 100644 --- a/ceph/man/ceph-deploy.8 +++ b/ceph/man/ceph-deploy.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-DEPLOY" "8" "December 20, 2014" "dev" "Ceph" +.TH "CEPH-DEPLOY" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-deploy \- Ceph deployment tool . @@ -827,7 +827,7 @@ The domain for the Calamari master server. .UNINDENT .SH AVAILABILITY .sp -\fBceph\-deploy\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-deploy\fP is part of Ceph, a massively scalable, open\-source, distributed storage system. Please refer to the documentation at \fI\%http://ceph.com/ceph-deploy/docs\fP for more information. .SH SEE ALSO .sp diff --git a/ceph/man/ceph-disk.8 b/ceph/man/ceph-disk.8 index 41a5139f..ac87bdb1 100644 --- a/ceph/man/ceph-disk.8 +++ b/ceph/man/ceph-disk.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-DISK" "8" "December 18, 2014" "dev" "Ceph" +.TH "CEPH-DISK" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-disk \- Ceph disk preparation and activation utility for OSD . @@ -388,7 +388,7 @@ Provide init system to manage the OSD directory. .UNINDENT .SH AVAILABILITY .sp -\fBceph\-disk\fP is a part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-disk\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/ceph/man/ceph-fuse.8 b/ceph/man/ceph-fuse.8 index 60bc7d25..2eb87338 100644 --- a/ceph/man/ceph-fuse.8 +++ b/ceph/man/ceph-fuse.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-FUSE" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-FUSE" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-fuse \- FUSE-based client for ceph . @@ -108,7 +108,7 @@ Use root_directory as the mounted root, rather than the full Ceph tree. .UNINDENT .SH AVAILABILITY .sp -\fBceph\-fuse\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-fuse\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/ceph/man/ceph-mds.8 b/ceph/man/ceph-mds.8 index 3667a1b7..362ec553 100644 --- a/ceph/man/ceph-mds.8 +++ b/ceph/man/ceph-mds.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-MDS" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-MDS" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-mds \- ceph metadata server daemon . @@ -106,9 +106,19 @@ startup. Connect to specified monitor (instead of looking through \fBceph.conf\fP). .UNINDENT +.INDENT 0.0 +.TP +.B \-\-journal\-check +Attempt to replay the journal for MDS , then exit. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-hot\-standby +Start as a hot standby for MDS . +.UNINDENT .SH AVAILABILITY .sp -\fBceph\-mon\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to the Ceph documentation at +\fBceph\-mds\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/ceph/man/ceph-mon.8 b/ceph/man/ceph-mon.8 index 6474f767..351778b3 100644 --- a/ceph/man/ceph-mon.8 +++ b/ceph/man/ceph-mon.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-MON" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-MON" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-mon \- ceph monitor daemon . @@ -123,7 +123,7 @@ Specify a keyring for use with \fB\-\-mkfs\fP\&. .UNINDENT .SH AVAILABILITY .sp -\fBceph\-mon\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer +\fBceph\-mon\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 diff --git a/ceph/man/ceph-osd.8 b/ceph/man/ceph-osd.8 index 4e953de4..c5cca26f 100644 --- a/ceph/man/ceph-osd.8 +++ b/ceph/man/ceph-osd.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-OSD" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-OSD" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-osd \- ceph object storage daemon . @@ -155,7 +155,7 @@ Connect to specified monitor (instead of looking through .UNINDENT .SH AVAILABILITY .sp -\fBceph\-osd\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-osd\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/ceph/man/ceph-post-file.8 b/ceph/man/ceph-post-file.8 index b3ecb205..fa258587 100644 --- a/ceph/man/ceph-post-file.8 +++ b/ceph/man/ceph-post-file.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-POST-FILE" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-POST-FILE" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-post-file \- post files for ceph developers . @@ -118,7 +118,7 @@ ceph\-post\-file \-d \(aqmon data directories\(aq /var/log/ceph/mon/* .UNINDENT .SH AVAILABILITY .sp -\fBceph\-post\-file\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-post\-file\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/ceph/man/ceph-rbdnamer.8 b/ceph/man/ceph-rbdnamer.8 index d6f7fd45..77d49b27 100644 --- a/ceph/man/ceph-rbdnamer.8 +++ b/ceph/man/ceph-rbdnamer.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-RBDNAMER" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-RBDNAMER" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-rbdnamer \- udev helper to name RBD devices . @@ -79,7 +79,7 @@ KERNEL=="rbd[0\-9]*", PROGRAM="/usr/bin/ceph\-rbdnamer %n", SYMLINK+="rbd/%c{1}/ .UNINDENT .SH AVAILABILITY .sp -\fBceph\-rbdnamer\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBceph\-rbdnamer\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 diff --git a/ceph/man/ceph-rest-api.8 b/ceph/man/ceph-rest-api.8 index 41120c84..1a75ffc2 100644 --- a/ceph/man/ceph-rest-api.8 +++ b/ceph/man/ceph-rest-api.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-REST-API" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-REST-API" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-rest-api \- ceph RESTlike administration server . @@ -197,7 +197,7 @@ exception to be raised; see your WSGI server documentation for how to see those messages in case of problem. .SH AVAILABILITY .sp -\fBceph\-rest\-api\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to the Ceph documentation at +\fBceph\-rest\-api\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/ceph/man/ceph-run.8 b/ceph/man/ceph-run.8 index dab4d125..2fe581df 100644 --- a/ceph/man/ceph-run.8 +++ b/ceph/man/ceph-run.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-RUN" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-RUN" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-run \- restart daemon on core dump . @@ -75,7 +75,7 @@ that means the \fB\-f\fP option. None .SH AVAILABILITY .sp -\fBceph\-run\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-run\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/ceph/man/ceph-syn.8 b/ceph/man/ceph-syn.8 index 92aeb5a6..98e3297d 100644 --- a/ceph/man/ceph-syn.8 +++ b/ceph/man/ceph-syn.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH-SYN" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPH-SYN" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph-syn \- ceph synthetic workload generator . @@ -136,7 +136,7 @@ Recursively walk the file system (like find). .UNINDENT .SH AVAILABILITY .sp -\fBceph\-syn\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBceph\-syn\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/ceph/man/ceph.8 b/ceph/man/ceph.8 index 0ec9d538..3035dea8 100644 --- a/ceph/man/ceph.8 +++ b/ceph/man/ceph.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPH" "8" "March 22, 2015" "dev" "Ceph" +.TH "CEPH" "8" "February 04, 2016" "dev" "Ceph" .SH NAME ceph \- ceph administration tool . @@ -1395,6 +1395,20 @@ ceph osd crush show\-tunables .UNINDENT .UNINDENT .sp +Subcommand \fBtree\fP shows the crush buckets and items in a tree view. +.sp +Usage: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ceph osd crush tree +.ft P +.fi +.UNINDENT +.UNINDENT +.sp Subcommand \fBtunables\fP sets crush tunables values to . .sp Usage: diff --git a/ceph/man/cephfs.8 b/ceph/man/cephfs.8 index 767fd385..4b35e368 100644 --- a/ceph/man/cephfs.8 +++ b/ceph/man/cephfs.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CEPHFS" "8" "January 12, 2014" "dev" "Ceph" +.TH "CEPHFS" "8" "February 04, 2016" "dev" "Ceph" .SH NAME cephfs \- ceph file system options utility . @@ -109,7 +109,7 @@ Set the pool (by numeric value, not name!) to use .INDENT 0.0 .TP .B \-o \-\-osd -Set the preferred OSD to use as the primary (deprecated and ignored) +Set the preferred OSD to use as the primary .UNINDENT .SH LIMITATIONS .sp @@ -132,7 +132,7 @@ preferred OSD for placement. This feature is unsupported and ignored in modern versions of the Ceph servers; do not use it. .SH AVAILABILITY .sp -\fBcephfs\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer +\fBcephfs\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 diff --git a/ceph/man/crushtool.8 b/ceph/man/crushtool.8 index 1fad24fd..9237cc29 100644 --- a/ceph/man/crushtool.8 +++ b/ceph/man/crushtool.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CRUSHTOOL" "8" "January 12, 2014" "dev" "Ceph" +.TH "CRUSHTOOL" "8" "February 04, 2016" "dev" "Ceph" .SH NAME crushtool \- CRUSH map manipulation tool . @@ -417,7 +417,7 @@ crushtool \-c map.txt \-o crushmap .UNINDENT .SH AVAILABILITY .sp -\fBcrushtool\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBcrushtool\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 diff --git a/ceph/man/librados-config.8 b/ceph/man/librados-config.8 index 1e728c72..e48183e8 100644 --- a/ceph/man/librados-config.8 +++ b/ceph/man/librados-config.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "LIBRADOS-CONFIG" "8" "January 12, 2014" "dev" "Ceph" +.TH "LIBRADOS-CONFIG" "8" "February 04, 2016" "dev" "Ceph" .SH NAME librados-config \- display information about librados . @@ -81,7 +81,7 @@ Display the \fBlibrados\fP version code .UNINDENT .SH AVAILABILITY .sp -\fBlibrados\-config\fP is part of Ceph, a massively scalable, open-source, distributed storage system. +\fBlibrados\-config\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 diff --git a/ceph/man/monmaptool.8 b/ceph/man/monmaptool.8 index a8862e3f..9e257bcf 100644 --- a/ceph/man/monmaptool.8 +++ b/ceph/man/monmaptool.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "MONMAPTOOL" "8" "January 12, 2014" "dev" "Ceph" +.TH "MONMAPTOOL" "8" "February 04, 2016" "dev" "Ceph" .SH NAME monmaptool \- ceph monitor cluster map manipulation tool . @@ -175,7 +175,7 @@ monmaptool \-\-rm mon.a \-\-add mon.a 192.168.0.9:6789 \-\-clobber monmap .UNINDENT .SH AVAILABILITY .sp -\fBmonmaptool\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBmonmaptool\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 diff --git a/ceph/man/mount.ceph.8 b/ceph/man/mount.ceph.8 index 1159d916..f4d45366 100644 --- a/ceph/man/mount.ceph.8 +++ b/ceph/man/mount.ceph.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "MOUNT.CEPH" "8" "January 12, 2014" "dev" "Ceph" +.TH "MOUNT.CEPH" "8" "February 04, 2016" "dev" "Ceph" .SH NAME mount.ceph \- mount a ceph file system . @@ -244,7 +244,7 @@ mount \-t ceph monhost:/ /mnt/foo .UNINDENT .SH AVAILABILITY .sp -\fBmount.ceph\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBmount.ceph\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 diff --git a/ceph/man/osdmaptool.8 b/ceph/man/osdmaptool.8 index 99b7bace..4fd109f6 100644 --- a/ceph/man/osdmaptool.8 +++ b/ceph/man/osdmaptool.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "OSDMAPTOOL" "8" "January 12, 2014" "dev" "Ceph" +.TH "OSDMAPTOOL" "8" "February 04, 2016" "dev" "Ceph" .SH NAME osdmaptool \- ceph osd cluster map manipulation tool . @@ -126,7 +126,7 @@ osdmaptool \-\-print osdmap .UNINDENT .SH AVAILABILITY .sp -\fBosdmaptool\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBosdmaptool\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 diff --git a/ceph/man/rados.8 b/ceph/man/rados.8 index 94b67c91..d43dfbd6 100644 --- a/ceph/man/rados.8 +++ b/ceph/man/rados.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RADOS" "8" "May 29, 2014" "dev" "Ceph" +.TH "RADOS" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rados \- rados object storage utility . @@ -132,6 +132,9 @@ Write object name to the cluster with contents from infile. .B \fBrm\fP \fIname\fP Remove object name. .TP +.B \fBlistwatchers\fP \fIname\fP +List the watchers of object name. +.TP .B \fBls\fP \fIoutfile\fP List objects in given pool and write to outfile. .TP @@ -256,7 +259,7 @@ rados \-p foo \-s mysnap get myobject blah.txt.old .UNINDENT .SH AVAILABILITY .sp -\fBrados\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBrados\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/ceph/man/radosgw-admin.8 b/ceph/man/radosgw-admin.8 index d465d8ab..7b830903 100644 --- a/ceph/man/radosgw-admin.8 +++ b/ceph/man/radosgw-admin.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RADOSGW-ADMIN" "8" "January 12, 2014" "dev" "Ceph" +.TH "RADOSGW-ADMIN" "8" "February 04, 2016" "dev" "Ceph" .SH NAME radosgw-admin \- rados REST gateway user administration utility . @@ -131,6 +131,12 @@ Show the usage information (with optional user and date range) .TP .B \fBusage trim\fP Trim usage information (with optional user and date range) +.TP +.B \fBorphans find\fP +Init and run search for leaked rados objects +.TP +.B \fBorphans finish\fP +Clean up search for leaked rados objects .UNINDENT .SH OPTIONS .INDENT 0.0 @@ -210,6 +216,17 @@ Remove all objects before bucket removal .B \-\-lazy\-remove Defer removal of object tail .UNINDENT +.SH ORPHANS SEARCH OPTIONS +.INDENT 0.0 +.TP +.B \-\-pool +Data pool to scan for leaked rados objects +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-num\-shards +Number of shards to use for keeping the temporary scan info +.UNINDENT .SH EXAMPLES .sp Generate a new user: @@ -277,7 +294,7 @@ Show the logs of a bucket from April 1st, 2012: .sp .nf .ft C -$ radosgw\-admin log show \-\-bucket=foo \-\-date=2012=04\-01 +$ radosgw\-admin log show \-\-bucket=foo \-\-date=2012\-04\-01 .ft P .fi .UNINDENT @@ -321,7 +338,7 @@ $ radosgw\-admin usage trim \-\-uid=johnny \-\-end\-date=2012\-04\-01 .UNINDENT .SH AVAILABILITY .sp -\fBradosgw\-admin\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please +\fBradosgw\-admin\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 diff --git a/ceph/man/radosgw.8 b/ceph/man/radosgw.8 index 41e348b4..af0dbe75 100644 --- a/ceph/man/radosgw.8 +++ b/ceph/man/radosgw.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RADOSGW" "8" "January 12, 2014" "dev" "Ceph" +.TH "RADOSGW" "8" "February 04, 2016" "dev" "Ceph" .SH NAME radosgw \- rados REST gateway . @@ -83,9 +83,44 @@ Connect to specified monitor (instead of looking through .UNINDENT .INDENT 0.0 .TP +.B \-i ID, \-\-id ID +Set the ID portion of name for radosgw +.UNINDENT +.INDENT 0.0 +.TP +.B \-n TYPE.ID, \-\-name TYPE.ID +Set the rados user name for the gateway (eg. client.radosgw.gateway) +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-cluster NAME +Set the cluster name (default: ceph) +.UNINDENT +.INDENT 0.0 +.TP +.B \-d +Run in foreground, log to stderr +.UNINDENT +.INDENT 0.0 +.TP +.B \-f +Run in foreground, log to usual location +.UNINDENT +.INDENT 0.0 +.TP .B \-\-rgw\-socket\-path=path Specify a unix domain socket path. .UNINDENT +.INDENT 0.0 +.TP +.B \-\-rgw\-region=region +The region where radosgw runs +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-rgw\-zone=zone +The zone where radosgw runs +.UNINDENT .SH CONFIGURATION .sp Currently it\(aqs the easiest to use the RADOS Gateway with Apache and mod_fastcgi: @@ -229,7 +264,7 @@ threshold specify how many entries can be kept before resorting to synchronous flush. .SH AVAILABILITY .sp -\fBradosgw\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer +\fBradosgw\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 diff --git a/ceph/man/rbd-fuse.8 b/ceph/man/rbd-fuse.8 index 8e23798d..388c31b7 100644 --- a/ceph/man/rbd-fuse.8 +++ b/ceph/man/rbd-fuse.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RBD-FUSE" "8" "January 12, 2014" "dev" "Ceph" +.TH "RBD-FUSE" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rbd-fuse \- expose rbd images as files . @@ -98,7 +98,7 @@ Use \fIpool\fP as the pool to search for rbd images. Default is \fBrbd\fP\&. .UNINDENT .SH AVAILABILITY .sp -\fBrbd\-fuse\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBrbd\-fuse\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/ceph/man/rbd-replay-many.8 b/ceph/man/rbd-replay-many.8 index 1d6c0bf9..d1ee389d 100644 --- a/ceph/man/rbd-replay-many.8 +++ b/ceph/man/rbd-replay-many.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RBD-REPLAY-MANY" "8" "September 04, 2014" "dev" "Ceph" +.TH "RBD-REPLAY-MANY" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rbd-replay-many \- replay a rados block device (RBD) workload on several clients . @@ -122,7 +122,7 @@ ssh host\-1 \(aqrbd\-replay\(aq \-\-map\-image \(aqimage=image\-1\(aq \-c ceph.c .UNINDENT .SH AVAILABILITY .sp -\fBrbd\-replay\-many\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBrbd\-replay\-many\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/ceph/man/rbd-replay-prep.8 b/ceph/man/rbd-replay-prep.8 index 13ab33aa..0c2f7fd1 100644 --- a/ceph/man/rbd-replay-prep.8 +++ b/ceph/man/rbd-replay-prep.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RBD-REPLAY-PREP" "8" "August 21, 2014" "dev" "Ceph" +.TH "RBD-REPLAY-PREP" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rbd-replay-prep \- prepare captured rados block device (RBD) workloads for replay . @@ -76,6 +76,11 @@ Requests further apart than \(aqseconds\(aq seconds are assumed to be independen .B \-\-anonymize Anonymizes image and snap names. .UNINDENT +.INDENT 0.0 +.TP +.B \-\-verbose +Print all processed events to console +.UNINDENT .SH EXAMPLES .sp To prepare workload1\-trace for replay: @@ -91,7 +96,7 @@ rbd\-replay\-prep workload1\-trace/ust/uid/1000/64\-bit workload1 .UNINDENT .SH AVAILABILITY .sp -\fBrbd\-replay\-prep\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBrbd\-replay\-prep\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/ceph/man/rbd-replay.8 b/ceph/man/rbd-replay.8 index cefb925b..2bc0bf7c 100644 --- a/ceph/man/rbd-replay.8 +++ b/ceph/man/rbd-replay.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RBD-REPLAY" "8" "September 10, 2014" "dev" "Ceph" +.TH "RBD-REPLAY" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rbd-replay \- replay rados block device (RBD) workloads . @@ -129,7 +129,7 @@ rbd\-replay \-\-map\-image=prod_image=test_image workload1 .UNINDENT .SH AVAILABILITY .sp -\fBrbd\-replay\fP is part of Ceph, a massively scalable, open-source, distributed storage system. Please refer to +\fBrbd\-replay\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/ceph/man/rbd.8 b/ceph/man/rbd.8 index 4185dfc3..db6ae96b 100644 --- a/ceph/man/rbd.8 +++ b/ceph/man/rbd.8 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RBD" "8" "March 12, 2015" "dev" "Ceph" +.TH "RBD" "8" "February 04, 2016" "dev" "Ceph" .SH NAME rbd \- manage rados block device (RBD) images . @@ -395,21 +395,28 @@ The striping is controlled by three parameters: .INDENT 0.0 .TP .B order -The size of objects we stripe over is a power of two, specifically 2^[\fIorder\fP] bytes. The default -is 22, or 4 MB. +.TP +.B The size of objects we stripe over is a power of two, specifically 2^[*order*] bytes. The default +.TP +.B is 22, or 4 MB. .UNINDENT .INDENT 0.0 .TP .B stripe_unit -Each [\fIstripe_unit\fP] contiguous bytes are stored adjacently in the same object, before we move on -to the next object. +.TP +.B Each [*stripe_unit*] contiguous bytes are stored adjacently in the same object, before we move on +.TP +.B to the next object. .UNINDENT .INDENT 0.0 .TP .B stripe_count -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. +.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. .UNINDENT .sp By default, [\fIstripe_unit\fP] is the same as the object size and [\fIstripe_count\fP] is 1. Specifying a different diff --git a/ceph/src/.git_version b/ceph/src/.git_version index 31baffc5..20215e8e 100644 --- a/ceph/src/.git_version +++ b/ceph/src/.git_version @@ -1,2 +1,2 @@ -9764da52395923e0b32908d83a9f7304401fee43 -v0.94.5 +e832001feaf8c176593e0325c8298e3f16dfb403 +v0.94.6 diff --git a/ceph/src/Makefile-env.am b/ceph/src/Makefile-env.am index b9374ad5..8a00954c 100644 --- a/ceph/src/Makefile-env.am +++ b/ceph/src/Makefile-env.am @@ -5,6 +5,7 @@ DIST_SUBDIRS = BUILT_SOURCES = EXTRA_DIST = CLEANFILES = +dist_noinst_DATA = noinst_HEADERS = bin_PROGRAMS = @@ -161,10 +162,6 @@ LIBRBD_TYPES = librbd_types.la LIBKRBD = libkrbd.la LIBCEPHFS = libcephfs.la LIBERASURE_CODE = liberasure_code.la -LIBOSD_TP = tracing/libosd_tp.la -LIBRADOS_TP = tracing/librados_tp.la -LIBRBD_TP = tracing/librbd_tp.la -LIBOS_TP = tracing/libos_tp.la if WITH_LIBAIO LIBOS += -laio diff --git a/ceph/src/Makefile.am b/ceph/src/Makefile.am index b0f505a0..46aa2978 100644 --- a/ceph/src/Makefile.am +++ b/ceph/src/Makefile.am @@ -1,7 +1,7 @@ include Makefile-env.am -SUBDIRS += ocf java tracing -DIST_SUBDIRS += gmock ocf libs3 java tracing +SUBDIRS += ocf java +DIST_SUBDIRS += gmock ocf libs3 java # subdirs @@ -35,6 +35,7 @@ include rbd_replay/Makefile.am include test/Makefile.am include tools/Makefile.am include Makefile-rocksdb.am +include tracing/Makefile.am # shell scripts diff --git a/ceph/src/Makefile.in b/ceph/src/Makefile.in index 3b605557..ff34f7fa 100644 --- a/ceph/src/Makefile.in +++ b/ceph/src/Makefile.in @@ -114,11 +114,12 @@ DIST_COMMON = $(srcdir)/Makefile-env.am $(srcdir)/arch/Makefile.am \ $(srcdir)/test/Makefile-server.am $(srcdir)/tools/Makefile.am \ $(srcdir)/tools/Makefile-client.am \ $(srcdir)/tools/Makefile-server.am \ - $(srcdir)/Makefile-rocksdb.am $(srcdir)/Makefile-client.am \ - $(srcdir)/Makefile-server.am $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(srcdir)/acconfig.h.in \ - $(dist_bin_SCRIPTS) $(top_srcdir)/depcomp \ - $(am__python_PYTHON_DIST) $(top_srcdir)/py-compile \ + $(srcdir)/Makefile-rocksdb.am $(srcdir)/tracing/Makefile.am \ + $(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.am \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/acconfig.h.in $(dist_bin_SCRIPTS) \ + $(top_srcdir)/depcomp $(am__python_PYTHON_DIST) \ + $(top_srcdir)/py-compile $(dist_noinst_DATA) \ $(am__noinst_HEADERS_DIST) $(top_srcdir)/test-driver README \ TODO bin_PROGRAMS = $(am__EXEEXT_27) $(am__EXEEXT_28) $(am__EXEEXT_29) \ @@ -277,9 +278,8 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@am__append_28 = os/BtrfsFileStoreBackend.cc @ENABLE_SERVER_TRUE@@WITH_LIBXFS_TRUE@am__append_29 = os/XfsFileStoreBackend.cc @ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE@am__append_30 = os/ZFSFileStoreBackend.cc -@ENABLE_SERVER_TRUE@@WITH_LTTNG_TRUE@am__append_31 = $(LIBOS_TP) -@ENABLE_SERVER_TRUE@am__append_32 = libos.la -@ENABLE_SERVER_TRUE@am__append_33 = \ +@ENABLE_SERVER_TRUE@am__append_31 = libos.la +@ENABLE_SERVER_TRUE@am__append_32 = \ @ENABLE_SERVER_TRUE@ os/btrfs_ioctl.h \ @ENABLE_SERVER_TRUE@ os/chain_xattr.h \ @ENABLE_SERVER_TRUE@ os/BtrfsFileStoreBackend.h \ @@ -307,20 +307,19 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@ os/XfsFileStoreBackend.h \ @ENABLE_SERVER_TRUE@ os/ZFSFileStoreBackend.h -@ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@am__append_34 = libos_rocksdb.la -@ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@am__append_35 = os/RocksDBStore.h -@ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@am__append_36 = libos_rocksdb.la -@ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@am__append_37 = os/RocksDBStore.h -@ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE@am__append_38 = libos_zfs.a -@ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE@am__append_39 = os/ZFS.h -@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_40 = os/KineticStore.cc -@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_41 = -std=gnu++11 -@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_42 = -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a -@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_43 = os/KineticStore.h -@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@@WITH_OSD_TRUE@am__append_44 = -std=gnu++11 -@ENABLE_SERVER_TRUE@@WITH_LTTNG_TRUE@@WITH_OSD_TRUE@am__append_45 = $(LIBOSD_TP) -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_46 = libosd.la -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_47 = \ +@ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@am__append_33 = libos_rocksdb.la +@ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@am__append_34 = os/RocksDBStore.h +@ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@am__append_35 = libos_rocksdb.la +@ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@am__append_36 = os/RocksDBStore.h +@ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE@am__append_37 = libos_zfs.a +@ENABLE_SERVER_TRUE@@WITH_LIBZFS_TRUE@am__append_38 = os/ZFS.h +@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_39 = os/KineticStore.cc +@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_40 = -std=gnu++11 +@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_41 = -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a +@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__append_42 = os/KineticStore.h +@ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@@WITH_OSD_TRUE@am__append_43 = -std=gnu++11 +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_44 = libosd.la +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_45 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ osd/Ager.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ osd/ClassHandler.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ osd/HitSet.h \ @@ -343,19 +342,19 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ osd/Watch.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ osd/osd_types.h -@LINUX_TRUE@am__append_48 = -export-symbols-regex '.*__erasure_code_.*' +@LINUX_TRUE@am__append_46 = -export-symbols-regex '.*__erasure_code_.*' +@LINUX_TRUE@am__append_47 = -export-symbols-regex '.*__erasure_code_.*' +@HAVE_NEON_TRUE@am__append_48 = libec_jerasure_neon.la @LINUX_TRUE@am__append_49 = -export-symbols-regex '.*__erasure_code_.*' -@HAVE_NEON_TRUE@am__append_50 = libec_jerasure_neon.la +@HAVE_SSSE3_TRUE@am__append_50 = libec_jerasure_sse3.la @LINUX_TRUE@am__append_51 = -export-symbols-regex '.*__erasure_code_.*' -@HAVE_SSSE3_TRUE@am__append_52 = libec_jerasure_sse3.la +@HAVE_SSE4_PCLMUL_TRUE@am__append_52 = libec_jerasure_sse4.la @LINUX_TRUE@am__append_53 = -export-symbols-regex '.*__erasure_code_.*' -@HAVE_SSE4_PCLMUL_TRUE@am__append_54 = libec_jerasure_sse4.la +@LINUX_TRUE@am__append_54 = -export-symbols-regex '.*__erasure_code_.*' @LINUX_TRUE@am__append_55 = -export-symbols-regex '.*__erasure_code_.*' -@LINUX_TRUE@am__append_56 = -export-symbols-regex '.*__erasure_code_.*' -@LINUX_TRUE@am__append_57 = -export-symbols-regex '.*__erasure_code_.*' # ISA -@WITH_BETTER_YASM_ELF64_TRUE@am__append_58 = \ +@WITH_BETTER_YASM_ELF64_TRUE@am__append_56 = \ @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 \ @@ -366,10 +365,10 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @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 -@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@am__append_59 = -export-symbols-regex '.*__erasure_code_.*' -@WITH_BETTER_YASM_ELF64_TRUE@am__append_60 = libec_isa.la -@ENABLE_CLIENT_TRUE@am__append_61 = libclient.la -@ENABLE_CLIENT_TRUE@am__append_62 = \ +@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@am__append_57 = -export-symbols-regex '.*__erasure_code_.*' +@WITH_BETTER_YASM_ELF64_TRUE@am__append_58 = libec_isa.la +@ENABLE_CLIENT_TRUE@am__append_59 = libclient.la +@ENABLE_CLIENT_TRUE@am__append_60 = \ @ENABLE_CLIENT_TRUE@ client/Client.h \ @ENABLE_CLIENT_TRUE@ client/Dentry.h \ @ENABLE_CLIENT_TRUE@ client/Dir.h \ @@ -383,37 +382,37 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@ client/ioctl.h \ @ENABLE_CLIENT_TRUE@ client/ObjecterWriteback.h -@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@am__append_63 = libclient_fuse.la -@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@am__append_64 = client/fuse_ll.h -@ENABLE_CLIENT_TRUE@am__append_65 = ceph_test_ioctls -@WITH_TCMALLOC_TRUE@am__append_66 = perfglue/heap_profiler.cc -@WITH_TCMALLOC_TRUE@am__append_67 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -@WITH_TCMALLOC_TRUE@am__append_68 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_69 = perfglue/heap_profiler.cc -@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_70 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_71 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_FALSE@am__append_72 = perfglue/disabled_heap_profiler.cc -@WITH_PROFILER_TRUE@am__append_73 = perfglue/cpu_profiler.cc -@WITH_PROFILER_FALSE@am__append_74 = perfglue/disabled_stubs.cc -@WITH_RBD_TRUE@am__append_75 = \ +@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@am__append_61 = libclient_fuse.la +@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@am__append_62 = client/fuse_ll.h +@ENABLE_CLIENT_TRUE@am__append_63 = ceph_test_ioctls +@WITH_TCMALLOC_TRUE@am__append_64 = perfglue/heap_profiler.cc +@WITH_TCMALLOC_TRUE@am__append_65 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free +@WITH_TCMALLOC_TRUE@am__append_66 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free +@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_67 = perfglue/heap_profiler.cc +@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_68 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free +@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@am__append_69 = -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free +@WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_FALSE@am__append_70 = perfglue/disabled_heap_profiler.cc +@WITH_PROFILER_TRUE@am__append_71 = perfglue/cpu_profiler.cc +@WITH_PROFILER_FALSE@am__append_72 = perfglue/disabled_stubs.cc +@WITH_RBD_TRUE@am__append_73 = \ @WITH_RBD_TRUE@ common/blkdev.cc -@ENABLE_XIO_TRUE@am__append_76 = \ +@ENABLE_XIO_TRUE@am__append_74 = \ @ENABLE_XIO_TRUE@ common/address_helper.cc -@WITH_GOOD_YASM_ELF64_TRUE@am__append_77 = common/crc32c_intel_fast_asm.S common/crc32c_intel_fast_zero_asm.S -@LINUX_TRUE@am__append_78 = -lrt -@ENABLE_XIO_TRUE@am__append_79 = \ +@WITH_GOOD_YASM_ELF64_TRUE@am__append_75 = common/crc32c_intel_fast_asm.S common/crc32c_intel_fast_zero_asm.S +@LINUX_TRUE@am__append_76 = -lrt +@ENABLE_XIO_TRUE@am__append_77 = \ @ENABLE_XIO_TRUE@ common/address_helper.h -@LINUX_TRUE@am__append_80 = libsecret.la -@LINUX_TRUE@am__append_81 = msg/async/EventEpoll.cc -@DARWIN_TRUE@am__append_82 = msg/async/EventKqueue.cc -@FREEBSD_TRUE@am__append_83 = msg/async/EventKqueue.cc -@LINUX_TRUE@am__append_84 = msg/async/EventEpoll.h -@DARWIN_TRUE@am__append_85 = msg/async/EventKqueue.h -@FREEBSD_TRUE@am__append_86 = msg/async/EventKqueue.h -@ENABLE_XIO_TRUE@am__append_87 = \ +@LINUX_TRUE@am__append_78 = libsecret.la +@LINUX_TRUE@am__append_79 = msg/async/EventEpoll.cc +@DARWIN_TRUE@am__append_80 = msg/async/EventKqueue.cc +@FREEBSD_TRUE@am__append_81 = msg/async/EventKqueue.cc +@LINUX_TRUE@am__append_82 = msg/async/EventEpoll.h +@DARWIN_TRUE@am__append_83 = msg/async/EventKqueue.h +@FREEBSD_TRUE@am__append_84 = msg/async/EventKqueue.h +@ENABLE_XIO_TRUE@am__append_85 = \ @ENABLE_XIO_TRUE@ msg/xio/QueueStrategy.cc \ @ENABLE_XIO_TRUE@ msg/xio/XioConnection.cc \ @ENABLE_XIO_TRUE@ msg/xio/XioMessenger.cc \ @@ -421,7 +420,7 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_XIO_TRUE@ msg/xio/XioPortal.cc \ @ENABLE_XIO_TRUE@ msg/xio/XioPool.cc -@ENABLE_XIO_TRUE@am__append_88 = \ +@ENABLE_XIO_TRUE@am__append_86 = \ @ENABLE_XIO_TRUE@ msg/xio/DispatchStrategy.h \ @ENABLE_XIO_TRUE@ msg/xio/FastStrategy.h \ @ENABLE_XIO_TRUE@ msg/xio/QueueStrategy.h \ @@ -433,18 +432,17 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_XIO_TRUE@ msg/xio/XioPortal.h \ @ENABLE_XIO_TRUE@ msg/xio/XioSubmit.h -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_89 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_87 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados_internal.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados_api.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_90 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_88 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados_internal.la libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBOSDC) $(LIBCOMMON_DEPS) -@ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@am__append_91 = $(LIBRADOS_TP) -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_92 = -fvisibility=hidden -fvisibility-inlines-hidden -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_93 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL' -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_94 = librados.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_95 = \ +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_89 = -fvisibility=hidden -fvisibility-inlines-hidden +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_90 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL' +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_91 = librados.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_92 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados/snap_set_diff.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados/AioCompletionImpl.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados/IoCtxImpl.h \ @@ -453,18 +451,17 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados/RadosXattrIter.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados/ListObjectImpl.h -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_96 = -export-symbols-regex '^radosstriper_.*' -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_97 = libradosstriper.la -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_98 = \ +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_93 = -export-symbols-regex '^radosstriper_.*' +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_94 = libradosstriper.la +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_95 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ libradosstriper/RadosStriperImpl.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ libradosstriper/MultiAioCompletionImpl.h -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_99 = librbd_internal.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_96 = librbd_internal.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_api.la -@ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_100 = $(LIBRBD_TP) -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_101 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL' -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_102 = librbd.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_103 = \ +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_97 = -Xcompiler -Xlinker -Xcompiler '--exclude-libs=ALL' +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_98 = librbd.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_99 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd/AioCompletion.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd/AioRequest.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd/AsyncFlattenRequest.h \ @@ -486,16 +483,16 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ # inject rgw stuff in the decoder testcase -@ENABLE_CLIENT_TRUE@am__append_104 = \ +@ENABLE_CLIENT_TRUE@am__append_100 = \ @ENABLE_CLIENT_TRUE@ rgw/rgw_dencoder.cc \ @ENABLE_CLIENT_TRUE@ rgw/rgw_acl.cc \ @ENABLE_CLIENT_TRUE@ rgw/rgw_common.cc \ @ENABLE_CLIENT_TRUE@ rgw/rgw_env.cc \ @ENABLE_CLIENT_TRUE@ rgw/rgw_json_enc.cc -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_105 = librgw.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_101 = librgw.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcivetweb.la -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_106 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_102 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_rgw_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ @@ -511,11 +508,11 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ -lfcgi \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ -ldl -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_107 = radosgw \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_103 = radosgw \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ radosgw-admin -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_108 = ceph_rgw_multiparser \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_104 = ceph_rgw_multiparser \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_rgw_jsonparser -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_109 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_105 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/logrotate.conf \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_acl.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_acl_s3.h \ @@ -574,15 +571,15 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ civetweb/include/civetweb_conf.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ civetweb/src/md5.h -@ENABLE_CLIENT_TRUE@am__append_110 = libcls_lock_client.la \ +@ENABLE_CLIENT_TRUE@am__append_106 = libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@ libcls_refcount_client.la \ @ENABLE_CLIENT_TRUE@ libcls_rgw_client.la libcls_rbd_client.la -@ENABLE_CLIENT_TRUE@am__append_111 = libcls_version_client.a \ +@ENABLE_CLIENT_TRUE@am__append_107 = libcls_version_client.a \ @ENABLE_CLIENT_TRUE@ libcls_log_client.a \ @ENABLE_CLIENT_TRUE@ libcls_statelog_client.a \ @ENABLE_CLIENT_TRUE@ libcls_replica_log_client.a \ @ENABLE_CLIENT_TRUE@ libcls_user_client.a -@ENABLE_CLIENT_TRUE@am__append_112 = \ +@ENABLE_CLIENT_TRUE@am__append_108 = \ @ENABLE_CLIENT_TRUE@ cls/lock/cls_lock_types.h \ @ENABLE_CLIENT_TRUE@ cls/lock/cls_lock_ops.h \ @ENABLE_CLIENT_TRUE@ cls/lock/cls_lock_client.h \ @@ -609,7 +606,7 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@ cls/user/cls_user_ops.h \ @ENABLE_CLIENT_TRUE@ cls/user/cls_user_types.h -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_113 = libcls_hello.la \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_109 = libcls_hello.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_rbd.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_lock.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_refcount.la \ @@ -619,40 +616,41 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_replica_log.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_user.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libcls_rgw.la -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_114 = libcls_kvs.la -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_115 = \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_110 = libcls_kvs.la +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_111 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ key_value_store/key_value_structure.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ key_value_store/kv_flat_btree_async.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ key_value_store/kvs_arg_types.h -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_116 = librbd_replay.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_117 = rbd_replay/BoundedBuffer.hpp \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_112 = rbd_replay/ActionTypes.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/actions.hpp \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Deser.hpp \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/BoundedBuffer.hpp \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/BufferReader.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/ImageNameMap.hpp \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/ios.hpp \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/PendingIO.hpp \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd_loc.hpp \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd_replay_debug.hpp \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.hpp \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Ser.hpp - -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_118 = rbd-replay -@ENABLE_CLIENT_TRUE@@WITH_BABELTRACE_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_119 = rbd-replay-prep -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_120 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.hpp +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_113 = librbd_replay_types.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_114 = librbd_replay_types.la +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_115 = rbd-replay +@ENABLE_CLIENT_TRUE@@WITH_BABELTRACE_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_116 = rbd-replay-prep +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_117 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/test-erasure-code.sh -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_121 = test/erasure-code/ceph_erasure_code_benchmark.h \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_118 = test/erasure-code/ceph_erasure_code_benchmark.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/ceph_erasure_code_benchmark.h \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/ErasureCodeExample.h -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_122 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_123 = ceph_erasure_code_benchmark \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_119 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_120 = ceph_erasure_code_benchmark \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph_erasure_code -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_124 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_125 = ceph_erasure_code_non_regression -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_126 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_127 = libec_example.la \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_121 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_122 = ceph_erasure_code_non_regression +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_123 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_124 = libec_example.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_missing_entry_point.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_missing_version.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_hangs.la \ @@ -662,59 +660,59 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_test_jerasure_sse4.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_test_jerasure_sse3.la \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ libec_test_jerasure_generic.la -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_128 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_129 = unittest_erasure_code_plugin \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_125 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_126 = unittest_erasure_code_plugin \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_jerasure \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_plugin_jerasure -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_130 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_131 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_132 = -ldl -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_133 = unittest_erasure_code_isa \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_127 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_128 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_129 = -ldl +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_130 = unittest_erasure_code_isa \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_plugin_isa -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_134 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_135 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_136 = \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@am__append_131 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_132 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_133 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_lrc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_plugin_lrc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_shec \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_shec_all \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_shec_thread \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_erasure_code_example +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_134 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_135 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_136 = -ldl @ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_137 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_138 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_139 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_140 = -ldl -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@am__append_141 = test/messenger/message_helper.h \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@am__append_138 = test/messenger/message_helper.h \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/simple_dispatcher.h \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/xio_dispatcher.h -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_142 = -ldl -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_143 = -ldl -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@am__append_144 = simple_server \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_139 = -ldl +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_140 = -ldl +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@am__append_141 = simple_server \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ simple_client xio_server \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ xio_client -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_145 = -ldl -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_146 = -ldl -@COMPILER_HAS_VTA_TRUE@@ENABLE_CLIENT_TRUE@am__append_147 = -fno-var-tracking-assignments -@COMPILER_HAS_VTA_TRUE@@ENABLE_CLIENT_TRUE@am__append_148 = -fno-var-tracking-assignments -@ENABLE_CLIENT_TRUE@am__append_149 = ceph-dencoder -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_150 = libradostest.la \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_142 = -ldl +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@@LINUX_TRUE@am__append_143 = -ldl +@COMPILER_HAS_VTA_TRUE@@ENABLE_CLIENT_TRUE@am__append_144 = -fno-var-tracking-assignments +@COMPILER_HAS_VTA_TRUE@@ENABLE_CLIENT_TRUE@am__append_145 = -fno-var-tracking-assignments +@ENABLE_CLIENT_TRUE@am__append_146 = ceph-dencoder +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_147 = libradostest.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ librados_test_stub.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_151 = ceph_test_rados \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_148 = ceph_test_rados \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_mutate -@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@am__append_152 = test_build_librados -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_153 = \ +@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOS_TRUE@am__append_149 = test_build_librados +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_150 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_smalliobench \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_omapbench -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_154 = ceph_kvstorebench \ +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@am__append_151 = ceph_kvstorebench \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_list_parallel \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_open_pools_parallel \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_delete_pools_parallel \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_watch_notify -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_155 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_152 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ unittest_librados \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ unittest_librados_config -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_156 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_153 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_multi_stress_watch \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_rbd \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_refcount \ @@ -740,7 +738,7 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_api_tier \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_api_lock \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_test_stress_watch -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_157 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_154 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestClassHandler.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestRadosClient.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestMemRadosClient.h \ @@ -748,43 +746,40 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestMemIoCtxImpl.h \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestIoCtxImpl.h -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_158 = ceph_smalliobenchrbd \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_155 = ceph_smalliobenchrbd \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ ceph_test_librbd \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ ceph_test_librbd_api -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_159 = unittest_rbd_replay \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_156 = unittest_rbd_replay \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ unittest_librbd -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_160 = librbd_test.la -@ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_161 = $(LIBRBD_TP) -@ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_162 = $(LIBRBD_TP) -@ENABLE_CLIENT_TRUE@@WITH_LTTNG_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_163 = $(LIBRBD_TP) -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_164 = ceph_test_librbd_fsx -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_165 = libradosstripertest.la -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_166 = ceph_test_rados_striper_api_io \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_157 = librbd_test.la +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_158 = ceph_test_librbd_fsx +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_159 = libradosstripertest.la +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__append_160 = ceph_test_rados_striper_api_io \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_striper_api_aio \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ ceph_test_rados_striper_api_striping -@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_167 = test_build_libcephfs -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_168 = unittest_encoding \ +@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_161 = test_build_libcephfs +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_162 = unittest_encoding \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ unittest_base64 \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ unittest_run_cmd \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ unittest_simple_spin \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ unittest_libcephfs_config -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_169 = ceph_test_libcephfs \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_163 = ceph_test_libcephfs \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ ceph_test_c_headers -@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_170 = test_build_librgw -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_171 = ceph_test_cors \ +@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_164 = test_build_librgw +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__append_165 = ceph_test_cors \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_test_rgw_manifest \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_rgw_meta \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_rgw_log \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_rgw_opstate \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ ceph_test_cls_rgw -@ENABLE_SERVER_TRUE@am__append_172 = ceph_test_async_driver \ +@ENABLE_SERVER_TRUE@am__append_166 = ceph_test_async_driver \ @ENABLE_SERVER_TRUE@ ceph_test_msgr ceph_streamtest \ @ENABLE_SERVER_TRUE@ ceph_test_trans ceph_test_mon_workloadgen \ @ENABLE_SERVER_TRUE@ ceph_test_mon_msg ceph_perf_objectstore -@ENABLE_SERVER_TRUE@@LINUX_TRUE@am__append_173 = \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@am__append_167 = \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@ ceph_test_objectstore \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@ ceph_test_filestore -@ENABLE_SERVER_TRUE@am__append_174 = \ +@ENABLE_SERVER_TRUE@am__append_168 = \ @ENABLE_SERVER_TRUE@ ceph_test_objectstore_workloadgen \ @ENABLE_SERVER_TRUE@ ceph_test_filestore_idempotent \ @ENABLE_SERVER_TRUE@ ceph_test_filestore_idempotent_sequence \ @@ -792,48 +787,48 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @ENABLE_SERVER_TRUE@ ceph_test_object_map \ @ENABLE_SERVER_TRUE@ ceph_test_keyvaluedb_atomicity \ @ENABLE_SERVER_TRUE@ ceph_test_keyvaluedb_iterators -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@am__append_175 = ceph_smalliobenchfs \ +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@am__append_169 = ceph_smalliobenchfs \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ ceph_smalliobenchdumb \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ ceph_tpbench -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_176 = ceph_test_keys -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_177 = get_command_descriptions -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_178 = \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_170 = ceph_test_keys +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_171 = get_command_descriptions +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_172 = \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ unittest_mon_moncap \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ unittest_mon_pgmap -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_179 = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_173 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_ecbackend \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_osdscrub \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_pglog \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_hitset \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ unittest_osd_osdcap -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_180 = -ldl -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_181 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_182 = ceph_test_snap_mapper -@ENABLE_SERVER_TRUE@am__append_183 = unittest_chain_xattr \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_174 = -ldl +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_175 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_176 = ceph_test_snap_mapper +@ENABLE_SERVER_TRUE@am__append_177 = unittest_chain_xattr \ @ENABLE_SERVER_TRUE@ unittest_flatindex unittest_lfnindex -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am__append_184 = unittest_mds_authcap -@WITH_BUILD_TESTS_TRUE@am__append_185 = test_build_libcommon -@LINUX_TRUE@am__append_186 = libsystest.la -@ENABLE_ROOT_MAKE_CHECK_TRUE@am__append_187 = test/ceph-disk-root.sh -@ENABLE_ROOT_MAKE_CHECK_FALSE@am__append_188 = test/ceph-disk.sh -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_189 = \ +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am__append_178 = unittest_mds_authcap +@WITH_BUILD_TESTS_TRUE@am__append_179 = test_build_libcommon +@LINUX_TRUE@am__append_180 = libsystest.la +@ENABLE_ROOT_MAKE_CHECK_TRUE@am__append_181 = test/ceph-disk-root.sh +@ENABLE_ROOT_MAKE_CHECK_FALSE@am__append_182 = test/ceph-disk.sh +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_183 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_scratchtool \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_scratchtoolpp \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ceph_radosacl -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_190 = rados -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_191 = ceph-client-debug -@ENABLE_SERVER_TRUE@am__append_192 = ceph-osdomap-tool \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_184 = rados +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_185 = ceph-client-debug +@ENABLE_SERVER_TRUE@am__append_186 = ceph-osdomap-tool \ @ENABLE_SERVER_TRUE@ ceph-monstore-tool ceph-kvstore-tool -@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_193 = -ldl -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_194 = ceph-objectstore-tool -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@am__append_195 = cephfs-journal-tool \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@am__append_187 = -ldl +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_188 = ceph-objectstore-tool +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@am__append_189 = cephfs-journal-tool \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ cephfs-table-tool -@WITH_REST_BENCH_TRUE@am__append_196 = rest-bench -@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_TRUE@am__append_197 = -ls3 -@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__append_198 = libs3/build/lib/libs3.a -lcurl -lxml2 -@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__append_199 = libs3 -@WITH_SLIBROCKSDB_TRUE@am__append_200 = rocksdb -@WITH_SLIBROCKSDB_FALSE@am__append_201 = \ +@WITH_REST_BENCH_TRUE@am__append_190 = rest-bench +@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_TRUE@am__append_191 = -ls3 +@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__append_192 = libs3/build/lib/libs3.a -lcurl -lxml2 +@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__append_193 = libs3 +@WITH_SLIBROCKSDB_TRUE@am__append_194 = rocksdb +@WITH_SLIBROCKSDB_FALSE@am__append_195 = \ @WITH_SLIBROCKSDB_FALSE@ rocksdb/.arcconfig \ @WITH_SLIBROCKSDB_FALSE@ rocksdb/.clang-format \ @WITH_SLIBROCKSDB_FALSE@ rocksdb/.gitignore \ @@ -1202,50 +1197,64 @@ check_PROGRAMS = $(am__EXEEXT_44) $(am__EXEEXT_45) $(am__EXEEXT_46) \ @WITH_SLIBROCKSDB_FALSE@ rocksdb/utilities/ttl/db_ttl_impl.h \ @WITH_SLIBROCKSDB_FALSE@ rocksdb/utilities/ttl/ttl_test.cc -@ENABLE_CLIENT_TRUE@am__append_202 = pybind/ceph_argparse.py -@ENABLE_CLIENT_TRUE@am__append_203 = ceph-syn -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_204 = \ +@WITH_LTTNG_TRUE@am__append_196 = \ +@WITH_LTTNG_TRUE@ libosd_tp.la \ +@WITH_LTTNG_TRUE@ libos_tp.la \ +@WITH_LTTNG_TRUE@ librados_tp.la \ +@WITH_LTTNG_TRUE@ librbd_tp.la + +@WITH_LTTNG_TRUE@am__append_197 = \ +@WITH_LTTNG_TRUE@ tracing/librados.h \ +@WITH_LTTNG_TRUE@ tracing/librbd.h \ +@WITH_LTTNG_TRUE@ tracing/objectstore.h \ +@WITH_LTTNG_TRUE@ tracing/oprequest.h \ +@WITH_LTTNG_TRUE@ tracing/osd.h \ +@WITH_LTTNG_TRUE@ tracing/pg.h + +@ENABLE_CLIENT_TRUE@am__append_198 = pybind/ceph_argparse.py +@ENABLE_CLIENT_TRUE@am__append_199 = ceph-syn +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_200 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(srcdir)/bash_completion/rados \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(srcdir)/bash_completion/radosgw-admin -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_205 = pybind/rados.py -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_206 = librados-config -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_207 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_201 = pybind/rados.py +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am__append_202 = librados-config +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_203 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(srcdir)/bash_completion/rbd -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_208 = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_204 = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ ceph-rbdnamer \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd-replay-many -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_209 = pybind/rbd.py -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_210 = libkrbd.la -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_211 = rbd -@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@am__append_212 = ceph-fuse \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_205 = pybind/rbd.py +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_206 = libkrbd.la +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am__append_207 = rbd +@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@am__append_208 = ceph-fuse \ @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ rbd-fuse -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_213 = cephfs -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_214 = pybind/cephfs.py -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_215 = libcephfs.la -@ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_216 = libcephfs_jni.la -@ENABLE_SERVER_TRUE@am__append_217 = ceph-run ceph-rest-api \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_209 = cephfs +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_210 = pybind/cephfs.py +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_211 = libcephfs.la +@ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am__append_212 = libcephfs_jni.la +@ENABLE_SERVER_TRUE@am__append_213 = ceph-run ceph-rest-api \ @ENABLE_SERVER_TRUE@ ceph-debugpack ceph-crush-location \ @ENABLE_SERVER_TRUE@ ceph-coverage -@ENABLE_SERVER_TRUE@am__append_218 = pybind/ceph_rest_api.py -@ENABLE_SERVER_TRUE@am__append_219 = ceph-coverage init-ceph -@ENABLE_SERVER_TRUE@am__append_220 = init-ceph -@ENABLE_SERVER_TRUE@@LINUX_TRUE@am__append_221 = mount.ceph -@ENABLE_SERVER_TRUE@am__append_222 = mount.fuse.ceph -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_223 = ceph-mon -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_224 = \ +@ENABLE_SERVER_TRUE@am__append_214 = pybind/ceph_rest_api.py +@ENABLE_SERVER_TRUE@am__append_215 = ceph-coverage init-ceph +@ENABLE_SERVER_TRUE@am__append_216 = init-ceph +@ENABLE_SERVER_TRUE@@LINUX_TRUE@am__append_217 = mount.ceph +@ENABLE_SERVER_TRUE@am__append_218 = mount.fuse.ceph +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am__append_219 = ceph-mon +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_220 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph-disk \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph-disk-prepare \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph-disk-activate \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph-disk-udev -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_225 = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_221 = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph-clsinfo -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_226 = ceph-osd -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am__append_227 = ceph-mds +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am__append_222 = ceph-osd +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am__append_223 = ceph-mds subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_classpath.m4 \ @@ -1687,11 +1696,11 @@ am__libcommon_internal_la_SOURCES_DIST = ceph_ver.c \ 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/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 + common/ContextCompletion.cc common/TracepointProvider.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 @WITH_RBD_TRUE@am__objects_2 = common/blkdev.lo @ENABLE_XIO_TRUE@am__objects_3 = common/address_helper.lo am_libcommon_internal_la_OBJECTS = ceph_ver.lo common/DecayCounter.lo \ @@ -1721,9 +1730,10 @@ am_libcommon_internal_la_OBJECTS = ceph_ver.lo common/DecayCounter.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) $(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 \ + common/ContextCompletion.lo common/TracepointProvider.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 = @@ -2224,7 +2234,7 @@ libmsg_la_OBJECTS = $(am_libmsg_la_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@am__DEPENDENCIES_6 = \ @ENABLE_SERVER_TRUE@@WITH_KINETIC_TRUE@ libcrypto.a @ENABLE_SERVER_TRUE@libos_la_DEPENDENCIES = $(LIBOS_TYPES) \ -@ENABLE_SERVER_TRUE@ $(am__append_31) $(am__DEPENDENCIES_6) +@ENABLE_SERVER_TRUE@ $(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 \ @@ -2275,6 +2285,17 @@ libos_rocksdb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(LDFLAGS) -o $@ @ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@am_libos_rocksdb_la_rpath = @ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@am_libos_rocksdb_la_rpath = +libos_tp_la_DEPENDENCIES = +am__libos_tp_la_SOURCES_DIST = tracing/objectstore.c +@WITH_LTTNG_TRUE@am_libos_tp_la_OBJECTS = \ +@WITH_LTTNG_TRUE@ tracing/libos_tp_la-objectstore.lo +nodist_libos_tp_la_OBJECTS = +libos_tp_la_OBJECTS = $(am_libos_tp_la_OBJECTS) \ + $(nodist_libos_tp_la_OBJECTS) +libos_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libos_tp_la_CFLAGS) \ + $(CFLAGS) $(libos_tp_la_LDFLAGS) $(LDFLAGS) -o $@ +@WITH_LTTNG_TRUE@am_libos_tp_la_rpath = -rpath $(libdir) libos_types_la_LIBADD = am_libos_types_la_OBJECTS = os/libos_types_la-Transaction.lo libos_types_la_OBJECTS = $(am_libos_types_la_OBJECTS) @@ -2286,8 +2307,7 @@ libos_types_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSDC) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_5) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD_TYPES) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOS_TYPES) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_45) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOS_TYPES) 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 \ @@ -2317,6 +2337,20 @@ libosd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libosd_la_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_libosd_la_rpath = +libosd_tp_la_DEPENDENCIES = +am__libosd_tp_la_SOURCES_DIST = tracing/oprequest.c tracing/osd.c \ + tracing/pg.c +@WITH_LTTNG_TRUE@am_libosd_tp_la_OBJECTS = \ +@WITH_LTTNG_TRUE@ tracing/libosd_tp_la-oprequest.lo \ +@WITH_LTTNG_TRUE@ tracing/libosd_tp_la-osd.lo \ +@WITH_LTTNG_TRUE@ tracing/libosd_tp_la-pg.lo +nodist_libosd_tp_la_OBJECTS = +libosd_tp_la_OBJECTS = $(am_libosd_tp_la_OBJECTS) \ + $(nodist_libosd_tp_la_OBJECTS) +libosd_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libosd_tp_la_CFLAGS) \ + $(CFLAGS) $(libosd_tp_la_LDFLAGS) $(LDFLAGS) -o $@ +@WITH_LTTNG_TRUE@am_libosd_tp_la_rpath = -rpath $(libdir) 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 @@ -2346,7 +2380,7 @@ libperfglue_la_OBJECTS = $(am_libperfglue_la_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBOSDC) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_3) -am__DEPENDENCIES_8 = $(am__DEPENDENCIES_7) $(am__append_91) +am__DEPENDENCIES_8 = $(am__DEPENDENCIES_7) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@librados_la_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_8) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @@ -2398,8 +2432,20 @@ am__librados_test_stub_la_SOURCES_DIST = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados_test_stub/TestWatchNotify.lo librados_test_stub_la_OBJECTS = $(am_librados_test_stub_la_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_librados_test_stub_la_rpath = -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@am__DEPENDENCIES_9 = $(am__DEPENDENCIES_8) -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_DEPENDENCIES = $(am__DEPENDENCIES_9) +librados_tp_la_DEPENDENCIES = +am__librados_tp_la_SOURCES_DIST = tracing/librados.c +@WITH_LTTNG_TRUE@am_librados_tp_la_OBJECTS = \ +@WITH_LTTNG_TRUE@ tracing/librados_tp_la-librados.lo +nodist_librados_tp_la_OBJECTS = +librados_tp_la_OBJECTS = $(am_librados_tp_la_OBJECTS) \ + $(nodist_librados_tp_la_OBJECTS) +librados_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(librados_tp_la_CFLAGS) $(CFLAGS) $(librados_tp_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +@WITH_LTTNG_TRUE@am_librados_tp_la_rpath = -rpath $(libdir) +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_DEPENDENCIES = $(LIBRADOSSTRIPER_DEPS) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) am__libradosstriper_la_SOURCES_DIST = \ libradosstriper/libradosstriper.cc \ libradosstriper/RadosStriperImpl.cc \ @@ -2444,8 +2490,7 @@ libradostest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_2) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_100) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_2) am__librbd_la_SOURCES_DIST = librbd/librbd.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_la_OBJECTS = librbd/librbd_la-librbd.lo librbd_la_OBJECTS = $(am_librbd_la_OBJECTS) @@ -2484,34 +2529,38 @@ am__librbd_internal_la_SOURCES_DIST = librbd/AioCompletion.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd/ObjectMap.lo librbd_internal_la_OBJECTS = $(am_librbd_internal_la_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_internal_la_rpath = -am__DEPENDENCIES_10 = $(LIBGLOBAL) $(LIBCOMMON) $(am__DEPENDENCIES_1) \ +am__DEPENDENCIES_9 = $(LIBGLOBAL) $(LIBCOMMON) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_la_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) am__librbd_replay_la_SOURCES_DIST = rbd_replay/actions.cc \ - rbd_replay/Deser.cc rbd_replay/ImageNameMap.cc \ + rbd_replay/BufferReader.cc rbd_replay/ImageNameMap.cc \ rbd_replay/PendingIO.cc rbd_replay/rbd_loc.cc \ - rbd_replay/Replayer.cc rbd_replay/Ser.cc + rbd_replay/Replayer.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_la_OBJECTS = rbd_replay/actions.lo \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Deser.lo \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/BufferReader.lo \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/ImageNameMap.lo \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/PendingIO.lo \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd_loc.lo \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.lo \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Ser.lo +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.lo librbd_replay_la_OBJECTS = $(am_librbd_replay_la_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_la_rpath = @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_ios_la_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la am__librbd_replay_ios_la_SOURCES_DIST = rbd_replay/ios.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_ios_la_OBJECTS = rbd_replay/ios.lo librbd_replay_ios_la_OBJECTS = $(am_librbd_replay_ios_la_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_ios_la_rpath = +librbd_replay_types_la_LIBADD = +am__librbd_replay_types_la_SOURCES_DIST = rbd_replay/ActionTypes.cc +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_types_la_OBJECTS = rbd_replay/ActionTypes.lo +librbd_replay_types_la_OBJECTS = $(am_librbd_replay_types_la_OBJECTS) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_replay_types_la_rpath = librbd_test_la_LIBADD = am__librbd_test_la_SOURCES_DIST = test/librbd/test_fixture.cc \ test/librbd/test_support.cc test/librbd/test_librbd.cc \ @@ -2529,6 +2578,17 @@ librbd_test_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(librbd_test_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_librbd_test_la_rpath = +librbd_tp_la_DEPENDENCIES = +am__librbd_tp_la_SOURCES_DIST = tracing/librbd.c +@WITH_LTTNG_TRUE@am_librbd_tp_la_OBJECTS = \ +@WITH_LTTNG_TRUE@ tracing/librbd_tp_la-librbd.lo +nodist_librbd_tp_la_OBJECTS = +librbd_tp_la_OBJECTS = $(am_librbd_tp_la_OBJECTS) \ + $(nodist_librbd_tp_la_OBJECTS) +librbd_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(librbd_tp_la_CFLAGS) \ + $(CFLAGS) $(librbd_tp_la_LDFLAGS) $(LDFLAGS) -o $@ +@WITH_LTTNG_TRUE@am_librbd_tp_la_rpath = -rpath $(libdir) librbd_types_la_LIBADD = am_librbd_types_la_OBJECTS = librbd/WatchNotifyTypes.lo librbd_types_la_OBJECTS = $(am_librbd_types_la_OBJECTS) @@ -2588,7 +2648,7 @@ libsecret_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_libsecret_la_OBJECTS = common/secret.lo libsecret_la_OBJECTS = $(am_libsecret_la_OBJECTS) @LINUX_TRUE@am_libsecret_la_rpath = -@LINUX_TRUE@libsystest_la_DEPENDENCIES = $(am__DEPENDENCIES_10) +@LINUX_TRUE@libsystest_la_DEPENDENCIES = $(am__DEPENDENCIES_9) am__libsystest_la_SOURCES_DIST = test/system/cross_process_sem.cc \ test/system/systest_runnable.cc \ test/system/systest_settings.cc @@ -2766,16 +2826,16 @@ 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_10) $(LIBCOMMON) +ceph_authtool_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON) am__ceph_client_debug_SOURCES_DIST = tools/ceph-client-debug.cc @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am_ceph_client_debug_OBJECTS = tools/ceph-client-debug.$(OBJEXT) ceph_client_debug_OBJECTS = $(am_ceph_client_debug_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ceph_client_debug_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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_10) $(LIBCOMMON) +ceph_conf_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON) am__ceph_dencoder_SOURCES_DIST = test/encoding/ceph_dencoder.cc \ mds/Capability.cc mds/MDS.cc mds/Beacon.cc mds/locks.c \ mds/journal.cc mds/Server.cc mds/Mutation.cc mds/MDCache.cc \ @@ -2835,7 +2895,7 @@ ceph_dencoder_OBJECTS = $(am_ceph_dencoder_OBJECTS) @ENABLE_CLIENT_TRUE@ceph_dencoder_DEPENDENCIES = $(LIBRBD_TYPES) \ @ENABLE_CLIENT_TRUE@ $(LIBOSD_TYPES) $(LIBOS_TYPES) \ @ENABLE_CLIENT_TRUE@ $(LIBMON_TYPES) $(DENCODER_DEPS) \ -@ENABLE_CLIENT_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@ $(am__DEPENDENCIES_9) ceph_dencoder_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_dencoder_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ @@ -2844,13 +2904,13 @@ am__ceph_fuse_SOURCES_DIST = ceph_fuse.cc @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@am_ceph_fuse_OBJECTS = ceph_fuse.$(OBJEXT) ceph_fuse_OBJECTS = $(am_ceph_fuse_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ceph_fuse_DEPENDENCIES = $(LIBCLIENT_FUSE) \ -@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_kvstore_tool_SOURCES_DIST = tools/ceph_kvstore_tool.cc @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) @ENABLE_SERVER_TRUE@ceph_kvstore_tool_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_kvstore_tool_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_kvstore_tool_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -2859,25 +2919,25 @@ am__ceph_mds_SOURCES_DIST = ceph_mds.cc @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am_ceph_mds_OBJECTS = \ @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ ceph_mds.$(OBJEXT) ceph_mds_OBJECTS = $(am_ceph_mds_OBJECTS) -am__DEPENDENCIES_11 = libperfglue.la $(am__DEPENDENCIES_1) \ +am__DEPENDENCIES_10 = libperfglue.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) -am__DEPENDENCIES_12 = libmds.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_11) +am__DEPENDENCIES_11 = libmds.la $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_10) @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ceph_mds_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_12) \ +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_11) \ @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(LIBOSDC) \ -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(LIBCOMMON) am__ceph_mon_SOURCES_DIST = ceph_mon.cc @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am_ceph_mon_OBJECTS = \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ ceph_mon.$(OBJEXT) ceph_mon_OBJECTS = $(am_ceph_mon_OBJECTS) -am__DEPENDENCIES_13 = libmon.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_11) +am__DEPENDENCIES_12 = libmon.la $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_10) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ceph_mon_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_13) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_12) \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(LIBCOMMON) am__ceph_monstore_tool_SOURCES_DIST = tools/ceph_monstore_tool.cc @ENABLE_SERVER_TRUE@am_ceph_monstore_tool_OBJECTS = \ @@ -2885,18 +2945,18 @@ am__ceph_monstore_tool_SOURCES_DIST = tools/ceph_monstore_tool.cc ceph_monstore_tool_OBJECTS = $(am_ceph_monstore_tool_OBJECTS) @ENABLE_SERVER_TRUE@ceph_monstore_tool_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_1) am__ceph_objectstore_tool_SOURCES_DIST = \ tools/ceph_objectstore_tool.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_ceph_objectstore_tool_OBJECTS = tools/ceph_objectstore_tool.$(OBJEXT) ceph_objectstore_tool_OBJECTS = $(am_ceph_objectstore_tool_OBJECTS) -am__DEPENDENCIES_14 = libosd.la $(am__DEPENDENCIES_1) $(LIBOSDC) \ - $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_11) +am__DEPENDENCIES_13 = libosd.la $(am__DEPENDENCIES_1) $(LIBOSDC) \ + $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_10) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_objectstore_tool_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBRADOS) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) @@ -2905,8 +2965,8 @@ am__ceph_osd_SOURCES_DIST = ceph_osd.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ceph_osd.$(OBJEXT) ceph_osd_OBJECTS = $(am_ceph_osd_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_osd_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) am__ceph_osdomap_tool_SOURCES_DIST = tools/ceph_osdomap_tool.cc @ENABLE_SERVER_TRUE@am_ceph_osdomap_tool_OBJECTS = \ @@ -2914,26 +2974,26 @@ am__ceph_osdomap_tool_SOURCES_DIST = tools/ceph_osdomap_tool.cc ceph_osdomap_tool_OBJECTS = $(am_ceph_osdomap_tool_OBJECTS) @ENABLE_SERVER_TRUE@ceph_osdomap_tool_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_1) am__ceph_syn_SOURCES_DIST = ceph_syn.cc client/SyntheticClient.cc @ENABLE_CLIENT_TRUE@am_ceph_syn_OBJECTS = ceph_syn.$(OBJEXT) \ @ENABLE_CLIENT_TRUE@ client/SyntheticClient.$(OBJEXT) ceph_syn_OBJECTS = $(am_ceph_syn_OBJECTS) @ENABLE_CLIENT_TRUE@ceph_syn_DEPENDENCIES = $(LIBCLIENT) \ -@ENABLE_CLIENT_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@ $(am__DEPENDENCIES_9) am_ceph_bench_log_OBJECTS = test/bench_log.$(OBJEXT) ceph_bench_log_OBJECTS = $(am_ceph_bench_log_OBJECTS) -ceph_bench_log_DEPENDENCIES = $(am__DEPENDENCIES_10) +ceph_bench_log_DEPENDENCIES = $(am__DEPENDENCIES_9) am__ceph_erasure_code_SOURCES_DIST = \ test/erasure-code/ceph_erasure_code.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_ceph_erasure_code_OBJECTS = test/erasure-code/ceph_erasure_code.$(OBJEXT) ceph_erasure_code_OBJECTS = $(am_ceph_erasure_code_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_erasure_code_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) am__ceph_erasure_code_benchmark_SOURCES_DIST = \ erasure-code/ErasureCode.cc \ @@ -2943,10 +3003,10 @@ am__ceph_erasure_code_benchmark_SOURCES_DIST = \ ceph_erasure_code_benchmark_OBJECTS = \ $(am_ceph_erasure_code_benchmark_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_erasure_code_benchmark_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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 @@ -2954,10 +3014,10 @@ am__ceph_erasure_code_non_regression_SOURCES_DIST = \ ceph_erasure_code_non_regression_OBJECTS = \ $(am_ceph_erasure_code_non_regression_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_erasure_code_non_regression_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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 @@ -2966,47 +3026,47 @@ am__ceph_kvstorebench_SOURCES_DIST = test/kv_store_bench.cc \ ceph_kvstorebench_OBJECTS = $(am_ceph_kvstorebench_OBJECTS) @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ceph_kvstorebench_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_multi_stress_watch_SOURCES_DIST = test/multi_stress_watch.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_ceph_multi_stress_watch_OBJECTS = test/multi_stress_watch.$(OBJEXT) ceph_multi_stress_watch_OBJECTS = \ $(am_ceph_multi_stress_watch_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_multi_stress_watch_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(RADOS_TEST_LDADD) am__ceph_omapbench_SOURCES_DIST = test/omap_bench.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_ceph_omapbench_OBJECTS = test/omap_bench.$(OBJEXT) ceph_omapbench_OBJECTS = $(am_ceph_omapbench_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_omapbench_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_perf_objectstore_SOURCES_DIST = \ test/objectstore/ObjectStoreTransactionBenchmark.cc @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_15 = $(top_builddir)/src/gmock/lib/libgmock_main.la \ +am__DEPENDENCIES_14 = $(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) @ENABLE_SERVER_TRUE@ceph_perf_objectstore_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) 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_10) +ceph_psim_DEPENDENCIES = $(am__DEPENDENCIES_9) am__ceph_radosacl_SOURCES_DIST = tools/radosacl.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_ceph_radosacl_OBJECTS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ tools/radosacl.$(OBJEXT) ceph_radosacl_OBJECTS = $(am_ceph_radosacl_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_radosacl_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_rgw_jsonparser_SOURCES_DIST = rgw/rgw_jsonparser.cc \ rgw/rgw_common.cc rgw/rgw_env.cc rgw/rgw_json_enc.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am_ceph_rgw_jsonparser_OBJECTS = rgw/rgw_jsonparser.$(OBJEXT) \ @@ -3014,8 +3074,8 @@ am__ceph_rgw_jsonparser_SOURCES_DIST = rgw/rgw_jsonparser.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_env.$(OBJEXT) \ @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_16 = librgw.la $(am__DEPENDENCIES_1) -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__DEPENDENCIES_17 = $(LIBRADOS) \ +am__DEPENDENCIES_15 = librgw.la $(am__DEPENDENCIES_1) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am__DEPENDENCIES_16 = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_rgw_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_statelog_client.a \ @@ -3024,28 +3084,28 @@ am__DEPENDENCIES_16 = librgw.la $(am__DEPENDENCIES_1) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_refcount_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_version_client.a -am__DEPENDENCIES_18 = $(am__DEPENDENCIES_17) -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_rgw_jsonparser_DEPENDENCIES = $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_18) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +am__DEPENDENCIES_17 = $(am__DEPENDENCIES_16) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_rgw_jsonparser_DEPENDENCIES = $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_17) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_rgw_multiparser_SOURCES_DIST = rgw/rgw_multiparser.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am_ceph_rgw_multiparser_OBJECTS = rgw/rgw_multiparser.$(OBJEXT) ceph_rgw_multiparser_OBJECTS = $(am_ceph_rgw_multiparser_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_rgw_multiparser_DEPENDENCIES = $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_18) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_rgw_multiparser_DEPENDENCIES = $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_17) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_scratchtool_SOURCES_DIST = tools/scratchtool.c @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_ceph_scratchtool_OBJECTS = tools/scratchtool.$(OBJEXT) ceph_scratchtool_OBJECTS = $(am_ceph_scratchtool_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_scratchtool_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_scratchtoolpp_SOURCES_DIST = tools/scratchtoolpp.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_ceph_scratchtoolpp_OBJECTS = tools/scratchtoolpp.$(OBJEXT) ceph_scratchtoolpp_OBJECTS = $(am_ceph_scratchtoolpp_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_scratchtoolpp_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) 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 @@ -3057,7 +3117,7 @@ ceph_smalliobench_OBJECTS = $(am_ceph_smalliobench_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_smalliobench_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) 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 @@ -3069,7 +3129,7 @@ ceph_smalliobenchdumb_OBJECTS = $(am_ceph_smalliobenchdumb_OBJECTS) @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ceph_smalliobenchdumb_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_smalliobenchfs_SOURCES_DIST = \ test/bench/small_io_bench_fs.cc \ test/bench/testfilestore_backend.cc \ @@ -3082,7 +3142,7 @@ ceph_smalliobenchfs_OBJECTS = $(am_ceph_smalliobenchfs_OBJECTS) @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ceph_smalliobenchfs_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) 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 @@ -3095,22 +3155,22 @@ ceph_smalliobenchrbd_OBJECTS = $(am_ceph_smalliobenchrbd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) am__ceph_streamtest_SOURCES_DIST = test/streamtest.cc @ENABLE_SERVER_TRUE@am_ceph_streamtest_OBJECTS = \ @ENABLE_SERVER_TRUE@ test/streamtest.$(OBJEXT) ceph_streamtest_OBJECTS = $(am_ceph_streamtest_OBJECTS) @ENABLE_SERVER_TRUE@ceph_streamtest_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_async_driver_SOURCES_DIST = \ test/msgr/test_async_driver.cc @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) @ENABLE_SERVER_TRUE@ceph_test_async_driver_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) 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) \ @@ -3136,8 +3196,8 @@ ceph_test_cls_hello_OBJECTS = $(am_ceph_test_cls_hello_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_hello_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3150,7 +3210,7 @@ ceph_test_cls_lock_OBJECTS = $(am_ceph_test_cls_lock_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3162,8 +3222,8 @@ ceph_test_cls_log_OBJECTS = $(am_ceph_test_cls_log_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_log_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3177,7 +3237,7 @@ ceph_test_cls_rbd_OBJECTS = $(am_ceph_test_cls_rbd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_rbd_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3190,7 +3250,7 @@ ceph_test_cls_refcount_OBJECTS = $(am_ceph_test_cls_refcount_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_refcount_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_refcount_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3204,8 +3264,8 @@ ceph_test_cls_replica_log_OBJECTS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_replica_log_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_replica_log_client.a \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3218,8 +3278,8 @@ ceph_test_cls_rgw_OBJECTS = $(am_ceph_test_cls_rgw_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_rgw_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3229,9 +3289,9 @@ am__ceph_test_cls_rgw_log_SOURCES_DIST = test/test_rgw_admin_log.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@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) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_rgw_log_DEPENDENCIES = $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_version_client.a \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ @@ -3248,9 +3308,9 @@ am__ceph_test_cls_rgw_meta_SOURCES_DIST = test/test_rgw_admin_meta.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@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) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_rgw_meta_DEPENDENCIES = $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_version_client.a \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ @@ -3269,9 +3329,9 @@ am__ceph_test_cls_rgw_opstate_SOURCES_DIST = \ ceph_test_cls_rgw_opstate_OBJECTS = \ $(am_ceph_test_cls_rgw_opstate_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_rgw_opstate_DEPENDENCIES = $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_version_client.a \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ libcls_log_client.a \ @@ -3291,8 +3351,8 @@ ceph_test_cls_statelog_OBJECTS = $(am_ceph_test_cls_statelog_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_statelog_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_statelog_client.a \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3305,7 +3365,7 @@ ceph_test_cls_version_OBJECTS = $(am_ceph_test_cls_version_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_cls_version_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_version_client.a \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3315,23 +3375,23 @@ am__ceph_test_cors_SOURCES_DIST = test/test_cors.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am_ceph_test_cors_OBJECTS = test/ceph_test_cors-test_cors.$(OBJEXT) ceph_test_cors_OBJECTS = $(am_ceph_test_cors_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_test_cors_DEPENDENCIES = $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) 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_10) +ceph_test_crypto_DEPENDENCIES = $(am__DEPENDENCIES_9) am__ceph_test_filejournal_SOURCES_DIST = test/test_filejournal.cc @ENABLE_SERVER_TRUE@am_ceph_test_filejournal_OBJECTS = test/ceph_test_filejournal-test_filejournal.$(OBJEXT) ceph_test_filejournal_OBJECTS = $(am_ceph_test_filejournal_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_filejournal_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_test_filejournal_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_filejournal_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3342,8 +3402,8 @@ am__ceph_test_filestore_SOURCES_DIST = \ ceph_test_filestore_OBJECTS = $(am_ceph_test_filestore_OBJECTS) @ENABLE_SERVER_TRUE@@LINUX_TRUE@ceph_test_filestore_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_9) ceph_test_filestore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_filestore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3359,7 +3419,7 @@ ceph_test_filestore_idempotent_OBJECTS = \ $(am_ceph_test_filestore_idempotent_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_filestore_idempotent_sequence_SOURCES_DIST = \ test/objectstore/test_idempotent_sequence.cc \ test/objectstore/DeterministicOpSequence.cc \ @@ -3373,7 +3433,7 @@ ceph_test_filestore_idempotent_sequence_OBJECTS = \ $(am_ceph_test_filestore_idempotent_sequence_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_filestore_idempotent_sequence_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am_ceph_test_get_blkdev_size_OBJECTS = \ test/test_get_blkdev_size.$(OBJEXT) ceph_test_get_blkdev_size_OBJECTS = \ @@ -3389,8 +3449,8 @@ am__ceph_test_keys_SOURCES_DIST = test/testkeys.cc @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ test/testkeys.$(OBJEXT) ceph_test_keys_OBJECTS = $(am_ceph_test_keys_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ceph_test_keys_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_13) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_12) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_keyvaluedb_atomicity_SOURCES_DIST = \ test/ObjectMap/test_keyvaluedb_atomicity.cc @ENABLE_SERVER_TRUE@am_ceph_test_keyvaluedb_atomicity_OBJECTS = test/ObjectMap/ceph_test_keyvaluedb_atomicity-test_keyvaluedb_atomicity.$(OBJEXT) @@ -3398,8 +3458,8 @@ ceph_test_keyvaluedb_atomicity_OBJECTS = \ $(am_ceph_test_keyvaluedb_atomicity_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_atomicity_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_test_keyvaluedb_atomicity_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_keyvaluedb_atomicity_CXXFLAGS) $(CXXFLAGS) \ @@ -3413,8 +3473,8 @@ ceph_test_keyvaluedb_iterators_OBJECTS = \ $(am_ceph_test_keyvaluedb_iterators_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_keyvaluedb_iterators_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_test_keyvaluedb_iterators_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_keyvaluedb_iterators_CXXFLAGS) $(CXXFLAGS) \ @@ -3428,7 +3488,7 @@ am__ceph_test_libcephfs_SOURCES_DIST = test/libcephfs/test.cc \ @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) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ceph_test_libcephfs_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) ceph_test_libcephfs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_libcephfs_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3444,10 +3504,9 @@ ceph_test_librbd_OBJECTS = $(am_ceph_test_librbd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_api.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_8) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_162) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) ceph_test_librbd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_librbd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3462,9 +3521,8 @@ ceph_test_librbd_api_OBJECTS = $(am_ceph_test_librbd_api_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_163) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) ceph_test_librbd_api_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_librbd_api_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3486,8 +3544,8 @@ am__ceph_test_mon_msg_SOURCES_DIST = test/mon/test-mon-msg.cc ceph_test_mon_msg_OBJECTS = $(am_ceph_test_mon_msg_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_mon_msg_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) $(LIBOSDC) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) 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) \ @@ -3500,14 +3558,14 @@ ceph_test_mon_workloadgen_OBJECTS = \ $(am_ceph_test_mon_workloadgen_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_mon_workloadgen_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) $(LIBOSDC) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_msgr_SOURCES_DIST = test/msgr/test_msgr.cc @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) @ENABLE_SERVER_TRUE@ceph_test_msgr_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_test_msgr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_msgr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3517,7 +3575,7 @@ am__ceph_test_mutate_SOURCES_DIST = test/test_mutate.cc ceph_test_mutate_OBJECTS = $(am_ceph_test_mutate_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_mutate_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_object_map_SOURCES_DIST = \ test/ObjectMap/test_object_map.cc \ test/ObjectMap/KeyValueDBMemory.cc @@ -3526,8 +3584,8 @@ am__ceph_test_object_map_SOURCES_DIST = \ ceph_test_object_map_OBJECTS = $(am_ceph_test_object_map_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_object_map_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) 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) \ @@ -3538,15 +3596,15 @@ 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_10) + $(am__DEPENDENCIES_9) am__ceph_test_objectstore_SOURCES_DIST = \ test/objectstore/store_test.cc @ENABLE_SERVER_TRUE@@LINUX_TRUE@am_ceph_test_objectstore_OBJECTS = test/objectstore/ceph_test_objectstore-store_test.$(OBJEXT) ceph_test_objectstore_OBJECTS = $(am_ceph_test_objectstore_OBJECTS) @ENABLE_SERVER_TRUE@@LINUX_TRUE@ceph_test_objectstore_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@LINUX_TRUE@ $(am__DEPENDENCIES_9) ceph_test_objectstore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_test_objectstore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3560,7 +3618,7 @@ ceph_test_objectstore_workloadgen_OBJECTS = \ $(am_ceph_test_objectstore_workloadgen_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_objectstore_workloadgen_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_rados_SOURCES_DIST = test/osd/TestRados.cc \ test/osd/TestOpStat.cc test/osd/Object.cc \ test/osd/RadosModel.cc @@ -3571,14 +3629,14 @@ am__ceph_test_rados_SOURCES_DIST = test/osd/TestRados.cc \ ceph_test_rados_OBJECTS = $(am_ceph_test_rados_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_test_rados_api_aio_SOURCES_DIST = test/librados/aio.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@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) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_aio_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3591,7 +3649,7 @@ ceph_test_rados_api_c_read_operations_OBJECTS = \ $(am_ceph_test_rados_api_c_read_operations_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_c_read_operations_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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 \ @@ -3604,7 +3662,7 @@ ceph_test_rados_api_c_write_operations_OBJECTS = \ $(am_ceph_test_rados_api_c_write_operations_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_c_write_operations_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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 \ @@ -3616,7 +3674,7 @@ ceph_test_rados_api_cls_OBJECTS = \ $(am_ceph_test_rados_api_cls_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_cls_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3629,7 +3687,7 @@ ceph_test_rados_api_cmd_OBJECTS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_cmd_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBCOMMON) $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3640,7 +3698,7 @@ am__ceph_test_rados_api_io_SOURCES_DIST = test/librados/io.cc ceph_test_rados_api_io_OBJECTS = $(am_ceph_test_rados_api_io_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_io_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3652,7 +3710,7 @@ ceph_test_rados_api_list_OBJECTS = \ $(am_ceph_test_rados_api_list_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_list_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3664,7 +3722,7 @@ ceph_test_rados_api_lock_OBJECTS = \ $(am_ceph_test_rados_api_lock_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_lock_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3676,8 +3734,8 @@ ceph_test_rados_api_misc_OBJECTS = \ $(am_ceph_test_rados_api_misc_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_misc_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3689,7 +3747,7 @@ ceph_test_rados_api_nlist_OBJECTS = \ $(am_ceph_test_rados_api_nlist_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_nlist_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3701,7 +3759,7 @@ ceph_test_rados_api_pool_OBJECTS = \ $(am_ceph_test_rados_api_pool_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_pool_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3714,7 +3772,7 @@ ceph_test_rados_api_snapshots_OBJECTS = \ $(am_ceph_test_rados_api_snapshots_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_snapshots_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3726,7 +3784,7 @@ ceph_test_rados_api_stat_OBJECTS = \ $(am_ceph_test_rados_api_stat_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_stat_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3740,8 +3798,8 @@ ceph_test_rados_api_tier_OBJECTS = \ $(am_ceph_test_rados_api_tier_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_tier_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -3754,7 +3812,7 @@ ceph_test_rados_api_watch_notify_OBJECTS = \ $(am_ceph_test_rados_api_watch_notify_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_api_watch_notify_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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 \ @@ -3806,7 +3864,7 @@ ceph_test_rados_striper_api_aio_OBJECTS = \ $(am_ceph_test_rados_striper_api_aio_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_striper_api_aio_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOSSTRIPER) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3820,7 +3878,7 @@ ceph_test_rados_striper_api_io_OBJECTS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_striper_api_io_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOSSTRIPER) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3833,7 +3891,7 @@ ceph_test_rados_striper_api_striping_OBJECTS = \ $(am_ceph_test_rados_striper_api_striping_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ceph_test_rados_striper_api_striping_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOSSTRIPER) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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 \ @@ -3869,10 +3927,10 @@ am__ceph_test_rgw_manifest_SOURCES_DIST = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@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) @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ceph_test_rgw_manifest_DEPENDENCIES = $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_18) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_17) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3882,14 +3940,14 @@ 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_10) +ceph_test_signal_handlers_DEPENDENCIES = $(am__DEPENDENCIES_9) am__ceph_test_snap_mapper_SOURCES_DIST = test/test_snap_mapper.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@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) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_test_snap_mapper_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) 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) \ @@ -3899,7 +3957,7 @@ am__ceph_test_stress_watch_SOURCES_DIST = test/test_stress_watch.cc ceph_test_stress_watch_OBJECTS = $(am_ceph_test_stress_watch_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ceph_test_stress_watch_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) \ @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) \ @@ -3907,14 +3965,14 @@ ceph_test_stress_watch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(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_10) +ceph_test_timers_DEPENDENCIES = $(am__DEPENDENCIES_9) am__ceph_test_trans_SOURCES_DIST = test/test_trans.cc @ENABLE_SERVER_TRUE@am_ceph_test_trans_OBJECTS = \ @ENABLE_SERVER_TRUE@ test/test_trans.$(OBJEXT) ceph_test_trans_OBJECTS = $(am_ceph_test_trans_OBJECTS) @ENABLE_SERVER_TRUE@ceph_test_trans_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) am__ceph_tpbench_SOURCES_DIST = test/bench/tp_bench.cc \ test/bench/detailed_stat_collector.cc @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@am_ceph_tpbench_OBJECTS = test/bench/tp_bench.$(OBJEXT) \ @@ -3923,14 +3981,14 @@ ceph_tpbench_OBJECTS = $(am_ceph_tpbench_OBJECTS) @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ceph_tpbench_DEPENDENCIES = $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__ceph_xattr_bench_SOURCES_DIST = test/xattr_bench.cc @ENABLE_SERVER_TRUE@am_ceph_xattr_bench_OBJECTS = test/ceph_xattr_bench-xattr_bench.$(OBJEXT) ceph_xattr_bench_OBJECTS = $(am_ceph_xattr_bench_OBJECTS) @ENABLE_SERVER_TRUE@ceph_xattr_bench_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) ceph_xattr_bench_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(ceph_xattr_bench_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -3954,9 +4012,9 @@ am__cephfs_journal_tool_SOURCES_DIST = \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ tools/cephfs/Resetter.$(OBJEXT) \ @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) -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@cephfs_journal_tool_DEPENDENCIES = $(am__DEPENDENCIES_12) \ +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@cephfs_journal_tool_DEPENDENCIES = $(am__DEPENDENCIES_11) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__cephfs_table_tool_SOURCES_DIST = \ tools/cephfs/cephfs-table-tool.cc tools/cephfs/TableTool.cc \ tools/cephfs/MDSUtility.cc @@ -3964,30 +4022,30 @@ am__cephfs_table_tool_SOURCES_DIST = \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ tools/cephfs/TableTool.$(OBJEXT) \ @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) -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@cephfs_table_tool_DEPENDENCIES = $(am__DEPENDENCIES_12) \ +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@cephfs_table_tool_DEPENDENCIES = $(am__DEPENDENCIES_11) \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am_crushtool_OBJECTS = tools/crushtool.$(OBJEXT) crushtool_OBJECTS = $(am_crushtool_OBJECTS) -crushtool_DEPENDENCIES = $(am__DEPENDENCIES_10) +crushtool_DEPENDENCIES = $(am__DEPENDENCIES_9) am__get_command_descriptions_SOURCES_DIST = \ test/common/get_command_descriptions.cc @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am_get_command_descriptions_OBJECTS = test/common/get_command_descriptions.$(OBJEXT) get_command_descriptions_OBJECTS = \ $(am_get_command_descriptions_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@get_command_descriptions_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_13) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_12) \ @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_9) am__librados_config_SOURCES_DIST = librados-config.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@am_librados_config_OBJECTS = librados-config.$(OBJEXT) librados_config_OBJECTS = $(am_librados_config_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@librados_config_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am_monmaptool_OBJECTS = tools/monmaptool.$(OBJEXT) monmaptool_OBJECTS = $(am_monmaptool_OBJECTS) -monmaptool_DEPENDENCIES = $(am__DEPENDENCIES_10) $(LIBCOMMON) +monmaptool_DEPENDENCIES = $(am__DEPENDENCIES_9) $(LIBCOMMON) am__mount_ceph_SOURCES_DIST = mount/mount.ceph.c @ENABLE_SERVER_TRUE@am_mount_ceph_OBJECTS = \ @ENABLE_SERVER_TRUE@ mount/mount.ceph.$(OBJEXT) @@ -3996,7 +4054,7 @@ mount_ceph_OBJECTS = $(am_mount_ceph_OBJECTS) @ENABLE_SERVER_TRUE@ $(LIBCOMMON) am_osdmaptool_OBJECTS = tools/osdmaptool.$(OBJEXT) osdmaptool_OBJECTS = $(am_osdmaptool_OBJECTS) -osdmaptool_DEPENDENCIES = $(am__DEPENDENCIES_10) +osdmaptool_DEPENDENCIES = $(am__DEPENDENCIES_9) 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 @@ -4009,7 +4067,7 @@ rados_OBJECTS = $(am_rados_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@rados_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ libcls_lock_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) 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 \ @@ -4037,59 +4095,60 @@ am__radosgw_SOURCES_DIST = rgw/rgw_resolve.cc rgw/rgw_rest.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_loadgen.$(OBJEXT) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_main.$(OBJEXT) radosgw_OBJECTS = $(am_radosgw_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@radosgw_DEPENDENCIES = $(am__DEPENDENCIES_16) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@radosgw_DEPENDENCIES = $(am__DEPENDENCIES_15) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(LIBCIVETWEB) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_18) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_17) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__radosgw_admin_SOURCES_DIST = rgw/rgw_admin.cc rgw/rgw_orphan.cc @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am_radosgw_admin_OBJECTS = rgw/rgw_admin.$(OBJEXT) \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/rgw_orphan.$(OBJEXT) radosgw_admin_OBJECTS = $(am_radosgw_admin_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@radosgw_admin_DEPENDENCIES = $(am__DEPENDENCIES_16) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_18) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@radosgw_admin_DEPENDENCIES = $(am__DEPENDENCIES_15) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_17) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__rbd_SOURCES_DIST = rbd.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_rbd_OBJECTS = rbd.$(OBJEXT) rbd_OBJECTS = $(am_rbd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_DEPENDENCIES = $(LIBKRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) am__rbd_fuse_SOURCES_DIST = rbd_fuse/rbd-fuse.cc @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@am_rbd_fuse_OBJECTS = rbd_fuse/rbd-fuse.$(OBJEXT) rbd_fuse_OBJECTS = $(am_rbd_fuse_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@rbd_fuse_DEPENDENCIES = $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_FUSE_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) am__rbd_replay_SOURCES_DIST = rbd_replay/rbd-replay.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_rbd_replay_OBJECTS = rbd_replay/rbd-replay.$(OBJEXT) rbd_replay_OBJECTS = $(am_rbd_replay_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_DEPENDENCIES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_DEPENDENCIES = librbd_replay.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_types.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) am__rbd_replay_prep_SOURCES_DIST = rbd_replay/rbd-replay-prep.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@am_rbd_replay_prep_OBJECTS = rbd_replay/rbd-replay-prep.$(OBJEXT) rbd_replay_prep_OBJECTS = $(am_rbd_replay_prep_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_DEPENDENCIES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_DEPENDENCIES = librbd_replay.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_types.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) am__rest_bench_SOURCES_DIST = tools/rest_bench.cc \ common/obj_bencher.cc @WITH_REST_BENCH_TRUE@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) -@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__DEPENDENCIES_19 = libs3/build/lib/libs3.a -@WITH_REST_BENCH_TRUE@rest_bench_DEPENDENCIES = \ -@WITH_REST_BENCH_TRUE@ $(am__DEPENDENCIES_10) \ +@WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@am__DEPENDENCIES_18 = libs3/build/lib/libs3.a +@WITH_REST_BENCH_TRUE@rest_bench_DEPENDENCIES = $(am__DEPENDENCIES_9) \ @WITH_REST_BENCH_TRUE@ $(am__DEPENDENCIES_1) \ -@WITH_REST_BENCH_TRUE@ $(am__DEPENDENCIES_19) +@WITH_REST_BENCH_TRUE@ $(am__DEPENDENCIES_18) rest_bench_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(rest_bench_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @@ -4101,7 +4160,7 @@ simple_client_OBJECTS = $(am_simple_client_OBJECTS) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@simple_client_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_5) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_2) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) @@ -4117,7 +4176,7 @@ simple_server_OBJECTS = $(am_simple_server_OBJECTS) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@simple_server_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_5) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_2) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) @@ -4222,19 +4281,19 @@ am__test_build_librgw_SOURCES_DIST = test/buildtest_skeleton.cc \ @ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@am_test_build_librgw_OBJECTS = test/test_build_librgw-buildtest_skeleton.$(OBJEXT) \ @ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__objects_31) test_build_librgw_OBJECTS = $(am_test_build_librgw_OBJECTS) -@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@test_build_librgw_DEPENDENCIES = $(am__DEPENDENCIES_18) \ +@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@test_build_librgw_DEPENDENCIES = $(am__DEPENDENCIES_17) \ @ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_2) \ -@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_CLIENT_TRUE@@WITH_BUILD_TESTS_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_addrs_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_addrs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_addrs_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4242,16 +4301,16 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_admin_socket_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_arch_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_arch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_arch_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ @@ -4260,8 +4319,8 @@ am__unittest_base64_SOURCES_DIST = test/base64.cc @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am_unittest_base64_OBJECTS = test/unittest_base64-base64.$(OBJEXT) unittest_base64_OBJECTS = $(am_unittest_base64_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@unittest_base64_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_base64_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_base64_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4269,8 +4328,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_15) \ - $(am__DEPENDENCIES_10) +unittest_bit_vector_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_bit_vector_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_bit_vector_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4278,8 +4337,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_15) \ - $(am__DEPENDENCIES_10) +unittest_blkdev_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_blkdev_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_blkdev_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4287,8 +4346,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_15) \ - $(am__DEPENDENCIES_10) +unittest_bloom_filter_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_bloom_filter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_bloom_filter_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4296,8 +4355,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_15) \ - $(am__DEPENDENCIES_10) +unittest_bufferlist_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_bufferlist_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_bufferlist_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4305,8 +4364,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_15) \ - $(am__DEPENDENCIES_10) +unittest_ceph_argparse_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_ceph_argparse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_ceph_argparse_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4315,8 +4374,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_15) \ - $(am__DEPENDENCIES_10) +unittest_ceph_compatset_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_ceph_compatset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_ceph_compatset_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4324,8 +4383,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_ceph_crypto_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_ceph_crypto_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_ceph_crypto_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4336,8 +4395,8 @@ am__unittest_chain_xattr_SOURCES_DIST = \ unittest_chain_xattr_OBJECTS = $(am_unittest_chain_xattr_OBJECTS) @ENABLE_SERVER_TRUE@unittest_chain_xattr_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) unittest_chain_xattr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_chain_xattr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4345,8 +4404,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_15) \ - $(am__DEPENDENCIES_10) +unittest_config_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4354,8 +4413,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_15) \ - $(am__DEPENDENCIES_10) +unittest_confutils_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_confutils_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_confutils_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4363,8 +4422,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_15) \ - $(am__DEPENDENCIES_10) +unittest_context_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_context_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_context_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4372,16 +4431,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_15) \ - $(am__DEPENDENCIES_10) +unittest_crc32c_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_10) +unittest_crush_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_9) unittest_crush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_crush_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4389,16 +4448,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_15) \ - $(am__DEPENDENCIES_10) $(LIBCRUSH) +unittest_crush_wrapper_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) $(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_15) \ - $(am__DEPENDENCIES_10) +unittest_crypto_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_crypto_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_crypto_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4406,8 +4465,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_15) \ - $(am__DEPENDENCIES_10) +unittest_crypto_init_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_crypto_init_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_crypto_init_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4415,8 +4474,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_daemon_config_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_daemon_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_daemon_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4425,9 +4484,9 @@ am__unittest_ecbackend_SOURCES_DIST = test/osd/TestECBackend.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_unittest_ecbackend_OBJECTS = test/osd/unittest_ecbackend-TestECBackend.$(OBJEXT) unittest_ecbackend_OBJECTS = $(am_unittest_ecbackend_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_ecbackend_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) unittest_ecbackend_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_ecbackend_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4437,8 +4496,8 @@ am__unittest_encoding_SOURCES_DIST = test/encoding.cc unittest_encoding_OBJECTS = $(am_unittest_encoding_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@unittest_encoding_DEPENDENCIES = $(LIBCEPHFS) \ @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_encoding_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_encoding_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4449,10 +4508,10 @@ am__unittest_erasure_code_SOURCES_DIST = erasure-code/ErasureCode.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/unittest_erasure_code-TestErasureCode.$(OBJEXT) unittest_erasure_code_OBJECTS = $(am_unittest_erasure_code_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) unittest_erasure_code_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_erasure_code_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4465,10 +4524,10 @@ am__unittest_erasure_code_example_SOURCES_DIST = \ unittest_erasure_code_example_OBJECTS = \ $(am_unittest_erasure_code_example_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_example_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) unittest_erasure_code_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_erasure_code_example_CXXFLAGS) $(CXXFLAGS) \ @@ -4480,10 +4539,10 @@ am__unittest_erasure_code_isa_SOURCES_DIST = \ @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) -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_isa_DEPENDENCIES = $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_isa_DEPENDENCIES = $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ .libs/libec_isa.la \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBERASURE_CODE) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) @@ -4536,10 +4595,10 @@ am__objects_32 = erasure-code/unittest_erasure_code_jerasure-ErasureCode.$(OBJEX unittest_erasure_code_jerasure_OBJECTS = \ $(am_unittest_erasure_code_jerasure_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_jerasure_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -4559,10 +4618,10 @@ am__objects_33 = \ unittest_erasure_code_lrc_OBJECTS = \ $(am_unittest_erasure_code_lrc_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_lrc_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -4576,10 +4635,10 @@ am__unittest_erasure_code_plugin_SOURCES_DIST = \ unittest_erasure_code_plugin_OBJECTS = \ $(am_unittest_erasure_code_plugin_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -4592,10 +4651,10 @@ am__unittest_erasure_code_plugin_isa_SOURCES_DIST = \ @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) -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_isa_DEPENDENCIES = $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_isa_DEPENDENCIES = $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ .libs/libec_isa.la \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBERASURE_CODE) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) @@ -4609,10 +4668,10 @@ am__unittest_erasure_code_plugin_jerasure_SOURCES_DIST = \ unittest_erasure_code_plugin_jerasure_OBJECTS = \ $(am_unittest_erasure_code_plugin_jerasure_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_jerasure_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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 \ @@ -4624,10 +4683,10 @@ am__unittest_erasure_code_plugin_lrc_SOURCES_DIST = \ unittest_erasure_code_plugin_lrc_OBJECTS = \ $(am_unittest_erasure_code_plugin_lrc_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_lrc_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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 \ @@ -4684,10 +4743,10 @@ am__objects_34 = \ unittest_erasure_code_shec_OBJECTS = \ $(am_unittest_erasure_code_shec_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -4743,10 +4802,10 @@ am__objects_35 = erasure-code/unittest_erasure_code_shec_all-ErasureCode.$(OBJEX unittest_erasure_code_shec_all_OBJECTS = \ $(am_unittest_erasure_code_shec_all_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_all_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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) \ @@ -4802,10 +4861,10 @@ am__objects_36 = erasure-code/unittest_erasure_code_shec_thread-ErasureCode.$(OB unittest_erasure_code_shec_thread_OBJECTS = \ $(am_unittest_erasure_code_shec_thread_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_thread_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBCOMMON) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @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 \ @@ -4813,8 +4872,8 @@ unittest_erasure_code_shec_thread_LINK = $(LIBTOOL) $(AM_V_lt) \ $(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_15) \ - $(am__DEPENDENCIES_10) +unittest_escape_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_escape_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_escape_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4824,8 +4883,8 @@ am__unittest_flatindex_SOURCES_DIST = test/os/TestFlatIndex.cc unittest_flatindex_OBJECTS = $(am_unittest_flatindex_OBJECTS) @ENABLE_SERVER_TRUE@unittest_flatindex_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) unittest_flatindex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_flatindex_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4834,16 +4893,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_15) \ - $(am__DEPENDENCIES_10) +unittest_formatter_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_gather_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_gather_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_gather_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4852,7 +4911,7 @@ am_unittest_heartbeatmap_OBJECTS = \ test/unittest_heartbeatmap-heartbeat_map.$(OBJEXT) unittest_heartbeatmap_OBJECTS = $(am_unittest_heartbeatmap_OBJECTS) unittest_heartbeatmap_DEPENDENCIES = $(LIBCOMMON) \ - $(am__DEPENDENCIES_15) $(am__DEPENDENCIES_10) + $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_9) unittest_heartbeatmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_heartbeatmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4860,8 +4919,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_histogram_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_histogram_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_histogram_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4870,9 +4929,9 @@ am__unittest_hitset_SOURCES_DIST = test/osd/hitset.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_unittest_hitset_OBJECTS = test/osd/unittest_hitset-hitset.$(OBJEXT) unittest_hitset_OBJECTS = $(am_unittest_hitset_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_hitset_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) unittest_hitset_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_hitset_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4880,8 +4939,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_15) \ - $(am__DEPENDENCIES_10) +unittest_io_priority_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_io_priority_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_io_priority_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4889,8 +4948,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_ipaddr_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_ipaddr_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_ipaddr_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4900,8 +4959,8 @@ am__unittest_lfnindex_SOURCES_DIST = test/os/TestLFNIndex.cc unittest_lfnindex_OBJECTS = $(am_unittest_lfnindex_OBJECTS) @ENABLE_SERVER_TRUE@unittest_lfnindex_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@ $(am__DEPENDENCIES_9) unittest_lfnindex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_lfnindex_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4911,8 +4970,8 @@ am__unittest_libcephfs_config_SOURCES_DIST = test/libcephfs_config.cc unittest_libcephfs_config_OBJECTS = \ $(am_unittest_libcephfs_config_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@unittest_libcephfs_config_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_libcephfs_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_libcephfs_config_CXXFLAGS) $(CXXFLAGS) \ @@ -4922,8 +4981,8 @@ am__unittest_librados_SOURCES_DIST = test/librados/librados.cc unittest_librados_OBJECTS = $(am_unittest_librados_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@unittest_librados_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_librados_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_librados_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4935,8 +4994,8 @@ unittest_librados_config_OBJECTS = \ $(am_unittest_librados_config_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@unittest_librados_config_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_librados_config_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_librados_config_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4953,24 +5012,23 @@ unittest_librbd_OBJECTS = $(am_unittest_librbd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_test_stub.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_internal.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBOSDC) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_161) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) unittest_librbd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_librbd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_unittest_log_OBJECTS = log/unittest_log-test.$(OBJEXT) unittest_log_OBJECTS = $(am_unittest_log_OBJECTS) -unittest_log_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_15) +unittest_log_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_lru_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_lru_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(unittest_lru_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @@ -4978,9 +5036,9 @@ am__unittest_mds_authcap_SOURCES_DIST = test/mds/TestMDSAuthCaps.cc @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@am_unittest_mds_authcap_OBJECTS = test/mds/unittest_mds_authcap-TestMDSAuthCaps.$(OBJEXT) unittest_mds_authcap_OBJECTS = $(am_unittest_mds_authcap_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@unittest_mds_authcap_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_12) \ -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_11) \ +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@ $(am__DEPENDENCIES_9) unittest_mds_authcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_mds_authcap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -4988,16 +5046,16 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_mds_types_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_mime_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_mime_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_mime_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ @@ -5006,9 +5064,9 @@ am__unittest_mon_moncap_SOURCES_DIST = test/mon/moncap.cc @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am_unittest_mon_moncap_OBJECTS = test/mon/unittest_mon_moncap-moncap.$(OBJEXT) unittest_mon_moncap_OBJECTS = $(am_unittest_mon_moncap_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@unittest_mon_moncap_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_13) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_12) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_9) unittest_mon_moncap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_mon_moncap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5017,9 +5075,9 @@ am__unittest_mon_pgmap_SOURCES_DIST = test/mon/PGMap.cc @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@am_unittest_mon_pgmap_OBJECTS = test/mon/unittest_mon_pgmap-PGMap.$(OBJEXT) unittest_mon_pgmap_OBJECTS = $(am_unittest_mon_pgmap_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@unittest_mon_pgmap_DEPENDENCIES = \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_13) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_12) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_14) \ +@ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ $(am__DEPENDENCIES_9) unittest_mon_pgmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_mon_pgmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5031,9 +5089,9 @@ am__unittest_osd_osdcap_SOURCES_DIST = test/osd/osdcap.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_unittest_osd_osdcap_OBJECTS = test/osd/unittest_osd_osdcap-osdcap.$(OBJEXT) unittest_osd_osdcap_OBJECTS = $(am_unittest_osd_osdcap_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_osd_osdcap_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) unittest_osd_osdcap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_osd_osdcap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5041,8 +5099,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_15) \ - $(am__DEPENDENCIES_10) +unittest_osd_types_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_osd_types_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_osd_types_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5050,8 +5108,8 @@ 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_15) $(LIBCOMMON) \ - $(am__DEPENDENCIES_10) +unittest_osdmap_DEPENDENCIES = $(am__DEPENDENCIES_14) $(LIBCOMMON) \ + $(am__DEPENDENCIES_9) unittest_osdmap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_osdmap_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5060,9 +5118,9 @@ am__unittest_osdscrub_SOURCES_DIST = test/osd/TestOSDScrub.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_unittest_osdscrub_OBJECTS = test/osd/unittest_osdscrub-TestOSDScrub.$(OBJEXT) unittest_osdscrub_OBJECTS = $(am_unittest_osdscrub_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_osdscrub_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) unittest_osdscrub_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ @@ -5071,8 +5129,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_perf_counters_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_perf_counters_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_perf_counters_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5081,9 +5139,9 @@ am__unittest_pglog_SOURCES_DIST = test/osd/TestPGLog.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@am_unittest_pglog_OBJECTS = test/osd/unittest_pglog-TestPGLog.$(OBJEXT) unittest_pglog_OBJECTS = $(am_unittest_pglog_OBJECTS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_pglog_DEPENDENCIES = \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_13) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_14) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_15) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__DEPENDENCIES_1) unittest_pglog_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ @@ -5093,7 +5151,7 @@ am_unittest_prebufferedstreambuf_OBJECTS = test/unittest_prebufferedstreambuf-te unittest_prebufferedstreambuf_OBJECTS = \ $(am_unittest_prebufferedstreambuf_OBJECTS) unittest_prebufferedstreambuf_DEPENDENCIES = $(LIBCOMMON) \ - $(am__DEPENDENCIES_15) $(am__DEPENDENCIES_2) + $(am__DEPENDENCIES_14) $(am__DEPENDENCIES_2) unittest_prebufferedstreambuf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_prebufferedstreambuf_CXXFLAGS) $(CXXFLAGS) \ @@ -5104,10 +5162,10 @@ unittest_rbd_replay_OBJECTS = $(am_unittest_rbd_replay_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@unittest_rbd_replay_DEPENDENCIES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__DEPENDENCIES_14) unittest_rbd_replay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_rbd_replay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5115,8 +5173,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_readahead_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_readahead_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_readahead_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5125,8 +5183,8 @@ am__unittest_run_cmd_SOURCES_DIST = test/run_cmd.cc @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am_unittest_run_cmd_OBJECTS = test/unittest_run_cmd-run_cmd.$(OBJEXT) unittest_run_cmd_OBJECTS = $(am_unittest_run_cmd_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@unittest_run_cmd_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_run_cmd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_run_cmd_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5134,8 +5192,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_15) \ - $(am__DEPENDENCIES_10) +unittest_safe_io_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_safe_io_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_safe_io_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5143,8 +5201,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_15) \ - $(am__DEPENDENCIES_10) +unittest_shared_cache_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_shared_cache_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_shared_cache_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5152,16 +5210,16 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_sharedptr_registry_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_signals_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_signals_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_signals_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5170,8 +5228,8 @@ am__unittest_simple_spin_SOURCES_DIST = test/simple_spin.cc @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@am_unittest_simple_spin_OBJECTS = test/unittest_simple_spin-simple_spin.$(OBJEXT) unittest_simple_spin_OBJECTS = $(am_unittest_simple_spin_OBJECTS) @ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@unittest_simple_spin_DEPENDENCIES = $(LIBCEPHFS) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_10) \ -@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_15) +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_9) \ +@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@ $(am__DEPENDENCIES_14) unittest_simple_spin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_simple_spin_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5179,8 +5237,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_15) \ - $(am__DEPENDENCIES_10) +unittest_sloppy_crc_map_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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) \ @@ -5188,8 +5246,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_15) \ - $(am__DEPENDENCIES_10) +unittest_str_list_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_str_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_str_list_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5197,8 +5255,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_15) \ - $(am__DEPENDENCIES_10) +unittest_str_map_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_str_map_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_str_map_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5206,16 +5264,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_15) \ - $(am__DEPENDENCIES_10) +unittest_striper_DEPENDENCIES = $(LIBOSDC) $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_strtol_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_strtol_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_strtol_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5223,8 +5281,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_15) \ - $(am__DEPENDENCIES_10) +unittest_tableformatter_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_tableformatter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_tableformatter_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5232,7 +5290,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_15) +unittest_texttable_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) unittest_texttable_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_texttable_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5240,16 +5298,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_15) \ - $(am__DEPENDENCIES_10) +unittest_throttle_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) 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_15) \ - $(am__DEPENDENCIES_10) +unittest_utf8_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_utf8_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_utf8_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ @@ -5257,7 +5315,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_15) \ +unittest_util_DEPENDENCIES = $(LIBCOMMON) $(am__DEPENDENCIES_14) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) unittest_util_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ @@ -5266,8 +5324,8 @@ 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_15) \ - $(am__DEPENDENCIES_10) +unittest_workqueue_DEPENDENCIES = $(am__DEPENDENCIES_14) \ + $(am__DEPENDENCIES_9) unittest_workqueue_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(unittest_workqueue_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ @@ -5279,7 +5337,7 @@ am__xio_client_SOURCES_DIST = test/messenger/xio_client.cc \ xio_client_OBJECTS = $(am_xio_client_OBJECTS) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@xio_client_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_2) \ @@ -5294,7 +5352,7 @@ am__xio_server_SOURCES_DIST = test/messenger/xio_server.cc \ xio_server_OBJECTS = $(am_xio_server_OBJECTS) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@xio_server_DEPENDENCIES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_5) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_10) \ +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_9) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__DEPENDENCIES_2) \ @@ -5413,15 +5471,20 @@ SOURCES = $(libcls_log_client_a_SOURCES) \ $(liblog_la_SOURCES) $(libmds_la_SOURCES) $(libmon_la_SOURCES) \ $(libmon_types_la_SOURCES) $(libmsg_la_SOURCES) \ $(libos_la_SOURCES) $(libos_rocksdb_la_SOURCES) \ + $(libos_tp_la_SOURCES) $(nodist_libos_tp_la_SOURCES) \ $(libos_types_la_SOURCES) $(libosd_la_SOURCES) \ + $(libosd_tp_la_SOURCES) $(nodist_libosd_tp_la_SOURCES) \ $(libosd_types_la_SOURCES) $(libosdc_la_SOURCES) \ $(libperfglue_la_SOURCES) $(librados_la_SOURCES) \ $(librados_api_la_SOURCES) $(librados_internal_la_SOURCES) \ - $(librados_test_stub_la_SOURCES) $(libradosstriper_la_SOURCES) \ + $(librados_test_stub_la_SOURCES) $(librados_tp_la_SOURCES) \ + $(nodist_librados_tp_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_replay_ios_la_SOURCES) \ + $(librbd_replay_types_la_SOURCES) $(librbd_test_la_SOURCES) \ + $(librbd_tp_la_SOURCES) $(nodist_librbd_tp_la_SOURCES) \ $(librbd_types_la_SOURCES) $(librgw_la_SOURCES) \ $(libsecret_la_SOURCES) $(libsystest_la_SOURCES) \ $(ceph_authtool_SOURCES) $(ceph_client_debug_SOURCES) \ @@ -5615,13 +5678,16 @@ DIST_SOURCES = $(am__libcls_log_client_a_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) \ - $(am__libosd_la_SOURCES_DIST) $(libosd_types_la_SOURCES) \ - $(libosdc_la_SOURCES) $(am__libperfglue_la_SOURCES_DIST) \ + $(am__libos_rocksdb_la_SOURCES_DIST) \ + $(am__libos_tp_la_SOURCES_DIST) $(libos_types_la_SOURCES) \ + $(am__libosd_la_SOURCES_DIST) $(am__libosd_tp_la_SOURCES_DIST) \ + $(libosd_types_la_SOURCES) $(libosdc_la_SOURCES) \ + $(am__libperfglue_la_SOURCES_DIST) \ $(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__librados_tp_la_SOURCES_DIST) \ $(am__libradosstriper_la_SOURCES_DIST) \ $(am__libradosstripertest_la_SOURCES_DIST) \ $(am__libradostest_la_SOURCES_DIST) \ @@ -5630,7 +5696,9 @@ DIST_SOURCES = $(am__libcls_log_client_a_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__librbd_replay_types_la_SOURCES_DIST) \ + $(am__librbd_test_la_SOURCES_DIST) \ + $(am__librbd_tp_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) \ @@ -5831,9 +5899,9 @@ am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile -DATA = $(bash_completion_DATA) $(doc_DATA) $(libcephfs_include_DATA) \ - $(librbd_include_DATA) $(rados_include_DATA) \ - $(radosstriper_include_DATA) +DATA = $(bash_completion_DATA) $(dist_noinst_DATA) $(doc_DATA) \ + $(libcephfs_include_DATA) $(librbd_include_DATA) \ + $(rados_include_DATA) $(radosstriper_include_DATA) am__noinst_HEADERS_DIST = arch/intel.h arch/arm.h arch/probe.h \ auth/cephx/CephxAuthorizeHandler.h auth/cephx/CephxKeyServer.h \ auth/cephx/CephxProtocol.h auth/cephx/CephxClientHandler.h \ @@ -5982,9 +6050,10 @@ am__noinst_HEADERS_DIST = 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 \ - common/valgrind.h common/address_helper.h common/secret.h \ - msg/Connection.h msg/Dispatcher.h msg/Message.h \ - msg/Messenger.h msg/SimplePolicyMessenger.h msg/msg_types.h \ + common/valgrind.h common/TracepointProvider.h \ + common/address_helper.h 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 \ msg/simple/Pipe.h msg/simple/PipeConnection.h \ msg/simple/SimpleMessenger.h msg/async/AsyncConnection.h \ @@ -6130,12 +6199,12 @@ am__noinst_HEADERS_DIST = arch/intel.h arch/arm.h arch/probe.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 \ + key_value_store/kvs_arg_types.h rbd_replay/ActionTypes.h \ + rbd_replay/actions.hpp rbd_replay/BoundedBuffer.hpp \ + rbd_replay/BufferReader.h 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 \ test/erasure-code/ceph_erasure_code_benchmark.h \ test/erasure-code/ErasureCodeExample.h \ test/messenger/message_helper.h \ @@ -6413,7 +6482,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_68) $(am__append_71) + $(am__append_6) $(am__append_66) $(am__append_69) AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ARM_FLAGS = @ARM_FLAGS@ @@ -6602,9 +6671,9 @@ 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_199) $(am__append_200) -DIST_SUBDIRS = gmock ocf libs3 java tracing -BUILT_SOURCES = $(am__append_220) +SUBDIRS = ocf java $(am__append_193) $(am__append_194) +DIST_SUBDIRS = gmock ocf libs3 java +BUILT_SOURCES = $(am__append_197) $(am__append_216) # extra bits EXTRA_DIST = $(am__append_21) \ @@ -6628,7 +6697,8 @@ EXTRA_DIST = $(am__append_21) \ $(srcdir)/test/coverage.sh $(patsubst \ %,$(srcdir)/%,$(check_SCRIPTS)) \ $(srcdir)/test/container-make-check-ubuntu-14.04.sh \ - $(am__append_201) $(srcdir)/$(shell_scripts:%=%.in) \ + $(am__append_195) tracing/tracing-common.h \ + $(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 \ @@ -6659,7 +6729,11 @@ EXTRA_DIST = $(am__append_21) \ 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 -CLEANFILES = $(shell_scripts) ceph_ver.h sample.fetch_config +CLEANFILES = $(BUILT_SOURCES) $(shell_scripts) ceph_ver.h \ + sample.fetch_config +dist_noinst_DATA = tracing/librados.tp tracing/librbd.tp \ + tracing/oprequest.tp tracing/osd.tp tracing/pg.tp \ + tracing/objectstore.tp # jerasure plugin @@ -6690,8 +6764,8 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \ crush/crush.h crush/grammar.h crush/hash.h \ crush/crush_ln_table.h crush/mapper.h crush/sample.txt \ crush/types.h $(am__append_23) $(am__append_27) \ - $(am__append_33) $(am__append_35) $(am__append_37) \ - $(am__append_39) $(am__append_43) $(am__append_47) \ + $(am__append_32) $(am__append_34) $(am__append_36) \ + $(am__append_38) $(am__append_42) $(am__append_45) \ 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 \ @@ -6722,11 +6796,11 @@ 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_58) erasure-code/ErasureCode.h \ + $(am__append_56) 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 $(am__append_62) $(am__append_64) \ + osdc/WritebackHandler.h $(am__append_60) $(am__append_62) \ 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 \ @@ -6774,47 +6848,48 @@ 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 \ - common/valgrind.h $(am__append_79) 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 \ - msg/simple/Pipe.h msg/simple/PipeConnection.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_88) messages/MAuth.h \ - messages/MAuthReply.h messages/MCacheExpire.h \ - messages/MClientCaps.h messages/MClientCapRelease.h \ - messages/MClientLease.h messages/MClientReconnect.h \ - messages/MClientReply.h messages/MClientRequest.h \ - messages/MClientRequestForward.h messages/MClientSession.h \ - messages/MClientSnap.h messages/MClientQuota.h \ - messages/MCommand.h messages/MCommandReply.h \ - messages/MDentryLink.h messages/MDentryUnlink.h \ - messages/MDirUpdate.h messages/MDiscover.h \ - messages/MDiscoverReply.h messages/MExportCaps.h \ - messages/MExportCapsAck.h messages/MGatherCaps.h \ - messages/MExportDir.h messages/MExportDirAck.h \ - messages/MExportDirCancel.h messages/MExportDirDiscover.h \ - messages/MExportDirDiscoverAck.h messages/MExportDirFinish.h \ - messages/MExportDirNotify.h messages/MExportDirNotifyAck.h \ - messages/MExportDirPrep.h messages/MExportDirPrepAck.h \ - messages/MGenericMessage.h messages/MGetPoolStats.h \ - messages/MGetPoolStatsReply.h messages/MHeartbeat.h \ - messages/MInodeFileCaps.h messages/MLock.h messages/MLog.h \ - messages/MLogAck.h messages/MMDSBeacon.h \ - messages/MMDSCacheRejoin.h messages/MMDSLoadTargets.h \ - messages/MMDSFindIno.h messages/MMDSFindInoReply.h \ - messages/MMDSFragmentNotify.h messages/MMDSMap.h \ - messages/MMDSOpenIno.h messages/MMDSOpenInoReply.h \ - messages/MMDSResolve.h messages/MMDSResolveAck.h \ - messages/MMDSSlaveRequest.h messages/MMDSTableRequest.h \ - messages/MMonCommand.h messages/MMonCommandAck.h \ - messages/MMonElection.h messages/MMonGetMap.h \ - messages/MMonGetOSDMap.h messages/MMonGetVersion.h \ - messages/MMonGetVersionReply.h messages/MMonGlobalID.h \ - messages/MMonHealth.h messages/MMonJoin.h messages/MMonMap.h \ - messages/MMonPaxos.h messages/MMonProbe.h messages/MMonScrub.h \ + common/valgrind.h common/TracepointProvider.h $(am__append_77) \ + 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 msg/simple/Pipe.h \ + msg/simple/PipeConnection.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_86) messages/MAuth.h messages/MAuthReply.h \ + messages/MCacheExpire.h messages/MClientCaps.h \ + messages/MClientCapRelease.h messages/MClientLease.h \ + messages/MClientReconnect.h messages/MClientReply.h \ + messages/MClientRequest.h messages/MClientRequestForward.h \ + messages/MClientSession.h messages/MClientSnap.h \ + messages/MClientQuota.h messages/MCommand.h \ + messages/MCommandReply.h messages/MDentryLink.h \ + messages/MDentryUnlink.h messages/MDirUpdate.h \ + messages/MDiscover.h messages/MDiscoverReply.h \ + messages/MExportCaps.h messages/MExportCapsAck.h \ + messages/MGatherCaps.h messages/MExportDir.h \ + messages/MExportDirAck.h messages/MExportDirCancel.h \ + messages/MExportDirDiscover.h messages/MExportDirDiscoverAck.h \ + messages/MExportDirFinish.h messages/MExportDirNotify.h \ + messages/MExportDirNotifyAck.h messages/MExportDirPrep.h \ + messages/MExportDirPrepAck.h messages/MGenericMessage.h \ + messages/MGetPoolStats.h messages/MGetPoolStatsReply.h \ + messages/MHeartbeat.h messages/MInodeFileCaps.h \ + messages/MLock.h messages/MLog.h messages/MLogAck.h \ + messages/MMDSBeacon.h messages/MMDSCacheRejoin.h \ + messages/MMDSLoadTargets.h messages/MMDSFindIno.h \ + messages/MMDSFindInoReply.h messages/MMDSFragmentNotify.h \ + messages/MMDSMap.h messages/MMDSOpenIno.h \ + messages/MMDSOpenInoReply.h messages/MMDSResolve.h \ + messages/MMDSResolveAck.h messages/MMDSSlaveRequest.h \ + messages/MMDSTableRequest.h messages/MMonCommand.h \ + messages/MMonCommandAck.h messages/MMonElection.h \ + messages/MMonGetMap.h messages/MMonGetOSDMap.h \ + messages/MMonGetVersion.h messages/MMonGetVersionReply.h \ + messages/MMonGlobalID.h messages/MMonHealth.h \ + messages/MMonJoin.h messages/MMonMap.h messages/MMonPaxos.h \ + messages/MMonProbe.h messages/MMonScrub.h \ messages/MMonSubscribe.h messages/MMonSubscribeAck.h \ messages/MMonSync.h messages/MOSDAlive.h messages/MOSDBoot.h \ messages/MOSDFailure.h messages/MOSDMarkMeDown.h \ @@ -6866,10 +6941,10 @@ noinst_HEADERS = arch/intel.h arch/arm.h arch/probe.h \ 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_95) $(am__append_98) \ - $(am__append_103) $(am__append_109) $(am__append_112) \ - $(am__append_115) $(am__append_117) $(am__append_121) \ - $(am__append_141) $(am__append_157) test/bench/backend.h \ + include/unordered_map.h $(am__append_92) $(am__append_95) \ + $(am__append_99) $(am__append_105) $(am__append_108) \ + $(am__append_111) $(am__append_112) $(am__append_118) \ + $(am__append_138) $(am__append_154) 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 \ @@ -6901,41 +6976,41 @@ 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 = $(am__append_20) $(am__append_208) $(am__append_217) \ - $(am__append_225) +bin_SCRIPTS = $(am__append_20) $(am__append_204) $(am__append_213) \ + $(am__append_221) sbin_SCRIPTS = -su_sbin_SCRIPTS = $(am__append_222) +su_sbin_SCRIPTS = $(am__append_218) dist_bin_SCRIPTS = -lib_LTLIBRARIES = $(am__append_94) $(am__append_97) $(am__append_102) \ - $(am__append_215) $(am__append_216) +lib_LTLIBRARIES = $(am__append_91) $(am__append_94) $(am__append_98) \ + $(am__append_196) $(am__append_211) $(am__append_212) noinst_LTLIBRARIES = libarch.la libauth.la libcrush.la libmon_types.la \ $(am__append_22) $(am__append_26) libos_types.la \ - $(am__append_32) $(am__append_34) $(am__append_36) \ - libosd_types.la $(am__append_46) liberasure_code.la libosdc.la \ - $(am__append_61) $(am__append_63) libglobal.la \ + $(am__append_31) $(am__append_33) $(am__append_35) \ + libosd_types.la $(am__append_44) liberasure_code.la libosdc.la \ + $(am__append_59) $(am__append_61) libglobal.la \ libjson_spirit.la liblog.la libperfglue.la \ libcommon_internal.la libcommon_api.la libcommon_crc.la \ - libcommon.la $(am__append_80) libmsg.la $(am__append_89) \ - librbd_types.la $(am__append_99) $(am__append_105) \ - $(am__append_110) $(am__append_116) $(am__append_150) \ - $(am__append_160) $(am__append_165) $(am__append_186) \ - $(am__append_210) -noinst_LIBRARIES = $(am__append_38) $(am__append_111) -radoslib_LTLIBRARIES = $(am__append_113) $(am__append_114) + libcommon.la $(am__append_78) libmsg.la $(am__append_87) \ + librbd_types.la $(am__append_96) $(am__append_101) \ + $(am__append_106) $(am__append_113) $(am__append_147) \ + $(am__append_157) $(am__append_159) $(am__append_180) \ + $(am__append_206) +noinst_LIBRARIES = $(am__append_37) $(am__append_107) +radoslib_LTLIBRARIES = $(am__append_109) $(am__append_110) # like bin_PROGRAMS, but these targets are only built for debug builds -bin_DEBUGPROGRAMS = $(am__append_65) $(am__append_108) \ - $(am__append_123) $(am__append_151) $(am__append_152) \ - $(am__append_153) $(am__append_154) $(am__append_156) \ - $(am__append_158) $(am__append_164) $(am__append_166) \ - $(am__append_167) $(am__append_169) $(am__append_170) \ - $(am__append_171) $(am__append_172) $(am__append_173) \ - $(am__append_174) $(am__append_175) $(am__append_176) \ - $(am__append_182) ceph_test_timers ceph_test_signal_handlers \ - ceph_test_rewrite_latency ceph_test_crypto $(am__append_185) \ +bin_DEBUGPROGRAMS = $(am__append_63) $(am__append_104) \ + $(am__append_120) $(am__append_148) $(am__append_149) \ + $(am__append_150) $(am__append_151) $(am__append_153) \ + $(am__append_155) $(am__append_158) $(am__append_160) \ + $(am__append_161) $(am__append_163) $(am__append_164) \ + $(am__append_165) $(am__append_166) $(am__append_167) \ + $(am__append_168) $(am__append_169) $(am__append_170) \ + $(am__append_176) 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_189) $(am__append_191) $(am__append_192) \ + $(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 @@ -6945,7 +7020,7 @@ ceph_sbindir = $(sbindir) su_sbindir = /sbin # tests scripts will be appended to this -check_SCRIPTS = $(am__append_120) test/ceph_objectstore_tool.py \ +check_SCRIPTS = $(am__append_117) 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 \ @@ -6954,7 +7029,7 @@ check_SCRIPTS = $(am__append_120) test/ceph_objectstore_tool.py \ 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_187) $(am__append_188) \ + $(am__append_181) $(am__append_182) \ test/pybind/test_ceph_argparse.py ################################## @@ -6979,8 +7054,8 @@ AM_COMMON_CFLAGS = \ -fno-strict-aliasing \ -fsigned-char -AM_CFLAGS = $(AM_COMMON_CFLAGS) $(am__append_5) $(am__append_67) \ - $(am__append_70) +AM_CFLAGS = $(AM_COMMON_CFLAGS) $(am__append_5) $(am__append_65) \ + $(am__append_68) AM_CPPFLAGS = $(AM_COMMON_CPPFLAGS) # note: this is position dependant, it affects the -l options that @@ -7033,10 +7108,6 @@ LIBRBD_TYPES = librbd_types.la LIBKRBD = libkrbd.la LIBCEPHFS = libcephfs.la LIBERASURE_CODE = liberasure_code.la -LIBOSD_TP = tracing/libosd_tp.la -LIBRADOS_TP = tracing/librados_tp.la -LIBRBD_TP = tracing/librbd_tp.la -LIBOS_TP = tracing/libos_tp.la # Use this for binaries requiring libglobal CEPH_GLOBAL = $(LIBGLOBAL) $(LIBCOMMON) $(PTHREAD_LIBS) -lm $(CRYPTO_LIBS) $(EXTRALIBS) @@ -7046,16 +7117,16 @@ 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_78) -LIBRADOS_DEPS = $(am__append_90) $(am__append_91) -LIBRGW_DEPS = $(am__append_106) + $(LIBJSON_SPIRIT) $(LIBLOG) $(LIBARCH) $(am__append_76) +LIBRADOS_DEPS = $(am__append_88) +LIBRGW_DEPS = $(am__append_102) # This is used by the dencoder test # Do not use TCMALLOC with dencoder DENCODER_SOURCES = $(am__append_24) perfglue/disabled_heap_profiler.cc \ - perfglue/disabled_stubs.cc $(am__append_104) -DENCODER_DEPS = $(am__append_25) + perfglue/disabled_stubs.cc $(am__append_100) +DENCODER_DEPS = $(am__append_25) $(am__append_114) radoslibdir = $(libdir)/rados-classes libarch_la_SOURCES = \ arch/intel.c \ @@ -7160,11 +7231,10 @@ libos_types_la_CXXFLAGS = ${AM_CXXFLAGS} @ENABLE_SERVER_TRUE@ os/WBThrottle.cc os/KeyValueDB.cc \ @ENABLE_SERVER_TRUE@ common/TrackedOp.cc $(am__append_28) \ @ENABLE_SERVER_TRUE@ $(am__append_29) $(am__append_30) \ -@ENABLE_SERVER_TRUE@ $(am__append_40) +@ENABLE_SERVER_TRUE@ $(am__append_39) @ENABLE_SERVER_TRUE@libos_la_CXXFLAGS = ${AM_CXXFLAGS} \ -@ENABLE_SERVER_TRUE@ $(am__append_41) -@ENABLE_SERVER_TRUE@libos_la_LIBADD = $(LIBOS_TYPES) $(am__append_31) \ -@ENABLE_SERVER_TRUE@ $(am__append_42) +@ENABLE_SERVER_TRUE@ $(am__append_40) +@ENABLE_SERVER_TRUE@libos_la_LIBADD = $(LIBOS_TYPES) $(am__append_41) @ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@libos_rocksdb_la_SOURCES = os/RocksDBStore.cc @ENABLE_SERVER_TRUE@@WITH_SLIBROCKSDB_TRUE@libos_rocksdb_la_SOURCES = os/RocksDBStore.cc @ENABLE_SERVER_TRUE@@WITH_DLIBROCKSDB_TRUE@libos_rocksdb_la_CXXFLAGS = ${AM_CXXFLAGS} ${LIBROCKSDB_CFLAGS} -std=gnu++11 @@ -7200,16 +7270,13 @@ libosd_types_la_CXXFLAGS = ${AM_CXXFLAGS} @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libosd_la_CXXFLAGS = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ${AM_CXXFLAGS} \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_44) -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libosd_la_LIBADD = $(LIBOSDC) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOS) $(LIBOSD_TYPES) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOS_TYPES) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_45) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_43) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libosd_la_LIBADD = $(LIBOSDC) $(LIBOS) $(LIBOSD_TYPES) $(LIBOS_TYPES) erasure_codelibdir = $(pkglibdir)/erasure-code erasure_codelib_LTLIBRARIES = libec_jerasure_generic.la \ - $(am__append_50) $(am__append_52) $(am__append_54) \ - libec_jerasure.la libec_lrc.la libec_shec.la $(am__append_60) \ - $(am__append_127) + $(am__append_48) $(am__append_50) $(am__append_52) \ + libec_jerasure.la libec_lrc.la libec_shec.la $(am__append_58) \ + $(am__append_124) jerasure_sources = \ erasure-code/ErasureCode.cc \ erasure-code/jerasure/jerasure/src/cauchy.c \ @@ -7242,7 +7309,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_48) + $(am__append_46) 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 \ @@ -7262,7 +7329,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_49) + $(am__append_47) libec_jerasure_sse3_la_SOURCES = ${jerasure_sources} libec_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS} \ ${INTEL_SSE_FLAGS} \ @@ -7282,7 +7349,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_51) + $(am__append_49) libec_jerasure_sse4_la_SOURCES = ${jerasure_sources} libec_jerasure_sse4_la_CFLAGS = ${AM_CFLAGS} \ ${INTEL_SSE_FLAGS} \ @@ -7306,7 +7373,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_53) + $(am__append_51) libec_jerasure_la_SOURCES = \ erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc @@ -7314,7 +7381,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_55) + $(am__append_53) lrc_sources = \ erasure-code/ErasureCode.cc \ erasure-code/lrc/ErasureCodePluginLrc.cc \ @@ -7325,7 +7392,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_56) + $(am__append_54) libec_shec_la_SOURCES = \ erasure-code/ErasureCode.cc \ erasure-code/shec/ErasureCodePluginShec.cc \ @@ -7366,7 +7433,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_57) + $(am__append_55) @WITH_BETTER_YASM_ELF64_TRUE@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 \ @@ -7404,7 +7471,7 @@ libec_shec_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \ @WITH_BETTER_YASM_ELF64_TRUE@libec_isa_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS) @WITH_BETTER_YASM_ELF64_TRUE@libec_isa_la_LDFLAGS = ${AM_LDFLAGS} \ @WITH_BETTER_YASM_ELF64_TRUE@ -version-info 2:10:0 \ -@WITH_BETTER_YASM_ELF64_TRUE@ $(am__append_59) +@WITH_BETTER_YASM_ELF64_TRUE@ $(am__append_57) @WITH_BETTER_YASM_ELF64_TRUE@libec_isa_la_LIBTOOLFLAGS = --tag=CC liberasure_code_la_SOURCES = \ erasure-code/ErasureCodePlugin.cc @@ -7447,8 +7514,8 @@ liblog_la_SOURCES = \ log/Log.cc \ log/SubsystemMap.cc -libperfglue_la_SOURCES = $(am__append_66) $(am__append_69) \ - $(am__append_72) $(am__append_73) $(am__append_74) +libperfglue_la_SOURCES = $(am__append_64) $(am__append_67) \ + $(am__append_70) $(am__append_71) $(am__append_72) @WITH_TCMALLOC_FALSE@@WITH_TCMALLOC_MINIMAL_TRUE@libperfglue_la_LIBADD = -ltcmalloc_minimal @WITH_TCMALLOC_TRUE@libperfglue_la_LIBADD = -ltcmalloc @@ -7479,9 +7546,10 @@ libcommon_internal_la_SOURCES = ceph_ver.c common/DecayCounter.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_75) $(am__append_76) \ - 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 common/TracepointProvider.cc \ + $(am__append_73) $(am__append_74) 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 @@ -7491,7 +7559,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_77) + $(am__append_75) @WITH_GOOD_YASM_ELF64_TRUE@libcommon_crc_la_LIBTOOLFLAGS = --tag=CC libcommon_la_SOURCES = libcommon_la_LIBADD = $(LIBCOMMON_DEPS) libcommon_api.la @@ -7503,9 +7571,9 @@ 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_81) $(am__append_82) $(am__append_83) \ - $(am__append_84) $(am__append_85) $(am__append_86) \ - $(am__append_87) + $(am__append_79) $(am__append_80) $(am__append_81) \ + $(am__append_82) $(am__append_83) $(am__append_84) \ + $(am__append_85) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@rados_includedir = $(includedir)/rados @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@rados_include_DATA = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(srcdir)/include/rados/librados.h \ @@ -7548,12 +7616,12 @@ libmsg_la_SOURCES = msg/Message.cc msg/Messenger.cc msg/msg_types.cc \ # We need this to avoid basename conflicts with the librados build tests in test/Makefile.am @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@librados_la_CXXFLAGS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ${AM_CXXFLAGS} \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__append_92) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__append_89) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@librados_la_LIBADD = $(LIBRADOS_DEPS) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@librados_la_LDFLAGS = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ ${AM_LDFLAGS} \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ -version-info 2:0:0 \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__append_93) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ $(am__append_90) @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ libradosstriper/libradosstriper.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ libradosstriper/RadosStriperImpl.cc \ @@ -7562,12 +7630,12 @@ libmsg_la_SOURCES = msg/Message.cc msg/Messenger.cc msg/msg_types.cc \ # We need this to avoid basename conflicts with the libradosstriper build tests in test/Makefile.am @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_CXXFLAGS = ${AM_CXXFLAGS} -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@LIBRADOSSTRIPER_DEPS = $(LIBRADOS_DEPS) -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_LIBADD = $(LIBRADOSSTRIPER_DEPS) +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@LIBRADOSSTRIPER_DEPS = librados_internal.la libcls_lock_client.la $(LIBOSDC) $(LIBCOMMON) +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_LIBADD = $(LIBRADOSSTRIPER_DEPS) $(LIBRADOS) @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@libradosstriper_la_LDFLAGS = ${AM_LDFLAGS} \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ -version-info \ @ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ 1:0:0 \ -@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__append_96) +@ENABLE_CLIENT_TRUE@@WITH_RADOSSTRIPER_TRUE@@WITH_RADOS_TRUE@ $(am__append_93) librbd_types_la_SOURCES = \ librbd/WatchNotifyTypes.cc @@ -7593,21 +7661,18 @@ librbd_types_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd/librbd.cc -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_la_LIBADD = librbd_internal.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD_TYPES) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBOSDC) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_la_LIBADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_internal.la $(LIBRBD_TYPES) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) $(LIBCOMMON) $(LIBOSDC) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_internal.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_lock_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(PTHREAD_LIBS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(EXTRALIBS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_100) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(PTHREAD_LIBS) $(EXTRALIBS) + @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_la_LDFLAGS = ${AM_LDFLAGS} \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ -version-info \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ 1:0:0 \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_101) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_97) @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_la_CXXFLAGS = -fvisibility=hidden -fvisibility-inlines-hidden @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@librgw_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOSGW_TRUE@@WITH_RADOS_TRUE@ rgw/librgw.cc \ @@ -7759,25 +7824,34 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@libcls_kvs_la_SOURCES = key_value_store/cls_kvs.cc @ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@libcls_kvs_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS) @ENABLE_SERVER_TRUE@@LINUX_TRUE@@WITH_OSD_TRUE@libcls_kvs_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -export-symbols-regex '.*__cls_.*' +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_types_la_SOURCES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/ActionTypes.cc + # librbd_replay_la exists only to help with unit tests -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_la_SOURCES = rbd_replay/actions.cc \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Deser.cc \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_la_SOURCES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/actions.cc \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/BufferReader.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/ImageNameMap.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/PendingIO.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd_loc.cc \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.cc \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Ser.cc +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/Replayer.cc -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_la_LIBADD = $(LIBRBD) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_la_LIBADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_SOURCES = rbd_replay/rbd-replay.cc -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_LDADD = $(LIBRBD) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_SOURCES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd-replay.cc + +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_LDADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_types.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_ios_la_SOURCES = rbd_replay/ios.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@librbd_replay_ios_la_LIBADD = $(LIBRBD) \ @@ -7785,12 +7859,17 @@ librbd_types_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_SOURCES = rbd_replay/rbd-replay-prep.cc -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_LDADD = $(LIBRBD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_SOURCES = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ rbd_replay/rbd-replay-prep.cc + +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@rbd_replay_prep_LDADD = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay.la \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_ios.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_replay_types.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ -lbabeltrace \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ -lbabeltrace-ctf \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ -lboost_date_time @@ -7803,7 +7882,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_122) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_119) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_erasure_code_non_regression_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/ceph_erasure_code_non_regression.cc @@ -7811,7 +7890,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_124) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_121) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ceph_erasure_code_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/ceph_erasure_code.cc @@ -7819,7 +7898,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_126) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_123) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libec_example_la_SOURCES = test/erasure-code/ErasureCodePluginExample.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libec_example_la_CFLAGS = ${AM_CFLAGS} @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@libec_example_la_CXXFLAGS = ${AM_CXXFLAGS} @@ -7879,7 +7958,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_128) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_125) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ erasure-code/ErasureCode.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCode.cc @@ -7902,7 +7981,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_130) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_127) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_jerasure_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodePluginJerasure.cc @@ -7911,7 +7990,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_131) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_128) @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_isa_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ erasure-code/ErasureCode.cc \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeIsa.cc @@ -7923,7 +8002,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ .libs/libec_isa.la \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBERASURE_CODE) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__append_132) +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__append_129) @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_isa_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ erasure-code/ErasureCode.cc \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodePluginIsa.cc @@ -7935,7 +8014,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ .libs/libec_isa.la \ @ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(LIBERASURE_CODE) \ -@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__append_134) +@ENABLE_SERVER_TRUE@@WITH_BETTER_YASM_ELF64_TRUE@@WITH_OSD_TRUE@ $(am__append_131) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_lrc_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeLrc.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ${lrc_sources} @@ -7945,7 +8024,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_135) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_132) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_plugin_lrc_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodePluginLrc.cc @@ -7954,7 +8033,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_137) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_134) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeShec.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ${libec_shec_la_SOURCES} @@ -7965,7 +8044,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_138) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_135) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_all_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeShec_all.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ${libec_shec_la_SOURCES} @@ -7976,7 +8055,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_139) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_136) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_shec_thread_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeShec_thread.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ ${libec_shec_la_SOURCES} @@ -7987,7 +8066,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_140) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_137) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_erasure_code_example_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ erasure-code/ErasureCode.cc \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ test/erasure-code/TestErasureCodeExample.cc @@ -8005,7 +8084,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(PTHREAD_LIBS) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(EXTRALIBS) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_142) +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_139) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@simple_client_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/simple_client.cc \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/simple_dispatcher.cc @@ -8017,7 +8096,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(PTHREAD_LIBS) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(EXTRALIBS) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_143) +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_140) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@xio_server_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/xio_server.cc \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/xio_dispatcher.cc @@ -8029,7 +8108,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(PTHREAD_LIBS) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(EXTRALIBS) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_145) +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_142) @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@xio_client_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/xio_client.cc \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ test/messenger/xio_dispatcher.cc @@ -8041,7 +8120,7 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(LIBCOMMON) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(PTHREAD_LIBS) \ @ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(EXTRALIBS) \ -@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_146) +@ENABLE_SERVER_TRUE@@ENABLE_XIO_TRUE@ $(am__append_143) # This should use LIBMDS_TYPES once it exists @ENABLE_CLIENT_TRUE@ceph_dencoder_SOURCES = \ @@ -8059,9 +8138,9 @@ librbd_types_la_SOURCES = \ # These should always use explicit _CFLAGS/_CXXFLAGS so avoid basename conflicts @ENABLE_CLIENT_TRUE@ceph_dencoder_CFLAGS = ${AM_CFLAGS} \ -@ENABLE_CLIENT_TRUE@ $(am__append_147) +@ENABLE_CLIENT_TRUE@ $(am__append_144) @ENABLE_CLIENT_TRUE@ceph_dencoder_CXXFLAGS = ${AM_CXXFLAGS} \ -@ENABLE_CLIENT_TRUE@ $(am__append_148) +@ENABLE_CLIENT_TRUE@ $(am__append_145) @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@libradostest_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados/test.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@ test/librados/TestCase.cc @@ -8273,48 +8352,32 @@ librbd_types_la_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ test/librbd/test_main.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@unittest_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS) -DTEST_LIBRBD_INTERNALS -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@unittest_librbd_LDADD = librbd_test.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_api.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_internal.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD_TYPES) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_lock_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_test_stub.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_internal.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBOSDC) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(UNITTEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_161) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@unittest_librbd_LDADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la libcls_lock_client.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_test_stub.la librados_internal.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBOSDC) $(UNITTEST_LDADD) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) $(RADOS_TEST_LDADD) + @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ test/librbd/test_main.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_CXXFLAGS = $(UNITTEST_CXXFLAGS) -DTEST_LIBRBD_INTERNALS -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_LDADD = librbd_test.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_api.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_internal.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD_TYPES) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_lock_client.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_api.la \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS_DEPS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(UNITTEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_162) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_LDADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librbd_test.la librbd_api.la librbd_internal.la $(LIBRBD_TYPES) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ libcls_rbd_client.la libcls_lock_client.la \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ librados_api.la $(LIBRADOS_DEPS) $(UNITTEST_LDADD) \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(CEPH_GLOBAL) $(RADOS_TEST_LDADD) + @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_api_SOURCES = \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ test/librbd/test_support.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ test/librbd/test_librbd.cc \ @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ test/librbd/test_main.cc @ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_api_CXXFLAGS = $(UNITTEST_CXXFLAGS) -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_api_LDADD = \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRADOS) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBCOMMON) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(UNITTEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(RADOS_TEST_LDADD) \ -@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(am__append_163) +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_api_LDADD = \ +@ENABLE_CLIENT_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBRBD) $(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD) + @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.cc @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ceph_test_librbd_fsx_LDADD = \ @ENABLE_CLIENT_TRUE@@LINUX_TRUE@@WITH_RADOS_TRUE@@WITH_RBD_TRUE@ $(LIBKRBD) $(LIBRBD) $(LIBRADOS) \ @@ -8569,13 +8632,13 @@ librbd_types_la_SOURCES = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_osdscrub_LDADD = \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBOSD) $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_180) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_174) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_pglog_SOURCES = test/osd/TestPGLog.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_pglog_CXXFLAGS = $(UNITTEST_CXXFLAGS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_pglog_LDADD = $(LIBOSD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(UNITTEST_LDADD) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_181) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_175) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_hitset_SOURCES = test/osd/hitset.cc @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_hitset_CXXFLAGS = $(UNITTEST_CXXFLAGS) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@unittest_hitset_LDADD = $(LIBOSD) $(UNITTEST_LDADD) $(CEPH_GLOBAL) @@ -8834,7 +8897,7 @@ ceph_test_get_blkdev_size_LDADD = $(LIBCOMMON) @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(CEPH_GLOBAL) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(BOOST_PROGRAM_OPTIONS_LIBS) \ @ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(LIBRADOS) \ -@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_193) +@ENABLE_SERVER_TRUE@@WITH_OSD_TRUE@ $(am__append_187) @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@cephfs_journal_tool_SOURCES = \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ tools/cephfs/cephfs-journal-tool.cc \ @ENABLE_CLIENT_TRUE@@ENABLE_SERVER_TRUE@@WITH_MDS_TRUE@@WITH_RADOS_TRUE@ tools/cephfs/JournalTool.cc \ @@ -8864,12 +8927,52 @@ ceph_psim_LDADD = $(CEPH_GLOBAL) @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@rest_bench_LDADD = $(CEPH_GLOBAL) \ -@WITH_REST_BENCH_TRUE@ $(am__append_197) $(am__append_198) +@WITH_REST_BENCH_TRUE@ $(am__append_191) $(am__append_192) @WITH_REST_BENCH_TRUE@@WITH_SYSTEM_LIBS3_FALSE@rest_bench_CXXFLAGS = ${AM_CXXFLAGS} -I$(top_srcdir)/src/libs3/inc ceph_conf_SOURCES = tools/ceph_conf.cc ceph_conf_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON) ceph_authtool_SOURCES = tools/ceph_authtool.cc ceph_authtool_LDADD = $(CEPH_GLOBAL) $(LIBCOMMON) +@WITH_LTTNG_TRUE@libosd_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/oprequest.c \ +@WITH_LTTNG_TRUE@ tracing/osd.c \ +@WITH_LTTNG_TRUE@ tracing/pg.c + +@WITH_LTTNG_TRUE@nodist_libosd_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/oprequest.h \ +@WITH_LTTNG_TRUE@ tracing/osd.h \ +@WITH_LTTNG_TRUE@ tracing/pg.h + +libosd_tp_la_LIBADD = -llttng-ust -ldl +libosd_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +libosd_tp_la_LDFLAGS = -version-info 1:0:0 +@WITH_LTTNG_TRUE@librados_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/librados.c + +@WITH_LTTNG_TRUE@nodist_librados_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/librados.h + +librados_tp_la_LIBADD = -llttng-ust -ldl +librados_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +librados_tp_la_LDFLAGS = -version-info 2:0:0 +@WITH_LTTNG_TRUE@librbd_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/librbd.c + +@WITH_LTTNG_TRUE@nodist_librbd_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/librbd.h + +librbd_tp_la_LIBADD = -llttng-ust -ldl +librbd_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +librbd_tp_la_LDFLAGS = -version-info 1:0:0 +@WITH_LTTNG_TRUE@libos_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/objectstore.c + +@WITH_LTTNG_TRUE@nodist_libos_tp_la_SOURCES = \ +@WITH_LTTNG_TRUE@ tracing/objectstore.h + +libos_tp_la_LIBADD = -llttng-ust -ldl +libos_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +libos_tp_la_LDFLAGS = -version-info 1:0:0 # subdirs @@ -8884,7 +8987,7 @@ editpaths = sed \ -e 's|@@GCOV_PREFIX_STRIP[@][@]|$(GCOV_PREFIX_STRIP)|g' shell_scripts = ceph-debugpack ceph-post-file ceph-crush-location \ - $(am__append_219) + $(am__append_215) doc_DATA = $(srcdir)/sample.ceph.conf sample.fetch_config # various scripts @@ -8907,12 +9010,12 @@ TESTS = \ @WITH_LTTNG_TRUE@TESTS_ENVIRONMENT = LD_PRELOAD=liblttng-ust-fork.so; export LD_PRELOAD; echo "LD_PRELOAD=$${LD_PRELOAD}"; # pybind -python_PYTHON = $(am__append_202) $(am__append_205) $(am__append_209) \ - $(am__append_214) $(am__append_218) +python_PYTHON = $(am__append_198) $(am__append_201) $(am__append_205) \ + $(am__append_210) $(am__append_214) @ENABLE_CLIENT_TRUE@bash_completiondir = $(sysconfdir)/bash_completion.d @ENABLE_CLIENT_TRUE@bash_completion_DATA = \ @ENABLE_CLIENT_TRUE@ $(srcdir)/bash_completion/ceph \ -@ENABLE_CLIENT_TRUE@ $(am__append_204) $(am__append_207) +@ENABLE_CLIENT_TRUE@ $(am__append_200) $(am__append_203) @ENABLE_CLIENT_TRUE@ceph_syn_SOURCES = ceph_syn.cc \ @ENABLE_CLIENT_TRUE@ client/SyntheticClient.cc # uses g_conf.. \ @ENABLE_CLIENT_TRUE@ needs cleanup @@ -8948,7 +9051,7 @@ python_PYTHON = $(am__append_202) $(am__append_205) $(am__append_209) \ @ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@libcephfs_jni_la_CPPFLAGS = $(JDK_CPPFLAGS) $(AM_CPPFLAGS) @ENABLE_CEPHFS_JAVA_TRUE@@ENABLE_CLIENT_TRUE@@WITH_CEPHFS_TRUE@@WITH_RADOS_TRUE@libcephfs_jni_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 @ENABLE_SERVER_TRUE@ceph_sbin_SCRIPTS = ceph-create-keys \ -@ENABLE_SERVER_TRUE@ $(am__append_224) +@ENABLE_SERVER_TRUE@ $(am__append_220) @ENABLE_SERVER_TRUE@mount_ceph_SOURCES = mount/mount.ceph.c @ENABLE_SERVER_TRUE@mount_ceph_LDADD = $(LIBSECRET) $(LIBCOMMON) @ENABLE_SERVER_TRUE@@WITH_MON_TRUE@ceph_mon_SOURCES = ceph_mon.cc @@ -8965,7 +9068,7 @@ all: $(BUILT_SOURCES) acconfig.h .SUFFIXES: .SUFFIXES: .S .c .cc .cpp .lo .log .o .obj .s .test .test$(EXEEXT) .trs -$(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)/mds/Makefile-client.am $(srcdir)/mds/Makefile-server.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)/global/Makefile.am $(srcdir)/json_spirit/Makefile.am $(srcdir)/log/Makefile.am $(srcdir)/perfglue/Makefile.am $(srcdir)/common/Makefile.am $(srcdir)/msg/Makefile.am $(srcdir)/messages/Makefile.am $(srcdir)/include/Makefile.am $(srcdir)/librados/Makefile.am $(srcdir)/libradosstriper/Makefile.am $(srcdir)/librbd/Makefile.am $(srcdir)/rgw/Makefile.am $(srcdir)/cls/Makefile.am $(srcdir)/cls/Makefile-client.am $(srcdir)/cls/Makefile-server.am $(srcdir)/key_value_store/Makefile.am $(srcdir)/rbd_replay/Makefile.am $(srcdir)/test/Makefile.am $(srcdir)/test/erasure-code/Makefile.am $(srcdir)/test/messenger/Makefile.am $(srcdir)/test/Makefile-client.am $(srcdir)/test/Makefile-server.am $(srcdir)/tools/Makefile.am $(srcdir)/tools/Makefile-client.am $(srcdir)/tools/Makefile-server.am $(srcdir)/Makefile-rocksdb.am $(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.am $(am__configure_deps) +$(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)/mds/Makefile-client.am $(srcdir)/mds/Makefile-server.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)/global/Makefile.am $(srcdir)/json_spirit/Makefile.am $(srcdir)/log/Makefile.am $(srcdir)/perfglue/Makefile.am $(srcdir)/common/Makefile.am $(srcdir)/msg/Makefile.am $(srcdir)/messages/Makefile.am $(srcdir)/include/Makefile.am $(srcdir)/librados/Makefile.am $(srcdir)/libradosstriper/Makefile.am $(srcdir)/librbd/Makefile.am $(srcdir)/rgw/Makefile.am $(srcdir)/cls/Makefile.am $(srcdir)/cls/Makefile-client.am $(srcdir)/cls/Makefile-server.am $(srcdir)/key_value_store/Makefile.am $(srcdir)/rbd_replay/Makefile.am $(srcdir)/test/Makefile.am $(srcdir)/test/erasure-code/Makefile.am $(srcdir)/test/messenger/Makefile.am $(srcdir)/test/Makefile-client.am $(srcdir)/test/Makefile-server.am $(srcdir)/tools/Makefile.am $(srcdir)/tools/Makefile-client.am $(srcdir)/tools/Makefile-server.am $(srcdir)/Makefile-rocksdb.am $(srcdir)/tracing/Makefile.am $(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -8986,7 +9089,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)/mds/Makefile-client.am $(srcdir)/mds/Makefile-server.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)/global/Makefile.am $(srcdir)/json_spirit/Makefile.am $(srcdir)/log/Makefile.am $(srcdir)/perfglue/Makefile.am $(srcdir)/common/Makefile.am $(srcdir)/msg/Makefile.am $(srcdir)/messages/Makefile.am $(srcdir)/include/Makefile.am $(srcdir)/librados/Makefile.am $(srcdir)/libradosstriper/Makefile.am $(srcdir)/librbd/Makefile.am $(srcdir)/rgw/Makefile.am $(srcdir)/cls/Makefile.am $(srcdir)/cls/Makefile-client.am $(srcdir)/cls/Makefile-server.am $(srcdir)/key_value_store/Makefile.am $(srcdir)/rbd_replay/Makefile.am $(srcdir)/test/Makefile.am $(srcdir)/test/erasure-code/Makefile.am $(srcdir)/test/messenger/Makefile.am $(srcdir)/test/Makefile-client.am $(srcdir)/test/Makefile-server.am $(srcdir)/tools/Makefile.am $(srcdir)/tools/Makefile-client.am $(srcdir)/tools/Makefile-server.am $(srcdir)/Makefile-rocksdb.am $(srcdir)/Makefile-client.am $(srcdir)/Makefile-server.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)/mds/Makefile-client.am $(srcdir)/mds/Makefile-server.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)/global/Makefile.am $(srcdir)/json_spirit/Makefile.am $(srcdir)/log/Makefile.am $(srcdir)/perfglue/Makefile.am $(srcdir)/common/Makefile.am $(srcdir)/msg/Makefile.am $(srcdir)/messages/Makefile.am $(srcdir)/include/Makefile.am $(srcdir)/librados/Makefile.am $(srcdir)/libradosstriper/Makefile.am $(srcdir)/librbd/Makefile.am $(srcdir)/rgw/Makefile.am $(srcdir)/cls/Makefile.am $(srcdir)/cls/Makefile-client.am $(srcdir)/cls/Makefile-server.am $(srcdir)/key_value_store/Makefile.am $(srcdir)/rbd_replay/Makefile.am $(srcdir)/test/Makefile.am $(srcdir)/test/erasure-code/Makefile.am $(srcdir)/test/messenger/Makefile.am $(srcdir)/test/Makefile-client.am $(srcdir)/test/Makefile-server.am $(srcdir)/tools/Makefile.am $(srcdir)/tools/Makefile-client.am $(srcdir)/tools/Makefile-server.am $(srcdir)/Makefile-rocksdb.am $(srcdir)/tracing/Makefile.am $(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 @@ -9655,6 +9758,8 @@ common/Cycles.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) common/ContextCompletion.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) +common/TracepointProvider.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) \ @@ -10492,6 +10597,17 @@ os/libos_rocksdb_la-RocksDBStore.lo: os/$(am__dirstamp) \ libos_rocksdb.la: $(libos_rocksdb_la_OBJECTS) $(libos_rocksdb_la_DEPENDENCIES) $(EXTRA_libos_rocksdb_la_DEPENDENCIES) $(AM_V_CXXLD)$(libos_rocksdb_la_LINK) $(am_libos_rocksdb_la_rpath) $(libos_rocksdb_la_OBJECTS) $(libos_rocksdb_la_LIBADD) $(LIBS) +tracing/$(am__dirstamp): + @$(MKDIR_P) tracing + @: > tracing/$(am__dirstamp) +tracing/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tracing/$(DEPDIR) + @: > tracing/$(DEPDIR)/$(am__dirstamp) +tracing/libos_tp_la-objectstore.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) + +libos_tp.la: $(libos_tp_la_OBJECTS) $(libos_tp_la_DEPENDENCIES) $(EXTRA_libos_tp_la_DEPENDENCIES) + $(AM_V_CCLD)$(libos_tp_la_LINK) $(am_libos_tp_la_rpath) $(libos_tp_la_OBJECTS) $(libos_tp_la_LIBADD) $(LIBS) os/libos_types_la-Transaction.lo: os/$(am__dirstamp) \ os/$(DEPDIR)/$(am__dirstamp) @@ -10539,6 +10655,15 @@ objclass/libosd_la-class_api.lo: objclass/$(am__dirstamp) \ libosd.la: $(libosd_la_OBJECTS) $(libosd_la_DEPENDENCIES) $(EXTRA_libosd_la_DEPENDENCIES) $(AM_V_CXXLD)$(libosd_la_LINK) $(am_libosd_la_rpath) $(libosd_la_OBJECTS) $(libosd_la_LIBADD) $(LIBS) +tracing/libosd_tp_la-oprequest.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) +tracing/libosd_tp_la-osd.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) +tracing/libosd_tp_la-pg.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) + +libosd_tp.la: $(libosd_tp_la_OBJECTS) $(libosd_tp_la_DEPENDENCIES) $(EXTRA_libosd_tp_la_DEPENDENCIES) + $(AM_V_CCLD)$(libosd_tp_la_LINK) $(am_libosd_tp_la_rpath) $(libosd_tp_la_OBJECTS) $(libosd_tp_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) \ @@ -10641,6 +10766,11 @@ test/librados_test_stub/TestWatchNotify.lo: \ librados_test_stub.la: $(librados_test_stub_la_OBJECTS) $(librados_test_stub_la_DEPENDENCIES) $(EXTRA_librados_test_stub_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(am_librados_test_stub_la_rpath) $(librados_test_stub_la_OBJECTS) $(librados_test_stub_la_LIBADD) $(LIBS) +tracing/librados_tp_la-librados.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) + +librados_tp.la: $(librados_tp_la_OBJECTS) $(librados_tp_la_DEPENDENCIES) $(EXTRA_librados_tp_la_DEPENDENCIES) + $(AM_V_CCLD)$(librados_tp_la_LINK) $(am_librados_tp_la_rpath) $(librados_tp_la_OBJECTS) $(librados_tp_la_LIBADD) $(LIBS) libradosstriper/$(am__dirstamp): @$(MKDIR_P) libradosstriper @: > libradosstriper/$(am__dirstamp) @@ -10740,7 +10870,7 @@ rbd_replay/$(DEPDIR)/$(am__dirstamp): @: > rbd_replay/$(DEPDIR)/$(am__dirstamp) rbd_replay/actions.lo: rbd_replay/$(am__dirstamp) \ rbd_replay/$(DEPDIR)/$(am__dirstamp) -rbd_replay/Deser.lo: rbd_replay/$(am__dirstamp) \ +rbd_replay/BufferReader.lo: rbd_replay/$(am__dirstamp) \ rbd_replay/$(DEPDIR)/$(am__dirstamp) rbd_replay/ImageNameMap.lo: rbd_replay/$(am__dirstamp) \ rbd_replay/$(DEPDIR)/$(am__dirstamp) @@ -10750,8 +10880,6 @@ rbd_replay/rbd_loc.lo: rbd_replay/$(am__dirstamp) \ rbd_replay/$(DEPDIR)/$(am__dirstamp) rbd_replay/Replayer.lo: rbd_replay/$(am__dirstamp) \ rbd_replay/$(DEPDIR)/$(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) $(am_librbd_replay_la_rpath) $(librbd_replay_la_OBJECTS) $(librbd_replay_la_LIBADD) $(LIBS) @@ -10760,6 +10888,11 @@ rbd_replay/ios.lo: rbd_replay/$(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) $(am_librbd_replay_ios_la_rpath) $(librbd_replay_ios_la_OBJECTS) $(librbd_replay_ios_la_LIBADD) $(LIBS) +rbd_replay/ActionTypes.lo: rbd_replay/$(am__dirstamp) \ + rbd_replay/$(DEPDIR)/$(am__dirstamp) + +librbd_replay_types.la: $(librbd_replay_types_la_OBJECTS) $(librbd_replay_types_la_DEPENDENCIES) $(EXTRA_librbd_replay_types_la_DEPENDENCIES) + $(AM_V_CXXLD)$(CXXLINK) $(am_librbd_replay_types_la_rpath) $(librbd_replay_types_la_OBJECTS) $(librbd_replay_types_la_LIBADD) $(LIBS) test/librbd/$(am__dirstamp): @$(MKDIR_P) test/librbd @: > test/librbd/$(am__dirstamp) @@ -10787,6 +10920,11 @@ test/librbd/librbd_test_la-test_ObjectMap.lo: \ librbd_test.la: $(librbd_test_la_OBJECTS) $(librbd_test_la_DEPENDENCIES) $(EXTRA_librbd_test_la_DEPENDENCIES) $(AM_V_CXXLD)$(librbd_test_la_LINK) $(am_librbd_test_la_rpath) $(librbd_test_la_OBJECTS) $(librbd_test_la_LIBADD) $(LIBS) +tracing/librbd_tp_la-librbd.lo: tracing/$(am__dirstamp) \ + tracing/$(DEPDIR)/$(am__dirstamp) + +librbd_tp.la: $(librbd_tp_la_OBJECTS) $(librbd_tp_la_DEPENDENCIES) $(EXTRA_librbd_tp_la_DEPENDENCIES) + $(AM_V_CCLD)$(librbd_tp_la_LINK) $(am_librbd_tp_la_rpath) $(librbd_tp_la_OBJECTS) $(librbd_tp_la_LIBADD) $(LIBS) librbd/WatchNotifyTypes.lo: librbd/$(am__dirstamp) \ librbd/$(DEPDIR)/$(am__dirstamp) @@ -13560,6 +13698,8 @@ mostlyclean-compile: -rm -f tools/*.$(OBJEXT) -rm -f tools/cephfs/*.$(OBJEXT) -rm -f tools/rados/*.$(OBJEXT) + -rm -f tracing/*.$(OBJEXT) + -rm -f tracing/*.lo distclean-compile: -rm -f *.tab.c @@ -13656,6 +13796,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/Thread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/Throttle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/Timer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/TracepointProvider.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/TrackedOp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/WorkQueue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/addr_parsing.Plo@am__quote@ @@ -14149,11 +14290,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@perfglue/$(DEPDIR)/disabled_stubs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@perfglue/$(DEPDIR)/heap_profiler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_fuse/$(DEPDIR)/rbd-fuse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/Deser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/ActionTypes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/BufferReader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/ImageNameMap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/PendingIO.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/Replayer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/Ser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/actions.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/ios.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rbd_replay/$(DEPDIR)/rbd-replay-prep.Po@am__quote@ @@ -14524,6 +14665,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@tools/rados/$(DEPDIR)/rados_export.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tools/rados/$(DEPDIR)/rados_import.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tools/rados/$(DEPDIR)/rados_sync.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/libos_tp_la-objectstore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/libosd_tp_la-oprequest.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/libosd_tp_la-osd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/libosd_tp_la-pg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/librados_tp_la-librados.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tracing/$(DEPDIR)/librbd_tp_la-librbd.Plo@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @@ -15231,6 +15378,48 @@ erasure-code/jerasure/gf-complete/src/libec_shec_la-gf_w8.lo: erasure-code/jeras @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libec_shec_la_CFLAGS) $(CFLAGS) -c -o erasure-code/jerasure/gf-complete/src/libec_shec_la-gf_w8.lo `test -f 'erasure-code/jerasure/gf-complete/src/gf_w8.c' || echo '$(srcdir)/'`erasure-code/jerasure/gf-complete/src/gf_w8.c +tracing/libos_tp_la-objectstore.lo: tracing/objectstore.c +@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) $(libos_tp_la_CFLAGS) $(CFLAGS) -MT tracing/libos_tp_la-objectstore.lo -MD -MP -MF tracing/$(DEPDIR)/libos_tp_la-objectstore.Tpo -c -o tracing/libos_tp_la-objectstore.lo `test -f 'tracing/objectstore.c' || echo '$(srcdir)/'`tracing/objectstore.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/libos_tp_la-objectstore.Tpo tracing/$(DEPDIR)/libos_tp_la-objectstore.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/objectstore.c' object='tracing/libos_tp_la-objectstore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libos_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/libos_tp_la-objectstore.lo `test -f 'tracing/objectstore.c' || echo '$(srcdir)/'`tracing/objectstore.c + +tracing/libosd_tp_la-oprequest.lo: tracing/oprequest.c +@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) $(libosd_tp_la_CFLAGS) $(CFLAGS) -MT tracing/libosd_tp_la-oprequest.lo -MD -MP -MF tracing/$(DEPDIR)/libosd_tp_la-oprequest.Tpo -c -o tracing/libosd_tp_la-oprequest.lo `test -f 'tracing/oprequest.c' || echo '$(srcdir)/'`tracing/oprequest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/libosd_tp_la-oprequest.Tpo tracing/$(DEPDIR)/libosd_tp_la-oprequest.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/oprequest.c' object='tracing/libosd_tp_la-oprequest.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libosd_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/libosd_tp_la-oprequest.lo `test -f 'tracing/oprequest.c' || echo '$(srcdir)/'`tracing/oprequest.c + +tracing/libosd_tp_la-osd.lo: tracing/osd.c +@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) $(libosd_tp_la_CFLAGS) $(CFLAGS) -MT tracing/libosd_tp_la-osd.lo -MD -MP -MF tracing/$(DEPDIR)/libosd_tp_la-osd.Tpo -c -o tracing/libosd_tp_la-osd.lo `test -f 'tracing/osd.c' || echo '$(srcdir)/'`tracing/osd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/libosd_tp_la-osd.Tpo tracing/$(DEPDIR)/libosd_tp_la-osd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/osd.c' object='tracing/libosd_tp_la-osd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libosd_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/libosd_tp_la-osd.lo `test -f 'tracing/osd.c' || echo '$(srcdir)/'`tracing/osd.c + +tracing/libosd_tp_la-pg.lo: tracing/pg.c +@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) $(libosd_tp_la_CFLAGS) $(CFLAGS) -MT tracing/libosd_tp_la-pg.lo -MD -MP -MF tracing/$(DEPDIR)/libosd_tp_la-pg.Tpo -c -o tracing/libosd_tp_la-pg.lo `test -f 'tracing/pg.c' || echo '$(srcdir)/'`tracing/pg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/libosd_tp_la-pg.Tpo tracing/$(DEPDIR)/libosd_tp_la-pg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/pg.c' object='tracing/libosd_tp_la-pg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libosd_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/libosd_tp_la-pg.lo `test -f 'tracing/pg.c' || echo '$(srcdir)/'`tracing/pg.c + +tracing/librados_tp_la-librados.lo: tracing/librados.c +@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) $(librados_tp_la_CFLAGS) $(CFLAGS) -MT tracing/librados_tp_la-librados.lo -MD -MP -MF tracing/$(DEPDIR)/librados_tp_la-librados.Tpo -c -o tracing/librados_tp_la-librados.lo `test -f 'tracing/librados.c' || echo '$(srcdir)/'`tracing/librados.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/librados_tp_la-librados.Tpo tracing/$(DEPDIR)/librados_tp_la-librados.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/librados.c' object='tracing/librados_tp_la-librados.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librados_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/librados_tp_la-librados.lo `test -f 'tracing/librados.c' || echo '$(srcdir)/'`tracing/librados.c + +tracing/librbd_tp_la-librbd.lo: tracing/librbd.c +@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) $(librbd_tp_la_CFLAGS) $(CFLAGS) -MT tracing/librbd_tp_la-librbd.lo -MD -MP -MF tracing/$(DEPDIR)/librbd_tp_la-librbd.Tpo -c -o tracing/librbd_tp_la-librbd.lo `test -f 'tracing/librbd.c' || echo '$(srcdir)/'`tracing/librbd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tracing/$(DEPDIR)/librbd_tp_la-librbd.Tpo tracing/$(DEPDIR)/librbd_tp_la-librbd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tracing/librbd.c' object='tracing/librbd_tp_la-librbd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librbd_tp_la_CFLAGS) $(CFLAGS) -c -o tracing/librbd_tp_la-librbd.lo `test -f 'tracing/librbd.c' || echo '$(srcdir)/'`tracing/librbd.c + mds/ceph_dencoder-locks.o: mds/locks.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ceph_dencoder_CFLAGS) $(CFLAGS) -MT mds/ceph_dencoder-locks.o -MD -MP -MF mds/$(DEPDIR)/ceph_dencoder-locks.Tpo -c -o mds/ceph_dencoder-locks.o `test -f 'mds/locks.c' || echo '$(srcdir)/'`mds/locks.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mds/$(DEPDIR)/ceph_dencoder-locks.Tpo mds/$(DEPDIR)/ceph_dencoder-locks.Po @@ -20955,6 +21144,7 @@ clean-libtool: -rm -rf test/libradosstriper/.libs test/libradosstriper/_libs -rm -rf test/librbd/.libs test/librbd/_libs -rm -rf test/system/.libs test/system/_libs + -rm -rf tracing/.libs tracing/_libs install-pythonPYTHON: $(python_PYTHON) @$(NORMAL_INSTALL) @list='$(python_PYTHON)'; dlist=; list2=; test -n "$(pythondir)" || list=; \ @@ -22390,6 +22580,8 @@ distclean-generic: -rm -f tools/cephfs/$(am__dirstamp) -rm -f tools/rados/$(DEPDIR)/$(am__dirstamp) -rm -f tools/rados/$(am__dirstamp) + -rm -f tracing/$(DEPDIR)/$(am__dirstamp) + -rm -f tracing/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -22405,7 +22597,7 @@ clean-am: clean-binPROGRAMS clean-checkPROGRAMS \ clean-sbinPROGRAMS clean-su_sbinPROGRAMS mostlyclean-am distclean: distclean-recursive - -rm -rf ./$(DEPDIR) arch/$(DEPDIR) auth/$(DEPDIR) auth/cephx/$(DEPDIR) auth/none/$(DEPDIR) auth/unknown/$(DEPDIR) civetweb/src/$(DEPDIR) client/$(DEPDIR) cls/hello/$(DEPDIR) cls/lock/$(DEPDIR) cls/log/$(DEPDIR) cls/rbd/$(DEPDIR) cls/refcount/$(DEPDIR) cls/replica_log/$(DEPDIR) cls/rgw/$(DEPDIR) cls/statelog/$(DEPDIR) cls/user/$(DEPDIR) cls/version/$(DEPDIR) common/$(DEPDIR) crush/$(DEPDIR) erasure-code/$(DEPDIR) erasure-code/isa/$(DEPDIR) erasure-code/isa/isa-l/erasure_code/$(DEPDIR) erasure-code/jerasure/$(DEPDIR) erasure-code/jerasure/gf-complete/src/$(DEPDIR) erasure-code/jerasure/gf-complete/src/neon/$(DEPDIR) erasure-code/jerasure/jerasure/src/$(DEPDIR) erasure-code/lrc/$(DEPDIR) erasure-code/shec/$(DEPDIR) global/$(DEPDIR) java/native/$(DEPDIR) json_spirit/$(DEPDIR) key_value_store/$(DEPDIR) librados/$(DEPDIR) libradosstriper/$(DEPDIR) librbd/$(DEPDIR) log/$(DEPDIR) mds/$(DEPDIR) mon/$(DEPDIR) mount/$(DEPDIR) msg/$(DEPDIR) msg/async/$(DEPDIR) msg/simple/$(DEPDIR) msg/xio/$(DEPDIR) objclass/$(DEPDIR) os/$(DEPDIR) osd/$(DEPDIR) osdc/$(DEPDIR) perfglue/$(DEPDIR) rbd_fuse/$(DEPDIR) rbd_replay/$(DEPDIR) rgw/$(DEPDIR) test/$(DEPDIR) test/ObjectMap/$(DEPDIR) test/bench/$(DEPDIR) test/cls_hello/$(DEPDIR) test/cls_lock/$(DEPDIR) test/cls_log/$(DEPDIR) test/cls_rbd/$(DEPDIR) test/cls_refcount/$(DEPDIR) test/cls_replica_log/$(DEPDIR) test/cls_rgw/$(DEPDIR) test/cls_statelog/$(DEPDIR) test/cls_version/$(DEPDIR) test/common/$(DEPDIR) test/crush/$(DEPDIR) test/encoding/$(DEPDIR) test/erasure-code/$(DEPDIR) test/filestore/$(DEPDIR) test/fs/$(DEPDIR) test/libcephfs/$(DEPDIR) test/librados/$(DEPDIR) test/librados_test_stub/$(DEPDIR) test/libradosstriper/$(DEPDIR) test/librbd/$(DEPDIR) test/mds/$(DEPDIR) test/messenger/$(DEPDIR) test/mon/$(DEPDIR) test/msgr/$(DEPDIR) test/objectstore/$(DEPDIR) test/os/$(DEPDIR) test/osd/$(DEPDIR) test/osdc/$(DEPDIR) test/rgw/$(DEPDIR) test/system/$(DEPDIR) tools/$(DEPDIR) tools/cephfs/$(DEPDIR) tools/rados/$(DEPDIR) + -rm -rf ./$(DEPDIR) arch/$(DEPDIR) auth/$(DEPDIR) auth/cephx/$(DEPDIR) auth/none/$(DEPDIR) auth/unknown/$(DEPDIR) civetweb/src/$(DEPDIR) client/$(DEPDIR) cls/hello/$(DEPDIR) cls/lock/$(DEPDIR) cls/log/$(DEPDIR) cls/rbd/$(DEPDIR) cls/refcount/$(DEPDIR) cls/replica_log/$(DEPDIR) cls/rgw/$(DEPDIR) cls/statelog/$(DEPDIR) cls/user/$(DEPDIR) cls/version/$(DEPDIR) common/$(DEPDIR) crush/$(DEPDIR) erasure-code/$(DEPDIR) erasure-code/isa/$(DEPDIR) erasure-code/isa/isa-l/erasure_code/$(DEPDIR) erasure-code/jerasure/$(DEPDIR) erasure-code/jerasure/gf-complete/src/$(DEPDIR) erasure-code/jerasure/gf-complete/src/neon/$(DEPDIR) erasure-code/jerasure/jerasure/src/$(DEPDIR) erasure-code/lrc/$(DEPDIR) erasure-code/shec/$(DEPDIR) global/$(DEPDIR) java/native/$(DEPDIR) json_spirit/$(DEPDIR) key_value_store/$(DEPDIR) librados/$(DEPDIR) libradosstriper/$(DEPDIR) librbd/$(DEPDIR) log/$(DEPDIR) mds/$(DEPDIR) mon/$(DEPDIR) mount/$(DEPDIR) msg/$(DEPDIR) msg/async/$(DEPDIR) msg/simple/$(DEPDIR) msg/xio/$(DEPDIR) objclass/$(DEPDIR) os/$(DEPDIR) osd/$(DEPDIR) osdc/$(DEPDIR) perfglue/$(DEPDIR) rbd_fuse/$(DEPDIR) rbd_replay/$(DEPDIR) rgw/$(DEPDIR) test/$(DEPDIR) test/ObjectMap/$(DEPDIR) test/bench/$(DEPDIR) test/cls_hello/$(DEPDIR) test/cls_lock/$(DEPDIR) test/cls_log/$(DEPDIR) test/cls_rbd/$(DEPDIR) test/cls_refcount/$(DEPDIR) test/cls_replica_log/$(DEPDIR) test/cls_rgw/$(DEPDIR) test/cls_statelog/$(DEPDIR) test/cls_version/$(DEPDIR) test/common/$(DEPDIR) test/crush/$(DEPDIR) test/encoding/$(DEPDIR) test/erasure-code/$(DEPDIR) test/filestore/$(DEPDIR) test/fs/$(DEPDIR) test/libcephfs/$(DEPDIR) test/librados/$(DEPDIR) test/librados_test_stub/$(DEPDIR) test/libradosstriper/$(DEPDIR) test/librbd/$(DEPDIR) test/mds/$(DEPDIR) test/messenger/$(DEPDIR) test/mon/$(DEPDIR) test/msgr/$(DEPDIR) test/objectstore/$(DEPDIR) test/os/$(DEPDIR) test/osd/$(DEPDIR) test/osdc/$(DEPDIR) test/rgw/$(DEPDIR) test/system/$(DEPDIR) tools/$(DEPDIR) tools/cephfs/$(DEPDIR) tools/rados/$(DEPDIR) tracing/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags @@ -22461,7 +22653,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) arch/$(DEPDIR) auth/$(DEPDIR) auth/cephx/$(DEPDIR) auth/none/$(DEPDIR) auth/unknown/$(DEPDIR) civetweb/src/$(DEPDIR) client/$(DEPDIR) cls/hello/$(DEPDIR) cls/lock/$(DEPDIR) cls/log/$(DEPDIR) cls/rbd/$(DEPDIR) cls/refcount/$(DEPDIR) cls/replica_log/$(DEPDIR) cls/rgw/$(DEPDIR) cls/statelog/$(DEPDIR) cls/user/$(DEPDIR) cls/version/$(DEPDIR) common/$(DEPDIR) crush/$(DEPDIR) erasure-code/$(DEPDIR) erasure-code/isa/$(DEPDIR) erasure-code/isa/isa-l/erasure_code/$(DEPDIR) erasure-code/jerasure/$(DEPDIR) erasure-code/jerasure/gf-complete/src/$(DEPDIR) erasure-code/jerasure/gf-complete/src/neon/$(DEPDIR) erasure-code/jerasure/jerasure/src/$(DEPDIR) erasure-code/lrc/$(DEPDIR) erasure-code/shec/$(DEPDIR) global/$(DEPDIR) java/native/$(DEPDIR) json_spirit/$(DEPDIR) key_value_store/$(DEPDIR) librados/$(DEPDIR) libradosstriper/$(DEPDIR) librbd/$(DEPDIR) log/$(DEPDIR) mds/$(DEPDIR) mon/$(DEPDIR) mount/$(DEPDIR) msg/$(DEPDIR) msg/async/$(DEPDIR) msg/simple/$(DEPDIR) msg/xio/$(DEPDIR) objclass/$(DEPDIR) os/$(DEPDIR) osd/$(DEPDIR) osdc/$(DEPDIR) perfglue/$(DEPDIR) rbd_fuse/$(DEPDIR) rbd_replay/$(DEPDIR) rgw/$(DEPDIR) test/$(DEPDIR) test/ObjectMap/$(DEPDIR) test/bench/$(DEPDIR) test/cls_hello/$(DEPDIR) test/cls_lock/$(DEPDIR) test/cls_log/$(DEPDIR) test/cls_rbd/$(DEPDIR) test/cls_refcount/$(DEPDIR) test/cls_replica_log/$(DEPDIR) test/cls_rgw/$(DEPDIR) test/cls_statelog/$(DEPDIR) test/cls_version/$(DEPDIR) test/common/$(DEPDIR) test/crush/$(DEPDIR) test/encoding/$(DEPDIR) test/erasure-code/$(DEPDIR) test/filestore/$(DEPDIR) test/fs/$(DEPDIR) test/libcephfs/$(DEPDIR) test/librados/$(DEPDIR) test/librados_test_stub/$(DEPDIR) test/libradosstriper/$(DEPDIR) test/librbd/$(DEPDIR) test/mds/$(DEPDIR) test/messenger/$(DEPDIR) test/mon/$(DEPDIR) test/msgr/$(DEPDIR) test/objectstore/$(DEPDIR) test/os/$(DEPDIR) test/osd/$(DEPDIR) test/osdc/$(DEPDIR) test/rgw/$(DEPDIR) test/system/$(DEPDIR) tools/$(DEPDIR) tools/cephfs/$(DEPDIR) tools/rados/$(DEPDIR) + -rm -rf ./$(DEPDIR) arch/$(DEPDIR) auth/$(DEPDIR) auth/cephx/$(DEPDIR) auth/none/$(DEPDIR) auth/unknown/$(DEPDIR) civetweb/src/$(DEPDIR) client/$(DEPDIR) cls/hello/$(DEPDIR) cls/lock/$(DEPDIR) cls/log/$(DEPDIR) cls/rbd/$(DEPDIR) cls/refcount/$(DEPDIR) cls/replica_log/$(DEPDIR) cls/rgw/$(DEPDIR) cls/statelog/$(DEPDIR) cls/user/$(DEPDIR) cls/version/$(DEPDIR) common/$(DEPDIR) crush/$(DEPDIR) erasure-code/$(DEPDIR) erasure-code/isa/$(DEPDIR) erasure-code/isa/isa-l/erasure_code/$(DEPDIR) erasure-code/jerasure/$(DEPDIR) erasure-code/jerasure/gf-complete/src/$(DEPDIR) erasure-code/jerasure/gf-complete/src/neon/$(DEPDIR) erasure-code/jerasure/jerasure/src/$(DEPDIR) erasure-code/lrc/$(DEPDIR) erasure-code/shec/$(DEPDIR) global/$(DEPDIR) java/native/$(DEPDIR) json_spirit/$(DEPDIR) key_value_store/$(DEPDIR) librados/$(DEPDIR) libradosstriper/$(DEPDIR) librbd/$(DEPDIR) log/$(DEPDIR) mds/$(DEPDIR) mon/$(DEPDIR) mount/$(DEPDIR) msg/$(DEPDIR) msg/async/$(DEPDIR) msg/simple/$(DEPDIR) msg/xio/$(DEPDIR) objclass/$(DEPDIR) os/$(DEPDIR) osd/$(DEPDIR) osdc/$(DEPDIR) perfglue/$(DEPDIR) rbd_fuse/$(DEPDIR) rbd_replay/$(DEPDIR) rgw/$(DEPDIR) test/$(DEPDIR) test/ObjectMap/$(DEPDIR) test/bench/$(DEPDIR) test/cls_hello/$(DEPDIR) test/cls_lock/$(DEPDIR) test/cls_log/$(DEPDIR) test/cls_rbd/$(DEPDIR) test/cls_refcount/$(DEPDIR) test/cls_replica_log/$(DEPDIR) test/cls_rgw/$(DEPDIR) test/cls_statelog/$(DEPDIR) test/cls_version/$(DEPDIR) test/common/$(DEPDIR) test/crush/$(DEPDIR) test/encoding/$(DEPDIR) test/erasure-code/$(DEPDIR) test/filestore/$(DEPDIR) test/fs/$(DEPDIR) test/libcephfs/$(DEPDIR) test/librados/$(DEPDIR) test/librados_test_stub/$(DEPDIR) test/libradosstriper/$(DEPDIR) test/librbd/$(DEPDIR) test/mds/$(DEPDIR) test/messenger/$(DEPDIR) test/mon/$(DEPDIR) test/msgr/$(DEPDIR) test/objectstore/$(DEPDIR) test/os/$(DEPDIR) test/osd/$(DEPDIR) test/osdc/$(DEPDIR) test/rgw/$(DEPDIR) test/system/$(DEPDIR) tools/$(DEPDIR) tools/cephfs/$(DEPDIR) tools/rados/$(DEPDIR) tracing/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -22577,6 +22769,9 @@ docker-check: # target to build but not run the unit tests unittests:: $(check_PROGRAMS) + +@WITH_LTTNG_TRUE@tracing/%.h: tracing/%.tp +@WITH_LTTNG_TRUE@ $(LTTNG_GEN_TP_PROG) $< -o tracing/$*.h $(shell_scripts): Makefile $(shell_scripts): %: %.in rm -f $@ $@.tmp diff --git a/ceph/src/auth/cephx/CephxServiceHandler.cc b/ceph/src/auth/cephx/CephxServiceHandler.cc index c5d91d98..59416b64 100644 --- a/ceph/src/auth/cephx/CephxServiceHandler.cc +++ b/ceph/src/auth/cephx/CephxServiceHandler.cc @@ -97,7 +97,7 @@ int CephxServiceHandler::handle_request(bufferlist::iterator& indata, bufferlist bool should_enc_ticket = false; EntityAuth eauth; - if (key_server->get_auth(entity_name, eauth) < 0) { + if (! key_server->get_auth(entity_name, eauth)) { ret = -EPERM; break; } @@ -183,8 +183,10 @@ int CephxServiceHandler::handle_request(bufferlist::iterator& indata, bufferlist { ldout(cct, 10) << "handle_request getting rotating secret for " << entity_name << dendl; build_cephx_response_header(cephx_header.request_type, 0, result_bl); - key_server->get_rotating_encrypted(entity_name, result_bl); - ret = 0; + if (!key_server->get_rotating_encrypted(entity_name, result_bl)) { + ret = -EPERM; + break; + } } break; diff --git a/ceph/src/ceph-disk b/ceph/src/ceph-disk index 4a485201..a32200cd 100755 --- a/ceph/src/ceph-disk +++ b/ceph/src/ceph-disk @@ -996,9 +996,9 @@ def get_free_partition_index(dev): 'BYT;' not in lines): raise Error('parted output expected to contain one of ' + 'CHH; CYL; or BYT; : ' + lines) - if dev not in lines: + if os.path.realpath(dev) not in lines: raise Error('parted output expected to contain ' + dev + ': ' + lines) - _, partitions = lines.split(dev) + _, partitions = lines.split(os.path.realpath(dev)) partition_numbers = extract_parted_partition_numbers(partitions) if partition_numbers: return max(partition_numbers) + 1 diff --git a/ceph/src/ceph_fuse.cc b/ceph/src/ceph_fuse.cc index 76168503..4d46639b 100644 --- a/ceph/src/ceph_fuse.cc +++ b/ceph/src/ceph_fuse.cc @@ -163,9 +163,7 @@ int main(int argc, const char **argv, const char *envp[]) { goto out_mc_start_failed; // start up network - messenger = Messenger::create(g_ceph_context, g_conf->ms_type, - entity_name_t::CLIENT(), "client", - getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "client"); messenger->set_default_policy(Messenger::Policy::lossy_client(0, 0)); messenger->set_policy(entity_name_t::TYPE_MDS, Messenger::Policy::lossless_client(0, 0)); diff --git a/ceph/src/ceph_osd.cc b/ceph/src/ceph_osd.cc index 884b7edc..18bc46c8 100644 --- a/ceph/src/ceph_osd.cc +++ b/ceph/src/ceph_osd.cc @@ -34,6 +34,7 @@ using namespace std; #include "msg/Messenger.h" #include "common/Timer.h" +#include "common/TracepointProvider.h" #include "common/ceph_argparse.h" #include "global/global_init.h" @@ -51,6 +52,15 @@ using namespace std; #define dout_subsys ceph_subsys_osd +namespace { + +TracepointProvider::Traits osd_tracepoint_traits("libosd_tp.so", + "osd_tracing"); +TracepointProvider::Traits os_tracepoint_traits("libos_tp.so", + "osd_objectstore_tracing"); + +} // anonymous namespace + OSD *osd = NULL; void handle_osd_signal(int signum) @@ -412,11 +422,17 @@ int main(int argc, const char **argv) CEPH_FEATURE_MSG_AUTH | CEPH_FEATURE_OSD_ERASURE_CODES; + // All feature bits 0 - 34 should be present from dumpling v0.67 forward uint64_t osd_required = CEPH_FEATURE_UID | CEPH_FEATURE_PGID64 | CEPH_FEATURE_OSDENC | - CEPH_FEATURE_OSD_SNAPMAPPER; + CEPH_FEATURE_OSD_SNAPMAPPER | + CEPH_FEATURE_INDEP_PG_MAP | + CEPH_FEATURE_OSD_PACKED_RECOVERY | + CEPH_FEATURE_RECOVERY_RESERVATION | + CEPH_FEATURE_BACKFILL_RESERVATION | + CEPH_FEATURE_CHUNKY_SCRUB; ms_public->set_default_policy(Messenger::Policy::stateless_server(supported, 0)); ms_public->set_policy_throttlers(entity_name_t::TYPE_CLIENT, @@ -484,6 +500,9 @@ int main(int argc, const char **argv) global_init_daemonize(g_ceph_context, 0); common_init_finish(g_ceph_context); + TracepointProvider::initialize(g_ceph_context); + TracepointProvider::initialize(g_ceph_context); + MonClient mc(g_ceph_context); if (mc.build_initial_monmap() < 0) return -1; diff --git a/ceph/src/ceph_syn.cc b/ceph/src/ceph_syn.cc index 71db206d..1d10fa2e 100644 --- a/ceph/src/ceph_syn.cc +++ b/ceph/src/ceph_syn.cc @@ -65,10 +65,8 @@ int main(int argc, const char **argv, char *envp[]) cout << "ceph-syn: starting " << g_conf->num_client << " syn client(s)" << std::endl; for (int i=0; inum_client; i++) { - messengers[i] = Messenger::create( - g_ceph_context, g_conf->ms_type, - entity_name_t(entity_name_t::TYPE_CLIENT,-1), "synclient", - i * 1000000 + getpid()); + messengers[i] = Messenger::create_client_messenger(g_ceph_context, + "synclient"); messengers[i]->bind(g_conf->public_addr); mclients[i] = new MonClient(g_ceph_context); mclients[i]->build_initial_monmap(); diff --git a/ceph/src/cls/rgw/cls_rgw.cc b/ceph/src/cls/rgw/cls_rgw.cc index db488e40..980884a9 100644 --- a/ceph/src/cls/rgw/cls_rgw.cc +++ b/ceph/src/cls/rgw/cls_rgw.cc @@ -423,54 +423,65 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out) bufferlist bl; map keys; + std::map::iterator kiter; string start_key; encode_list_index_key(hctx, op.start_obj, &start_key); - rc = get_obj_vals(hctx, start_key, op.filter_prefix, op.num_entries + 1, &keys); - if (rc < 0) - return rc; + bool done = false; + uint32_t left_to_read = op.num_entries + 1; - std::map& m = new_dir.m; - std::map::iterator kiter = keys.begin(); - uint32_t i; + do { + rc = get_obj_vals(hctx, start_key, op.filter_prefix, left_to_read, &keys); + if (rc < 0) + return rc; - bool done = false; + std::map& m = new_dir.m; - for (i = 0; i < op.num_entries && kiter != keys.end(); ++i, ++kiter) { - struct rgw_bucket_dir_entry entry; + done = keys.empty(); - if (!bi_is_objs_index(kiter->first)) { - done = true; - break; - } + for (kiter = keys.begin(); kiter != keys.end(); ++kiter) { + struct rgw_bucket_dir_entry entry; - bufferlist& entrybl = kiter->second; - bufferlist::iterator eiter = entrybl.begin(); - try { - ::decode(entry, eiter); - } catch (buffer::error& err) { - CLS_LOG(1, "ERROR: rgw_bucket_list(): failed to decode entry, key=%s\n", kiter->first.c_str()); - return -EINVAL; - } + if (!bi_is_objs_index(kiter->first)) { + done = true; + break; + } - cls_rgw_obj_key key; - uint64_t ver; - decode_list_index_key(kiter->first, &key, &ver); + bufferlist& entrybl = kiter->second; + bufferlist::iterator eiter = entrybl.begin(); + try { + ::decode(entry, eiter); + } catch (buffer::error& err) { + CLS_LOG(1, "ERROR: rgw_bucket_list(): failed to decode entry, key=%s\n", kiter->first.c_str()); + return -EINVAL; + } - if (!entry.is_valid()) { - CLS_LOG(20, "entry %s[%s] is not valid\n", key.name.c_str(), key.instance.c_str()); - continue; - } + cls_rgw_obj_key key; + uint64_t ver; + decode_list_index_key(kiter->first, &key, &ver); - if (!op.list_versions && !entry.is_visible()) { - CLS_LOG(20, "entry %s[%s] is not visible\n", key.name.c_str(), key.instance.c_str()); - continue; - } - m[kiter->first] = entry; + start_key = kiter->first; + CLS_LOG(20, "start_key=%s len=%d", start_key.c_str(), start_key.size()); - CLS_LOG(20, "got entry %s[%s] m.size()=%d\n", key.name.c_str(), key.instance.c_str(), (int)m.size()); - } + if (!entry.is_valid()) { + CLS_LOG(20, "entry %s[%s] is not valid\n", key.name.c_str(), key.instance.c_str()); + continue; + } + + if (!op.list_versions && !entry.is_visible()) { + CLS_LOG(20, "entry %s[%s] is not visible\n", key.name.c_str(), key.instance.c_str()); + continue; + } + if (m.size() < op.num_entries) { + m[kiter->first] = entry; + } + left_to_read--; + + CLS_LOG(20, "got entry %s[%s] m.size()=%d\n", key.name.c_str(), key.instance.c_str(), (int)m.size()); + } + } while (left_to_read > 0 && !done); - ret.is_truncated = (kiter != keys.end() && !done); + ret.is_truncated = (left_to_read == 0) && /* we found more entries than we were requested, meaning response is truncated */ + !done; ::encode(ret, *out); return 0; diff --git a/ceph/src/common/Makefile.am b/ceph/src/common/Makefile.am index 620e5500..8fa29899 100644 --- a/ceph/src/common/Makefile.am +++ b/ceph/src/common/Makefile.am @@ -73,7 +73,8 @@ libcommon_internal_la_SOURCES = \ common/module.c \ common/Readahead.cc \ common/Cycles.cc \ - common/ContextCompletion.cc + common/ContextCompletion.cc \ + common/TracepointProvider.cc if WITH_RBD libcommon_internal_la_SOURCES += \ @@ -234,7 +235,8 @@ noinst_HEADERS += \ common/Initialize.h \ common/ContextCompletion.h \ common/bit_vector.hpp \ - common/valgrind.h + common/valgrind.h \ + common/TracepointProvider.h if ENABLE_XIO noinst_HEADERS += \ diff --git a/ceph/src/common/Thread.cc b/ceph/src/common/Thread.cc index 584e97bb..5f64da6a 100644 --- a/ceph/src/common/Thread.cc +++ b/ceph/src/common/Thread.cc @@ -87,11 +87,11 @@ int Thread::kill(int signal) int Thread::try_create(size_t stacksize) { pthread_attr_t *thread_attr = NULL; + pthread_attr_t thread_attr_loc; + stacksize &= CEPH_PAGE_MASK; // must be multiple of page if (stacksize) { - thread_attr = (pthread_attr_t*) malloc(sizeof(pthread_attr_t)); - if (!thread_attr) - return -ENOMEM; + thread_attr = &thread_attr_loc; pthread_attr_init(thread_attr); pthread_attr_setstacksize(thread_attr, stacksize); } @@ -113,8 +113,10 @@ int Thread::try_create(size_t stacksize) r = pthread_create(&thread_id, thread_attr, _entry_func, (void*)this); restore_sigset(&old_sigset); - if (thread_attr) - free(thread_attr); + if (thread_attr) { + pthread_attr_destroy(thread_attr); + } + return r; } diff --git a/ceph/src/common/TracepointProvider.cc b/ceph/src/common/TracepointProvider.cc new file mode 100644 index 00000000..7c3d453c --- /dev/null +++ b/ceph/src/common/TracepointProvider.cc @@ -0,0 +1,44 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "common/TracepointProvider.h" +#include "common/config.h" + +TracepointProvider::TracepointProvider(CephContext *cct, const char *library, + const char *config_key) + : m_cct(cct), m_library(library), m_config_keys{config_key, NULL}, + m_lock("TracepointProvider::m_lock"), m_enabled(false) { + m_cct->_conf->add_observer(this); + verify_config(m_cct->_conf); +} + +TracepointProvider::~TracepointProvider() { + m_cct->_conf->remove_observer(this); +} + +void TracepointProvider::handle_conf_change( + const struct md_config_t *conf, const std::set &changed) { + if (changed.count(m_config_keys[0])) { + verify_config(conf); + } +} + +void TracepointProvider::verify_config(const struct md_config_t *conf) { + Mutex::Locker locker(m_lock); + if (m_enabled) { + return; + } + + char buf[10]; + char *pbuf = buf; + if (conf->get_val(m_config_keys[0], &pbuf, sizeof(buf)) != 0 || + strncmp(buf, "true", 5) != 0) { + return; + } + + void *handle = dlopen(m_library.c_str(), RTLD_NOW); + if (handle != NULL) { + m_enabled = true; + } +} + diff --git a/ceph/src/common/TracepointProvider.h b/ceph/src/common/TracepointProvider.h new file mode 100644 index 00000000..e54a037f --- /dev/null +++ b/ceph/src/common/TracepointProvider.h @@ -0,0 +1,83 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_TRACEPOINT_PROVIDER_H +#define CEPH_TRACEPOINT_PROVIDER_H + +#include "include/int_types.h" +#include "common/ceph_context.h" +#include "common/config_obs.h" +#include "common/Mutex.h" +#include +#include +#include +#include + +struct md_config_t; + +class TracepointProvider : public md_config_obs_t, boost::noncopyable { +public: + struct Traits { + const char *library; + const char *config_key; + + Traits(const char *library, const char *config_key) + : library(library), config_key(config_key) { + } + }; + + class Singleton { + public: + Singleton(CephContext *cct, const char *library, const char *config_key) + : tracepoint_provider(new TracepointProvider(cct, library, config_key)) { + } + ~Singleton() { + delete tracepoint_provider; + } + + inline bool is_enabled() const { + return tracepoint_provider->m_enabled; + } + private: + TracepointProvider *tracepoint_provider; + }; + + template + class TypedSingleton : public Singleton { + public: + TypedSingleton(CephContext *cct) + : Singleton(cct, traits.library, traits.config_key) { + } + }; + + TracepointProvider(CephContext *cct, const char *library, + const char *config_key); + virtual ~TracepointProvider(); + + template + static void initialize(CephContext *cct) { +#if WITH_LTTNG + TypedSingleton *singleton; + cct->lookup_or_create_singleton_object(singleton, traits.library); +#endif + } + +protected: + virtual const char** get_tracked_conf_keys() const { + return m_config_keys; + } + virtual void handle_conf_change(const struct md_config_t *conf, + const std::set &changed); + +private: + CephContext *m_cct; + std::string m_library; + mutable const char* m_config_keys[2]; + + Mutex m_lock; + bool m_enabled; + + void verify_config(const struct md_config_t *conf); +}; + +#endif // CEPH_TRACEPOINT_PROVIDER_H diff --git a/ceph/src/common/WorkQueue.h b/ceph/src/common/WorkQueue.h index 300ae7d7..7d453e6e 100644 --- a/ceph/src/common/WorkQueue.h +++ b/ceph/src/common/WorkQueue.h @@ -18,6 +18,7 @@ #include "Mutex.h" #include "Cond.h" #include "Thread.h" +#include "include/unordered_map.h" #include "common/config_obs.h" #include "common/HeartbeatMap.h" @@ -305,6 +306,66 @@ public: }; + template + class PointerWQ : public WorkQueue_ { + public: + PointerWQ(string n, time_t ti, time_t sti, ThreadPool* p) + : WorkQueue_(n, ti, sti), m_pool(p) { + m_pool->add_work_queue(this); + } + ~PointerWQ() { + m_pool->remove_work_queue(this); + } + void drain() { + m_pool->drain(this); + } + void queue(T *item) { + Mutex::Locker l(m_pool->_lock); + m_items.push_back(item); + m_pool->_cond.SignalOne(); + } + protected: + virtual void _clear() { + assert(m_pool->_lock.is_locked()); + m_items.clear(); + } + virtual bool _empty() { + assert(m_pool->_lock.is_locked()); + return m_items.empty(); + } + virtual void *_void_dequeue() { + assert(m_pool->_lock.is_locked()); + if (m_items.empty()) { + return NULL; + } + + T *item = m_items.front(); + m_items.pop_front(); + return item; + } + virtual void _void_process(void *item, ThreadPool::TPHandle &handle) { + process(reinterpret_cast(item)); + } + virtual void _void_process_finish(void *item) { + } + + virtual void process(T *item) = 0; + + T *front() { + assert(m_pool->_lock.is_locked()); + if (m_items.empty()) { + return NULL; + } + return m_items.front(); + } + void signal() { + Mutex::Locker pool_locker(m_pool->_lock); + m_pool->_cond.SignalOne(); + } + private: + ThreadPool *m_pool; + std::list m_items; + }; private: vector work_queues; int last_work_queue; @@ -340,10 +401,12 @@ public: /// assign a work queue to this thread pool void add_work_queue(WorkQueue_* wq) { + Mutex::Locker l(_lock); work_queues.push_back(wq); } /// remove a work queue from this thread pool void remove_work_queue(WorkQueue_* wq) { + Mutex::Locker l(_lock); unsigned i = 0; while (work_queues[i] != wq) i++; @@ -433,36 +496,46 @@ public: } }; -class ContextWQ : public ThreadPool::WorkQueueVal > { +/// Work queue that asynchronously completes contexts (executes callbacks). +/// @see Finisher +class ContextWQ : public ThreadPool::PointerWQ { public: ContextWQ(const string &name, time_t ti, ThreadPool *tp) - : ThreadPool::WorkQueueVal >(name, ti, 0, tp) {} + : ThreadPool::PointerWQ(name, ti, 0, tp), + m_lock("ContextWQ::m_lock") { + } void queue(Context *ctx, int result = 0) { - ThreadPool::WorkQueueVal >::queue( - std::make_pair(ctx, result)); + if (result != 0) { + Mutex::Locker locker(m_lock); + m_context_results[ctx] = result; + } + ThreadPool::PointerWQ::queue(ctx); } - protected: - virtual void _enqueue(std::pair item) { - _queue.push_back(item); - } - virtual void _enqueue_front(std::pair item) { - _queue.push_front(item); - } - virtual bool _empty() { - return _queue.empty(); - } - virtual std::pair _dequeue() { - std::pair item = _queue.front(); - _queue.pop_front(); - return item; + virtual void _clear() { + ThreadPool::PointerWQ::_clear(); + + Mutex::Locker locker(m_lock); + m_context_results.clear(); } - virtual void _process(std::pair item) { - item.first->complete(item.second); + + virtual void process(Context *ctx) { + int result = 0; + { + Mutex::Locker locker(m_lock); + ceph::unordered_map::iterator it = + m_context_results.find(ctx); + if (it != m_context_results.end()) { + result = it->second; + m_context_results.erase(it); + } + } + ctx->complete(result); } private: - list > _queue; + Mutex m_lock; + ceph::unordered_map m_context_results; }; class ShardedThreadPool { diff --git a/ceph/src/common/buffer.cc b/ceph/src/common/buffer.cc index 502163be..16331962 100644 --- a/ceph/src/common/buffer.cc +++ b/ceph/src/common/buffer.cc @@ -1867,6 +1867,15 @@ __u32 buffer::list::crc32c(__u32 crc) const return crc; } +void buffer::list::invalidate_crc() +{ + for (std::list::const_iterator p = _buffers.begin(); p != _buffers.end(); ++p) { + raw *r = p->get_raw(); + if (r) { + r->invalidate_crc(); + } + } +} /** * Binary write all contents to a C++ stream diff --git a/ceph/src/common/ceph_context.cc b/ceph/src/common/ceph_context.cc index 50346edf..dd1f4881 100644 --- a/ceph/src/common/ceph_context.cc +++ b/ceph/src/common/ceph_context.cc @@ -456,7 +456,7 @@ CephContext::~CephContext() { join_service_thread(); - for (map::iterator it = _associated_objs.begin(); + for (map::iterator it = _associated_objs.begin(); it != _associated_objs.end(); ++it) delete it->second; diff --git a/ceph/src/common/ceph_context.h b/ceph/src/common/ceph_context.h index a9ffde04..1fc26687 100644 --- a/ceph/src/common/ceph_context.h +++ b/ceph/src/common/ceph_context.h @@ -20,10 +20,12 @@ #include #include +#include "include/assert.h" #include "include/buffer.h" #include "include/atomic.h" #include "common/cmdparse.h" #include "include/Spinlock.h" +#include class AdminSocket; class CephContextServiceThread; @@ -61,10 +63,6 @@ private: ~CephContext(); atomic_t nref; public: - class AssociatedSingletonObject { - public: - virtual ~AssociatedSingletonObject() {} - }; CephContext *get() { nref.inc(); return this; @@ -117,9 +115,12 @@ public: ceph_spin_lock(&_associated_objs_lock); if (!_associated_objs.count(name)) { p = new T(this); - _associated_objs[name] = reinterpret_cast(p); + _associated_objs[name] = new TypedSingletonWrapper(p); } else { - p = reinterpret_cast(_associated_objs[name]); + TypedSingletonWrapper *wrapper = + dynamic_cast *>(_associated_objs[name]); + assert(wrapper != NULL); + p = wrapper->singleton; } ceph_spin_unlock(&_associated_objs_lock); } @@ -134,6 +135,21 @@ public: std::ostream *message); private: + struct SingletonWrapper : boost::noncopyable { + virtual ~SingletonWrapper() {} + }; + + template + struct TypedSingletonWrapper : public SingletonWrapper { + TypedSingletonWrapper(T *p) : singleton(p) { + } + virtual ~TypedSingletonWrapper() { + delete singleton; + } + + T *singleton; + }; + CephContext(const CephContext &rhs); CephContext &operator=(const CephContext &rhs); @@ -167,7 +183,7 @@ private: ceph::HeartbeatMap *_heartbeat_map; ceph_spinlock_t _associated_objs_lock; - std::map _associated_objs; + std::map _associated_objs; // crypto CryptoNone *_crypto_none; diff --git a/ceph/src/common/config_opts.h b/ceph/src/common/config_opts.h index 95d3a4bb..fd53899a 100644 --- a/ceph/src/common/config_opts.h +++ b/ceph/src/common/config_opts.h @@ -578,7 +578,7 @@ OPTION(osd_snap_trim_thread_timeout, OPT_INT, 60*60*1) OPTION(osd_snap_trim_thread_suicide_timeout, OPT_INT, 60*60*10) OPTION(osd_snap_trim_sleep, OPT_FLOAT, 0) OPTION(osd_scrub_thread_timeout, OPT_INT, 60) -OPTION(osd_scrub_thread_suicide_timeout, OPT_INT, 60) +OPTION(osd_scrub_thread_suicide_timeout, OPT_INT, 300) OPTION(osd_scrub_finalize_thread_timeout, OPT_INT, 60*10) OPTION(osd_scrub_invalid_stats, OPT_BOOL, true) OPTION(osd_remove_thread_timeout, OPT_INT, 60*60) @@ -623,6 +623,7 @@ OPTION(osd_scrub_end_hour, OPT_INT, 24) OPTION(osd_scrub_load_threshold, OPT_FLOAT, 0.5) OPTION(osd_scrub_min_interval, OPT_FLOAT, 60*60*24) // if load is low OPTION(osd_scrub_max_interval, OPT_FLOAT, 7*60*60*24) // regardless of load +OPTION(osd_scrub_interval_randomize_ratio, OPT_FLOAT, 0.5) // randomize the scheduled scrub in the span of [min,min*(1+randomize_radio)) OPTION(osd_scrub_chunk_min, OPT_INT, 5) OPTION(osd_scrub_chunk_max, OPT_INT, 25) OPTION(osd_scrub_sleep, OPT_FLOAT, 0) // sleep between [deep]scrub ops @@ -671,6 +672,7 @@ 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_tracing, OPT_BOOL, false) // true if LTTng-UST tracepoints should be enabled // determines whether PGLog::check() compares written out log to stored log OPTION(osd_debug_pg_log_writeout, OPT_BOOL, false) @@ -742,6 +744,7 @@ OPTION(osd_max_attr_name_len, OPT_U32, 100) // max rados attr name len; canno OPTION(osd_max_attr_size, OPT_U64, 0) OPTION(osd_objectstore, OPT_STR, "filestore") // ObjectStore backend type +OPTION(osd_objectstore_tracing, OPT_BOOL, false) // true if LTTng-UST tracepoints should be enabled // Override maintaining compatibility with older OSDs // Set to true for testing. Users should NOT set this. OPTION(osd_debug_override_acting_compat, OPT_BOOL, false) @@ -814,7 +817,10 @@ OPTION(filestore_fadvise, OPT_BOOL, true) // data corruption in xfs prior to kernel 3.5. filestore will // implicity disable this if it cannot confirm the kernel is newer // than that. -OPTION(filestore_xfs_extsize, OPT_BOOL, true) +// NOTE: This option involves a tradeoff: When disabled, fragmentation is +// worse, but large sequential writes are faster. When enabled, large +// sequential writes are slower, but fragmentation is reduced. +OPTION(filestore_xfs_extsize, OPT_BOOL, false) OPTION(filestore_journal_parallel, OPT_BOOL, false) OPTION(filestore_journal_writeahead, OPT_BOOL, false) @@ -870,6 +876,7 @@ OPTION(journal_discard, OPT_BOOL, false) //using ssd disk as journal, whether su OPTION(rados_mon_op_timeout, OPT_DOUBLE, 0) // how many seconds to wait for a response from the monitor before returning an error from a rados operation. 0 means on limit. OPTION(rados_osd_op_timeout, OPT_DOUBLE, 0) // how many seconds to wait for a response from osds before returning an error from a rados operation. 0 means no limit. +OPTION(rados_tracing, OPT_BOOL, false) // true if LTTng-UST tracepoints should be enabled OPTION(rbd_op_threads, OPT_INT, 1) OPTION(rbd_op_thread_timeout, OPT_INT, 60) @@ -894,6 +901,8 @@ OPTION(rbd_clone_copy_on_read, OPT_BOOL, false) OPTION(rbd_blacklist_on_break_lock, OPT_BOOL, true) // whether to blacklist clients whose lock was broken OPTION(rbd_blacklist_expire_seconds, OPT_INT, 0) // number of seconds to blacklist - set to 0 for OSD default OPTION(rbd_request_timed_out_seconds, OPT_INT, 30) // number of seconds before maint request times out +OPTION(rbd_tracing, OPT_BOOL, false) // true if LTTng-UST tracepoints should be enabled +OPTION(rbd_validate_pool, OPT_BOOL, true) // true if empty pools should be validated for RBD compatibility /* * The following options change the behavior for librbd's image creation methods that @@ -923,6 +932,7 @@ OPTION(nss_db_path, OPT_STR, "") // path to nss db OPTION(rgw_max_chunk_size, OPT_INT, 512 * 1024) +OPTION(rgw_max_put_size, OPT_U64, 5ULL*1024*1024*1024) /** * override max bucket index shards in zone configuration (if not zero) diff --git a/ceph/src/common/obj_bencher.cc b/ceph/src/common/obj_bencher.cc index 81abe091..db4fd8f8 100644 --- a/ceph/src/common/obj_bencher.cc +++ b/ceph/src/common/obj_bencher.cc @@ -154,7 +154,7 @@ void *ObjBencher::status_printer(void *_bencher) { int ObjBencher::aio_bench( int operation, int secondsToRun, int maxObjectsToCreate, - int concurrentios, int op_size, bool cleanup, const char* run_name) { + int concurrentios, int op_size, bool cleanup, const char* run_name, bool no_verify) { if (concurrentios <= 0) return -EINVAL; @@ -203,11 +203,11 @@ int ObjBencher::aio_bench( if (r != 0) goto out; } else if (OP_SEQ_READ == operation) { - r = seq_read_bench(secondsToRun, num_objects, concurrentios, prevPid); + r = seq_read_bench(secondsToRun, num_objects, concurrentios, prevPid, no_verify); if (r != 0) goto out; } else if (OP_RAND_READ == operation) { - r = rand_read_bench(secondsToRun, num_objects, concurrentios, prevPid); + r = rand_read_bench(secondsToRun, num_objects, concurrentios, prevPid, no_verify); if (r != 0) goto out; } @@ -379,10 +379,12 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, } lock.Unlock(); //create new contents and name on the heap, and fill them - newContents = new bufferlist(); newName = generate_object_name(data.started); - snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", data.started); - newContents->append(data.object_contents, data.object_size); + newContents = contents[slot]; + snprintf(newContents->c_str(), data.object_size, "I'm the %16dth object!", data.started); + // we wrote to buffer, going around internal crc cache, so invalidate it now. + newContents->invalidate_crc(); + completion_wait(slot); lock.Lock(); r = completion_ret(slot); @@ -402,8 +404,7 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, release_completion(slot); timePassed = ceph_clock_now(cct) - data.start_time; - //write new stuff to backend, then delete old stuff - //and save locations of new stuff for later deletion + //write new stuff to backend start_times[slot] = ceph_clock_now(cct); r = create_completion(slot, _aio_cb, &lc); if (r < 0) @@ -412,10 +413,7 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, if (r < 0) {//naughty; doesn't clean up heap space. goto ERR; } - delete contents[slot]; name[slot] = newName; - contents[slot] = newContents; - newContents = 0; lock.Lock(); ++data.started; ++data.in_flight; @@ -442,6 +440,7 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, lock.Unlock(); release_completion(slot); delete contents[slot]; + contents[slot] = 0; } timePassed = ceph_clock_now(cct) - data.start_time; @@ -478,6 +477,9 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, sync_write(run_name_meta, b_write, sizeof(int)*3); completions_done(); + for (int i = 0; i < concurrentios; i++) + if (contents[i]) + delete contents[i]; return 0; @@ -486,11 +488,13 @@ int ObjBencher::write_bench(int secondsToRun, int maxObjectsToCreate, data.done = 1; lock.Unlock(); pthread_join(print_thread, NULL); - delete newContents; - return -5; + for (int i = 0; i < concurrentios; i++) + if (contents[i]) + delete contents[i]; + return r; } -int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurrentios, int pid) { +int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurrentios, int pid, bool no_verify) { lock_cond lc(&lock); if (concurrentios <= 0) @@ -572,32 +576,46 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre } lc.cond.Wait(lock); } - lock.Unlock(); - newName = generate_object_name(data.started, pid); + + // calculate latency here, so memcmp doesn't inflate it + data.cur_latency = ceph_clock_now(cct) - start_times[slot]; + + cur_contents = contents[slot]; int current_index = index[slot]; + + // invalidate internal crc cache + cur_contents->invalidate_crc(); + + if (!no_verify) { + snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", current_index); + if (memcmp(data.object_contents, cur_contents->c_str(), data.object_size) != 0) { + cerr << name[slot] << " is not correct!" << std::endl; + ++errors; + } + } + + newName = generate_object_name(data.started, pid); index[slot] = data.started; + lock.Unlock(); completion_wait(slot); - lock.Lock(); r = completion_ret(slot); if (r < 0) { cerr << "read got " << r << std::endl; lock.Unlock(); goto ERR; } - data.cur_latency = ceph_clock_now(cct) - start_times[slot]; + lock.Lock(); total_latency += data.cur_latency; - if( data.cur_latency > data.max_latency) data.max_latency = data.cur_latency; + if (data.cur_latency > data.max_latency) data.max_latency = data.cur_latency; if (data.cur_latency < data.min_latency) data.min_latency = data.cur_latency; ++data.finished; data.avg_latency = total_latency / data.finished; --data.in_flight; lock.Unlock(); release_completion(slot); - cur_contents = contents[slot]; //start new read and check data if requested start_times[slot] = ceph_clock_now(cct); - contents[slot] = new bufferlist(); create_completion(slot, _aio_cb, (void *)&lc); r = aio_read(newName, slot, contents[slot], data.object_size); if (r < 0) { @@ -606,14 +624,15 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre lock.Lock(); ++data.started; ++data.in_flight; - snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", current_index); - lock.Unlock(); + lock.Unlock(); if (memcmp(data.object_contents, cur_contents->c_str(), data.object_size) != 0) { cerr << name[slot] << " is not correct!" << std::endl; ++errors; + } else { + lock.Unlock(); } + name[slot] = newName; - delete cur_contents; } //wait for final reads to complete @@ -635,11 +654,15 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre data.avg_latency = total_latency / data.finished; --data.in_flight; release_completion(slot); - snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", index[slot]); - lock.Unlock(); - if (memcmp(data.object_contents, contents[slot]->c_str(), data.object_size) != 0) { - cerr << name[slot] << " is not correct!" << std::endl; - ++errors; + if (!no_verify) { + snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", index[slot]); + lock.Unlock(); + if (memcmp(data.object_contents, contents[slot]->c_str(), data.object_size) != 0) { + cerr << name[slot] << " is not correct!" << std::endl; + ++errors; + } + } else { + lock.Unlock(); } delete contents[slot]; } @@ -677,7 +700,7 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre return -5; } -int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurrentios, int pid) +int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurrentios, int pid, bool no_verify) { lock_cond lc(&lock); @@ -762,11 +785,14 @@ int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurr } lc.cond.Wait(lock); } + + // calculate latency here, so memcmp doesn't inflate it + data.cur_latency = ceph_clock_now(cct) - start_times[slot]; + lock.Unlock(); - rand_id = rand() % num_objects; - newName = generate_object_name(rand_id, pid); + int current_index = index[slot]; - index[slot] = rand_id; + cur_contents = contents[slot]; completion_wait(slot); lock.Lock(); r = completion_ret(slot); @@ -775,20 +801,33 @@ int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurr lock.Unlock(); goto ERR; } - data.cur_latency = ceph_clock_now(g_ceph_context) - start_times[slot]; + total_latency += data.cur_latency; - if( data.cur_latency > data.max_latency) data.max_latency = data.cur_latency; + if (data.cur_latency > data.max_latency) data.max_latency = data.cur_latency; if (data.cur_latency < data.min_latency) data.min_latency = data.cur_latency; ++data.finished; data.avg_latency = total_latency / data.finished; --data.in_flight; lock.Unlock(); + + if (!no_verify) { + snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", current_index); + if (memcmp(data.object_contents, cur_contents->c_str(), data.object_size) != 0) { + cerr << name[slot] << " is not correct!" << std::endl; + ++errors; + } + } + + rand_id = rand() % num_objects; + newName = generate_object_name(rand_id, pid); + index[slot] = rand_id; release_completion(slot); - cur_contents = contents[slot]; + + // invalidate internal crc cache + cur_contents->invalidate_crc(); //start new read and check data if requested start_times[slot] = ceph_clock_now(g_ceph_context); - contents[slot] = new bufferlist(); create_completion(slot, _aio_cb, (void *)&lc); r = aio_read(newName, slot, contents[slot], data.object_size); if (r < 0) { @@ -797,16 +836,11 @@ int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurr lock.Lock(); ++data.started; ++data.in_flight; - snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", current_index); lock.Unlock(); - if (memcmp(data.object_contents, cur_contents->c_str(), data.object_size) != 0) { - cerr << name[slot] << " is not correct!" << std::endl; - ++errors; - } name[slot] = newName; - delete cur_contents; } + //wait for final reads to complete while (data.finished < data.started) { slot = data.finished % concurrentios; @@ -826,12 +860,18 @@ int ObjBencher::rand_read_bench(int seconds_to_run, int num_objects, int concurr data.avg_latency = total_latency / data.finished; --data.in_flight; release_completion(slot); - snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", index[slot]); - lock.Unlock(); - if (memcmp(data.object_contents, contents[slot]->c_str(), data.object_size) != 0) { - cerr << name[slot] << " is not correct!" << std::endl; - ++errors; + + if (!no_verify) { + snprintf(data.object_contents, data.object_size, "I'm the %16dth object!", index[slot]); + lock.Unlock(); + if (memcmp(data.object_contents, contents[slot]->c_str(), data.object_size) != 0) { + cerr << name[slot] << " is not correct!" << std::endl; + ++errors; + } + } else { + lock.Unlock(); } + delete contents[slot]; } diff --git a/ceph/src/common/obj_bencher.h b/ceph/src/common/obj_bencher.h index 4d89f412..52b31571 100644 --- a/ceph/src/common/obj_bencher.h +++ b/ceph/src/common/obj_bencher.h @@ -65,8 +65,8 @@ protected: int fetch_bench_metadata(const std::string& metadata_file, int* object_size, int* num_objects, int* prevPid); int write_bench(int secondsToRun, int maxObjects, int concurrentios, const string& run_name_meta); - int seq_read_bench(int secondsToRun, int num_objects, int concurrentios, int writePid); - int rand_read_bench(int secondsToRun, int num_objects, int concurrentios, int writePid); + int seq_read_bench(int secondsToRun, int num_objects, int concurrentios, int writePid, bool no_verify); + int rand_read_bench(int secondsToRun, int num_objects, int concurrentios, int writePid, bool no_verify); int clean_up(int num_objects, int prevPid, int concurrentios); int clean_up_slow(const std::string& prefix, int concurrentios); @@ -98,7 +98,7 @@ public: virtual ~ObjBencher() {} int aio_bench( int operation, int secondsToRun, int maxObjectsToCreate, - int concurrentios, int op_size, bool cleanup, const char* run_name); + int concurrentios, int op_size, bool cleanup, const char* run_name, bool no_verify=false); int clean_up(const char* prefix, int concurrentios, const char* run_name); void set_show_time(bool dt) { diff --git a/ceph/src/common/run_cmd.cc b/ceph/src/common/run_cmd.cc index 5f5cc3cc..81e41712 100644 --- a/ceph/src/common/run_cmd.cc +++ b/ceph/src/common/run_cmd.cc @@ -47,6 +47,9 @@ std::string run_cmd(const char *cmd, ...) } else if (fret == 0) { // execvp doesn't modify its arguments, so the const-cast here is safe. + close(STDIN_FILENO); + close(STDOUT_FILENO); + close(STDERR_FILENO); execvp(cmd, (char * const*)&arr[0]); _exit(127); } diff --git a/ceph/src/common/sync_filesystem.h b/ceph/src/common/sync_filesystem.h index b7eaea71..8f45d04b 100644 --- a/ceph/src/common/sync_filesystem.h +++ b/ceph/src/common/sync_filesystem.h @@ -34,22 +34,25 @@ inline int sync_filesystem(int fd) #ifdef HAVE_SYS_SYNCFS if (syncfs(fd) == 0) return 0; - else - return -errno; #elif defined(SYS_syncfs) if (syscall(SYS_syncfs, fd) == 0) return 0; - else - return -errno; #elif defined(__NR_syncfs) if (syscall(__NR_syncfs, fd) == 0) return 0; - else - return -errno; #endif +#if defined(HAVE_SYS_SYNCFS) || defined(SYS_syncfs) || defined(__NR_syncfs) + else if (errno == ENOSYS) { + sync(); + return 0; + } else { + return -errno; + } +#else sync(); return 0; +#endif } #endif diff --git a/ceph/src/crush/mapper.c b/ceph/src/crush/mapper.c index 916790d7..22ee5b93 100644 --- a/ceph/src/crush/mapper.c +++ b/ceph/src/crush/mapper.c @@ -841,7 +841,8 @@ int crush_do_rule(const struct crush_map *map, case CRUSH_RULE_TAKE: if ((curstep->arg1 >= 0 && curstep->arg1 < map->max_devices) || - (-1-curstep->arg1 < map->max_buckets && + (-1-curstep->arg1 >= 0 && + -1-curstep->arg1 < map->max_buckets && map->buckets[-1-curstep->arg1])) { w[0] = curstep->arg1; wsize = 1; @@ -894,6 +895,7 @@ int crush_do_rule(const struct crush_map *map, osize = 0; for (i = 0; i < wsize; i++) { + int bno; /* * see CRUSH_N, CRUSH_N_MINUS macros. * basically, numrep <= 0 means relative to @@ -906,6 +908,13 @@ int crush_do_rule(const struct crush_map *map, continue; } j = 0; + /* make sure bucket id is valid */ + bno = -1 - w[i]; + if (bno < 0 || bno >= map->max_buckets) { + // w[i] is probably CRUSH_ITEM_NONE + dprintk(" bad w[i] %d\n", w[i]); + continue; + } if (firstn) { int recurse_tries; if (choose_leaf_tries) @@ -917,7 +926,7 @@ int crush_do_rule(const struct crush_map *map, recurse_tries = choose_tries; osize += crush_choose_firstn( map, - map->buckets[-1-w[i]], + map->buckets[bno], weight, weight_max, x, numrep, curstep->arg2, @@ -936,7 +945,7 @@ int crush_do_rule(const struct crush_map *map, numrep : (result_max-osize)); crush_choose_indep( map, - map->buckets[-1-w[i]], + map->buckets[bno], weight, weight_max, x, out_size, numrep, curstep->arg2, diff --git a/ceph/src/include/buffer.h b/ceph/src/include/buffer.h index d243d6e0..46089688 100644 --- a/ceph/src/include/buffer.h +++ b/ceph/src/include/buffer.h @@ -501,6 +501,7 @@ public: int write_fd(int fd) const; int write_fd_zero_copy(int fd) const; uint32_t crc32c(uint32_t crc) const; + void invalidate_crc(); }; /* diff --git a/ceph/src/include/rados/buffer.h b/ceph/src/include/rados/buffer.h index d243d6e0..46089688 100644 --- a/ceph/src/include/rados/buffer.h +++ b/ceph/src/include/rados/buffer.h @@ -501,6 +501,7 @@ public: int write_fd(int fd) const; int write_fd_zero_copy(int fd) const; uint32_t crc32c(uint32_t crc) const; + void invalidate_crc(); }; /* diff --git a/ceph/src/init-ceph.in b/ceph/src/init-ceph.in index 2ff98c7c..f7acccaf 100644 --- a/ceph/src/init-ceph.in +++ b/ceph/src/init-ceph.in @@ -117,6 +117,9 @@ dofsumount=0 verbose=0 use_default_conf=1 +## set variables like cluster or conf +[ -e /etc/sysconfig/ceph ] && . /etc/sysconfig/ceph +[ -e /etc/default/ceph ] && . /etc/default/ceph while echo $1 | grep -q '^-'; do # FIXME: why not '^-'? case $1 in @@ -303,10 +306,13 @@ for name in $what; do [ -n "$wrap" ] && runmode="-f &" && runarg="-f" [ -n "$max_open_files" ] && files="ulimit -n $max_open_files;" + [ -n "$TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES" ] && tcmalloc="TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=$TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES" + if [ -n "$SYSTEMD_RUN" ]; then - cmd="$SYSTEMD_RUN -r bash -c '$files $cmd --cluster $cluster -f'" + time=`date +%s.%N` + cmd="$SYSTEMD_RUN --unit=ceph-$name.$time -r bash -c '$files $tcmalloc $cmd --cluster $cluster -f'" else - cmd="$files $wrap $cmd --cluster $cluster $runmode" + cmd="$files $tcmalloc $wrap $cmd --cluster $cluster $runmode" fi if [ $dofsmount -eq 1 ] && [ -n "$fs_devs" ]; then diff --git a/ceph/src/init-radosgw b/ceph/src/init-radosgw index b7569a0a..d320231d 100644 --- a/ceph/src/init-radosgw +++ b/ceph/src/init-radosgw @@ -114,7 +114,7 @@ case "$1" in if [ $DEBIAN -eq 1 ]; then start-stop-daemon --stop --signal HUP -x $RADOSGW --oknodo else - killproc $RADOSGW -SIGHUP + killproc $RADOSGW -HUP fi ;; restart|force-reload) diff --git a/ceph/src/init-rbdmap b/ceph/src/init-rbdmap index a9d68268..8650ed4c 100755 --- a/ceph/src/init-rbdmap +++ b/ceph/src/init-rbdmap @@ -18,14 +18,15 @@ # Description: Ceph RBD Mapping ### END INIT INFO -DESC="RBD Mapping:" RBDMAPFILE="/etc/ceph/rbdmap" -. /lib/lsb/init-functions +if [ -e /lib/lsb/init-functions ]; then + . /lib/lsb/init-functions +fi do_map() { if [ ! -f "$RBDMAPFILE" ]; then - log_warning_msg "$DESC : No $RBDMAPFILE found." + logger -p "daemon.warning" -t init-rbdmap "No $RBDMAPFILE found." exit 0 fi @@ -42,37 +43,40 @@ do_map() { DEV=rbd/$DEV ;; esac - log_action_begin_msg "${DESC} '${DEV}'" + logger -p "daemon.debug" -t init-rbdmap "Mapping '${DEV}'" newrbd="" MAP_RV="" - RET_OP=0 OIFS=$IFS IFS=',' + CMDPARAMS="" for PARAM in ${PARAMS[@]}; do CMDPARAMS="$CMDPARAMS --$(echo $PARAM | tr '=' ' ')" done IFS=$OIFS - if [ ! -b /dev/rbd/$DEV ]; then - MAP_RV=$(rbd map $DEV $CMDPARAMS 2>&1) + if [ -b /dev/rbd/$DEV ]; then + MAP_RV="$(readlink -f /dev/rbd/$DEV)" + else + MAP_RV="$(rbd map $DEV $CMDPARAMS 2>&1)" if [ $? -eq 0 ]; then newrbd="yes" else RET=$((${RET}+$?)) - RET_OP=1 + logger -p "daemon.warning" -t init-rbdmap "Failed to map '${DEV}" + continue fi fi - log_action_end_msg ${RET_OP} "${MAP_RV}" + logger -p "daemon.debug" -t init-rbdmap "Mapped '${DEV}' to '${MAP_RV}'" if [ "$newrbd" ]; then ## Mount new rbd MNT_RV="" mount --fake /dev/rbd/$DEV >>/dev/null 2>&1 \ && MNT_RV=$(mount -vn /dev/rbd/$DEV 2>&1) - [ -n "${MNT_RV}" ] && log_action_msg "mount: ${MNT_RV}" + [ -n "${MNT_RV}" ] && logger -p "daemon.debug" -t init-rbdmap "Mounted '${MAP_RV}' to '${MNT_RV}'" ## post-mapping if [ -x "/etc/ceph/rbd.d/${DEV}" ]; then - log_action_msg "RBD Running post-map hook '/etc/ceph/rbd.d/${DEV}'" + logger -p "daemon.debug" -t init-rbdmap "Running post-map hook '/etc/ceph/rbd.d/${DEV}'" /etc/ceph/rbd.d/${DEV} map "/dev/rbd/${DEV}" fi fi @@ -91,35 +95,32 @@ do_unmap() { LL="${L##/dev/rbd/}" if [ "$(readlink -f $L)" = "${DEV}" ] \ && [ -x "/etc/ceph/rbd.d/${LL}" ]; then - log_action_msg "RBD pre-unmap: '${DEV}' hook '/etc/ceph/rbd.d/${LL}'" + logger -p "daemon.debug" -t init-rbdmap "Running pre-unmap hook for '${DEV}': '/etc/ceph/rbd.d/${LL}'" /etc/ceph/rbd.d/${LL} unmap "$L" break fi done - log_action_begin_msg "RBD un-mapping: '${DEV}'" - UMNT_RV="" - UMAP_RV="" - RET_OP=0 + logger -p "daemon.debug" -t init-rbdmap "Unmapping '${DEV}'" MNT=$(findmnt --mtab --source ${DEV} --noheadings | awk '{print $1'}) if [ -n "${MNT}" ]; then - log_action_cont_msg "un-mounting '${MNT}'" - UMNT_RV=$(umount "${MNT}" 2>&1) + logger -p "daemon.debug" -t init-rbdmap "Unmounting '${MNT}'" + umount "${MNT}" >>/dev/null 2>&1 fi if mountpoint -q "${MNT}"; then ## Un-mounting failed. - RET_OP=1 + logger -p "daemon.warning" -t init-rbdmap "Failed to unmount '${MNT}'" RET=$((${RET}+1)) - else - ## Un-mapping. - UMAP_RV=$(rbd unmap $DEV 2>&1) - if [ $? -ne 0 ]; then - RET=$((${RET}+$?)) - RET_OP=1 - fi + continue + fi + ## Un-mapping. + rbd unmap $DEV >>/dev/null 2>&1 + if [ $? -ne 0 ]; then + logger -p "daemon.warning" -t init-rbdmap "Failed to unmap '${MNT}'" + RET=$((${RET}+$?)) + continue fi - log_action_end_msg ${RET_OP} "${UMAP_RV}" - [ -n "${UMNT_RV}" ] && log_action_msg "${UMNT_RV}" + logger -p "daemon.debug" -t init-rbdmap "Unmapped '${DEV}'" done fi exit ${RET} @@ -149,7 +150,7 @@ case "$1" in ;; *) - log_success_msg "Usage: rbdmap {start|stop|restart|force-reload|reload|status}" + echo "Usage: rbdmap {start|stop|restart|force-reload|reload|status}" exit 1 ;; esac diff --git a/ceph/src/krbd.cc b/ceph/src/krbd.cc index 3fb64fd6..90f2f1dd 100644 --- a/ceph/src/krbd.cc +++ b/ceph/src/krbd.cc @@ -435,8 +435,7 @@ static int do_unmap(struct udev *udev, dev_t devno, const string& id) * libudev does not provide the "wait until the queue is empty" * API or the sufficient amount of primitives to build it from. */ - string err = run_cmd("udevadm", "settle", "--timeout", "10", "--quiet", - NULL); + string err = run_cmd("udevadm", "settle", "--timeout", "10", NULL); if (!err.empty()) cerr << "rbd: " << err << std::endl; } diff --git a/ceph/src/libcephfs.cc b/ceph/src/libcephfs.cc index e3281de2..395b376c 100644 --- a/ceph/src/libcephfs.cc +++ b/ceph/src/libcephfs.cc @@ -34,9 +34,8 @@ struct ceph_mount_info { public: - ceph_mount_info(uint64_t msgr_nonce_, CephContext *cct_) - : msgr_nonce(msgr_nonce_), - mounted(false), + ceph_mount_info(CephContext *cct_) + : mounted(false), inited(false), client(NULL), monclient(NULL), @@ -77,7 +76,7 @@ public: goto fail; //network connection - messenger = Messenger::create(cct, cct->_conf->ms_type, entity_name_t::CLIENT(), "client", msgr_nonce); + messenger = Messenger::create_client_messenger(cct, "client"); //at last the client ret = -CEPHFS_ERROR_NEW_CLIENT; //defined in libcephfs.h; @@ -233,7 +232,6 @@ public: } private: - uint64_t msgr_nonce; bool mounted; bool inited; Client *client; @@ -288,14 +286,7 @@ extern "C" const char *ceph_version(int *pmajor, int *pminor, int *ppatch) extern "C" int ceph_create_with_context(struct ceph_mount_info **cmount, CephContext *cct) { - uint64_t nonce = 0; - - // 6 bytes of random and 2 bytes of pid - get_random_bytes((char*)&nonce, sizeof(nonce)); - nonce &= ~0xffff; - nonce |= (uint64_t)getpid(); - - *cmount = new struct ceph_mount_info(nonce, cct); + *cmount = new struct ceph_mount_info(cct); return 0; } diff --git a/ceph/src/librados/Makefile.am b/ceph/src/librados/Makefile.am index 103ffd8a..bf2c6da6 100644 --- a/ceph/src/librados/Makefile.am +++ b/ceph/src/librados/Makefile.am @@ -23,9 +23,6 @@ librados_la_CXXFLAGS = ${AM_CXXFLAGS} LIBRADOS_DEPS += \ librados_internal.la libcls_lock_client.la \ $(LIBOSDC) $(LIBCOMMON_DEPS) -if WITH_LTTNG -LIBRADOS_DEPS += $(LIBRADOS_TP) -endif librados_la_LIBADD = $(LIBRADOS_DEPS) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) librados_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 diff --git a/ceph/src/librados/RadosClient.cc b/ceph/src/librados/RadosClient.cc index 3886b1eb..a01ae7d4 100644 --- a/ceph/src/librados/RadosClient.cc +++ b/ceph/src/librados/RadosClient.cc @@ -52,8 +52,6 @@ #undef dout_prefix #define dout_prefix *_dout << "librados: " -static atomic_t rados_instance; - bool librados::RadosClient::ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer, bool force_new) { @@ -191,7 +189,6 @@ int librados::RadosClient::connect() common_init_finish(cct); int err; - uint64_t nonce; // already connected? if (state == CONNECTING) @@ -206,9 +203,7 @@ int librados::RadosClient::connect() goto out; err = -ENOMEM; - nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc()); - messenger = Messenger::create(cct, cct->_conf->ms_type, entity_name_t::CLIENT(-1), - "radosclient", nonce); + messenger = Messenger::create_client_messenger(cct, "radosclient"); if (!messenger) goto out; diff --git a/ceph/src/librados/librados.cc b/ceph/src/librados/librados.cc index cbefe0b3..39598013 100644 --- a/ceph/src/librados/librados.cc +++ b/ceph/src/librados/librados.cc @@ -18,6 +18,7 @@ #include "common/errno.h" #include "common/ceph_argparse.h" #include "common/common_init.h" +#include "common/TracepointProvider.h" #include "include/rados/librados.h" #include "include/rados/librados.hpp" #include "include/types.h" @@ -39,7 +40,11 @@ #include #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/librados.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif @@ -57,6 +62,12 @@ using std::runtime_error; #define RADOS_LIST_MAX_ENTRIES 1024 +namespace { + +TracepointProvider::Traits tracepoint_traits("librados_tp.so", "rados_tracing"); + +} // anonymous namespace + /* * Structure of this file * @@ -2167,10 +2178,9 @@ librados::ObjectOperation::~ObjectOperation() } ///////////////////////////// C API ////////////////////////////// -static -int rados_create_common(rados_t *pcluster, - const char * const clustername, - CephInitParameters *iparams) + +static CephContext *rados_create_cct(const char * const clustername, + CephInitParameters *iparams) { // missing things compared to global_init: // g_ceph_context, g_conf, g_lockdep, signal handlers @@ -2180,26 +2190,27 @@ int rados_create_common(rados_t *pcluster, cct->_conf->parse_env(); // environment variables override cct->_conf->apply_changes(NULL); - librados::RadosClient *radosp = new librados::RadosClient(cct); - *pcluster = (void *)radosp; - - cct->put(); - return 0; + TracepointProvider::initialize(cct); + return cct; } extern "C" int rados_create(rados_t *pcluster, const char * const id) { - tracepoint(librados, rados_create_enter, id); CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT); if (id) { iparams.name.set(CEPH_ENTITY_TYPE_CLIENT, id); } - int retval = rados_create_common(pcluster, "ceph", &iparams); - tracepoint(librados, rados_create_exit, retval, *pcluster); - return retval; + CephContext *cct = rados_create_cct("ceph", &iparams); + + tracepoint(librados, rados_create_enter, id); + *pcluster = reinterpret_cast(new librados::RadosClient(cct)); + tracepoint(librados, rados_create_exit, 0, *pcluster); + + cct->put(); + return 0; } -// as above, but +// as above, but // 1) don't assume 'client.'; name is a full type.id namestr // 2) allow setting clustername // 3) flags is for future expansion (maybe some of the global_init() @@ -2208,16 +2219,21 @@ extern "C" int rados_create(rados_t *pcluster, const char * const id) extern "C" int rados_create2(rados_t *pcluster, const char *const clustername, const char * const name, uint64_t flags) { - tracepoint(librados, rados_create2_enter, clustername, name, flags); // client is assumed, but from_str will override + int retval = 0; CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT); if (!name || !iparams.name.from_str(name)) { - tracepoint(librados, rados_create2_exit, -EINVAL, *pcluster); - return -EINVAL; + retval = -EINVAL; } - int retval = rados_create_common(pcluster, clustername, &iparams); + CephContext *cct = rados_create_cct(clustername, &iparams); + tracepoint(librados, rados_create2_enter, clustername, name, flags); + if (retval == 0) { + *pcluster = reinterpret_cast(new librados::RadosClient(cct)); + } tracepoint(librados, rados_create2_exit, retval, *pcluster); + + cct->put(); return retval; } @@ -2227,8 +2243,10 @@ extern "C" int rados_create2(rados_t *pcluster, const char *const clustername, */ extern "C" int rados_create_with_context(rados_t *pcluster, rados_config_t cct_) { - tracepoint(librados, rados_create_with_context_enter, cct_); CephContext *cct = (CephContext *)cct_; + TracepointProvider::initialize(cct); + + tracepoint(librados, rados_create_with_context_enter, cct_); librados::RadosClient *radosp = new librados::RadosClient(cct); *pcluster = (void *)radosp; tracepoint(librados, rados_create_with_context_exit, 0, *pcluster); diff --git a/ceph/src/libradosstriper/Makefile.am b/ceph/src/libradosstriper/Makefile.am index bd4c1d15..b98fa4a1 100644 --- a/ceph/src/libradosstriper/Makefile.am +++ b/ceph/src/libradosstriper/Makefile.am @@ -10,8 +10,8 @@ libradosstriper_la_SOURCES = \ # 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_DEPS = librados_internal.la libcls_lock_client.la $(LIBOSDC) $(LIBCOMMON) +libradosstriper_la_LIBADD = $(LIBRADOSSTRIPER_DEPS) $(LIBRADOS) libradosstriper_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 if LINUX libradosstriper_la_LDFLAGS += -export-symbols-regex '^radosstriper_.*' diff --git a/ceph/src/librbd/AsyncResizeRequest.cc b/ceph/src/librbd/AsyncResizeRequest.cc index 8ddf9672..ad4fd1a7 100644 --- a/ceph/src/librbd/AsyncResizeRequest.cc +++ b/ceph/src/librbd/AsyncResizeRequest.cc @@ -245,11 +245,11 @@ void AsyncResizeRequest::send_update_header() { librados::ObjectWriteOperation op; if (m_image_ctx.old_format) { - // rewrite header + // rewrite only the size field of the header + // NOTE: format 1 image headers are not stored in fixed endian format bufferlist bl; - m_image_ctx.header.image_size = m_new_size; - bl.append((const char *)&m_image_ctx.header, sizeof(m_image_ctx.header)); - op.write(0, bl); + bl.append(reinterpret_cast(&m_new_size), sizeof(m_new_size)); + op.write(offsetof(rbd_obj_header_ondisk, image_size), bl); } else { if (m_image_ctx.image_watcher->is_lock_supported()) { m_image_ctx.image_watcher->assert_header_locked(&op); diff --git a/ceph/src/librbd/ImageCtx.cc b/ceph/src/librbd/ImageCtx.cc index 0f5d46a5..1574c568 100644 --- a/ceph/src/librbd/ImageCtx.cc +++ b/ceph/src/librbd/ImageCtx.cc @@ -807,7 +807,7 @@ public: void ImageCtx::flush_async_operations(Context *on_finish) { Mutex::Locker l(async_ops_lock); if (async_ops.empty()) { - op_work_queue->queue(on_finish, 0); + on_finish->complete(0); return; } diff --git a/ceph/src/librbd/ImageWatcher.cc b/ceph/src/librbd/ImageWatcher.cc index 71b4c863..790a0366 100644 --- a/ceph/src/librbd/ImageWatcher.cc +++ b/ceph/src/librbd/ImageWatcher.cc @@ -11,6 +11,7 @@ #include "include/encoding.h" #include "include/stringify.h" #include "common/errno.h" +#include "common/WorkQueue.h" #include #include #include @@ -741,24 +742,25 @@ int ImageWatcher::notify_async_request(const AsyncRequestId &async_request_id, return ctx.wait(); } -void ImageWatcher::handle_payload(const HeaderUpdatePayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const HeaderUpdatePayload &payload, + C_NotifyAck *ack_ctx) { ldout(m_image_ctx.cct, 10) << this << " image header updated" << dendl; Mutex::Locker lictx(m_image_ctx.refresh_lock); ++m_image_ctx.refresh_seq; m_image_ctx.perfcounter->inc(l_librbd_notify); + return true; } -void ImageWatcher::handle_payload(const AcquiredLockPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const AcquiredLockPayload &payload, + C_NotifyAck *ack_ctx) { ldout(m_image_ctx.cct, 10) << this << " image exclusively locked announcement" << dendl; if (payload.client_id.is_valid()) { Mutex::Locker l(m_owner_client_id_lock); if (payload.client_id == m_owner_client_id) { // we already know that the remote client is the owner - return; + return true; } set_owner_client_id(payload.client_id); } @@ -768,10 +770,11 @@ void ImageWatcher::handle_payload(const AcquiredLockPayload &payload, schedule_cancel_async_requests(); schedule_retry_aio_requests(false); } + return true; } -void ImageWatcher::handle_payload(const ReleasedLockPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const ReleasedLockPayload &payload, + C_NotifyAck *ack_ctx) { ldout(m_image_ctx.cct, 10) << this << " exclusive lock released" << dendl; if (payload.client_id.is_valid()) { Mutex::Locker l(m_owner_client_id_lock); @@ -779,7 +782,7 @@ void ImageWatcher::handle_payload(const ReleasedLockPayload &payload, ldout(m_image_ctx.cct, 10) << this << " unexpected owner: " << payload.client_id << " != " << m_owner_client_id << dendl; - return; + return true; } set_owner_client_id(ClientId()); } @@ -789,24 +792,25 @@ void ImageWatcher::handle_payload(const ReleasedLockPayload &payload, schedule_cancel_async_requests(); schedule_retry_aio_requests(false); } + return true; } -void ImageWatcher::handle_payload(const RequestLockPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const RequestLockPayload &payload, + C_NotifyAck *ack_ctx) { ldout(m_image_ctx.cct, 10) << this << " exclusive lock requested" << dendl; if (payload.client_id == get_client_id()) { - return; + return true; } RWLock::RLocker l(m_image_ctx.owner_lock); if (m_lock_owner_state == LOCK_OWNER_STATE_LOCKED) { // need to send something back so the client can detect a missing leader - ::encode(ResponseMessage(0), *out); + ::encode(ResponseMessage(0), ack_ctx->out); { Mutex::Locker l(m_owner_client_id_lock); if (!m_owner_client_id.is_valid()) { - return; + return true; } } @@ -816,10 +820,11 @@ void ImageWatcher::handle_payload(const RequestLockPayload &payload, boost::bind(&ImageWatcher::notify_release_lock, this)); m_task_finisher->queue(TASK_CODE_RELEASING_LOCK, ctx); } + return true; } -void ImageWatcher::handle_payload(const AsyncProgressPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const AsyncProgressPayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_async_request_lock); std::map::iterator req_it = m_async_requests.find(payload.async_request_id); @@ -831,10 +836,11 @@ void ImageWatcher::handle_payload(const AsyncProgressPayload &payload, schedule_async_request_timed_out(payload.async_request_id); req_it->second.second->update_progress(payload.offset, payload.total); } + return true; } -void ImageWatcher::handle_payload(const AsyncCompletePayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const AsyncCompletePayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_async_request_lock); std::map::iterator req_it = m_async_requests.find(payload.async_request_id); @@ -844,10 +850,11 @@ void ImageWatcher::handle_payload(const AsyncCompletePayload &payload, << payload.result << dendl; req_it->second.first->complete(payload.result); } + return true; } -void ImageWatcher::handle_payload(const FlattenPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const FlattenPayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_image_ctx.owner_lock); if (m_lock_owner_state == LOCK_OWNER_STATE_LOCKED) { @@ -882,12 +889,13 @@ void ImageWatcher::handle_payload(const FlattenPayload &payload, } } - ::encode(ResponseMessage(r), *out); + ::encode(ResponseMessage(r), ack_ctx->out); } + return true; } -void ImageWatcher::handle_payload(const ResizePayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const ResizePayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_image_ctx.owner_lock); if (m_lock_owner_state == LOCK_OWNER_STATE_LOCKED) { int r = 0; @@ -922,29 +930,33 @@ void ImageWatcher::handle_payload(const ResizePayload &payload, } } - ::encode(ResponseMessage(r), *out); + ::encode(ResponseMessage(r), ack_ctx->out); } + return true; } -void ImageWatcher::handle_payload(const SnapCreatePayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const SnapCreatePayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_image_ctx.owner_lock); if (m_lock_owner_state == LOCK_OWNER_STATE_LOCKED) { ldout(m_image_ctx.cct, 10) << this << " remote snap_create request: " << payload.snap_name << dendl; - int r = librbd::snap_create_helper(&m_image_ctx, NULL, - payload.snap_name.c_str()); - ::encode(ResponseMessage(r), *out); + // execute outside of librados AIO thread + m_image_ctx.op_work_queue->queue(new C_SnapCreateResponseMessage( + this, ack_ctx, payload.snap_name), 0); + return false; } + return true; } -void ImageWatcher::handle_payload(const UnknownPayload &payload, - bufferlist *out) { +bool ImageWatcher::handle_payload(const UnknownPayload &payload, + C_NotifyAck *ack_ctx) { RWLock::RLocker l(m_image_ctx.owner_lock); if (is_lock_owner()) { - ::encode(ResponseMessage(-EOPNOTSUPP), *out); + ::encode(ResponseMessage(-EOPNOTSUPP), ack_ctx->out); } + return true; } void ImageWatcher::handle_notify(uint64_t notify_id, uint64_t handle, @@ -1060,4 +1072,34 @@ void ImageWatcher::RemoteContext::finish(int r) { m_image_watcher.schedule_async_complete(m_async_request_id, r); } +ImageWatcher::C_NotifyAck::C_NotifyAck(ImageWatcher *image_watcher, + uint64_t notify_id, uint64_t handle) + : image_watcher(image_watcher), notify_id(notify_id), handle(handle) { + CephContext *cct = image_watcher->m_image_ctx.cct; + ldout(cct, 10) << this << " C_NotifyAck start: id=" << notify_id << ", " + << "handle=" << handle << dendl; +} + +void ImageWatcher::C_NotifyAck::finish(int r) { + assert(r == 0); + CephContext *cct = image_watcher->m_image_ctx.cct; + ldout(cct, 10) << this << " C_NotifyAck finish: id=" << notify_id << ", " + << "handle=" << handle << dendl; + + image_watcher->acknowledge_notify(notify_id, handle, out); +} + +void ImageWatcher::C_SnapCreateResponseMessage::finish(int r) { + CephContext *cct = notify_ack->image_watcher->m_image_ctx.cct; + ldout(cct, 10) << this << " C_SnapCreateResponseMessage: r=" << r << dendl; + + RWLock::RLocker owner_locker(image_watcher->m_image_ctx.owner_lock); + if (image_watcher->m_lock_owner_state == LOCK_OWNER_STATE_LOCKED) { + r = librbd::snap_create_helper(&image_watcher->m_image_ctx, NULL, + snap_name.c_str()); + ::encode(ResponseMessage(r), notify_ack->out); + } + notify_ack->complete(0); } + +} // namespace librbd diff --git a/ceph/src/librbd/ImageWatcher.h b/ceph/src/librbd/ImageWatcher.h index 760a6981..6fbc4886 100644 --- a/ceph/src/librbd/ImageWatcher.h +++ b/ceph/src/librbd/ImageWatcher.h @@ -158,6 +158,31 @@ namespace librbd { RemoteProgressContext *m_prog_ctx; }; + struct C_NotifyAck : public Context { + ImageWatcher *image_watcher; + uint64_t notify_id; + uint64_t handle; + bufferlist out; + + C_NotifyAck(ImageWatcher *image_watcher, uint64_t notify_id, + uint64_t handle); + virtual void finish(int r); + }; + + struct C_SnapCreateResponseMessage : public Context { + ImageWatcher *image_watcher; + C_NotifyAck *notify_ack; + std::string snap_name; + + C_SnapCreateResponseMessage(ImageWatcher *image_watcher, + C_NotifyAck *notify_ack, + const std::string &snap_name) + : image_watcher(image_watcher), notify_ack(notify_ack), + snap_name(snap_name) { + } + virtual void finish(int r); + }; + struct HandlePayloadVisitor : public boost::static_visitor { ImageWatcher *image_watcher; uint64_t notify_id; @@ -169,17 +194,12 @@ namespace librbd { { } - inline void operator()(const WatchNotify::HeaderUpdatePayload &payload) const { - bufferlist out; - image_watcher->handle_payload(payload, &out); - image_watcher->acknowledge_notify(notify_id, handle, out); - } - template inline void operator()(const Payload &payload) const { - bufferlist out; - image_watcher->handle_payload(payload, &out); - image_watcher->acknowledge_notify(notify_id, handle, out); + C_NotifyAck *ctx = new C_NotifyAck(image_watcher, notify_id, handle); + if (image_watcher->handle_payload(payload, ctx)) { + ctx->complete(0); + } } }; @@ -242,26 +262,26 @@ namespace librbd { int notify_async_complete(const WatchNotify::AsyncRequestId &id, int r); - void handle_payload(const WatchNotify::HeaderUpdatePayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::AcquiredLockPayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::ReleasedLockPayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::RequestLockPayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::AsyncProgressPayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::AsyncCompletePayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::FlattenPayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::ResizePayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::SnapCreatePayload& payload, - bufferlist *out); - void handle_payload(const WatchNotify::UnknownPayload& payload, - bufferlist *out); + bool handle_payload(const WatchNotify::HeaderUpdatePayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::AcquiredLockPayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::ReleasedLockPayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::RequestLockPayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::AsyncProgressPayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::AsyncCompletePayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::FlattenPayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::ResizePayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::SnapCreatePayload& payload, + C_NotifyAck *ctx); + bool handle_payload(const WatchNotify::UnknownPayload& payload, + C_NotifyAck *ctx); void handle_notify(uint64_t notify_id, uint64_t handle, bufferlist &bl); void handle_error(uint64_t cookie, int err); diff --git a/ceph/src/librbd/Makefile.am b/ceph/src/librbd/Makefile.am index 96d0a00c..70d7d549 100644 --- a/ceph/src/librbd/Makefile.am +++ b/ceph/src/librbd/Makefile.am @@ -37,10 +37,6 @@ librbd_la_LIBADD = \ libcls_lock_client.la \ $(PTHREAD_LIBS) $(EXTRALIBS) -if WITH_LTTNG -librbd_la_LIBADD += $(LIBRBD_TP) -endif - librbd_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 if LINUX librbd_la_CXXFLAGS = -fvisibility=hidden -fvisibility-inlines-hidden diff --git a/ceph/src/librbd/ObjectMap.cc b/ceph/src/librbd/ObjectMap.cc index 9e7aae2d..ea06d769 100644 --- a/ceph/src/librbd/ObjectMap.cc +++ b/ceph/src/librbd/ObjectMap.cc @@ -176,7 +176,7 @@ void ObjectMap::refresh(uint64_t snap_id) if (r < 0) { lderr(cct) << "error refreshing object map: " << cpp_strerror(r) << dendl; - invalidate(); + invalidate(false); m_object_map.clear(); return; } @@ -189,7 +189,7 @@ void ObjectMap::refresh(uint64_t snap_id) if (m_object_map.size() < num_objs) { lderr(cct) << "object map smaller than current object count: " << m_object_map.size() << " != " << num_objs << dendl; - invalidate(); + invalidate(false); } else if (m_object_map.size() > num_objs) { // resize op might have been interrupted ldout(cct, 1) << "object map larger than current object count: " @@ -227,7 +227,7 @@ void ObjectMap::rollback(uint64_t snap_id) { if (r < 0) { lderr(cct) << "unable to load snapshot object map '" << snap_oid << "': " << cpp_strerror(r) << dendl; - invalidate(); + invalidate(false); return; } @@ -239,7 +239,7 @@ void ObjectMap::rollback(uint64_t snap_id) { if (r < 0) { lderr(cct) << "unable to rollback object map: " << cpp_strerror(r) << dendl; - invalidate(); + invalidate(true); } } @@ -265,7 +265,8 @@ void ObjectMap::snapshot(uint64_t snap_id) { if (r < 0) { lderr(cct) << "unable to load object map: " << cpp_strerror(r) << dendl; - invalidate(); + invalidate(false); + return; } std::string snap_oid(object_map_name(m_image_ctx.id, snap_id)); @@ -273,7 +274,7 @@ void ObjectMap::snapshot(uint64_t snap_id) { if (r < 0) { lderr(cct) << "unable to snapshot object map '" << snap_oid << "': " << cpp_strerror(r) << dendl; - invalidate(); + invalidate(false); } } @@ -333,7 +334,7 @@ bool ObjectMap::aio_update(uint64_t start_object_no, uint64_t end_object_no, return false; } -void ObjectMap::invalidate() { +void ObjectMap::invalidate(bool force) { assert(m_image_ctx.snap_lock.is_wlocked()); assert(m_image_ctx.object_map_lock.is_wlocked()); uint64_t flags; @@ -355,7 +356,7 @@ void ObjectMap::invalidate() { } librados::ObjectWriteOperation op; - if (m_image_ctx.snap_id == CEPH_NOSNAP) { + if (m_image_ctx.snap_id == CEPH_NOSNAP && !force) { m_image_ctx.image_watcher->assert_header_locked(&op); } cls_client::set_flags(&op, m_image_ctx.snap_id, m_image_ctx.flags, @@ -380,7 +381,7 @@ bool ObjectMap::Request::should_complete(int r) { case STATE_REQUEST: if (r == -EBUSY) { lderr(cct) << "object map lock not owned by client" << dendl; - return true; + return invalidate(); } else if (r < 0) { lderr(cct) << "failed to update object map: " << cpp_strerror(r) << dendl; @@ -425,7 +426,6 @@ bool ObjectMap::Request::invalidate() { m_image_ctx.flags |= RBD_FLAG_OBJECT_MAP_INVALID; librados::ObjectWriteOperation op; - m_image_ctx.image_watcher->assert_header_locked(&op); cls_client::set_flags(&op, CEPH_NOSNAP, m_image_ctx.flags, RBD_FLAG_OBJECT_MAP_INVALID); diff --git a/ceph/src/librbd/ObjectMap.h b/ceph/src/librbd/ObjectMap.h index 41046365..62532070 100644 --- a/ceph/src/librbd/ObjectMap.h +++ b/ceph/src/librbd/ObjectMap.h @@ -131,7 +131,7 @@ private: bool m_enabled; - void invalidate(); + void invalidate(bool force); }; diff --git a/ceph/src/librbd/TaskFinisher.h b/ceph/src/librbd/TaskFinisher.h index 4942a38b..1763c231 100644 --- a/ceph/src/librbd/TaskFinisher.h +++ b/ceph/src/librbd/TaskFinisher.h @@ -45,6 +45,7 @@ public: typename TaskContexts::iterator it = m_task_contexts.find(task); if (it != m_task_contexts.end()) { delete it->second.first; + m_safe_timer->cancel_event(it->second.second); m_task_contexts.erase(it); } } diff --git a/ceph/src/librbd/internal.cc b/ceph/src/librbd/internal.cc index 7364e6cf..b4b4d9e4 100644 --- a/ceph/src/librbd/internal.cc +++ b/ceph/src/librbd/internal.cc @@ -135,6 +135,41 @@ int invoke_async_request(ImageCtx *ictx, const std::string& request_type, return r; } +int validate_pool(IoCtx &io_ctx, CephContext *cct) { + if (!cct->_conf->rbd_validate_pool) { + return 0; + } + + int r = io_ctx.stat(RBD_DIRECTORY, NULL, NULL); + if (r == 0) { + return 0; + } else if (r < 0 && r != -ENOENT) { + lderr(cct) << "failed to stat RBD directory: " << cpp_strerror(r) << dendl; + return r; + } + + // allocate a self-managed snapshot id if this a new pool to force + // self-managed snapshot mode + uint64_t snap_id; + r = io_ctx.selfmanaged_snap_create(&snap_id); + if (r == -EINVAL) { + lderr(cct) << "pool not configured for self-managed RBD snapshot support" + << dendl; + return r; + } else if (r < 0) { + lderr(cct) << "failed to allocate self-managed snapshot: " + << cpp_strerror(r) << dendl; + return r; + } + + r = io_ctx.selfmanaged_snap_remove(snap_id); + if (r < 0) { + lderr(cct) << "failed to release self-managed snapshot " << snap_id + << ": " << cpp_strerror(r) << dendl; + } + return 0; +} + } // anonymous namespace const string id_obj_name(const string &name) @@ -872,8 +907,14 @@ reprotect_and_return_err: uint64_t size, int order) { CephContext *cct = (CephContext *)io_ctx.cct(); + + int r = validate_pool(io_ctx, cct); + if (r < 0) { + return r; + } + ldout(cct, 2) << "adding rbd image to directory..." << dendl; - int r = tmap_set(io_ctx, imgname); + r = tmap_set(io_ctx, imgname); if (r < 0) { lderr(cct) << "error adding image to directory: " << cpp_strerror(r) << dendl; @@ -918,9 +959,14 @@ reprotect_and_return_err: ceph_file_layout layout; + int r = validate_pool(io_ctx, cct); + if (r < 0) { + return r; + } + id_obj = id_obj_name(imgname); - int r = io_ctx.create(id_obj, true); + r = io_ctx.create(id_obj, true); if (r < 0) { lderr(cct) << "error creating rbd id object: " << cpp_strerror(r) << dendl; @@ -2824,12 +2870,12 @@ reprotect_and_return_err: int simple_diff_cb(uint64_t off, size_t len, int exists, void *arg) { - // This reads the existing extents in a parent from the beginning - // of time. Since images are thin-provisioned, the extents will - // always represent data, not holes. - assert(exists); - interval_set *diff = static_cast *>(arg); - diff->insert(off, len); + // it's possible for a discard to create a hole in the parent image -- + // ignore + if (exists) { + interval_set *diff = static_cast *>(arg); + diff->insert(off, len); + } return 0; } diff --git a/ceph/src/librbd/librbd.cc b/ceph/src/librbd/librbd.cc index a99f7d47..2e9e58ce 100644 --- a/ceph/src/librbd/librbd.cc +++ b/ceph/src/librbd/librbd.cc @@ -21,6 +21,7 @@ #include "common/snap_types.h" #include "common/perf_counters.h" #include "common/WorkQueue.h" +#include "common/TracepointProvider.h" #include "include/Context.h" #include "include/rbd/librbd.hpp" #include "osdc/ObjectCacher.h" @@ -36,7 +37,11 @@ #include #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/librbd.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif @@ -54,6 +59,8 @@ using librados::IoCtx; namespace { +TracepointProvider::Traits tracepoint_traits("librbd_tp.so", "rbd_tracing"); + class C_AioReadWQ : public Context { public: C_AioReadWQ(librbd::ImageCtx *ictx, uint64_t off, size_t len, @@ -165,6 +172,10 @@ void submit_aio_flush(librbd::ImageCtx *ictx, librbd::AioCompletion *c) { } } +CephContext* get_cct(IoCtx &io_ctx) { + return reinterpret_cast(io_ctx.cct()); +} + librbd::AioCompletion* get_aio_completion(librbd::RBD::AioCompletion *comp) { return reinterpret_cast(comp->pc); } @@ -217,8 +228,14 @@ namespace librbd { const char *snap_name) { ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, false); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); + if (image.ctx != NULL) { + close_image(reinterpret_cast(image.ctx)); + image.ctx = NULL; + } + int r = librbd::open_image(ictx); if (r < 0) { tracepoint(librbd, open_image_exit, r); @@ -234,8 +251,14 @@ namespace librbd { const char *snap_name) { ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, true); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); + if (image.ctx != NULL) { + close_image(reinterpret_cast(image.ctx)); + image.ctx = NULL; + } + int r = librbd::open_image(ictx); if (r < 0) { tracepoint(librbd, open_image_exit, r); @@ -249,6 +272,7 @@ namespace librbd { int RBD::create(IoCtx& io_ctx, const char *name, uint64_t size, int *order) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, *order); int r = librbd::create(io_ctx, name, size, order); tracepoint(librbd, create_exit, r, *order); @@ -258,6 +282,7 @@ namespace librbd { int RBD::create2(IoCtx& io_ctx, const char *name, uint64_t size, uint64_t features, int *order) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create2_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order); int r = librbd::create(io_ctx, name, size, false, features, order, 0, 0); tracepoint(librbd, create2_exit, r, *order); @@ -268,6 +293,7 @@ namespace librbd { uint64_t features, int *order, uint64_t stripe_unit, uint64_t stripe_count) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create3_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order, stripe_unit, stripe_count); int r = librbd::create(io_ctx, name, size, false, features, order, stripe_unit, stripe_count); @@ -279,6 +305,7 @@ namespace librbd { IoCtx& c_ioctx, const char *c_name, uint64_t features, int *c_order) { + TracepointProvider::initialize(get_cct(p_ioctx)); tracepoint(librbd, clone_enter, p_ioctx.get_pool_name().c_str(), p_ioctx.get_id(), p_name, p_snap_name, c_ioctx.get_pool_name().c_str(), c_ioctx.get_id(), c_name, features); int r = librbd::clone(p_ioctx, p_name, p_snap_name, c_ioctx, c_name, features, c_order, 0, 0); @@ -290,6 +317,7 @@ namespace librbd { IoCtx& c_ioctx, const char *c_name, uint64_t features, int *c_order, uint64_t stripe_unit, int stripe_count) { + TracepointProvider::initialize(get_cct(p_ioctx)); tracepoint(librbd, clone2_enter, p_ioctx.get_pool_name().c_str(), p_ioctx.get_id(), p_name, p_snap_name, c_ioctx.get_pool_name().c_str(), c_ioctx.get_id(), c_name, features, stripe_unit, stripe_count); int r = librbd::clone(p_ioctx, p_name, p_snap_name, c_ioctx, c_name, features, c_order, stripe_unit, stripe_count); @@ -299,6 +327,7 @@ namespace librbd { int RBD::remove(IoCtx& io_ctx, const char *name) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::NoOpProgressContext prog_ctx; int r = librbd::remove(io_ctx, name, prog_ctx); @@ -309,6 +338,7 @@ namespace librbd { int RBD::remove_with_progress(IoCtx& io_ctx, const char *name, ProgressContext& pctx) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); int r = librbd::remove(io_ctx, name, pctx); tracepoint(librbd, remove_exit, r); @@ -317,6 +347,7 @@ namespace librbd { int RBD::list(IoCtx& io_ctx, vector& names) { + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, list_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id()); int r = librbd::list(io_ctx, names); if (r >= 0) { @@ -330,6 +361,7 @@ namespace librbd { int RBD::rename(IoCtx& src_io_ctx, const char *srcname, const char *destname) { + TracepointProvider::initialize(get_cct(src_io_ctx)); tracepoint(librbd, rename_enter, src_io_ctx.get_pool_name().c_str(), src_io_ctx.get_id(), srcname, destname); int r = librbd::rename(src_io_ctx, srcname, destname); tracepoint(librbd, rename_exit, r); @@ -928,6 +960,7 @@ extern "C" int rbd_list(rados_ioctx_t p, char *names, size_t *size) { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, list_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id()); vector cpp_names; int r = librbd::list(io_ctx, cpp_names); @@ -969,6 +1002,7 @@ extern "C" int rbd_create(rados_ioctx_t p, const char *name, uint64_t size, int { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, *order); int r = librbd::create(io_ctx, name, size, order); tracepoint(librbd, create_exit, r, *order); @@ -981,6 +1015,7 @@ extern "C" int rbd_create2(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create2_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order); int r = librbd::create(io_ctx, name, size, false, features, order, 0, 0); tracepoint(librbd, create2_exit, r, *order); @@ -994,6 +1029,7 @@ extern "C" int rbd_create3(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, create3_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order, stripe_unit, stripe_count); int r = librbd::create(io_ctx, name, size, false, features, order, stripe_unit, stripe_count); @@ -1008,6 +1044,7 @@ extern "C" int rbd_clone(rados_ioctx_t p_ioctx, const char *p_name, librados::IoCtx p_ioc, c_ioc; librados::IoCtx::from_rados_ioctx_t(p_ioctx, p_ioc); librados::IoCtx::from_rados_ioctx_t(c_ioctx, c_ioc); + TracepointProvider::initialize(get_cct(p_ioc)); tracepoint(librbd, clone_enter, p_ioc.get_pool_name().c_str(), p_ioc.get_id(), p_name, p_snap_name, c_ioc.get_pool_name().c_str(), c_ioc.get_id(), c_name, features); int r = librbd::clone(p_ioc, p_name, p_snap_name, c_ioc, c_name, features, c_order, 0, 0); @@ -1023,6 +1060,7 @@ extern "C" int rbd_clone2(rados_ioctx_t p_ioctx, const char *p_name, librados::IoCtx p_ioc, c_ioc; librados::IoCtx::from_rados_ioctx_t(p_ioctx, p_ioc); librados::IoCtx::from_rados_ioctx_t(c_ioctx, c_ioc); + TracepointProvider::initialize(get_cct(p_ioc)); tracepoint(librbd, clone2_enter, p_ioc.get_pool_name().c_str(), p_ioc.get_id(), p_name, p_snap_name, c_ioc.get_pool_name().c_str(), c_ioc.get_id(), c_name, features, stripe_unit, stripe_count); int r = librbd::clone(p_ioc, p_name, p_snap_name, c_ioc, c_name, features, c_order, stripe_unit, stripe_count); @@ -1034,6 +1072,7 @@ extern "C" int rbd_remove(rados_ioctx_t p, const char *name) { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::NoOpProgressContext prog_ctx; int r = librbd::remove(io_ctx, name, prog_ctx); @@ -1046,6 +1085,7 @@ extern "C" int rbd_remove_with_progress(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::CProgressContext prog_ctx(cb, cbdata); int r = librbd::remove(io_ctx, name, prog_ctx); @@ -1129,6 +1169,7 @@ extern "C" int rbd_rename(rados_ioctx_t src_p, const char *srcname, { librados::IoCtx src_io_ctx; librados::IoCtx::from_rados_ioctx_t(src_p, src_io_ctx); + TracepointProvider::initialize(get_cct(src_io_ctx)); tracepoint(librbd, rename_enter, src_io_ctx.get_pool_name().c_str(), src_io_ctx.get_id(), srcname, destname); int r = librbd::rename(src_io_ctx, srcname, destname); tracepoint(librbd, rename_exit, r); @@ -1140,6 +1181,7 @@ extern "C" int rbd_open(rados_ioctx_t p, const char *name, rbd_image_t *image, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx, false); tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); @@ -1155,6 +1197,7 @@ extern "C" int rbd_open_read_only(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); + TracepointProvider::initialize(get_cct(io_ctx)); librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx, true); tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); diff --git a/ceph/src/log/Log.cc b/ceph/src/log/Log.cc index 3dc6c631..a3e54dfa 100644 --- a/ceph/src/log/Log.cc +++ b/ceph/src/log/Log.cc @@ -241,7 +241,7 @@ void Log::_flush(EntryQueue *t, EntryQueue *requeue, bool crash) } if (do_syslog) { - syslog(LOG_USER, "%s%s", buf, s.c_str()); + syslog(LOG_USER|LOG_DEBUG, "%s%s", buf, s.c_str()); } if (do_stderr) { @@ -263,7 +263,7 @@ void Log::_log_message(const char *s, bool crash) cerr << "problem writing to " << m_log_file << ": " << cpp_strerror(r) << std::endl; } if ((crash ? m_syslog_crash : m_syslog_log) >= 0) { - syslog(LOG_USER, "%s", s); + syslog(LOG_USER|LOG_DEBUG, "%s", s); } if ((crash ? m_stderr_crash : m_stderr_log) >= 0) { diff --git a/ceph/src/logrotate.conf b/ceph/src/logrotate.conf index 1833d55c..9ae27bae 100644 --- a/ceph/src/logrotate.conf +++ b/ceph/src/logrotate.conf @@ -4,10 +4,10 @@ compress sharedscripts postrotate - if which invoke-rc.d > /dev/null 2>&1 && [ -x `which invoke-rc.d` ]; then - invoke-rc.d ceph reload >/dev/null - elif which service > /dev/null 2>&1 && [ -x `which service` ]; then + if which service > /dev/null 2>&1 && [ -x `which service` ]; then service ceph reload >/dev/null + elif which invoke-rc.d > /dev/null 2>&1 && [ -x `which invoke-rc.d` ]; then + invoke-rc.d ceph reload >/dev/null fi # Possibly reload twice, but depending on ceph.conf the reload above may be a no-op if which initctl > /dev/null 2>&1 && [ -x `which initctl` ]; then diff --git a/ceph/src/mon/Elector.cc b/ceph/src/mon/Elector.cc index 6f54cb4b..79d66de6 100644 --- a/ceph/src/mon/Elector.cc +++ b/ceph/src/mon/Elector.cc @@ -78,8 +78,15 @@ void Elector::start() init(); // start by trying to elect me - if (epoch % 2 == 0) + if (epoch % 2 == 0) { bump_epoch(epoch+1); // odd == election cycle + } else { + // do a trivial db write just to ensure it is writeable. + MonitorDBStore::TransactionRef t(new MonitorDBStore::Transaction); + t->put(Monitor::MONITOR_NAME, "election_writeable_test", rand()); + int r = mon->store->apply_transaction(t); + assert(r >= 0); + } start_stamp = ceph_clock_now(g_ceph_context); electing_me = true; acked_me[mon->rank] = CEPH_FEATURES_ALL; diff --git a/ceph/src/mon/MDSMonitor.cc b/ceph/src/mon/MDSMonitor.cc index 4cf26cd4..95be55eb 100644 --- a/ceph/src/mon/MDSMonitor.cc +++ b/ceph/src/mon/MDSMonitor.cc @@ -1054,6 +1054,21 @@ int MDSMonitor::_check_pool( << " is an erasure-code pool"; return -EINVAL; } + + // That cache tier overlay must be writeback, not readonly (it's the + // write operations like modify+truncate we care about support for) + const pg_pool_t *write_tier = mon->osdmon()->osdmap.get_pg_pool( + pool->write_tier); + assert(write_tier != NULL); // OSDMonitor shouldn't allow DNE tier + if (write_tier->cache_mode == pg_pool_t::CACHEMODE_FORWARD + || write_tier->cache_mode == pg_pool_t::CACHEMODE_READONLY) { + *ss << "EC pool '" << pool_name << "' has a write tier (" + << mon->osdmon()->osdmap.get_pool_name(pool->write_tier) + << ") that is configured " + "to forward writes. Use a cache mode such as 'writeback' for " + "CephFS"; + return -EINVAL; + } } if (pool->is_tier()) { @@ -1570,22 +1585,14 @@ int MDSMonitor::filesystem_command( return -ENOENT; } } - const pg_pool_t *p = mon->osdmon()->osdmap.get_pg_pool(poolid); - if (!p) { - ss << "pool '" << poolname << "' does not exist"; - return -ENOENT; - } - if (p->is_erasure()) { - // I'm sorry Dave, I'm afraid I can't do that - poolid = -1; - ss << "can't use pool '" << poolname << "' as it's an erasure-code pool"; - return -EINVAL; - } - if (poolid >= 0) { - pending_mdsmap.add_data_pool(poolid); - ss << "added data pool " << poolid << " to mdsmap"; - r = 0; + + r = _check_pool(poolid, &ss); + if (r != 0) { + return r; } + + pending_mdsmap.add_data_pool(poolid); + ss << "added data pool " << poolid << " to mdsmap"; } else if (prefix == "mds remove_data_pool") { string poolname; cmd_getval(g_ceph_context, cmdmap, "pool", poolname); diff --git a/ceph/src/mon/MonClient.cc b/ceph/src/mon/MonClient.cc index 04de7e29..9c9a3e7a 100644 --- a/ceph/src/mon/MonClient.cc +++ b/ceph/src/mon/MonClient.cc @@ -116,9 +116,7 @@ int MonClient::get_monmap_privately() bool temp_msgr = false; Messenger* smessenger = NULL; if (!messenger) { - messenger = smessenger = Messenger::create(cct, cct->_conf->ms_type, - entity_name_t::CLIENT(-1), - "temp_mon_client", getpid()); + messenger = smessenger = Messenger::create_client_messenger(cct, "temp_mon_client"); messenger->add_dispatcher_head(this); smessenger->start(); temp_msgr = true; @@ -218,9 +216,7 @@ int MonClient::ping_monitor(const string &mon_id, string *result_reply) MonClientPinger *pinger = new MonClientPinger(cct, result_reply); - Messenger *smsgr = Messenger::create(cct, cct->_conf->ms_type, - entity_name_t::CLIENT(-1), - "temp_ping_client", getpid()); + Messenger *smsgr = Messenger::create_client_messenger(cct, "temp_ping_client"); smsgr->add_dispatcher_head(pinger); smsgr->start(); diff --git a/ceph/src/mon/Monitor.cc b/ceph/src/mon/Monitor.cc index ba2aecfe..4a34283e 100644 --- a/ceph/src/mon/Monitor.cc +++ b/ceph/src/mon/Monitor.cc @@ -4041,6 +4041,10 @@ void Monitor::handle_subscribe(MMonSubscribe *m) } } else if (p->first == "osdmap") { if ((int)s->is_capable("osd", MON_CAP_R)) { + if (s->osd_epoch > p->second.start) { + // client needs earlier osdmaps on purpose, so reset the sent epoch + s->osd_epoch = 0; + } osdmon()->check_sub(s->sub_map["osdmap"]); } } else if (p->first == "osd_pg_creates") { @@ -4656,9 +4660,9 @@ bool Monitor::ms_verify_authorizer(Connection *con, int peer_type, CephXServiceTicketInfo auth_ticket_info; if (authorizer_data.length()) { - int ret = cephx_verify_authorizer(g_ceph_context, &keyring, iter, + bool ret = cephx_verify_authorizer(g_ceph_context, &keyring, iter, auth_ticket_info, authorizer_reply); - if (ret >= 0) { + if (ret) { session_key = auth_ticket_info.session_key; isvalid = true; } else { diff --git a/ceph/src/mon/MonitorDBStore.h b/ceph/src/mon/MonitorDBStore.h index e37b95db..2f6f8d8b 100644 --- a/ceph/src/mon/MonitorDBStore.h +++ b/ceph/src/mon/MonitorDBStore.h @@ -291,6 +291,8 @@ class MonitorDBStore db->compact_range_async(compact.front().first, compact.front().second.first, compact.front().second.second); compact.pop_front(); } + } else { + assert(0 == "failed to write to db"); } return r; } @@ -448,11 +450,15 @@ class MonitorDBStore virtual pair get_next_key() { assert(iter->valid()); - pair r = iter->raw_key(); - do { - iter->next(); - } while (iter->valid() && sync_prefixes.count(iter->raw_key().first) == 0); - return r; + + for (; iter->valid(); iter->next()) { + pair r = iter->raw_key(); + if (sync_prefixes.count(r.first) > 0) { + iter->next(); + return r; + } + } + return pair(); } virtual bool _is_valid() { @@ -564,7 +570,8 @@ class MonitorDBStore for (iter = prefixes.begin(); iter != prefixes.end(); ++iter) { dbt->rmkeys_by_prefix((*iter)); } - db->submit_transaction_sync(dbt); + int r = db->submit_transaction_sync(dbt); + assert(r >= 0); } int open(ostream &out) { diff --git a/ceph/src/mon/OSDMonitor.cc b/ceph/src/mon/OSDMonitor.cc index cdbb6c75..968efc43 100644 --- a/ceph/src/mon/OSDMonitor.cc +++ b/ceph/src/mon/OSDMonitor.cc @@ -274,9 +274,6 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap) for (int o = 0; o < osdmap.get_max_osd(); o++) { if (osdmap.is_down(o)) { - // invalidate osd_epoch cache - osd_epoch.erase(o); - // populate down -> out map if (osdmap.is_in(o) && down_pending_out.count(o) == 0) { @@ -285,11 +282,7 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap) } } } - // blow away any osd_epoch items beyond max_osd - map::iterator p = osd_epoch.upper_bound(osdmap.get_max_osd()); - while (p != osd_epoch.end()) { - osd_epoch.erase(p++); - } + // XXX: need to trim MonSession connected with a osd whose id > max_osd? /** we don't have any of the feature bit infrastructure in place for * supporting primary_temp mappings without breaking old clients/OSDs.*/ @@ -2146,19 +2139,13 @@ void OSDMonitor::send_incremental(PaxosServiceMessage *req, epoch_t first) << " to " << req->get_orig_source_inst() << dendl; - int osd = -1; - if (req->get_source().is_osd()) { - osd = req->get_source().num(); - map::iterator p = osd_epoch.find(osd); - if (p != osd_epoch.end()) { - if (first <= p->second) { - dout(10) << __func__ << " osd." << osd << " should already have epoch " - << p->second << dendl; - first = p->second + 1; - if (first > osdmap.get_epoch()) - return; - } - } + MonSession *s = req->get_session(); + if (s && first <= s->osd_epoch) { + dout(10) << __func__ << s->inst << " should already have epoch " + << s->osd_epoch << dendl; + first = s->osd_epoch + 1; + if (first > osdmap.get_epoch()) + return; } if (first < get_first_committed()) { @@ -2177,8 +2164,9 @@ void OSDMonitor::send_incremental(PaxosServiceMessage *req, epoch_t first) m->maps[first] = bl; mon->send_reply(req, m); - if (osd >= 0) - note_osd_has_epoch(osd, osdmap.get_epoch()); + if (s) { + s->osd_epoch = osdmap.get_epoch(); + } return; } @@ -2190,28 +2178,8 @@ void OSDMonitor::send_incremental(PaxosServiceMessage *req, epoch_t first) m->newest_map = osdmap.get_epoch(); mon->send_reply(req, m); - if (osd >= 0) - note_osd_has_epoch(osd, last); -} - -// FIXME: we assume the OSD actually receives this. if the mon -// session drops and they reconnect we may not share the same maps -// with them again, which could cause a strange hang (perhaps stuck -// 'waiting for osdmap' requests?). this information should go in the -// MonSession, but I think these functions need to be refactored in -// terms of MonSession first for that to work. -void OSDMonitor::note_osd_has_epoch(int osd, epoch_t epoch) -{ - dout(20) << __func__ << " osd." << osd << " epoch " << epoch << dendl; - map::iterator p = osd_epoch.find(osd); - if (p != osd_epoch.end()) { - dout(20) << __func__ << " osd." << osd << " epoch " << epoch - << " (was " << p->second << ")" << dendl; - p->second = epoch; - } else { - dout(20) << __func__ << " osd." << osd << " epoch " << epoch << dendl; - osd_epoch[osd] = epoch; - } + if (s) + s->osd_epoch = last; } void OSDMonitor::send_incremental(epoch_t first, MonSession *session, @@ -2235,6 +2203,7 @@ void OSDMonitor::send_incremental(epoch_t first, MonSession *session, m->newest_map = osdmap.get_epoch(); m->maps[first] = bl; session->con->send_message(m); + session->osd_epoch = first; first++; } @@ -2243,9 +2212,7 @@ void OSDMonitor::send_incremental(epoch_t first, MonSession *session, MOSDMap *m = build_incremental(first, last); session->con->send_message(m); first = last + 1; - - if (session->inst.name.is_osd()) - note_osd_has_epoch(session->inst.name.num(), last); + session->osd_epoch = last; if (onetime) break; @@ -6229,7 +6196,7 @@ done: const pg_pool_t *tp = osdmap.get_pg_pool(tierpool_id); assert(tp); - if (!_check_remove_tier(pool_id, p, &err, &ss)) { + if (!_check_remove_tier(pool_id, p, tp, &err, &ss)) { goto reply; } @@ -6334,7 +6301,7 @@ done: goto reply; } - if (!_check_remove_tier(pool_id, p, &err, &ss)) { + if (!_check_remove_tier(pool_id, p, NULL, &err, &ss)) { goto reply; } @@ -7000,17 +6967,29 @@ bool OSDMonitor::_check_become_tier( */ bool OSDMonitor::_check_remove_tier( const int64_t base_pool_id, const pg_pool_t *base_pool, + const pg_pool_t *tier_pool, int *err, ostream *ss) const { const std::string &base_pool_name = osdmap.get_pool_name(base_pool_id); - // If the pool is in use by CephFS, then refuse to remove its - // tier + // Apply CephFS-specific checks const MDSMap &pending_mdsmap = mon->mdsmon()->pending_mdsmap; if (pending_mdsmap.pool_in_use(base_pool_id)) { - *ss << "pool '" << base_pool_name << "' is in use by CephFS via its tier"; - *err = -EBUSY; - return false; + if (base_pool->type != pg_pool_t::TYPE_REPLICATED) { + // If the underlying pool is erasure coded, we can't permit the + // removal of the replicated tier that CephFS relies on to access it + *ss << "pool '" << base_pool_name << "' is in use by CephFS via its tier"; + *err = -EBUSY; + return false; + } + + if (tier_pool && tier_pool->cache_mode == pg_pool_t::CACHEMODE_WRITEBACK) { + *ss << "pool '" << base_pool_name << "' is in use by CephFS, and this " + "tier is still in use as a writeback cache. Change the cache " + "mode and flush the cache before removing it"; + *err = -EBUSY; + return false; + } } *err = 0; diff --git a/ceph/src/mon/OSDMonitor.h b/ceph/src/mon/OSDMonitor.h index 414bf082..3c70cf24 100644 --- a/ceph/src/mon/OSDMonitor.h +++ b/ceph/src/mon/OSDMonitor.h @@ -135,16 +135,9 @@ private: map osd_weight; - /* - * cache what epochs we think osds have. this is purely - * optimization to try to avoid sending the same inc maps twice. - */ - map osd_epoch; SimpleLRU inc_osd_cache; SimpleLRU full_osd_cache; - void note_osd_has_epoch(int osd, epoch_t epoch); - void check_failures(utime_t now); bool check_failure(utime_t now, int target_osd, failure_info_t& fi); @@ -259,7 +252,7 @@ private: int64_t base_pool_id, const pg_pool_t *base_pool, int *err, ostream *ss) const; bool _check_remove_tier( - int64_t base_pool_id, const pg_pool_t *base_pool, + int64_t base_pool_id, const pg_pool_t *base_pool, const pg_pool_t *tier_pool, int *err, ostream *ss) const; int _prepare_remove_pool(int64_t pool, ostream *ss); diff --git a/ceph/src/mon/PGMap.cc b/ceph/src/mon/PGMap.cc index e60ed6ae..2be6693a 100644 --- a/ceph/src/mon/PGMap.cc +++ b/ceph/src/mon/PGMap.cc @@ -373,7 +373,7 @@ void PGMap::calc_stats() redo_full_sets(); - calc_min_last_epoch_clean(); + min_last_epoch_clean = calc_min_last_epoch_clean(); } void PGMap::update_pg(pg_t pgid, bufferlist& bl) @@ -650,6 +650,7 @@ void PGMap::dump_basic(Formatter *f) const f->dump_stream("stamp") << stamp; f->dump_unsigned("last_osdmap_epoch", last_osdmap_epoch); f->dump_unsigned("last_pg_scan", last_pg_scan); + f->dump_unsigned("min_last_epoch_clean", min_last_epoch_clean); f->dump_float("full_ratio", full_ratio); f->dump_float("near_full_ratio", nearfull_ratio); @@ -982,7 +983,7 @@ void PGMap::print_osd_blocked_by_stats(std::ostream *ss) const void PGMap::recovery_summary(Formatter *f, list *psl, const pool_stat_t& delta_sum) const { - if (delta_sum.stats.sum.num_objects_degraded) { + if (delta_sum.stats.sum.num_objects_degraded && delta_sum.stats.sum.num_object_copies > 0) { double pc = (double)delta_sum.stats.sum.num_objects_degraded / (double)delta_sum.stats.sum.num_object_copies * (double)100.0; char b[20]; @@ -998,7 +999,7 @@ void PGMap::recovery_summary(Formatter *f, list *psl, psl->push_back(ss.str()); } } - if (delta_sum.stats.sum.num_objects_misplaced) { + if (delta_sum.stats.sum.num_objects_misplaced && delta_sum.stats.sum.num_object_copies > 0) { double pc = (double)delta_sum.stats.sum.num_objects_misplaced / (double)delta_sum.stats.sum.num_object_copies * (double)100.0; char b[20]; @@ -1014,7 +1015,7 @@ void PGMap::recovery_summary(Formatter *f, list *psl, psl->push_back(ss.str()); } } - if (delta_sum.stats.sum.num_objects_unfound) { + if (delta_sum.stats.sum.num_objects_unfound && delta_sum.stats.sum.num_objects) { double pc = (double)delta_sum.stats.sum.num_objects_unfound / (double)delta_sum.stats.sum.num_objects * (double)100.0; char b[20]; diff --git a/ceph/src/mon/PGMonitor.cc b/ceph/src/mon/PGMonitor.cc index 07e63053..3c2b756a 100644 --- a/ceph/src/mon/PGMonitor.cc +++ b/ceph/src/mon/PGMonitor.cc @@ -1295,9 +1295,12 @@ int64_t PGMonitor::get_rule_avail(OSDMap& osdmap, int ruleno) for (map::iterator p = wm.begin(); p != wm.end(); ++p) { ceph::unordered_map::const_iterator osd_info = pg_map.osd_stat.find(p->first); if (osd_info != pg_map.osd_stat.end()) { - if (osd_info->second.kb == 0) { + if (osd_info->second.kb == 0 || p->second == 0) { // osd must be out, hence its stats have been zeroed // (unless we somehow managed to have a disk with size 0...) + // + // (p->second == 0), if osd weight is 0, no need to + // calculate proj below. continue; } int64_t proj = (float)((osd_info->second).kb_avail * 1024ull) / diff --git a/ceph/src/mon/PaxosService.cc b/ceph/src/mon/PaxosService.cc index 4bdffc28..c87cebc3 100644 --- a/ceph/src/mon/PaxosService.cc +++ b/ceph/src/mon/PaxosService.cc @@ -383,6 +383,9 @@ void PaxosService::trim(MonitorDBStore::TransactionRef t, if (g_conf->mon_compact_on_trim) { dout(20) << " compacting prefix " << get_service_name() << dendl; t->compact_range(get_service_name(), stringify(from - 1), stringify(to)); + t->compact_range(get_service_name(), + mon->store->combine_strings(full_prefix_name, from - 1), + mon->store->combine_strings(full_prefix_name, to)); } } diff --git a/ceph/src/mon/Session.h b/ceph/src/mon/Session.h index 4a19d84a..f3f93e4a 100644 --- a/ceph/src/mon/Session.h +++ b/ceph/src/mon/Session.h @@ -50,6 +50,7 @@ struct MonSession : public RefCountedObject { uint64_t global_id; map sub_map; + epoch_t osd_epoch; // the osdmap epoch sent to the mon client AuthServiceHandler *auth_handler; EntityName entity_name; @@ -60,7 +61,9 @@ struct MonSession : public RefCountedObject { MonSession(const entity_inst_t& i, Connection *c) : con(c), inst(i), closed(false), item(this), auid(0), - global_id(0), auth_handler(NULL), + global_id(0), + osd_epoch(0), + auth_handler(NULL), proxy_con(NULL), proxy_tid(0) { time_established = ceph_clock_now(g_ceph_context); } diff --git a/ceph/src/msg/Messenger.cc b/ceph/src/msg/Messenger.cc index b63950e0..ea28808b 100644 --- a/ceph/src/msg/Messenger.cc +++ b/ceph/src/msg/Messenger.cc @@ -10,6 +10,14 @@ #include "msg/xio/XioMessenger.h" #endif +Messenger *Messenger::create_client_messenger(CephContext *cct, string lname) +{ + uint64_t nonce = 0; + get_random_bytes((char*)&nonce, sizeof(nonce)); + return Messenger::create(cct, cct->_conf->ms_type, entity_name_t::CLIENT(), + lname, nonce); +} + Messenger *Messenger::create(CephContext *cct, const string &type, entity_name_t name, string lname, uint64_t nonce) diff --git a/ceph/src/msg/Messenger.h b/ceph/src/msg/Messenger.h index 429e5007..82f6c021 100644 --- a/ceph/src/msg/Messenger.h +++ b/ceph/src/msg/Messenger.h @@ -158,6 +158,21 @@ public: string lname, uint64_t nonce); + /** + * create a new messenger + * + * Create a new messenger instance. + * Same as the above, but a slightly simpler interface for clients: + * - Generate a random nonce + * - use the default feature bits + * - get the messenger type from cct + * - use the client entity_type + * + * @param cct context + * @param lname logical name of the messenger in this process (e.g., "client") + */ + static Messenger *create_client_messenger(CephContext *cct, string lname); + /** * @defgroup Accessors * @{ diff --git a/ceph/src/msg/async/AsyncMessenger.h b/ceph/src/msg/async/AsyncMessenger.h index 685799f6..fdd5844c 100644 --- a/ceph/src/msg/async/AsyncMessenger.h +++ b/ceph/src/msg/async/AsyncMessenger.h @@ -80,7 +80,7 @@ class Processor { void accept(); }; -class WorkerPool: CephContext::AssociatedSingletonObject { +class WorkerPool { WorkerPool(const WorkerPool &); WorkerPool& operator=(const WorkerPool &); CephContext *cct; diff --git a/ceph/src/os/FileStore.cc b/ceph/src/os/FileStore.cc index f6c3bb87..c7f9bea3 100644 --- a/ceph/src/os/FileStore.cc +++ b/ceph/src/os/FileStore.cc @@ -78,7 +78,11 @@ using ceph::crypto::SHA1; #include "common/config.h" #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/objectstore.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif @@ -3780,6 +3784,7 @@ int FileStore::_fgetattrs(int fd, map& aset) dout(10) << " -ERANGE, got " << len << dendl; if (len < 0) { assert(!m_filestore_fail_eio || len != -EIO); + delete[] names2; return len; } name = names2; @@ -3798,8 +3803,10 @@ int FileStore::_fgetattrs(int fd, map& aset) if (*name) { dout(20) << "fgetattrs " << fd << " getting '" << name << "'" << dendl; int r = _fgetattr(fd, attrname, aset[name]); - if (r < 0) + if (r < 0) { + delete[] names2; return r; + } } } name += strlen(name) + 1; diff --git a/ceph/src/os/FileStore.h b/ceph/src/os/FileStore.h index af1fb8d8..a9291b74 100644 --- a/ceph/src/os/FileStore.h +++ b/ceph/src/os/FileStore.h @@ -258,6 +258,7 @@ private: q.push_back(o); } Op *peek_queue() { + Mutex::Locker l(qlock); assert(apply_lock.is_locked()); return q.front(); } diff --git a/ceph/src/os/Makefile.am b/ceph/src/os/Makefile.am index 2638810e..7e584b44 100644 --- a/ceph/src/os/Makefile.am +++ b/ceph/src/os/Makefile.am @@ -40,9 +40,6 @@ endif libos_la_CXXFLAGS = ${AM_CXXFLAGS} libos_la_LIBADD = $(LIBOS_TYPES) -if WITH_LTTNG -libos_la_LIBADD += $(LIBOS_TP) -endif noinst_LTLIBRARIES += libos.la diff --git a/ceph/src/osd/ECBackend.cc b/ceph/src/osd/ECBackend.cc index 845ea832..3b517402 100644 --- a/ceph/src/osd/ECBackend.cc +++ b/ceph/src/osd/ECBackend.cc @@ -366,6 +366,15 @@ void ECBackend::handle_recovery_read_complete( op.xattrs.swap(*attrs); if (!op.obc) { + // attrs only reference the origin bufferlist (decode from ECSubReadReply message) + // whose size is much greater than attrs in recovery. If obc cache it (get_obc maybe + // cache the attr), this causes the whole origin bufferlist would not be free until + // obc is evicted from obc cache. So rebuild the bufferlist before cache it. + for (map::iterator it = op.xattrs.begin(); + it != op.xattrs.end(); + ++it) { + it->second.rebuild(); + } op.obc = get_parent()->get_obc(hoid, op.xattrs); op.recovery_info.size = op.obc->obs.oi.size; op.recovery_info.oi = op.obc->obs.oi; diff --git a/ceph/src/osd/Makefile.am b/ceph/src/osd/Makefile.am index 7998d4d4..4292fb99 100644 --- a/ceph/src/osd/Makefile.am +++ b/ceph/src/osd/Makefile.am @@ -32,9 +32,6 @@ 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) -endif noinst_LTLIBRARIES += libosd.la noinst_HEADERS += \ diff --git a/ceph/src/osd/OSD.cc b/ceph/src/osd/OSD.cc index 0c01ba61..f121a3df 100644 --- a/ceph/src/osd/OSD.cc +++ b/ceph/src/osd/OSD.cc @@ -137,7 +137,11 @@ #include "common/config.h" #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/osd.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif @@ -530,7 +534,7 @@ void OSDService::agent_entry() int max = g_conf->osd_agent_max_ops - agent_ops; agent_lock.Unlock(); if (!pg->agent_work(max)) { - dout(10) << __func__ << " " << *pg + dout(10) << __func__ << " " << pg->get_pgid() << " no agent_work, delay for " << g_conf->osd_agent_delay_time << " seconds" << dendl; @@ -2289,6 +2293,7 @@ int OSD::shutdown() p->second->osr->flush(); } } + clear_pg_stat_queue(); // finish ops op_shardedwq.drain(); // should already be empty except for lagard PGs @@ -3040,6 +3045,8 @@ void OSD::build_past_intervals_parallel() << " " << debug.str() << dendl; p.old_up = up; p.old_acting = acting; + p.primary = primary; + p.up_primary = up_primary; p.same_interval_since = cur_epoch; } } @@ -4649,21 +4656,17 @@ void OSD::send_alive() void OSD::send_failures() { assert(osd_lock.is_locked()); - bool locked = false; - if (!failure_queue.empty()) { - heartbeat_lock.Lock(); - locked = true; - } + Mutex::Locker l(heartbeat_lock); utime_t now = ceph_clock_now(cct); while (!failure_queue.empty()) { int osd = failure_queue.begin()->first; int failed_for = (int)(double)(now - failure_queue.begin()->second); entity_inst_t i = osdmap->get_inst(osd); - monc->send_mon_message(new MOSDFailure(monc->get_fsid(), i, failed_for, osdmap->get_epoch())); + monc->send_mon_message(new MOSDFailure(monc->get_fsid(), i, failed_for, + osdmap->get_epoch())); failure_pending[osd] = i; failure_queue.erase(osd); } - if (locked) heartbeat_lock.Unlock(); } void OSD::send_still_alive(epoch_t epoch, const entity_inst_t &i) @@ -5919,6 +5922,30 @@ bool OSD::scrub_random_backoff() return false; } +OSDService::ScrubJob::ScrubJob(const spg_t& pg, const utime_t& timestamp, bool must) + : pgid(pg), + sched_time(timestamp), + deadline(timestamp) +{ + // if not explicitly requested, postpone the scrub with a random delay + if (!must) { + sched_time += g_conf->osd_scrub_min_interval; + if (g_conf->osd_scrub_interval_randomize_ratio > 0) { + sched_time += rand() % (int)(g_conf->osd_scrub_min_interval * + g_conf->osd_scrub_interval_randomize_ratio); + } + deadline += g_conf->osd_scrub_max_interval; + } +} + +bool OSDService::ScrubJob::ScrubJob::operator<(const OSDService::ScrubJob& rhs) const { + if (sched_time < rhs.sched_time) + return true; + if (sched_time > rhs.sched_time) + return false; + return pgid < rhs.pgid; +} + bool OSD::scrub_time_permit(utime_t now) { struct tm bdt; @@ -5935,91 +5962,73 @@ bool OSD::scrub_time_permit(utime_t now) } } if (!time_permit) { - dout(20) << "scrub_should_schedule should run between " << cct->_conf->osd_scrub_begin_hour + dout(20) << __func__ << " should run between " << cct->_conf->osd_scrub_begin_hour << " - " << cct->_conf->osd_scrub_end_hour << " now " << bdt.tm_hour << " = no" << dendl; } else { - dout(20) << "scrub_should_schedule should run between " << cct->_conf->osd_scrub_begin_hour + dout(20) << __func__ << " should run between " << cct->_conf->osd_scrub_begin_hour << " - " << cct->_conf->osd_scrub_end_hour << " now " << bdt.tm_hour << " = yes" << dendl; } return time_permit; } -bool OSD::scrub_should_schedule() +bool OSD::scrub_load_below_threshold() { - if (!scrub_time_permit(ceph_clock_now(cct))) { - return false; - } double loadavgs[1]; if (getloadavg(loadavgs, 1) != 1) { - dout(10) << "scrub_should_schedule couldn't read loadavgs\n" << dendl; + dout(10) << __func__ << " couldn't read loadavgs\n" << dendl; return false; } if (loadavgs[0] >= cct->_conf->osd_scrub_load_threshold) { - dout(20) << "scrub_should_schedule loadavg " << loadavgs[0] + dout(20) << __func__ << " loadavg " << loadavgs[0] << " >= max " << cct->_conf->osd_scrub_load_threshold << " = no, load too high" << dendl; return false; + } else { + dout(20) << __func__ << " loadavg " << loadavgs[0] + << " < max " << cct->_conf->osd_scrub_load_threshold + << " = yes" << dendl; + return true; } - - dout(20) << "scrub_should_schedule loadavg " << loadavgs[0] - << " < max " << cct->_conf->osd_scrub_load_threshold - << " = yes" << dendl; - return loadavgs[0] < cct->_conf->osd_scrub_load_threshold; } void OSD::sched_scrub() { - assert(osd_lock.is_locked()); - - bool load_is_low = scrub_should_schedule(); - - dout(20) << "sched_scrub load_is_low=" << (int)load_is_low << dendl; - utime_t now = ceph_clock_now(cct); - - //dout(20) << " " << last_scrub_pg << dendl; + bool time_permit = scrub_time_permit(now); + bool load_is_low = scrub_load_below_threshold(); + dout(20) << "sched_scrub load_is_low=" << (int)load_is_low << dendl; - pair pos; - if (service.first_scrub_stamp(&pos)) { + OSDService::ScrubJob scrub; + if (service.first_scrub_stamp(&scrub)) { do { - utime_t t = pos.first; - spg_t pgid = pos.second; - dout(30) << "sched_scrub examine " << pgid << " at " << t << dendl; - - utime_t diff = now - t; - if ((double)diff < cct->_conf->osd_scrub_min_interval) { - dout(10) << "sched_scrub " << pgid << " at " << t - << ": " << (double)diff << " < min (" << cct->_conf->osd_scrub_min_interval << " seconds)" << dendl; - break; - } - if ((double)diff < cct->_conf->osd_scrub_max_interval && !load_is_low) { + dout(30) << "sched_scrub examine " << scrub.pgid << " at " << scrub.sched_time << dendl; + + if (scrub.sched_time > now) { // save ourselves some effort - dout(10) << "sched_scrub " << pgid << " high load at " << t - << ": " << (double)diff << " < max (" << cct->_conf->osd_scrub_max_interval << " seconds)" << dendl; + dout(10) << "sched_scrub " << scrub.pgid << " schedued at " << scrub.sched_time + << " > " << now << dendl; break; } - PG *pg = _lookup_lock_pg(pgid); - if (pg) { - if (pg->get_pgbackend()->scrub_supported() && pg->is_active() && - (load_is_low || - (double)diff >= cct->_conf->osd_scrub_max_interval || - pg->scrubber.must_scrub)) { - dout(10) << "sched_scrub scrubbing " << pgid << " at " << t - << (pg->scrubber.must_scrub ? ", explicitly requested" : - ( (double)diff >= cct->_conf->osd_scrub_max_interval ? ", diff >= max" : "")) - << dendl; - if (pg->sched_scrub()) { - pg->unlock(); - break; - } + PG *pg = _lookup_lock_pg(scrub.pgid); + if (!pg) + continue; + if (pg->get_pgbackend()->scrub_supported() && pg->is_active() && + (scrub.deadline < now || (time_permit && load_is_low))) { + dout(10) << "sched_scrub scrubbing " << scrub.pgid << " at " << scrub.sched_time + << (pg->scrubber.must_scrub ? ", explicitly requested" : + (load_is_low ? ", load_is_low" : " deadline < now")) + << dendl; + if (pg->sched_scrub()) { + pg->unlock(); + break; } - pg->unlock(); } - } while (service.next_scrub_stamp(pos, &pos)); + pg->unlock(); + } while (service.next_scrub_stamp(scrub, &scrub)); } dout(20) << "sched_scrub done" << dendl; } @@ -7848,11 +7857,11 @@ void OSD::check_replay_queue() PG *pg = _lookup_lock_pg_with_map_lock_held(pgid); pg_map_lock.unlock(); dout(10) << "check_replay_queue " << *pg << dendl; - if (pg->is_active() && - pg->is_replay() && + if ((pg->is_active() || pg->is_activating()) && + pg->is_replay() && pg->is_primary() && pg->replay_until == p->second) { - pg->replay_queued_ops(); + pg->replay_queued_ops(); } pg->unlock(); } else { diff --git a/ceph/src/osd/OSD.h b/ceph/src/osd/OSD.h index a3b636e3..3cc8df05 100644 --- a/ceph/src/osd/OSD.h +++ b/ceph/src/osd/OSD.h @@ -505,37 +505,51 @@ public: Mutex sched_scrub_lock; int scrubs_pending; int scrubs_active; - set< pair > last_scrub_pg; + struct ScrubJob { + /// pg to be scrubbed + spg_t pgid; + /// a time scheduled for scrub. but the scrub could be delayed if system + /// load is too high or it fails to fall in the scrub hours + utime_t sched_time; + /// the hard upper bound of scrub time + utime_t deadline; + ScrubJob() {} + explicit ScrubJob(const spg_t& pg, const utime_t& timestamp, bool must = true); + /// order the jobs by sched_time + bool operator<(const ScrubJob& rhs) const; + }; + set sched_scrub_pg; - void reg_last_pg_scrub(spg_t pgid, utime_t t) { + /// @returns the scrub_reg_stamp used for unregister the scrub job + utime_t reg_pg_scrub(spg_t pgid, utime_t t, bool must) { + ScrubJob scrub(pgid, t, must); Mutex::Locker l(sched_scrub_lock); - last_scrub_pg.insert(pair(t, pgid)); + sched_scrub_pg.insert(scrub); + return scrub.sched_time; } - void unreg_last_pg_scrub(spg_t pgid, utime_t t) { + void unreg_pg_scrub(spg_t pgid, utime_t t) { Mutex::Locker l(sched_scrub_lock); - pair p(t, pgid); - set >::iterator it = last_scrub_pg.find(p); - assert(it != last_scrub_pg.end()); - last_scrub_pg.erase(it); + size_t removed = sched_scrub_pg.erase(ScrubJob(pgid, t)); + assert(removed); } - bool first_scrub_stamp(pair *out) { + bool first_scrub_stamp(ScrubJob *out) { Mutex::Locker l(sched_scrub_lock); - if (last_scrub_pg.empty()) + if (sched_scrub_pg.empty()) return false; - set< pair >::iterator iter = last_scrub_pg.begin(); + set::iterator iter = sched_scrub_pg.begin(); *out = *iter; return true; } - bool next_scrub_stamp(pair next, - pair *out) { + bool next_scrub_stamp(const ScrubJob& next, + ScrubJob *out) { Mutex::Locker l(sched_scrub_lock); - if (last_scrub_pg.empty()) + if (sched_scrub_pg.empty()) return false; - set< pair >::iterator iter = last_scrub_pg.lower_bound(next); - if (iter == last_scrub_pg.end()) + set::iterator iter = sched_scrub_pg.lower_bound(next); + if (iter == sched_scrub_pg.end()) return false; ++iter; - if (iter == last_scrub_pg.end()) + if (iter == sched_scrub_pg.end()) return false; *out = *iter; return true; @@ -2102,7 +2116,7 @@ protected: // -- scrubbing -- void sched_scrub(); bool scrub_random_backoff(); - bool scrub_should_schedule(); + bool scrub_load_below_threshold(); bool scrub_time_permit(utime_t now); xlist scrub_queue; diff --git a/ceph/src/osd/OSDMap.cc b/ceph/src/osd/OSDMap.cc index a9154d48..173b468b 100644 --- a/ceph/src/osd/OSDMap.cc +++ b/ceph/src/osd/OSDMap.cc @@ -590,6 +590,10 @@ void OSDMap::Incremental::decode(bufferlist::iterator& bl) bl.advance(-struct_v_size); decode_classic(bl); encode_features = 0; + if (struct_v >= 6) + encode_features = CEPH_FEATURE_PGID64; + else + encode_features = 0; return; } { @@ -641,7 +645,7 @@ void OSDMap::Incremental::decode(bufferlist::iterator& bl) if (struct_v >= 2) ::decode(encode_features, bl); else - encode_features = 0; + encode_features = CEPH_FEATURE_PGID64 | CEPH_FEATURE_OSDMAP_ENC; DECODE_FINISH(bl); // osd-only data } diff --git a/ceph/src/osd/OSDMap.h b/ceph/src/osd/OSDMap.h index 3e17d307..acdc3af4 100644 --- a/ceph/src/osd/OSDMap.h +++ b/ceph/src/osd/OSDMap.h @@ -430,6 +430,10 @@ public: return exists(osd) && (osd_state[osd] & CEPH_OSD_UP); } + bool has_been_up_since(int osd, epoch_t epoch) const { + return is_up(osd) && get_up_from(osd) <= epoch; + } + bool is_down(int osd) const { return !is_up(osd); } diff --git a/ceph/src/osd/OpRequest.cc b/ceph/src/osd/OpRequest.cc index 12963342..37b3aec4 100644 --- a/ceph/src/osd/OpRequest.cc +++ b/ceph/src/osd/OpRequest.cc @@ -14,7 +14,11 @@ #include "osd/osd_types.h" #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/oprequest.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif diff --git a/ceph/src/osd/PG.cc b/ceph/src/osd/PG.cc index 7b91bf8c..634dc565 100644 --- a/ceph/src/osd/PG.cc +++ b/ceph/src/osd/PG.cc @@ -45,7 +45,11 @@ #include "common/BackTrace.h" #ifdef WITH_LTTNG +#define TRACEPOINT_DEFINE +#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE #include "tracing/pg.h" +#undef TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#undef TRACEPOINT_DEFINE #else #define tracepoint(...) #endif @@ -285,7 +289,8 @@ void PG::proc_master_log( 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); + assert(cct->_conf->osd_find_best_info_ignore_history_les || + info.last_epoch_started >= info.history.last_epoch_started); peer_missing[from].swap(omissing); } @@ -313,7 +318,8 @@ void PG::proc_replica_log( peer_missing[from].swap(omissing); } -bool PG::proc_replica_info(pg_shard_t from, const pg_info_t &oinfo) +bool PG::proc_replica_info( + pg_shard_t from, const pg_info_t &oinfo, epoch_t send_epoch) { map::iterator p = peer_info.find(from); if (p != peer_info.end() && p->second.last_update == oinfo.last_update) { @@ -321,6 +327,12 @@ bool PG::proc_replica_info(pg_shard_t from, const pg_info_t &oinfo) return false; } + if (!get_osdmap()->has_been_up_since(from.osd, send_epoch)) { + dout(10) << " got info " << oinfo << " from down osd." << from + << " discarding" << dendl; + return false; + } + dout(10) << " got osd." << from << " " << oinfo << dendl; assert(is_primary()); peer_info[from] = oinfo; @@ -1818,6 +1830,7 @@ void PG::queue_op(OpRequestRef& op) void PG::replay_queued_ops() { assert(is_replay()); + assert(is_active() || is_activating()); eversion_t c = info.last_update; list replay; dout(10) << "replay_queued_ops" << dendl; @@ -1838,9 +1851,13 @@ void PG::replay_queued_ops() replay.push_back(p->second); } replay_queue.clear(); - requeue_ops(replay); - requeue_ops(waiting_for_active); - assert(waiting_for_peered.empty()); + if (is_active()) { + requeue_ops(replay); + requeue_ops(waiting_for_active); + assert(waiting_for_peered.empty()); + } else { + waiting_for_active.splice(waiting_for_active.begin(), replay); + } publish_stats_to_osd(); } @@ -3318,20 +3335,27 @@ bool PG::sched_scrub() void PG::reg_next_scrub() { + if (!is_primary()) + return; + + utime_t reg_stamp; if (scrubber.must_scrub || (info.stats.stats_invalid && g_conf->osd_scrub_invalid_stats)) { - scrubber.scrub_reg_stamp = utime_t(); + reg_stamp = ceph_clock_now(cct); } else { - scrubber.scrub_reg_stamp = info.history.last_scrub_stamp; + reg_stamp = info.history.last_scrub_stamp; } - if (is_primary()) - osd->reg_last_pg_scrub(info.pgid, scrubber.scrub_reg_stamp); + // note down the sched_time, so we can locate this scrub, and remove it + // later on. + scrubber.scrub_reg_stamp = osd->reg_pg_scrub(info.pgid, + reg_stamp, + scrubber.must_scrub); } void PG::unreg_next_scrub() { if (is_primary()) - osd->unreg_last_pg_scrub(info.pgid, scrubber.scrub_reg_stamp); + osd->unreg_pg_scrub(info.pgid, scrubber.scrub_reg_stamp); } void PG::sub_op_scrub_map(OpRequestRef op) @@ -3799,26 +3823,8 @@ void PG::scrub(ThreadPool::TPHandle &handle) return; } - // when we're starting a scrub, we need to determine which type of scrub to do if (!scrubber.active) { - OSDMapRef curmap = osd->get_osdmap(); assert(backfill_targets.empty()); - for (unsigned i=0; iget_con_osd_cluster(acting[i], get_osdmap()->get_epoch()); - if (!con) - continue; - if (!con->has_feature(CEPH_FEATURE_CHUNKY_SCRUB)) { - dout(20) << "OSD " << acting[i] - << " does not support chunky scrubs, falling back to classic" - << dendl; - assert(0 == "Running incompatible OSD"); - break; - } - } scrubber.deep = state_test(PG_STATE_DEEP_SCRUB); @@ -5280,12 +5286,12 @@ void PG::handle_advance_map( << dendl; update_osdmap_ref(osdmap); pool.update(osdmap); - if (pool.info.last_change == osdmap_ref->get_epoch()) - on_pool_change(); AdvMap evt( osdmap, lastmap, newup, up_primary, newacting, acting_primary); recovery_state.handle_event(evt, rctx); + if (pool.info.last_change == osdmap_ref->get_epoch()) + on_pool_change(); } void PG::handle_activate_map(RecoveryCtx *rctx) @@ -5377,7 +5383,8 @@ boost::statechart::result PG::RecoveryState::Initial::react(const Load& l) boost::statechart::result PG::RecoveryState::Initial::react(const MNotifyRec& notify) { PG *pg = context< RecoveryMachine >().pg; - pg->proc_replica_info(notify.from, notify.notify.info); + pg->proc_replica_info( + notify.from, notify.notify.info, notify.notify.epoch_sent); pg->update_heartbeat_peers(); pg->set_last_peering_reset(); return transit< Primary >(); @@ -5610,7 +5617,8 @@ boost::statechart::result PG::RecoveryState::Primary::react(const MNotifyRec& no dout(10) << *pg << " got dup osd." << notevt.from << " info " << notevt.notify.info << ", identical to ours" << dendl; } else { - pg->proc_replica_info(notevt.from, notevt.notify.info); + pg->proc_replica_info( + notevt.from, notevt.notify.info, notevt.notify.epoch_sent); } return discard_event(); } @@ -6467,7 +6475,8 @@ boost::statechart::result PG::RecoveryState::Active::react(const MNotifyRec& not dout(10) << "Active: got notify from " << notevt.from << ", calling proc_replica_info and discover_all_missing" << dendl; - pg->proc_replica_info(notevt.from, notevt.notify.info); + pg->proc_replica_info( + notevt.from, notevt.notify.info, notevt.notify.epoch_sent); if (pg->have_unfound()) { pg->discover_all_missing(*context< RecoveryMachine >().get_query_map()); } @@ -6904,7 +6913,8 @@ boost::statechart::result PG::RecoveryState::GetInfo::react(const MNotifyRec& in } epoch_t old_start = pg->info.history.last_epoch_started; - if (pg->proc_replica_info(infoevt.from, infoevt.notify.info)) { + if (pg->proc_replica_info( + infoevt.from, infoevt.notify.info, infoevt.notify.epoch_sent)) { // we got something new ... auto_ptr &prior_set = context< Peering >().prior_set; if (old_start < pg->info.history.last_epoch_started) { @@ -7259,7 +7269,8 @@ boost::statechart::result PG::RecoveryState::Incomplete::react(const MNotifyRec& << ", identical to ours" << dendl; return discard_event(); } else { - pg->proc_replica_info(notevt.from, notevt.notify.info); + pg->proc_replica_info( + notevt.from, notevt.notify.info, notevt.notify.epoch_sent); // try again! return transit< GetLog >(); } diff --git a/ceph/src/osd/PG.h b/ceph/src/osd/PG.h index 41de9d6d..e06b9102 100644 --- a/ceph/src/osd/PG.h +++ b/ceph/src/osd/PG.h @@ -843,7 +843,8 @@ public: pg_missing_t& omissing, pg_shard_t from); void proc_master_log(ObjectStore::Transaction& t, pg_info_t &oinfo, pg_log_t &olog, pg_missing_t& omissing, pg_shard_t from); - bool proc_replica_info(pg_shard_t from, const pg_info_t &info); + bool proc_replica_info( + pg_shard_t from, const pg_info_t &info, epoch_t send_epoch); struct LogEntryTrimmer : public ObjectModDesc::Visitor { @@ -2078,6 +2079,7 @@ public: int get_state() const { return state; } bool is_active() const { return state_test(PG_STATE_ACTIVE); } + bool is_activating() const { return state_test(PG_STATE_ACTIVATING); } bool is_peering() const { return state_test(PG_STATE_PEERING); } bool is_down() const { return state_test(PG_STATE_DOWN); } bool is_replay() const { return state_test(PG_STATE_REPLAY); } diff --git a/ceph/src/osd/PGBackend.cc b/ceph/src/osd/PGBackend.cc index 7fc56d10..2b897d7f 100644 --- a/ceph/src/osd/PGBackend.cc +++ b/ceph/src/osd/PGBackend.cc @@ -675,7 +675,10 @@ void PGBackend::be_compare_scrubmaps( update = MAYBE; } if (update != NO) { - utime_t age = now - auth_oi.local_mtime; + utime_t mtime = auth_oi.local_mtime; + if (mtime == utime_t()) + mtime = auth_oi.mtime; + utime_t age = now - mtime; if (update == FORCE || age > g_conf->osd_deep_scrub_update_digest_min_age) { dout(20) << __func__ << " will update digest on " << *k << dendl; diff --git a/ceph/src/osd/ReplicatedBackend.cc b/ceph/src/osd/ReplicatedBackend.cc index b86d4d1e..64815739 100644 --- a/ceph/src/osd/ReplicatedBackend.cc +++ b/ceph/src/osd/ReplicatedBackend.cc @@ -1500,6 +1500,9 @@ void ReplicatedBackend::prepare_pull( recovery_info.clone_subset); // FIXME: this may overestimate if we are pulling multiple clones in parallel... dout(10) << " pulling " << recovery_info << dendl; + + assert(ssc->snapset.clone_size.count(soid.snap)); + recovery_info.size = ssc->snapset.clone_size[soid.snap]; } else { // pulling head or unversioned object. // always pull the whole thing. @@ -1802,6 +1805,15 @@ bool ReplicatedBackend::handle_pull_response( bool first = pi.recovery_progress.first; if (first) { + // attrs only reference the origin bufferlist (decode from MOSDPGPush message) + // whose size is much greater than attrs in recovery. If obc cache it (get_obc maybe + // cache the attr), this causes the whole origin bufferlist would not be free until + // obc is evicted from obc cache. So rebuild the bufferlist before cache it. + for (map::iterator it = pop.attrset.begin(); + it != pop.attrset.end(); + ++it) { + it->second.rebuild(); + } 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); diff --git a/ceph/src/osd/ReplicatedPG.cc b/ceph/src/osd/ReplicatedPG.cc index 59d8efaf..2c3f12dd 100644 --- a/ceph/src/osd/ReplicatedPG.cc +++ b/ceph/src/osd/ReplicatedPG.cc @@ -1856,24 +1856,29 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op, } break; default: - if (in_hit_set) { - promote_object(obc, missing_oid, oloc, promote_op); - } else { + unsigned count = (int)in_hit_set; + if (count) { // Check if in other hit sets - map::iterator itor; - bool in_other_hit_sets = false; - for (itor = agent_state->hit_set_map.begin(); itor != agent_state->hit_set_map.end(); ++itor) { - if (itor->second->contains(missing_oid)) { - in_other_hit_sets = true; + const hobject_t& oid = obc.get() ? obc->obs.oi.soid : missing_oid; + for (map::reverse_iterator itor = + agent_state->hit_set_map.rbegin(); + itor != agent_state->hit_set_map.rend(); + ++itor) { + if (!itor->second->contains(oid)) { + break; + } + ++count; + if (count >= pool.info.min_read_recency_for_promote) { break; } - } - if (in_other_hit_sets) { - promote_object(obc, missing_oid, oloc, promote_op); - } else if (!can_proxy_read) { - do_cache_redirect(op); } } + if (count >= pool.info.min_read_recency_for_promote) { + promote_object(obc, missing_oid, oloc, promote_op); + } else { + // not promoting + return false; + } break; } return true; @@ -2101,6 +2106,9 @@ void ReplicatedPG::cancel_proxy_read(ProxyReadOpRef prdop) // cancel objecter op, if we can if (prdop->objecter_tid) { osd->objecter->op_cancel(prdop->objecter_tid, -ECANCELED); + for (uint32_t i = 0; i < prdop->ops.size(); i++) { + prdop->ops[i].outdata.clear(); + } proxyread_ops.erase(prdop->objecter_tid); prdop->objecter_tid = 0; } @@ -2285,10 +2293,8 @@ void ReplicatedPG::execute_ctx(OpContext *ctx) return; } - // check for full - if (ctx->delta_stats.num_bytes > 0 && - pool.info.has_flag(pg_pool_t::FLAG_FULL)) { - reply_ctx(ctx, -ENOSPC); + if (result == -ENOSPC) { + reply_ctx(ctx, result); return; } @@ -3277,6 +3283,23 @@ struct FillInExtent : public Context { } }; +struct ToSparseReadResult : public Context { + bufferlist& data_bl; + ceph_le64& len; + ToSparseReadResult(bufferlist& bl, ceph_le64& len): + data_bl(bl), len(len) {} + void finish(int r) { + if (r < 0) return; + len = r; + bufferlist outdata; + map extents; + extents.insert(make_pair(0, len)); + ::encode(extents, outdata); + ::encode_destructively(data_bl, outdata); + data_bl.swap(outdata); + } +}; + template static string list_keys(const map& m) { string s; @@ -3501,17 +3524,21 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) /* map extents */ case CEPH_OSD_OP_SPARSE_READ: tracepoint(osd, do_osd_op_pre_sparse_read, soid.oid.name.c_str(), soid.snap.val, oi.size, oi.truncate_seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); - if (pool.info.require_rollback()) { - result = -EOPNOTSUPP; + if (op.extent.truncate_seq) { + dout(0) << "sparse_read does not support truncation sequence " << dendl; + result = -EINVAL; break; } ++ctx->num_read; - { - if (op.extent.truncate_seq) { - dout(0) << "sparse_read does not support truncation sequence " << dendl; - result = -EINVAL; - break; - } + if (pool.info.ec_pool()) { + // translate sparse read to a normal one if not supported + ctx->pending_async_reads.push_back( + make_pair( + boost::make_tuple(op.extent.offset, op.extent.length, op.flags), + make_pair(&osd_op.outdata, new ToSparseReadResult(osd_op.outdata, + op.extent.length)))); + dout(10) << " async_read (was sparse_read) noted for " << soid << dendl; + } else { // read into a buffer bufferlist bl; int total_read = 0; @@ -3551,6 +3578,11 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) data_bl.claim_append(tmpbl); last = miter->first + r; } + + if (r < 0) { + result = r; + break; + } // verify trailing hole? if (cct->_conf->osd_verify_sparse_read_holes) { @@ -3566,21 +3598,15 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } } - if (r < 0) { - result = r; - break; - } - op.extent.length = total_read; ::encode(m, osd_op.outdata); ::encode(data_bl, osd_op.outdata); - ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(op.extent.length, 10); - ctx->delta_stats.num_rd++; - dout(10) << " sparse_read got " << total_read << " bytes from object " << soid << dendl; } + ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(op.extent.length, 10); + ctx->delta_stats.num_rd++; break; case CEPH_OSD_OP_CALL: @@ -4047,9 +4073,13 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) notify_info_t n; n.timeout = timeout; + n.notify_id = osd->get_next_id(get_osdmap()->get_epoch()); n.cookie = op.watch.cookie; n.bl = bl; ctx->notifies.push_back(n); + + // return our unique notify id to the client + ::encode(n.notify_id, osd_op.outdata); } break; @@ -5577,7 +5607,7 @@ void ReplicatedPG::do_osd_op_effects(OpContext *ctx, const ConnectionRef& conn) p->bl, p->timeout, p->cookie, - osd->get_next_id(get_osdmap()->get_epoch()), + p->notify_id, ctx->obc->obs.oi.user_version, osd)); for (map, WatchRef>::iterator i = @@ -5647,6 +5677,15 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx) return result; } + // check for full + if ((ctx->delta_stats.num_bytes > 0 || + ctx->delta_stats.num_objects > 0) && + (pool.info.has_flag(pg_pool_t::FLAG_FULL) || + get_osdmap()->test_flag(CEPH_OSDMAP_FULL))) { + dout(20) << __func__ << ": full, returning -ENOSPC" << dendl; + return -ENOSPC; + } + // clone, if necessary if (soid.snap == CEPH_NOSNAP) make_writeable(ctx); @@ -5733,7 +5772,10 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc ctx->snapset_obc->obs.oi.version = ctx->at_version; ctx->snapset_obc->obs.oi.last_reqid = ctx->reqid; ctx->snapset_obc->obs.oi.mtime = ctx->mtime; - ctx->snapset_obc->obs.oi.local_mtime = now; + if (pool.info.is_tier() || pool.info.has_tiers()) + ctx->snapset_obc->obs.oi.local_mtime = now; + else + ctx->snapset_obc->obs.oi.local_mtime = utime_t(); bufferlist bv(sizeof(ctx->new_obs.oi)); ::encode(ctx->snapset_obc->obs.oi, bv); @@ -5774,7 +5816,10 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc if (ctx->mtime != utime_t()) { ctx->new_obs.oi.mtime = ctx->mtime; dout(10) << " set mtime to " << ctx->new_obs.oi.mtime << dendl; - ctx->new_obs.oi.local_mtime = now; + if (pool.info.is_tier() || pool.info.has_tiers()) + ctx->new_obs.oi.local_mtime = now; + else + ctx->new_obs.oi.local_mtime = utime_t(); } else { dout(10) << " mtime unchanged at " << ctx->new_obs.oi.mtime << dendl; } @@ -5839,7 +5884,8 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc // apply new object state. ctx->obc->obs = ctx->new_obs; - if (!maintain_ssc && soid.is_head()) { + if (soid.is_head() && !ctx->obc->obs.exists && + (!maintain_ssc || ctx->cache_evict)) { ctx->obc->ssc->exists = false; ctx->obc->ssc->snapset = SnapSet(); } else { @@ -6341,13 +6387,13 @@ void ReplicatedPG::process_copy_chunk(hobject_t oid, ceph_tid_t tid, int r) copy_ops.erase(cobc->obs.oi.soid); cobc->stop_block(); - // cancel and requeue proxy reads on this object - kick_proxy_read_blocked(cobc->obs.oi.soid); for (map::iterator it = proxyread_ops.begin(); it != proxyread_ops.end(); ++it) { if (it->second->soid == cobc->obs.oi.soid) { cancel_proxy_read(it->second); } + // cancel and requeue proxy reads on this object + kick_proxy_read_blocked(cobc->obs.oi.soid); } kick_object_context_blocked(cobc); @@ -6487,7 +6533,10 @@ void ReplicatedPG::finish_copyfrom(OpContext *ctx) obs.oi.user_version = ctx->user_at_version; obs.oi.set_data_digest(cb->results->data_digest); - obs.oi.set_omap_digest(cb->results->omap_digest); + if (obs.oi.is_omap()) + obs.oi.set_omap_digest(cb->results->omap_digest); + else + obs.oi.clear_omap_digest(); obs.oi.truncate_seq = cb->results->truncate_seq; obs.oi.truncate_size = cb->results->truncate_size; @@ -6672,6 +6721,8 @@ void ReplicatedPG::finish_promote(int r, CopyResults *results, tctx->new_obs.oi.set_data_digest(results->data_digest); if (results->has_omap) tctx->new_obs.oi.set_omap_digest(results->omap_digest); + else + tctx->new_obs.oi.clear_omap_digest(); tctx->new_obs.oi.truncate_seq = results->truncate_seq; tctx->new_obs.oi.truncate_size = results->truncate_size; @@ -8102,19 +8153,18 @@ void ReplicatedPG::add_object_context_to_pg_stat(ObjectContextRef obc, pg_stat_t void ReplicatedPG::kick_object_context_blocked(ObjectContextRef obc) { const hobject_t& soid = obc->obs.oi.soid; - map >::iterator p = waiting_for_blocked_object.find(soid); - if (p == waiting_for_blocked_object.end()) - return; - if (obc->is_blocked()) { dout(10) << __func__ << " " << soid << " still blocked" << dendl; return; } - list& ls = p->second; - dout(10) << __func__ << " " << soid << " requeuing " << ls.size() << " requests" << dendl; - requeue_ops(ls); - waiting_for_blocked_object.erase(p); + map >::iterator p = waiting_for_blocked_object.find(soid); + if (p != waiting_for_blocked_object.end()) { + list& ls = p->second; + dout(10) << __func__ << " " << soid << " requeuing " << ls.size() << " requests" << dendl; + requeue_ops(ls); + waiting_for_blocked_object.erase(p); + } if (obc->requeue_scrub_on_unblock) osd->queue_for_scrub(this); @@ -11394,7 +11444,10 @@ void ReplicatedPG::_scrub( 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); + if (ctx->new_obs.oi.is_omap()) + ctx->new_obs.oi.set_omap_digest(p->second.second); + else + ctx->new_obs.oi.clear_omap_digest(); finish_ctx(ctx, pg_log_entry_t::MODIFY, true, true); ctx->on_finish = new C_ScrubDigestUpdated(this); simple_repop_submit(repop); diff --git a/ceph/src/osd/osd_types.cc b/ceph/src/osd/osd_types.cc index b2bea5b7..29f4fc4c 100644 --- a/ceph/src/osd/osd_types.cc +++ b/ceph/src/osd/osd_types.cc @@ -4225,7 +4225,16 @@ void object_info_t::encode(bufferlist& bl) const ++i) { old_watchers.insert(make_pair(i->first.second, i->second)); } - ENCODE_START(15, 8, bl); + + // kludge to reduce xattr size for most rbd objects + int ev = 15; + if (!(flags & FLAG_OMAP_DIGEST) && + !(flags & FLAG_DATA_DIGEST) && + local_mtime == utime_t()) { + ev = 13; + } + + ENCODE_START(ev, 8, bl); ::encode(soid, bl); ::encode(myoloc, bl); //Retained for compatibility ::encode((__u32)0, bl); // was category, no longer used @@ -4250,16 +4259,20 @@ void object_info_t::encode(bufferlist& bl) const ::encode(watchers, bl); __u32 _flags = flags; ::encode(_flags, bl); - ::encode(local_mtime, bl); - ::encode(data_digest, bl); - ::encode(omap_digest, bl); + if (ev >= 14) { + ::encode(local_mtime, bl); + } + if (ev >= 15) { + ::encode(data_digest, bl); + ::encode(omap_digest, bl); + } ENCODE_FINISH(bl); } void object_info_t::decode(bufferlist::iterator& bl) { object_locator_t myoloc; - DECODE_START_LEGACY_COMPAT_LEN(14, 8, 8, bl); + DECODE_START_LEGACY_COMPAT_LEN(15, 8, 8, bl); map old_watchers; ::decode(soid, bl); ::decode(myoloc, bl); diff --git a/ceph/src/osd/osd_types.h b/ceph/src/osd/osd_types.h index b9b3b815..b058c135 100644 --- a/ceph/src/osd/osd_types.h +++ b/ceph/src/osd/osd_types.h @@ -2836,12 +2836,15 @@ static inline ostream& operator<<(ostream& out, const watch_info_t& w) { struct notify_info_t { uint64_t cookie; + uint64_t notify_id; uint32_t timeout; bufferlist bl; }; static inline ostream& operator<<(ostream& out, const notify_info_t& n) { - return out << "notify(cookie " << n.cookie << " " << n.timeout << "s)"; + return out << "notify(cookie " << n.cookie + << " notify" << n.notify_id + << " " << n.timeout << "s)"; } @@ -2956,7 +2959,7 @@ struct object_info_t { } void new_object() { set_data_digest(-1); - set_omap_digest(-1); + clear_omap_digest(); } void encode(bufferlist& bl) const; diff --git a/ceph/src/osdc/ObjectCacher.cc b/ceph/src/osdc/ObjectCacher.cc index d21292e0..b2c25723 100644 --- a/ceph/src/osdc/ObjectCacher.cc +++ b/ceph/src/osdc/ObjectCacher.cc @@ -1158,7 +1158,7 @@ int ObjectCacher::_readx(OSDRead *rd, ObjectSet *oset, Context *onfinish, uint64_t rx_bytes = static_cast( stat_rx + bh_it->second->length()); bytes_not_in_cache += bh_it->second->length(); - if (!waitfor_read.empty() || rx_bytes > max_size) { + if (!waitfor_read.empty() || (stat_rx > 0 && rx_bytes > max_size)) { // cache is full with concurrent reads -- wait for rx's to complete // to constrain memory growth (especially during copy-ups) if (success) { diff --git a/ceph/src/osdc/Objecter.cc b/ceph/src/osdc/Objecter.cc index 856425af..2b5a979f 100644 --- a/ceph/src/osdc/Objecter.cc +++ b/ceph/src/osdc/Objecter.cc @@ -419,6 +419,7 @@ void Objecter::_send_linger(LingerOp *info) vector opv; Context *oncommit = NULL; info->watch_lock.get_read(); // just to read registered status + bufferlist *poutbl = NULL; if (info->registered && info->is_watch) { ldout(cct, 15) << "send_linger " << info->linger_id << " reconnect" << dendl; opv.push_back(OSDOp()); @@ -430,7 +431,12 @@ void Objecter::_send_linger(LingerOp *info) } else { ldout(cct, 15) << "send_linger " << info->linger_id << " register" << dendl; opv = info->ops; - oncommit = new C_Linger_Commit(this, info); + C_Linger_Commit *c = new C_Linger_Commit(this, info); + if (!info->is_watch) { + info->notify_id = 0; + poutbl = &c->outbl; + } + oncommit = c; } info->watch_lock.put_read(); Op *o = new Op(info->target.base_oid, info->target.base_oloc, @@ -438,6 +444,7 @@ void Objecter::_send_linger(LingerOp *info) NULL, NULL, info->pobjver); o->oncommit_sync = oncommit; + o->outbl = poutbl; o->snapid = info->snap; o->snapc = info->snapc; o->mtime = info->mtime; @@ -467,7 +474,7 @@ void Objecter::_send_linger(LingerOp *info) logger->inc(l_osdc_linger_send); } -void Objecter::_linger_commit(LingerOp *info, int r) +void Objecter::_linger_commit(LingerOp *info, int r, bufferlist& outbl) { RWLock::WLocker wl(info->watch_lock); ldout(cct, 10) << "_linger_commit " << info->linger_id << dendl; @@ -479,6 +486,17 @@ void Objecter::_linger_commit(LingerOp *info, int r) // only tell the user the first time we do this info->registered = true; info->pobjver = NULL; + + if (!info->is_watch) { + // make note of the notify_id + bufferlist::iterator p = outbl.begin(); + try { + ::decode(info->notify_id, p); + ldout(cct, 10) << "_linger_commit notify_id=" << info->notify_id << dendl; + } + catch (buffer::error& e) { + } + } } struct C_DoWatchError : public Context { @@ -777,11 +795,17 @@ void Objecter::handle_watch_notify(MWatchNotify *m) } } } else if (!info->is_watch) { - // notify completion; we can do this inline since we know the only user - // (librados) is safe to call in fast-dispatch context - assert(info->on_notify_finish); - info->notify_result_bl->claim(m->get_data()); - info->on_notify_finish->complete(m->return_code); + // we have CEPH_WATCH_EVENT_NOTIFY_COMPLETE; we can do this inline since + // we know the only user (librados) is safe to call in fast-dispatch context + if (info->notify_id && + info->notify_id != m->notify_id) { + ldout(cct, 10) << __func__ << " reply notify " << m->notify_id + << " != " << info->notify_id << ", ignoring" << dendl; + } else { + assert(info->on_notify_finish); + info->notify_result_bl->claim(m->get_data()); + info->on_notify_finish->complete(m->return_code); + } } else { finisher->queue(new C_DoWatchNotify(this, info, m)); _linger_callback_queue(); @@ -1126,6 +1150,7 @@ void Objecter::handle_osd_map(MOSDMap *m) _send_op(op); } } else { + _op_cancel_map_check(op); _cancel_linger_op(op); } s->lock.unlock(); @@ -1256,6 +1281,8 @@ int Objecter::pool_snap_list(int64_t poolid, vector *snaps) RWLock::RLocker rl(rwlock); const pg_pool_t *pi = osdmap->get_pg_pool(poolid); + if (!pi) + return -ENOENT; for (map::const_iterator p = pi->snaps.begin(); p != pi->snaps.end(); ++p) { @@ -1303,7 +1330,7 @@ void Objecter::_check_op_pool_dne(Op *op, bool session_locked) if (!session_locked) { s->lock.get_write(); } - _finish_op(op); + _finish_op(op, 0); if (!session_locked) { s->lock.unlock(); } @@ -1780,6 +1807,7 @@ void Objecter::_kick_requests(OSDSession *session, map& lr if (!op->target.paused) resend[op->tid] = op; } else { + _op_cancel_map_check(op); _cancel_linger_op(op); } } @@ -1850,54 +1878,53 @@ void Objecter::tick() set toping; - int r = 0; // look for laggy requests utime_t cutoff = ceph_clock_now(cct); cutoff -= cct->_conf->objecter_timeout; // timeout - unsigned laggy_ops; - - do { - laggy_ops = 0; - for (map::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) { - OSDSession *s = siter->second; - RWLock::RLocker l(s->lock); - for (map::iterator p = s->ops.begin(); - p != s->ops.end(); - ++p) { - Op *op = p->second; - assert(op->session); - if (op->stamp < cutoff) { - ldout(cct, 2) << " tid " << p->first << " on osd." << op->session->osd << " is laggy" << dendl; - toping.insert(op->session); - ++laggy_ops; - } - } - for (map::iterator p = s->linger_ops.begin(); - p != s->linger_ops.end(); - ++p) { - LingerOp *op = p->second; - RWLock::WLocker wl(op->watch_lock); - assert(op->session); - ldout(cct, 10) << " pinging osd that serves lingering tid " << p->first << " (osd." << op->session->osd << ")" << dendl; - toping.insert(op->session); - if (op->is_watch && op->registered && !op->last_error) - _send_linger_ping(op); - } - for (map::iterator p = s->command_ops.begin(); - p != s->command_ops.end(); - ++p) { - CommandOp *op = p->second; - assert(op->session); - ldout(cct, 10) << " pinging osd that serves command tid " << p->first << " (osd." << op->session->osd << ")" << dendl; - toping.insert(op->session); + unsigned laggy_ops = 0; + + for (map::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) { + OSDSession *s = siter->second; + RWLock::RLocker l(s->lock); + bool found = false; + for (map::iterator p = s->ops.begin(); + p != s->ops.end(); + ++p) { + Op *op = p->second; + assert(op->session); + if (op->stamp < cutoff) { + ldout(cct, 2) << " tid " << p->first << " on osd." << op->session->osd << " is laggy" << dendl; + found = true; + ++laggy_ops; } } - if (num_homeless_ops.read() || !toping.empty()) { - _maybe_request_map(); + for (map::iterator p = s->linger_ops.begin(); + p != s->linger_ops.end(); + ++p) { + LingerOp *op = p->second; + RWLock::WLocker wl(op->watch_lock); + assert(op->session); + ldout(cct, 10) << " pinging osd that serves lingering tid " << p->first << " (osd." << op->session->osd << ")" << dendl; + found = true; + if (op->is_watch && op->registered && !op->last_error) + _send_linger_ping(op); } - } while (r == -EAGAIN); + for (map::iterator p = s->command_ops.begin(); + p != s->command_ops.end(); + ++p) { + CommandOp *op = p->second; + assert(op->session); + ldout(cct, 10) << " pinging osd that serves command tid " << p->first << " (osd." << op->session->osd << ")" << dendl; + found = true; + } + if (found) + toping.insert(s); + } + if (num_homeless_ops.read() || !toping.empty()) { + _maybe_request_map(); + } logger->set(l_osdc_op_laggy, laggy_ops); logger->set(l_osdc_osd_laggy, toping.size()); @@ -1968,13 +1995,10 @@ class C_CancelOp : public Context ceph_tid_t tid; Objecter *objecter; public: - C_CancelOp(Objecter *objecter) : objecter(objecter) {} + C_CancelOp(ceph_tid_t tid, Objecter *objecter) : tid(tid), objecter(objecter) {} void finish(int r) { objecter->op_cancel(tid, -ETIMEDOUT); } - void set_tid(ceph_tid_t _tid) { - tid = _tid; - } }; ceph_tid_t Objecter::op_submit(Op *op, int *ctx_budget) @@ -2003,21 +2027,15 @@ ceph_tid_t Objecter::_op_submit_with_budget(Op *op, RWLock::Context& lc, int *ct } } - C_CancelOp *cb = NULL; if (osd_timeout > 0) { - cb = new C_CancelOp(this); - op->ontimeout = cb; - } - - ceph_tid_t tid = _op_submit(op, lc); - - if (cb) { - cb->set_tid(tid); + if (op->tid == 0) + op->tid = last_tid.inc(); + op->ontimeout = new C_CancelOp(op->tid, this); Mutex::Locker l(timer_lock); timer.add_event_after(osd_timeout, op->ontimeout); } - return tid; + return _op_submit(op, lc); } void Objecter::_send_op_account(Op *op) @@ -2195,7 +2213,10 @@ int Objecter::op_cancel(OSDSession *s, ceph_tid_t tid, int r) if (op->onack) { op->onack->complete(r); op->onack = NULL; + num_unacked.dec(); } + if (op->oncommit || op->oncommit_sync) + num_uncommitted.dec(); if (op->oncommit) { op->oncommit->complete(r); op->oncommit = NULL; @@ -2205,7 +2226,7 @@ int Objecter::op_cancel(OSDSession *s, ceph_tid_t tid, int r) op->oncommit_sync = NULL; } _op_cancel_map_check(op); - _finish_op(op); + _finish_op(op, r); s->lock.unlock(); return 0; @@ -2279,6 +2300,7 @@ epoch_t Objecter::op_cancel_writes(int r) rwlock.get_write(); std::vector to_cancel; + bool found = false; for (map::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) { OSDSession *s = siter->second; @@ -2289,19 +2311,26 @@ epoch_t Objecter::op_cancel_writes(int r) } } s->lock.unlock(); - } - for (std::vector::iterator titer = to_cancel.begin(); titer != to_cancel.end(); ++titer) { - int cancel_result = _op_cancel(*titer, r); - // We hold rwlock across search and cancellation, so cancels should always succeed - assert(cancel_result == 0); + for (std::vector::iterator titer = to_cancel.begin(); titer != to_cancel.end(); ++titer) { + int cancel_result = op_cancel(s, *titer, r); + // We hold rwlock across search and cancellation, so cancels should always succeed + assert(cancel_result == 0); + } + if (!found && to_cancel.size()) + found = true; + to_cancel.clear(); } const epoch_t epoch = osdmap->get_epoch(); rwlock.unlock(); - return epoch; + if (found) { + return epoch; + } else { + return -1; + } } bool Objecter::is_pg_changed( @@ -2531,10 +2560,7 @@ int Objecter::_calc_target(op_target_t *t, epoch_t *last_force_resend, bool any int Objecter::_map_session(op_target_t *target, OSDSession **s, RWLock::Context& lc) { - int r = _calc_target(target); - if (r < 0) { - return r; - } + _calc_target(target); return _get_session(target->osd, s, lc); } @@ -2671,14 +2697,20 @@ void Objecter::_cancel_linger_op(Op *op) ldout(cct, 15) << "cancel_op " << op->tid << dendl; assert(!op->should_resend); - delete op->onack; - delete op->oncommit; - delete op->oncommit_sync; + if (op->onack) { + delete op->onack; + num_unacked.dec(); + } + if (op->oncommit || op->oncommit_sync) { + delete op->oncommit; + delete op->oncommit_sync; + num_uncommitted.dec(); + } - _finish_op(op); + _finish_op(op, 0); } -void Objecter::_finish_op(Op *op) +void Objecter::_finish_op(Op *op, int r) { ldout(cct, 15) << "finish_op " << op->tid << dendl; @@ -2687,7 +2719,7 @@ void Objecter::_finish_op(Op *op) if (!op->ctx_budgeted && op->budgeted) put_op_budget(op); - if (op->ontimeout) { + if (op->ontimeout && r != -ETIMEDOUT) { Mutex::Locker l(timer_lock); timer.cancel_event(op->ontimeout); } @@ -2716,7 +2748,7 @@ void Objecter::finish_op(OSDSession *session, ceph_tid_t tid) Op *op = iter->second; - _finish_op(op); + _finish_op(op, 0); } MOSDOp *Objecter::_prepare_osd_op(Op *op) @@ -3038,7 +3070,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) // done with this tid? if (!op->onack && !op->oncommit && !op->oncommit_sync) { ldout(cct, 15) << "handle_osd_op_reply completed tid " << tid << dendl; - _finish_op(op); + _finish_op(op, 0); } ldout(cct, 5) << num_unacked.read() << " unacked, " << num_uncommitted.read() << " uncommitted" << dendl; @@ -3608,12 +3640,24 @@ void Objecter::handle_pool_op_reply(MPoolOpReply *m) if (osdmap->get_epoch() < m->epoch) { rwlock.unlock(); rwlock.get_write(); + // recheck op existence since we have let go of rwlock + // (for promotion) above. + iter = pool_ops.find(tid); + if (iter == pool_ops.end()) + goto done; // op is gone. if (osdmap->get_epoch() < m->epoch) { ldout(cct, 20) << "waiting for client to reach epoch " << m->epoch << " before calling back" << dendl; _wait_for_new_map(op->onfinish, m->epoch, m->replyCode); + } else { + // map epoch changed, probably because a MOSDMap message + // sneaked in. Do caller-specified callback now or else + // we lose it forever. + assert(op->onfinish); + op->onfinish->complete(m->replyCode); } } else { + assert(op->onfinish); op->onfinish->complete(m->replyCode); } op->onfinish = NULL; @@ -3623,11 +3667,13 @@ void Objecter::handle_pool_op_reply(MPoolOpReply *m) } iter = pool_ops.find(tid); if (iter != pool_ops.end()) { - _finish_pool_op(op); + _finish_pool_op(op, 0); } } else { ldout(cct, 10) << "unknown request " << tid << dendl; } + +done: rwlock.unlock(); ldout(cct, 10) << "done" << dendl; @@ -3652,17 +3698,17 @@ int Objecter::pool_op_cancel(ceph_tid_t tid, int r) if (op->onfinish) op->onfinish->complete(r); - _finish_pool_op(op); + _finish_pool_op(op, r); return 0; } -void Objecter::_finish_pool_op(PoolOp *op) +void Objecter::_finish_pool_op(PoolOp *op, int r) { assert(rwlock.is_wlocked()); pool_ops.erase(op->tid); logger->set(l_osdc_poolop_active, pool_ops.size()); - if (op->ontimeout) { + if (op->ontimeout && r != -ETIMEDOUT) { Mutex::Locker l(timer_lock); timer.cancel_event(op->ontimeout); } @@ -3740,7 +3786,7 @@ void Objecter::handle_get_pool_stats_reply(MGetPoolStatsReply *m) last_seen_pgmap_version = m->version; } op->onfinish->complete(0); - _finish_pool_stat_op(op); + _finish_pool_stat_op(op, 0); } else { ldout(cct, 10) << "unknown request " << tid << dendl; } @@ -3765,18 +3811,18 @@ int Objecter::pool_stat_op_cancel(ceph_tid_t tid, int r) PoolStatOp *op = it->second; if (op->onfinish) op->onfinish->complete(r); - _finish_pool_stat_op(op); + _finish_pool_stat_op(op, r); return 0; } -void Objecter::_finish_pool_stat_op(PoolStatOp *op) +void Objecter::_finish_pool_stat_op(PoolStatOp *op, int r) { assert(rwlock.is_wlocked()); poolstat_ops.erase(op->tid); logger->set(l_osdc_poolstat_active, poolstat_ops.size()); - if (op->ontimeout) { + if (op->ontimeout && r != -ETIMEDOUT) { Mutex::Locker l(timer_lock); timer.cancel_event(op->ontimeout); } @@ -3847,7 +3893,7 @@ void Objecter::handle_fs_stats_reply(MStatfsReply *m) if (m->h.version > last_seen_pgmap_version) last_seen_pgmap_version = m->h.version; op->onfinish->complete(0); - _finish_statfs_op(op); + _finish_statfs_op(op, 0); } else { ldout(cct, 10) << "unknown request " << tid << dendl; } @@ -3872,18 +3918,18 @@ int Objecter::statfs_op_cancel(ceph_tid_t tid, int r) StatfsOp *op = it->second; if (op->onfinish) op->onfinish->complete(r); - _finish_statfs_op(op); + _finish_statfs_op(op, r); return 0; } -void Objecter::_finish_statfs_op(StatfsOp *op) +void Objecter::_finish_statfs_op(StatfsOp *op, int r) { assert(rwlock.is_wlocked()); statfs_ops.erase(op->tid); logger->set(l_osdc_statfs_active, statfs_ops.size()); - if (op->ontimeout) { + if (op->ontimeout && r != -ETIMEDOUT) { Mutex::Locker l(timer_lock); timer.cancel_event(op->ontimeout); } @@ -4449,7 +4495,7 @@ int Objecter::command_op_cancel(OSDSession *s, ceph_tid_t tid, int r) CommandOp *op = it->second; _command_cancel_map_check(op); - _finish_command(op, -ETIMEDOUT, ""); + _finish_command(op, r, ""); return 0; } @@ -4463,7 +4509,7 @@ void Objecter::_finish_command(CommandOp *c, int r, string rs) if (c->onfinish) c->onfinish->complete(r); - if (c->ontimeout) { + if (c->ontimeout && r != -ETIMEDOUT) { Mutex::Locker l(timer_lock); timer.cancel_event(c->ontimeout); } diff --git a/ceph/src/osdc/Objecter.h b/ceph/src/osdc/Objecter.h index b9fd0cd6..c72c9b79 100644 --- a/ceph/src/osdc/Objecter.h +++ b/ceph/src/osdc/Objecter.h @@ -1561,6 +1561,7 @@ public: // we trigger these from an async finisher Context *on_notify_finish; bufferlist *notify_result_bl; + uint64_t notify_id; WatchContext *watch_context; @@ -1595,6 +1596,7 @@ public: on_reg_commit(NULL), on_notify_finish(NULL), notify_result_bl(NULL), + notify_id(0), watch_context(NULL), session(NULL), register_tid(0), @@ -1619,6 +1621,7 @@ public: struct C_Linger_Commit : public Context { Objecter *objecter; LingerOp *info; + bufferlist outbl; // used for notify only C_Linger_Commit(Objecter *o, LingerOp *l) : objecter(o), info(l) { info->get(); } @@ -1626,7 +1629,7 @@ public: info->put(); } void finish(int r) { - objecter->_linger_commit(info, r); + objecter->_linger_commit(info, r, outbl); } }; @@ -1738,7 +1741,7 @@ public: void _send_op_account(Op *op); void _cancel_linger_op(Op *op); void finish_op(OSDSession *session, ceph_tid_t tid); - void _finish_op(Op *op); + void _finish_op(Op *op, int r); static bool is_pg_changed( int oldprimary, const vector& oldacting, @@ -1771,7 +1774,7 @@ public: void _linger_submit(LingerOp *info); void _send_linger(LingerOp *info); - void _linger_commit(LingerOp *info, int r); + void _linger_commit(LingerOp *info, int r, bufferlist& outbl); void _linger_reconnect(LingerOp *info, int r); void _send_linger_ping(LingerOp *info); void _linger_ping(LingerOp *info, int r, utime_t sent, uint32_t register_gen); @@ -1962,6 +1965,7 @@ private: public: ceph_tid_t op_submit(Op *op, int *ctx_budget = NULL); bool is_active() { + RWLock::RLocker l(rwlock); return !((!inflight_ops.read()) && linger_ops.empty() && poolstat_ops.empty() && statfs_ops.empty()); } @@ -2465,7 +2469,7 @@ public: private: void pool_op_submit(PoolOp *op); void _pool_op_submit(PoolOp *op); - void _finish_pool_op(PoolOp *op); + void _finish_pool_op(PoolOp *op, int r); void _do_delete_pool(int64_t pool, Context *onfinish); public: int create_pool_snap(int64_t pool, string& snapName, Context *onfinish); @@ -2491,7 +2495,7 @@ public: void get_pool_stats(list& pools, map *result, Context *onfinish); int pool_stat_op_cancel(ceph_tid_t tid, int r); - void _finish_pool_stat_op(PoolStatOp *op); + void _finish_pool_stat_op(PoolStatOp *op, int r); // --------------------------- // df stats @@ -2501,7 +2505,7 @@ public: void handle_fs_stats_reply(MStatfsReply *m); void get_fs_stats(struct ceph_statfs& result, Context *onfinish); int statfs_op_cancel(ceph_tid_t tid, int r); - void _finish_statfs_op(StatfsOp *op); + void _finish_statfs_op(StatfsOp *op, int r); // --------------------------- // some scatter/gather hackery diff --git a/ceph/src/rbd.cc b/ceph/src/rbd.cc index 6f5457d1..372c657c 100644 --- a/ceph/src/rbd.cc +++ b/ceph/src/rbd.cc @@ -8,6 +8,7 @@ * LGPL2. See file COPYING. * */ +#define _LARGEFILE64_SOURCE #include "include/int_types.h" #include "mon/MonClient.h" @@ -42,6 +43,7 @@ #include #include #include +#include #include #include "include/memory.h" #include @@ -978,15 +980,7 @@ static int do_bench_write(librbd::Image& image, uint64_t io_size, for (off = 0; off < io_bytes; ) { b.wait_for(io_threads - 1); i = 0; - while (i < io_threads && off < io_bytes && - b.start_write(io_threads, thread_offset[i], io_size, bl, op_flags)) { - ++i; - ++ios; - off += io_size; - - ++cur_ios; - cur_off += io_size; - + while (i < io_threads && off < io_bytes) { if (pattern == "rand") { thread_offset[i] = (rand() % (size / io_size)) * io_size; } else { @@ -994,6 +988,16 @@ static int do_bench_write(librbd::Image& image, uint64_t io_size, if (thread_offset[i] + io_size > size) thread_offset[i] = 0; } + + if (!b.start_write(io_threads, thread_offset[i], io_size, bl, op_flags)) + break; + + ++i; + ++ios; + off += io_size; + + ++cur_ios; + cur_off += io_size; } utime_t now = ceph_clock_now(NULL); @@ -2048,7 +2052,8 @@ static int do_merge_diff(const char *first, const char *second, const char *path if (r < 0) goto done; } else { - r = lseek(fd, delta, SEEK_CUR); + off64_t l = lseek64(fd, delta, SEEK_CUR); + r = l < 0 ? -errno : 0; if(r < 0) goto done; } diff --git a/ceph/src/rbd_replay/ActionTypes.cc b/ceph/src/rbd_replay/ActionTypes.cc new file mode 100644 index 00000000..36ed3ca0 --- /dev/null +++ b/ceph/src/rbd_replay/ActionTypes.cc @@ -0,0 +1,354 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "rbd_replay/ActionTypes.h" +#include "include/assert.h" +#include "include/byteorder.h" +#include "include/stringify.h" +#include "common/Formatter.h" +#include +#include + +namespace rbd_replay { +namespace action { + +namespace { + +bool byte_swap_required(__u8 version) { +#if defined(CEPH_LITTLE_ENDIAN) + return (version == 0); +#else + return false; +#endif +} + +void decode_big_endian_string(std::string &str, bufferlist::iterator &it) { +#if defined(CEPH_LITTLE_ENDIAN) + uint32_t length; + ::decode(length, it); + length = swab32(length); + str.clear(); + it.copy(length, str); +#else + assert(false); +#endif +} + +class EncodeVisitor : public boost::static_visitor { +public: + EncodeVisitor(bufferlist &bl) : m_bl(bl) { + } + + template + inline void operator()(const Action &action) const { + ::encode(static_cast(Action::ACTION_TYPE), m_bl); + action.encode(m_bl); + } +private: + bufferlist &m_bl; +}; + +class DecodeVisitor : public boost::static_visitor { +public: + DecodeVisitor(__u8 version, bufferlist::iterator &iter) + : m_version(version), m_iter(iter) { + } + + template + inline void operator()(Action &action) const { + action.decode(m_version, m_iter); + } +private: + __u8 m_version; + bufferlist::iterator &m_iter; +}; + +class DumpVisitor : public boost::static_visitor { +public: + DumpVisitor(Formatter *formatter) : m_formatter(formatter) {} + + template + inline void operator()(const Action &action) const { + ActionType action_type = Action::ACTION_TYPE; + m_formatter->dump_string("action_type", stringify(action_type)); + action.dump(m_formatter); + } +private: + ceph::Formatter *m_formatter; +}; + +} // anonymous namespace + +void Dependency::encode(bufferlist &bl) const { + ::encode(id, bl); + ::encode(time_delta, bl); +} + +void Dependency::decode(bufferlist::iterator &it) { + decode(1, it); +} + +void Dependency::decode(__u8 version, bufferlist::iterator &it) { + ::decode(id, it); + ::decode(time_delta, it); + if (byte_swap_required(version)) { + id = swab32(id); + time_delta = swab64(time_delta); + } +} + +void Dependency::dump(Formatter *f) const { + f->dump_unsigned("id", id); + f->dump_unsigned("time_delta", time_delta); +} + +void Dependency::generate_test_instances(std::list &o) { + o.push_back(new Dependency()); + o.push_back(new Dependency(1, 123456789)); +} + +void ActionBase::encode(bufferlist &bl) const { + ::encode(id, bl); + ::encode(thread_id, bl); + ::encode(dependencies, bl); +} + +void ActionBase::decode(__u8 version, bufferlist::iterator &it) { + ::decode(id, it); + ::decode(thread_id, it); + if (version == 0) { + uint32_t num_successors; + ::decode(num_successors, it); + + uint32_t num_completion_successors; + ::decode(num_completion_successors, it); + } + + if (byte_swap_required(version)) { + id = swab32(id); + thread_id = swab64(thread_id); + + uint32_t dep_count; + ::decode(dep_count, it); + dep_count = swab32(dep_count); + dependencies.resize(dep_count); + for (uint32_t i = 0; i < dep_count; ++i) { + dependencies[i].decode(0, it); + } + } else { + ::decode(dependencies, it); + } +} + +void ActionBase::dump(Formatter *f) const { + f->dump_unsigned("id", id); + f->dump_unsigned("thread_id", thread_id); + f->open_array_section("dependencies"); + for (size_t i = 0; i < dependencies.size(); ++i) { + f->open_object_section("dependency"); + dependencies[i].dump(f); + f->close_section(); + } + f->close_section(); +} + +void ImageActionBase::encode(bufferlist &bl) const { + ActionBase::encode(bl); + ::encode(imagectx_id, bl); +} + +void ImageActionBase::decode(__u8 version, bufferlist::iterator &it) { + ActionBase::decode(version, it); + ::decode(imagectx_id, it); + if (byte_swap_required(version)) { + imagectx_id = swab64(imagectx_id); + } +} + +void ImageActionBase::dump(Formatter *f) const { + ActionBase::dump(f); + f->dump_unsigned("imagectx_id", imagectx_id); +} + +void IoActionBase::encode(bufferlist &bl) const { + ImageActionBase::encode(bl); + ::encode(offset, bl); + ::encode(length, bl); +} + +void IoActionBase::decode(__u8 version, bufferlist::iterator &it) { + ImageActionBase::decode(version, it); + ::decode(offset, it); + ::decode(length, it); + if (byte_swap_required(version)) { + offset = swab64(offset); + length = swab64(length); + } +} + +void IoActionBase::dump(Formatter *f) const { + ImageActionBase::dump(f); + f->dump_unsigned("offset", offset); + f->dump_unsigned("length", length); +} + +void OpenImageAction::encode(bufferlist &bl) const { + ImageActionBase::encode(bl); + ::encode(name, bl); + ::encode(snap_name, bl); + ::encode(read_only, bl); +} + +void OpenImageAction::decode(__u8 version, bufferlist::iterator &it) { + ImageActionBase::decode(version, it); + if (byte_swap_required(version)) { + decode_big_endian_string(name, it); + decode_big_endian_string(snap_name, it); + } else { + ::decode(name, it); + ::decode(snap_name, it); + } + ::decode(read_only, it); +} + +void OpenImageAction::dump(Formatter *f) const { + ImageActionBase::dump(f); + f->dump_string("name", name); + f->dump_string("snap_name", snap_name); + f->dump_bool("read_only", read_only); +} + +void UnknownAction::encode(bufferlist &bl) const { + assert(false); +} + +void UnknownAction::decode(__u8 version, bufferlist::iterator &it) { +} + +void UnknownAction::dump(Formatter *f) const { +} + +void ActionEntry::encode(bufferlist &bl) const { + ENCODE_START(1, 1, bl); + boost::apply_visitor(EncodeVisitor(bl), action); + ENCODE_FINISH(bl); +} + +void ActionEntry::decode(bufferlist::iterator &it) { + DECODE_START(1, it); + decode(struct_v, it); + DECODE_FINISH(it); +} + +void ActionEntry::decode_unversioned(bufferlist::iterator &it) { + decode(0, it); +} + +void ActionEntry::decode(__u8 version, bufferlist::iterator &it) { + uint8_t action_type; + ::decode(action_type, it); + + // select the correct action variant based upon the action_type + switch (action_type) { + case ACTION_TYPE_START_THREAD: + action = StartThreadAction(); + break; + case ACTION_TYPE_STOP_THREAD: + action = StopThreadAction(); + break; + case ACTION_TYPE_READ: + action = ReadAction(); + break; + case ACTION_TYPE_WRITE: + action = WriteAction(); + break; + case ACTION_TYPE_AIO_READ: + action = AioReadAction(); + break; + case ACTION_TYPE_AIO_WRITE: + action = AioWriteAction(); + break; + case ACTION_TYPE_OPEN_IMAGE: + action = OpenImageAction(); + break; + case ACTION_TYPE_CLOSE_IMAGE: + action = CloseImageAction(); + break; + } + + boost::apply_visitor(DecodeVisitor(version, it), action); +} + +void ActionEntry::dump(Formatter *f) const { + boost::apply_visitor(DumpVisitor(f), action); +} + +void ActionEntry::generate_test_instances(std::list &o) { + Dependencies dependencies; + dependencies.push_back(Dependency(3, 123456789)); + dependencies.push_back(Dependency(4, 234567890)); + + o.push_back(new ActionEntry(StartThreadAction())); + o.push_back(new ActionEntry(StartThreadAction(1, 123456789, dependencies))); + o.push_back(new ActionEntry(StopThreadAction())); + o.push_back(new ActionEntry(StopThreadAction(1, 123456789, dependencies))); + + o.push_back(new ActionEntry(ReadAction())); + o.push_back(new ActionEntry(ReadAction(1, 123456789, dependencies, 3, 4, 5))); + o.push_back(new ActionEntry(WriteAction())); + o.push_back(new ActionEntry(WriteAction(1, 123456789, dependencies, 3, 4, + 5))); + o.push_back(new ActionEntry(AioReadAction())); + o.push_back(new ActionEntry(AioReadAction(1, 123456789, dependencies, 3, 4, + 5))); + o.push_back(new ActionEntry(AioWriteAction())); + o.push_back(new ActionEntry(AioWriteAction(1, 123456789, dependencies, 3, 4, + 5))); + + o.push_back(new ActionEntry(OpenImageAction())); + o.push_back(new ActionEntry(OpenImageAction(1, 123456789, dependencies, 3, + "image_name", "snap_name", + true))); + o.push_back(new ActionEntry(CloseImageAction())); + o.push_back(new ActionEntry(CloseImageAction(1, 123456789, dependencies, 3))); +} + +} // namespace action +} // namespace rbd_replay + +std::ostream &operator<<(std::ostream &out, + const rbd_replay::action::ActionType &type) { + using namespace rbd_replay::action; + + switch (type) { + case ACTION_TYPE_START_THREAD: + out << "StartThread"; + break; + case ACTION_TYPE_STOP_THREAD: + out << "StopThread"; + break; + case ACTION_TYPE_READ: + out << "Read"; + break; + case ACTION_TYPE_WRITE: + out << "Write"; + break; + case ACTION_TYPE_AIO_READ: + out << "AioRead"; + break; + case ACTION_TYPE_AIO_WRITE: + out << "AioWrite"; + break; + case ACTION_TYPE_OPEN_IMAGE: + out << "OpenImage"; + break; + case ACTION_TYPE_CLOSE_IMAGE: + out << "CloseImage"; + break; + default: + out << "Unknown (" << static_cast(type) << ")"; + break; + } + return out; +} + diff --git a/ceph/src/rbd_replay/ActionTypes.h b/ceph/src/rbd_replay/ActionTypes.h new file mode 100644 index 00000000..63ef34e9 --- /dev/null +++ b/ceph/src/rbd_replay/ActionTypes.h @@ -0,0 +1,277 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_RBD_REPLAY_ACTION_TYPES_H +#define CEPH_RBD_REPLAY_ACTION_TYPES_H + +#include "include/int_types.h" +#include "include/buffer.h" +#include "include/encoding.h" +#include +#include +#include +#include +#include + +namespace ceph { class Formatter; } + +namespace rbd_replay { +namespace action { + +typedef uint64_t imagectx_id_t; +typedef uint64_t thread_id_t; + +/// Even IDs are normal actions, odd IDs are completions. +typedef uint32_t action_id_t; + +static const std::string BANNER("rbd-replay-trace"); + +/** + * Dependencies link actions to earlier actions or completions. + * If an action has a dependency \c d then it waits until \c d.time_delta + * nanoseconds after the action or completion with ID \c d.id has fired. + */ +struct Dependency { + /// ID of the action or completion to wait for. + action_id_t id; + + /// Nanoseconds of delay to wait until after the action or completion fires. + uint64_t time_delta; + + /** + * @param id ID of the action or completion to wait for. + * @param time_delta Nanoseconds of delay to wait after the action or + * completion fires. + */ + Dependency() : id(0), time_delta(0) { + } + Dependency(action_id_t id, uint64_t time_delta) + : id(id), time_delta(time_delta) { + } + + void encode(bufferlist &bl) const; + void decode(bufferlist::iterator &it); + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; + + static void generate_test_instances(std::list &o); +}; + +WRITE_CLASS_ENCODER(Dependency); + +typedef std::vector Dependencies; + +enum ActionType { + ACTION_TYPE_START_THREAD = 0, + ACTION_TYPE_STOP_THREAD = 1, + ACTION_TYPE_READ = 2, + ACTION_TYPE_WRITE = 3, + ACTION_TYPE_AIO_READ = 4, + ACTION_TYPE_AIO_WRITE = 5, + ACTION_TYPE_OPEN_IMAGE = 6, + ACTION_TYPE_CLOSE_IMAGE = 7 +}; + +struct ActionBase { + action_id_t id; + thread_id_t thread_id; + Dependencies dependencies; + + ActionBase() : id(0), thread_id(0) { + } + ActionBase(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies) + : id(id), thread_id(thread_id), dependencies(dependencies) { + } + + void encode(bufferlist &bl) const; + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; +}; + +struct StartThreadAction : public ActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_START_THREAD; + + StartThreadAction() { + } + StartThreadAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies) + : ActionBase(id, thread_id, dependencies) { + } +}; + +struct StopThreadAction : public ActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_STOP_THREAD; + + StopThreadAction() { + } + StopThreadAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies) + : ActionBase(id, thread_id, dependencies) { + } +}; + +struct ImageActionBase : public ActionBase { + imagectx_id_t imagectx_id; + + ImageActionBase() : imagectx_id(0) { + } + ImageActionBase(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id) + : ActionBase(id, thread_id, dependencies), imagectx_id(imagectx_id) { + } + + void encode(bufferlist &bl) const; + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; +}; + +struct IoActionBase : public ImageActionBase { + uint64_t offset; + uint64_t length; + + IoActionBase() : offset(0), length(0) { + } + IoActionBase(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + uint64_t offset, uint64_t length) + : ImageActionBase(id, thread_id, dependencies, imagectx_id), + offset(offset), length(length) { + } + + void encode(bufferlist &bl) const; + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; +}; + +struct ReadAction : public IoActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_READ; + + ReadAction() { + } + ReadAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + uint64_t offset, uint64_t length) + : IoActionBase(id, thread_id, dependencies, imagectx_id, offset, length) { + } +}; + +struct WriteAction : public IoActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_WRITE; + + WriteAction() { + } + WriteAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + uint64_t offset, uint64_t length) + : IoActionBase(id, thread_id, dependencies, imagectx_id, offset, length) { + } +}; + +struct AioReadAction : public IoActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_AIO_READ; + + AioReadAction() { + } + AioReadAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + uint64_t offset, uint64_t length) + : IoActionBase(id, thread_id, dependencies, imagectx_id, offset, length) { + } +}; + +struct AioWriteAction : public IoActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_AIO_WRITE; + + AioWriteAction() { + } + AioWriteAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + uint64_t offset, uint64_t length) + : IoActionBase(id, thread_id, dependencies, imagectx_id, offset, length) { + } +}; + +struct OpenImageAction : public ImageActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_OPEN_IMAGE; + + std::string name; + std::string snap_name; + bool read_only; + + OpenImageAction() : read_only(false) { + } + OpenImageAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id, + const std::string &name, const std::string &snap_name, + bool read_only) + : ImageActionBase(id, thread_id, dependencies, imagectx_id), + name(name), snap_name(snap_name), read_only(read_only) { + } + + void encode(bufferlist &bl) const; + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; +}; + +struct CloseImageAction : public ImageActionBase { + static const ActionType ACTION_TYPE = ACTION_TYPE_CLOSE_IMAGE; + + CloseImageAction() { + } + CloseImageAction(action_id_t id, thread_id_t thread_id, + const Dependencies &dependencies, imagectx_id_t imagectx_id) + : ImageActionBase(id, thread_id, dependencies, imagectx_id) { + } +}; + +struct UnknownAction { + static const ActionType ACTION_TYPE = static_cast(-1); + + void encode(bufferlist &bl) const; + void decode(__u8 version, bufferlist::iterator &it); + void dump(Formatter *f) const; +}; + +typedef boost::variant Action; + +class ActionEntry { +public: + Action action; + + ActionEntry() : action(UnknownAction()) { + } + ActionEntry(const Action &action) : action(action) { + } + + void encode(bufferlist &bl) const; + void decode(bufferlist::iterator &it); + void decode_unversioned(bufferlist::iterator &it); + void dump(Formatter *f) const; + + static void generate_test_instances(std::list &o); + +private: + void decode(__u8 version, bufferlist::iterator &it); +}; + +WRITE_CLASS_ENCODER(ActionEntry); + +} // namespace action +} // namespace rbd_replay + +std::ostream &operator<<(std::ostream &out, + const rbd_replay::action::ActionType &type); + +using rbd_replay::action::decode; +using rbd_replay::action::encode; + +#endif // CEPH_RBD_REPLAY_ACTION_TYPES_H diff --git a/ceph/src/rbd_replay/BufferReader.cc b/ceph/src/rbd_replay/BufferReader.cc new file mode 100644 index 00000000..5bf2cc23 --- /dev/null +++ b/ceph/src/rbd_replay/BufferReader.cc @@ -0,0 +1,38 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "rbd_replay/BufferReader.h" +#include "include/assert.h" +#include "include/intarith.h" +#include "include/page.h" + +namespace rbd_replay { + +BufferReader::BufferReader(int fd, size_t min_bytes, size_t max_bytes) + : m_fd(fd), m_min_bytes(min_bytes), m_max_bytes(max_bytes), + m_bl_it(m_bl.begin()), m_eof_reached(false) { + assert(m_min_bytes <= m_max_bytes); +} + +int BufferReader::fetch(bufferlist::iterator **it) { + if (m_bl_it.get_remaining() < m_min_bytes) { + ssize_t bytes_to_read = ROUND_UP_TO(m_max_bytes - m_bl_it.get_remaining(), + CEPH_PAGE_SIZE); + while (!m_eof_reached && bytes_to_read > 0) { + int r = m_bl.read_fd(m_fd, CEPH_PAGE_SIZE); + if (r < 0) { + return r; + } + if (r == 0) { + m_eof_reached = true; + } + assert(r <= bytes_to_read); + bytes_to_read -= r; + } + } + + *it = &m_bl_it; + return 0; +} + +} // namespace rbd_replay diff --git a/ceph/src/rbd_replay/BufferReader.h b/ceph/src/rbd_replay/BufferReader.h new file mode 100644 index 00000000..07f7b09c --- /dev/null +++ b/ceph/src/rbd_replay/BufferReader.h @@ -0,0 +1,34 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_RBD_REPLAY_BUFFER_READER_H +#define CEPH_RBD_REPLAY_BUFFER_READER_H + +#include "include/int_types.h" +#include "include/buffer.h" + +namespace rbd_replay { + +class BufferReader { +public: + static const size_t DEFAULT_MIN_BYTES = 1<<20; + static const size_t DEFAULT_MAX_BYTES = 1<<22; + + BufferReader(int fd, size_t min_bytes = DEFAULT_MIN_BYTES, + size_t max_bytes = DEFAULT_MAX_BYTES); + + int fetch(bufferlist::iterator **it); + +private: + int m_fd; + size_t m_min_bytes; + size_t m_max_bytes; + bufferlist m_bl; + bufferlist::iterator m_bl_it; + bool m_eof_reached; + +}; + +} // namespace rbd_replay + +#endif // CEPH_RBD_REPLAY_BUFFER_READER_H diff --git a/ceph/src/rbd_replay/Deser.cc b/ceph/src/rbd_replay/Deser.cc deleted file mode 100644 index 986a18c1..00000000 --- a/ceph/src/rbd_replay/Deser.cc +++ /dev/null @@ -1,67 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "Deser.hpp" -#include -#include -#include - - -rbd_replay::Deser::Deser(std::istream &in) - : m_in(in) { -} - -uint8_t rbd_replay::Deser::read_uint8_t() { - uint8_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return data; -} - -uint16_t rbd_replay::Deser::read_uint16_t() { - uint16_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return ntohs(data); -} - -uint32_t rbd_replay::Deser::read_uint32_t() { - uint32_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return ntohl(data); -} - -uint64_t rbd_replay::Deser::read_uint64_t() { - uint64_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); -#if __BYTE_ORDER == __LITTLE_ENDIAN - data = (static_cast(ntohl(data)) << 32 | ntohl(data >> 32)); -#endif - return data; -} - -std::string rbd_replay::Deser::read_string() { - uint32_t length = read_uint32_t(); - char* data = reinterpret_cast(malloc(length)); - m_in.read(data, length); - std::string s(data, length); - free(data); - return s; -} - -bool rbd_replay::Deser::read_bool() { - return read_uint8_t() != 0; -} - -bool rbd_replay::Deser::eof() { - return m_in.eof(); -} diff --git a/ceph/src/rbd_replay/Deser.hpp b/ceph/src/rbd_replay/Deser.hpp deleted file mode 100644 index b466acec..00000000 --- a/ceph/src/rbd_replay/Deser.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_DESER_HPP -#define _INCLUDED_RBD_REPLAY_DESER_HPP - -#include -#include - -namespace rbd_replay { - -/** - Helper for deserializing data in an architecture-indepdendent way. - Everything is read big-endian. - @see Ser -*/ -class Deser { -public: - Deser(std::istream &in); - - uint8_t read_uint8_t(); - - uint16_t read_uint16_t(); - - uint32_t read_uint32_t(); - - uint64_t read_uint64_t(); - - std::string read_string(); - - bool read_bool(); - - bool eof(); - -private: - std::istream &m_in; -}; - -} - -#endif diff --git a/ceph/src/rbd_replay/Makefile.am b/ceph/src/rbd_replay/Makefile.am index fa101b74..23a8e915 100644 --- a/ceph/src/rbd_replay/Makefile.am +++ b/ceph/src/rbd_replay/Makefile.am @@ -2,35 +2,46 @@ if ENABLE_CLIENT if WITH_RADOS if WITH_RBD +librbd_replay_types_la_SOURCES = \ + rbd_replay/ActionTypes.cc +noinst_HEADERS += \ + rbd_replay/ActionTypes.h +noinst_LTLIBRARIES += librbd_replay_types.la +DENCODER_DEPS += librbd_replay_types.la + # librbd_replay_la exists only to help with unit tests -librbd_replay_la_SOURCES = rbd_replay/actions.cc \ - rbd_replay/Deser.cc \ +librbd_replay_la_SOURCES = \ + rbd_replay/actions.cc \ + rbd_replay/BufferReader.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) \ + rbd_replay/Replayer.cc +librbd_replay_la_LIBADD = \ + $(LIBRBD) \ $(LIBRADOS) \ $(CEPH_GLOBAL) noinst_LTLIBRARIES += librbd_replay.la -noinst_HEADERS += rbd_replay/BoundedBuffer.hpp \ +noinst_HEADERS += \ rbd_replay/actions.hpp \ - rbd_replay/Deser.hpp \ + rbd_replay/BoundedBuffer.hpp \ + rbd_replay/BufferReader.h \ 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 - + rbd_replay/Replayer.hpp -rbd_replay_SOURCES = rbd_replay/rbd-replay.cc -rbd_replay_LDADD = $(LIBRBD) \ +rbd_replay_SOURCES = \ + rbd_replay/rbd-replay.cc +rbd_replay_LDADD = \ + librbd_replay.la \ + librbd_replay_types.la \ + $(LIBRBD) \ $(LIBRADOS) \ $(CEPH_GLOBAL) \ - librbd_replay.la + $(LIBCOMMON) if LINUX bin_PROGRAMS += rbd-replay @@ -43,12 +54,16 @@ librbd_replay_ios_la_LIBADD = $(LIBRBD) \ librbd_replay.la noinst_LTLIBRARIES += librbd_replay_ios.la -rbd_replay_prep_SOURCES = rbd_replay/rbd-replay-prep.cc -rbd_replay_prep_LDADD = $(LIBRBD) \ - $(LIBRADOS) \ - $(CEPH_GLOBAL) \ +rbd_replay_prep_SOURCES = \ + rbd_replay/rbd-replay-prep.cc +rbd_replay_prep_LDADD = \ librbd_replay.la \ librbd_replay_ios.la \ + librbd_replay_types.la \ + $(LIBRBD) \ + $(LIBRADOS) \ + $(CEPH_GLOBAL) \ + $(LIBCOMMON) \ -lbabeltrace \ -lbabeltrace-ctf \ -lboost_date_time diff --git a/ceph/src/rbd_replay/Replayer.cc b/ceph/src/rbd_replay/Replayer.cc index 19403e51..a40e886e 100644 --- a/ceph/src/rbd_replay/Replayer.cc +++ b/ceph/src/rbd_replay/Replayer.cc @@ -13,8 +13,12 @@ */ #include "Replayer.hpp" +#include "common/errno.h" +#include "rbd_replay/ActionTypes.h" +#include "rbd_replay/BufferReader.h" #include #include +#include #include #include "global/global_context.h" #include "rbd_replay_debug.hpp" @@ -23,6 +27,29 @@ using namespace std; using namespace rbd_replay; +namespace { + +bool is_versioned_replay(BufferReader &buffer_reader) { + bufferlist::iterator *it; + int r = buffer_reader.fetch(&it); + if (r < 0) { + return false; + } + + if (it->get_remaining() < action::BANNER.size()) { + return false; + } + + std::string banner; + it->copy(action::BANNER.size(), banner); + bool versioned = (banner == action::BANNER); + if (!versioned) { + it->seek(0); + } + return versioned; +} + +} // anonymous namespace Worker::Worker(Replayer &replayer) : m_replayer(replayer), @@ -154,36 +181,67 @@ void Replayer::run(const std::string& replay_file) { rados.init(NULL); int r = rados.init_with_context(g_ceph_context); if (r) { - cerr << "Unable to read conf file: " << r << std::endl; + cerr << "Failed to initialize RADOS: " << cpp_strerror(r) << std::endl; goto out; } r = rados.connect(); if (r) { - cerr << "Unable to connect to Rados: " << r << std::endl; + cerr << "Failed to connect to cluster: " << cpp_strerror(r) << std::endl; goto out; } m_ioctx = new librados::IoCtx(); { r = rados.ioctx_create(m_pool_name.c_str(), *m_ioctx); if (r) { - cerr << "Unable to create IoCtx: " << r << std::endl; + cerr << "Failed to open pool " << m_pool_name << ": " + << cpp_strerror(r) << std::endl; goto out2; } m_rbd = new librbd::RBD(); map workers; - ifstream input(replay_file.c_str(), ios::in | ios::binary); - if (!input.is_open()) { - cerr << "Unable to open " << replay_file << std::endl; - exit(1); + int fd = open(replay_file.c_str(), O_RDONLY); + if (fd < 0) { + std::cerr << "Failed to open " << replay_file << ": " + << cpp_strerror(errno) << std::endl; + exit(1); } + BOOST_SCOPE_EXIT( (fd) ) { + close(fd); + } BOOST_SCOPE_EXIT_END; - Deser deser(input); + BufferReader buffer_reader(fd); + bool versioned = is_versioned_replay(buffer_reader); while (true) { - Action::ptr action = Action::read_from(deser); + action::ActionEntry action_entry; + try { + bufferlist::iterator *it; + int r = buffer_reader.fetch(&it); + if (r < 0) { + std::cerr << "Failed to read from trace file: " << cpp_strerror(r) + << std::endl; + exit(-r); + } + if (it->get_remaining() == 0) { + break; + } + + if (versioned) { + action_entry.decode(*it); + } else { + action_entry.decode_unversioned(*it); + } + } catch (const buffer::error &err) { + std::cerr << "Failed to decode trace action: " << err.what() << std::endl; + exit(1); + } + + Action::ptr action = Action::construct(action_entry); if (!action) { - break; + // unknown / unsupported action + continue; } + if (action->is_start_thread()) { Worker *worker = new Worker(*this); workers[action->thread_id()] = worker; @@ -257,9 +315,9 @@ bool Replayer::is_action_complete(action_id_t id) { return tracker.actions.count(id) > 0; } -void Replayer::wait_for_actions(const vector &deps) { +void Replayer::wait_for_actions(const action::Dependencies &deps) { boost::posix_time::ptime release_time(boost::posix_time::neg_infin); - BOOST_FOREACH(const dependency_d &dep, deps) { + BOOST_FOREACH(const action::Dependency &dep, deps) { dout(DEPGRAPH_LEVEL) << "Waiting for " << dep.id << dendl; boost::system_time start_time(boost::get_system_time()); action_tracker_d &tracker = tracker_for(dep.id); diff --git a/ceph/src/rbd_replay/Replayer.hpp b/ceph/src/rbd_replay/Replayer.hpp index 538e7fdd..acad7258 100644 --- a/ceph/src/rbd_replay/Replayer.hpp +++ b/ceph/src/rbd_replay/Replayer.hpp @@ -17,6 +17,7 @@ #include #include +#include "rbd_replay/ActionTypes.h" #include "BoundedBuffer.hpp" #include "ImageNameMap.hpp" #include "PendingIO.hpp" @@ -100,7 +101,7 @@ public: bool is_action_complete(action_id_t id); - void wait_for_actions(const std::vector &deps); + void wait_for_actions(const action::Dependencies &deps); std::string pool_name() const; diff --git a/ceph/src/rbd_replay/Ser.cc b/ceph/src/rbd_replay/Ser.cc deleted file mode 100644 index 97a63cdc..00000000 --- a/ceph/src/rbd_replay/Ser.cc +++ /dev/null @@ -1,53 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "Ser.hpp" -#include -#include -#include - - -rbd_replay::Ser::Ser(std::ostream &out) - : m_out(out) { -} - -void rbd_replay::Ser::write_uint8_t(uint8_t data) { - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint16_t(uint16_t data) { - data = htons(data); - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint32_t(uint32_t data) { - data = htonl(data); - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint64_t(uint64_t data) { -#if __BYTE_ORDER == __LITTLE_ENDIAN - data = (static_cast(htonl(data)) << 32 | htonl(data >> 32)); -#endif - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_string(const std::string& data) { - write_uint32_t(data.length()); - m_out.write(data.data(), data.length()); -} - -void rbd_replay::Ser::write_bool(bool data) { - write_uint8_t(data ? 1 : 0); -} diff --git a/ceph/src/rbd_replay/Ser.hpp b/ceph/src/rbd_replay/Ser.hpp deleted file mode 100644 index 130465dc..00000000 --- a/ceph/src/rbd_replay/Ser.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_SER_HPP -#define _INCLUDED_RBD_REPLAY_SER_HPP - -#include -#include - -namespace rbd_replay { - -/** - Helper for serializing data in an architecture-indepdendent way. - Everything is written big-endian. - @see Deser -*/ -class Ser { -public: - Ser(std::ostream &out); - - void write_uint8_t(uint8_t); - - void write_uint16_t(uint16_t); - - void write_uint32_t(uint32_t); - - void write_uint64_t(uint64_t); - - void write_string(const std::string&); - - void write_bool(bool b); - -private: - std::ostream &m_out; -}; - -} - -#endif diff --git a/ceph/src/rbd_replay/actions.cc b/ceph/src/rbd_replay/actions.cc index 2bcdfb19..7726d087 100644 --- a/ceph/src/rbd_replay/actions.cc +++ b/ceph/src/rbd_replay/actions.cc @@ -22,113 +22,67 @@ using namespace rbd_replay; using namespace std; +namespace { -Action::Action(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors) - : m_id(id), - m_thread_id(thread_id), - m_num_successors(num_successors), - m_num_completion_successors(num_completion_successors), - m_predecessors(predecessors) { - } - -Action::~Action() { +std::string create_fake_data() { + char data[1 << 20]; // 1 MB + for (unsigned int i = 0; i < sizeof(data); i++) { + data[i] = (char) i; + } + return std::string(data, sizeof(data)); } -Action::ptr Action::read_from(Deser &d) { - uint8_t type = d.read_uint8_t(); - if (d.eof()) { - return Action::ptr(); - } - uint32_t ionum = d.read_uint32_t(); - uint64_t thread_id = d.read_uint64_t(); - uint32_t num_successors = d.read_uint32_t(); - uint32_t num_completion_successors = d.read_uint32_t(); - uint32_t num_dependencies = d.read_uint32_t(); - vector deps; - for (unsigned int i = 0; i < num_dependencies; i++) { - uint32_t dep_id = d.read_uint32_t(); - uint64_t time_delta = d.read_uint64_t(); - deps.push_back(dependency_d(dep_id, time_delta)); +struct ConstructVisitor : public boost::static_visitor { + inline Action::ptr operator()(const action::StartThreadAction &action) const { + return Action::ptr(new StartThreadAction(action)); } - DummyAction dummy(ionum, thread_id, num_successors, num_completion_successors, deps); - switch (type) { - case IO_START_THREAD: - return StartThreadAction::read_from(dummy, d); - case IO_STOP_THREAD: - return StopThreadAction::read_from(dummy, d); - case IO_READ: - return ReadAction::read_from(dummy, d); - case IO_WRITE: - return WriteAction::read_from(dummy, d); - case IO_ASYNC_READ: - return AioReadAction::read_from(dummy, d); - case IO_ASYNC_WRITE: - return AioWriteAction::read_from(dummy, d); - case IO_OPEN_IMAGE: - return OpenImageAction::read_from(dummy, d); - case IO_CLOSE_IMAGE: - return CloseImageAction::read_from(dummy, d); - default: - cerr << "Invalid action type: " << type << std::endl; - exit(1); + + inline Action::ptr operator()(const action::StopThreadAction &action) const{ + return Action::ptr(new StopThreadAction(action)); } -} -std::ostream& Action::dump_action_fields(std::ostream& o) const { - o << "id=" << m_id << ", thread_id=" << m_thread_id << ", predecessors=["; - bool first = true; - BOOST_FOREACH(const dependency_d &d, m_predecessors) { - if (!first) { - o << ","; - } - o << d.id; - first = false; + inline Action::ptr operator()(const action::ReadAction &action) const { + return Action::ptr(new ReadAction(action)); } - return o << "]"; -} -std::ostream& rbd_replay::operator<<(std::ostream& o, const Action& a) { - return a.dump(o); -} + inline Action::ptr operator()(const action::AioReadAction &action) const { + return Action::ptr(new AioReadAction(action)); + } + inline Action::ptr operator()(const action::WriteAction &action) const { + return Action::ptr(new WriteAction(action)); + } -std::ostream& DummyAction::dump(std::ostream& o) const { - o << "DummyAction["; - dump_action_fields(o); - return o << "]"; -} + inline Action::ptr operator()(const action::AioWriteAction &action) const { + return Action::ptr(new AioWriteAction(action)); + } + inline Action::ptr operator()(const action::OpenImageAction &action) const { + return Action::ptr(new OpenImageAction(action)); + } -StartThreadAction::StartThreadAction(Action &src) - : Action(src) { -} + inline Action::ptr operator()(const action::CloseImageAction &action) const { + return Action::ptr(new CloseImageAction(action)); + } -void StartThreadAction::perform(ActionCtx &ctx) { - cerr << "StartThreadAction should never actually be performed" << std::endl; - exit(1); -} + inline Action::ptr operator()(const action::UnknownAction &action) const { + return Action::ptr(); + } +}; -bool StartThreadAction::is_start_thread() { - return true; -} +} // anonymous namespace -Action::ptr StartThreadAction::read_from(Action &src, Deser &d) { - return Action::ptr(new StartThreadAction(src)); +std::ostream& rbd_replay::operator<<(std::ostream& o, const Action& a) { + return a.dump(o); } -std::ostream& StartThreadAction::dump(std::ostream& o) const { - o << "StartThreadAction["; - dump_action_fields(o); - return o << "]"; +Action::ptr Action::construct(const action::ActionEntry &action_entry) { + return boost::apply_visitor(ConstructVisitor(), action_entry.action); } - -StopThreadAction::StopThreadAction(Action &src) - : Action(src) { +void StartThreadAction::perform(ActionCtx &ctx) { + cerr << "StartThreadAction should never actually be performed" << std::endl; + exit(1); } void StopThreadAction::perform(ActionCtx &ctx) { @@ -136,116 +90,33 @@ void StopThreadAction::perform(ActionCtx &ctx) { ctx.stop(); } -Action::ptr StopThreadAction::read_from(Action &src, Deser &d) { - return Action::ptr(new StopThreadAction(src)); -} - -std::ostream& StopThreadAction::dump(std::ostream& o) const { - o << "StopThreadAction["; - dump_action_fields(o); - return o << "]"; -} - - -AioReadAction::AioReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr AioReadAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new AioReadAction(src, imagectx_id, offset, length)); -} - void AioReadAction::perform(ActionCtx &worker) { dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); + librbd::Image *image = worker.get_image(m_action.imagectx_id); assert(image); PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); worker.add_pending(io); - int r = image->aio_read(m_offset, m_length, io->bufferlist(), &io->completion()); + int r = image->aio_read(m_action.offset, m_action.length, io->bufferlist(), &io->completion()); assertf(r >= 0, "id = %d, r = %d", id(), r); } -std::ostream& AioReadAction::dump(std::ostream& o) const { - o << "AioReadAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -ReadAction::ReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr ReadAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new ReadAction(src, imagectx_id, offset, length)); -} - void ReadAction::perform(ActionCtx &worker) { dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); + librbd::Image *image = worker.get_image(m_action.imagectx_id); PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); worker.add_pending(io); - ssize_t r = image->read(m_offset, m_length, io->bufferlist()); + ssize_t r = image->read(m_action.offset, m_action.length, io->bufferlist()); assertf(r >= 0, "id = %d, r = %d", id(), r); worker.remove_pending(io); } -std::ostream& ReadAction::dump(std::ostream& o) const { - o << "ReadAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -AioWriteAction::AioWriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr AioWriteAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new AioWriteAction(src, imagectx_id, offset, length)); -} - -static std::string create_fake_data() { - char data[1 << 20]; // 1 MB - for (unsigned int i = 0; i < sizeof(data); i++) { - data[i] = (char) i; - } - return std::string(data, sizeof(data)); -} void AioWriteAction::perform(ActionCtx &worker) { static const std::string fake_data(create_fake_data()); dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); + librbd::Image *image = worker.get_image(m_action.imagectx_id); PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - uint64_t remaining = m_length; + uint64_t remaining = m_action.length; while (remaining > 0) { uint64_t n = std::min(remaining, (uint64_t)fake_data.length()); io->bufferlist().append(fake_data.data(), n); @@ -255,126 +126,52 @@ void AioWriteAction::perform(ActionCtx &worker) { if (worker.readonly()) { worker.remove_pending(io); } else { - int r = image->aio_write(m_offset, m_length, io->bufferlist(), &io->completion()); + int r = image->aio_write(m_action.offset, m_action.length, io->bufferlist(), &io->completion()); assertf(r >= 0, "id = %d, r = %d", id(), r); } } -std::ostream& AioWriteAction::dump(std::ostream& o) const { - o << "AioWriteAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -WriteAction::WriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr WriteAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new WriteAction(src, imagectx_id, offset, length)); -} - void WriteAction::perform(ActionCtx &worker) { dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); + librbd::Image *image = worker.get_image(m_action.imagectx_id); PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); worker.add_pending(io); - io->bufferlist().append_zero(m_length); + io->bufferlist().append_zero(m_action.length); if (!worker.readonly()) { - ssize_t r = image->write(m_offset, m_length, io->bufferlist()); + ssize_t r = image->write(m_action.offset, m_action.length, io->bufferlist()); assertf(r >= 0, "id = %d, r = %d", id(), r); } worker.remove_pending(io); } -std::ostream& WriteAction::dump(std::ostream& o) const { - o << "WriteAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -OpenImageAction::OpenImageAction(Action &src, - imagectx_id_t imagectx_id, - string name, - string snap_name, - bool readonly) - : Action(src), - m_imagectx_id(imagectx_id), - m_name(name), - m_snap_name(snap_name), - m_readonly(readonly) { - } - -Action::ptr OpenImageAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - string name = d.read_string(); - string snap_name = d.read_string(); - bool readonly = d.read_bool(); - return Action::ptr(new OpenImageAction(src, imagectx_id, name, snap_name, readonly)); -} - void OpenImageAction::perform(ActionCtx &worker) { dout(ACTION_LEVEL) << "Performing " << *this << dendl; PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); worker.add_pending(io); librbd::Image *image = new librbd::Image(); librbd::RBD *rbd = worker.rbd(); - rbd_loc name(worker.map_image_name(m_name, m_snap_name)); + rbd_loc name(worker.map_image_name(m_action.name, m_action.snap_name)); int r; - if (m_readonly || worker.readonly()) { + if (m_action.read_only || worker.readonly()) { r = rbd->open_read_only(*worker.ioctx(), *image, name.image.c_str(), name.snap.c_str()); } else { r = rbd->open(*worker.ioctx(), *image, name.image.c_str(), name.snap.c_str()); } if (r) { - cerr << "Unable to open image '" << m_name - << "' with snap '" << m_snap_name + cerr << "Unable to open image '" << m_action.name + << "' with snap '" << m_action.snap_name << "' (mapped to '" << name.str() - << "') and readonly " << m_readonly + << "') and readonly " << m_action.read_only << ": (" << -r << ") " << strerror(-r) << std::endl; exit(1); } - worker.put_image(m_imagectx_id, image); + worker.put_image(m_action.imagectx_id, image); worker.remove_pending(io); } -std::ostream& OpenImageAction::dump(std::ostream& o) const { - o << "OpenImageAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", name='" << m_name << "', snap_name='" << m_snap_name << "', readonly=" << m_readonly << "]"; -} - - -CloseImageAction::CloseImageAction(Action &src, - imagectx_id_t imagectx_id) - : Action(src), - m_imagectx_id(imagectx_id) { - } - -Action::ptr CloseImageAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - return Action::ptr(new CloseImageAction(src, imagectx_id)); -} - void CloseImageAction::perform(ActionCtx &worker) { dout(ACTION_LEVEL) << "Performing " << *this << dendl; - worker.erase_image(m_imagectx_id); + worker.erase_image(m_action.imagectx_id); worker.set_action_complete(pending_io_id()); } -std::ostream& CloseImageAction::dump(std::ostream& o) const { - o << "CloseImageAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << "]"; -} diff --git a/ceph/src/rbd_replay/actions.hpp b/ceph/src/rbd_replay/actions.hpp index 068e4dc4..ea46a883 100644 --- a/ceph/src/rbd_replay/actions.hpp +++ b/ceph/src/rbd_replay/actions.hpp @@ -17,8 +17,10 @@ #include #include "include/rbd/librbd.hpp" -#include "Deser.hpp" +#include "common/Formatter.h" +#include "rbd_replay/ActionTypes.h" #include "rbd_loc.hpp" +#include // Stupid Doxygen requires this or else the typedef docs don't appear anywhere. /// @file rbd_replay/actions.hpp @@ -31,44 +33,8 @@ typedef uint64_t thread_id_t; /// Even IDs are normal actions, odd IDs are completions. typedef uint32_t action_id_t; -/** - Dependencies link actions to earlier actions or completions. - If an action has a dependency \c d then it waits until \c d.time_delta nanoseconds after the action or completion with ID \c d.id has fired. -*/ -struct dependency_d { - /// ID of the action or completion to wait for. - action_id_t id; - - /// Nanoseconds of delay to wait until after the action or completion fires. - uint64_t time_delta; - - /** - @param id ID of the action or completion to wait for. - @param time_delta Nanoseconds of delay to wait after the action or completion fires. - */ - dependency_d(action_id_t id, - uint64_t time_delta) - : id(id), - time_delta(time_delta) { - } -}; - -// These are written to files, so don't change existing assignments. -enum io_type { - IO_START_THREAD, - IO_STOP_THREAD, - IO_READ, - IO_WRITE, - IO_ASYNC_READ, - IO_ASYNC_WRITE, - IO_OPEN_IMAGE, - IO_CLOSE_IMAGE, -}; - - class PendingIO; - /** %Context through which an Action interacts with its environment. */ @@ -131,19 +97,14 @@ class Action { public: typedef boost::shared_ptr ptr; - Action(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors); - - virtual ~Action(); + virtual ~Action() { + } virtual void perform(ActionCtx &ctx) = 0; /// Returns the ID of the completion corresponding to this action. action_id_t pending_io_id() { - return m_id + 1; + return id() + 1; } // There's probably a better way to do this, but oh well. @@ -151,206 +112,172 @@ public: return false; } - action_id_t id() const { - return m_id; - } + virtual action_id_t id() const = 0; + virtual thread_id_t thread_id() const = 0; + virtual const action::Dependencies& predecessors() const = 0; + + virtual std::ostream& dump(std::ostream& o) const = 0; + + static ptr construct(const action::ActionEntry &action_entry); +}; - thread_id_t thread_id() const { - return m_thread_id; +template +class TypedAction : public Action { +public: + TypedAction(const ActionType &action) : m_action(action) { } - const std::vector& predecessors() const { - return m_predecessors; + virtual action_id_t id() const { + return m_action.id; } - /// Reads and constructs an action from the replay file. - static ptr read_from(Deser &d); + virtual thread_id_t thread_id() const { + return m_action.thread_id; + } -protected: - std::ostream& dump_action_fields(std::ostream& o) const; + virtual const action::Dependencies& predecessors() const { + return m_action.dependencies; + } -private: - friend std::ostream& operator<<(std::ostream&, const Action&); + virtual std::ostream& dump(std::ostream& o) const { + o << get_action_name() << ": "; + ceph::JSONFormatter formatter(false); + formatter.open_object_section(""); + m_action.dump(&formatter); + formatter.close_section(); + formatter.flush(o); + return o; + } - virtual std::ostream& dump(std::ostream& o) const = 0; +protected: + const ActionType m_action; - const action_id_t m_id; - const thread_id_t m_thread_id; - const int m_num_successors; - const int m_num_completion_successors; - const std::vector m_predecessors; + virtual const char *get_action_name() const = 0; }; /// Writes human-readable debug information about the action to the stream. /// @related Action std::ostream& operator<<(std::ostream& o, const Action& a); - -/** - Placeholder for partially-constructed actions. - Does nothing, and does not appear in the replay file. - */ -class DummyAction : public Action { +class StartThreadAction : public TypedAction { public: - DummyAction(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors) - : Action(id, thread_id, num_successors, num_completion_successors, predecessors) { + explicit StartThreadAction(const action::StartThreadAction &action) + : TypedAction(action) { } - void perform(ActionCtx &ctx) { + virtual bool is_start_thread() { + return true; } + virtual void perform(ActionCtx &ctx); -private: - std::ostream& dump(std::ostream& o) const; -}; - - -class StopThreadAction : public Action { -public: - explicit StopThreadAction(Action &src); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; +protected: + virtual const char *get_action_name() const { + return "StartThreadAction"; + } }; - -class AioReadAction : public Action { +class StopThreadAction : public TypedAction { public: - AioReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + explicit StopThreadAction(const action::StopThreadAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; +protected: + virtual const char *get_action_name() const { + return "StartThreadAction"; + } }; -class ReadAction : public Action { +class AioReadAction : public TypedAction { public: - ReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + AioReadAction(const action::AioReadAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; +protected: + virtual const char *get_action_name() const { + return "AioReadAction"; + } }; -class AioWriteAction : public Action { +class ReadAction : public TypedAction { public: - AioWriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + ReadAction(const action::ReadAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; +protected: + virtual const char *get_action_name() const { + return "ReadAction"; + } }; -class WriteAction : public Action { +class AioWriteAction : public TypedAction { public: - WriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + AioWriteAction(const action::AioWriteAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; +protected: + virtual const char *get_action_name() const { + return "AioWriteAction"; + } }; -class OpenImageAction : public Action { +class WriteAction : public TypedAction { public: - OpenImageAction(Action &src, - imagectx_id_t imagectx_id, - std::string name, - std::string snap_name, - bool readonly); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + WriteAction(const action::WriteAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; - std::string m_name; - std::string m_snap_name; - bool m_readonly; +protected: + virtual const char *get_action_name() const { + return "WriteAction"; + } }; -class CloseImageAction : public Action { +class OpenImageAction : public TypedAction { public: - CloseImageAction(Action &src, - imagectx_id_t imagectx_id); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); + OpenImageAction(const action::OpenImageAction &action) + : TypedAction(action) { + } -private: - std::ostream& dump(std::ostream& o) const; + virtual void perform(ActionCtx &ctx); - imagectx_id_t m_imagectx_id; +protected: + virtual const char *get_action_name() const { + return "OpenImageAction"; + } }; -class StartThreadAction : public Action { +class CloseImageAction : public TypedAction { public: - explicit StartThreadAction(Action &src); - - void perform(ActionCtx &ctx); - - bool is_start_thread(); + CloseImageAction(const action::CloseImageAction &action) + : TypedAction(action) { + } - static Action::ptr read_from(Action &src, Deser &d); + virtual void perform(ActionCtx &ctx); -private: - std::ostream& dump(std::ostream& o) const; +protected: + virtual const char *get_action_name() const { + return "CloseImageAction"; + } }; } diff --git a/ceph/src/rbd_replay/ios.cc b/ceph/src/rbd_replay/ios.cc index ccc560f8..7437bed8 100644 --- a/ceph/src/rbd_replay/ios.cc +++ b/ceph/src/rbd_replay/ios.cc @@ -16,41 +16,37 @@ // In other words, (a.id < b.id) == (a.timestamp < b.timestamp) for all IOs a and b. #include "ios.hpp" +#include "rbd_replay/ActionTypes.h" using namespace std; using namespace rbd_replay; -bool rbd_replay::compare_io_ptrs_by_start_time(IO::ptr p1, IO::ptr p2) { - return p1->start_time() < p2->start_time(); -} +namespace { -static uint64_t min_time(const map& s) { - if (s.empty()) { - return 0; - } - return s.begin()->second->start_time(); -} - -static uint64_t max_time(const map& s) { - if (s.empty()) { - return 0; - } - map::const_iterator itr(s.end()); - --itr; - return itr->second->start_time(); +bool compare_dependencies_by_start_time(const action::Dependency &lhs, + const action::Dependency &rhs) { + return lhs.time_delta < rhs.time_delta; } -void IO::add_dependencies(const io_set_t& deps) { - io_set_t base(m_dependencies); - for (io_set_t::const_iterator itr = deps.begin(); itr != deps.end(); ++itr) { - ptr dep(*itr); - for (io_set_t::const_iterator itr2 = dep->m_dependencies.begin(); itr2 != dep->m_dependencies.end(); ++itr2) { - base.insert(*itr2); +action::Dependencies convert_dependencies(uint64_t start_time, + const io_set_t &deps) { + action::Dependencies action_deps; + action_deps.reserve(deps.size()); + for (io_set_t::const_iterator it = deps.begin(); it != deps.end(); ++it) { + boost::shared_ptr io = *it; + uint64_t time_delta = 0; + if (start_time >= io->start_time()) { + time_delta = start_time - io->start_time(); } + action_deps.push_back(action::Dependency(io->ionum(), time_delta)); } - batch_unreachable_from(deps, base, &m_dependencies); + std::sort(action_deps.begin(), action_deps.end(), + compare_dependencies_by_start_time); + return action_deps; } +} // anonymous namespace + void IO::write_debug_base(ostream& out, string type) const { out << m_ionum << ": " << m_start_time / 1000000.0 << ": " << type << ", thread = " << m_thread_id << ", deps = {"; bool first = true; @@ -62,150 +58,40 @@ void IO::write_debug_base(ostream& out, string type) const { } out << (*itr)->m_ionum << ": " << m_start_time - (*itr)->m_start_time; } - out << "}, num_successors = " << m_num_successors << ", numCompletionSuccessors = " << num_completion_successors(); + out << "}"; } -void IO::write_to(Ser& out, io_type iotype) const { - out.write_uint8_t(iotype); - out.write_uint32_t(m_ionum); - out.write_uint64_t(m_thread_id); - out.write_uint32_t(m_num_successors); - out.write_uint32_t(num_completion_successors()); - out.write_uint32_t(m_dependencies.size()); - vector deps; - for (io_set_t::const_iterator itr = m_dependencies.begin(), end = m_dependencies.end(); itr != end; ++itr) { - deps.push_back(*itr); - } - sort(deps.begin(), deps.end(), compare_io_ptrs_by_start_time); - for (vector::const_iterator itr = deps.begin(), end = deps.end(); itr != end; ++itr) { - out.write_uint32_t((*itr)->m_ionum); - out.write_uint64_t(m_start_time - (*itr)->m_start_time); - } -} - -IO::ptr IO::create_completion(uint64_t start_time, thread_id_t thread_id) { - assert(!m_completion.lock()); - IO::ptr completion(new CompletionIO(m_ionum + 1, start_time, thread_id)); - m_completion = completion; - completion->m_dependencies.insert(shared_from_this()); - return completion; -} - - -// TODO: Add unit tests -// Anything in 'deps' which is not reachable from 'base' is added to 'unreachable' -void rbd_replay::batch_unreachable_from(const io_set_t& deps, const io_set_t& base, io_set_t* unreachable) { - if (deps.empty()) { - return; - } - - map searching_for; - for (io_set_t::const_iterator itr = deps.begin(); itr != deps.end(); ++itr) { - searching_for[(*itr)->ionum()] = *itr; - } - - map boundary; - for (io_set_t::const_iterator itr = base.begin(); itr != base.end(); ++itr) { - boundary[(*itr)->ionum()] = *itr; - } - - // The boundary horizon is the maximum timestamp of IOs in the boundary. - // This monotonically decreases, because dependencies (which are added to the set) - // have earlier timestamp than the dependent IOs (which were just removed from the set). - uint64_t boundary_horizon = max_time(boundary); - - for (io_map_t::iterator itr = searching_for.begin(); itr != searching_for.end(); ) { - if (boundary_horizon >= itr->second->start_time()) { - break; - } - unreachable->insert(itr->second); - searching_for.erase(itr++); - } - if (searching_for.empty()) { - return; - } - - // The searching horizon is the minimum timestamp of IOs in the searching set. - // This monotonically increases, because elements are only removed from the set. - uint64_t searching_horizon = min_time(searching_for); - - while (!boundary.empty()) { - // Take an IO from the end, which has the highest timestamp. - // This reduces the boundary horizon as early as possible, - // which means we can short cut as soon as possible. - map >::iterator b_itr(boundary.end()); - --b_itr; - boost::shared_ptr io(b_itr->second); - boundary.erase(b_itr); - - for (io_set_t::const_iterator itr = io->dependencies().begin(), end = io->dependencies().end(); itr != end; ++itr) { - IO::ptr dep(*itr); - assertf(dep->ionum() < io->ionum(), "IO: %d, dependency: %d", io->ionum(), dep->ionum()); - io_map_t::iterator p = searching_for.find(dep->ionum()); - if (p != searching_for.end()) { - searching_for.erase(p); - if (dep->start_time() == searching_horizon) { - searching_horizon = min_time(searching_for); - if (searching_horizon == 0) { - return; - } - } - } - boundary[dep->ionum()] = dep; - } - - boundary_horizon = max_time(boundary); - if (boundary_horizon != 0) { - // Anything we're searching for that has a timestamp greater than the - // boundary horizon will never be found, since the boundary horizon - // falls monotonically. - for (io_map_t::iterator itr = searching_for.begin(); itr != searching_for.end(); ) { - if (boundary_horizon >= itr->second->start_time()) { - break; - } - unreachable->insert(itr->second); - searching_for.erase(itr++); - } - searching_horizon = min_time(searching_for); - if (searching_horizon == 0) { - return; - } - } - } - - // Anything we're still searching for has not been found. - for (io_map_t::iterator itr = searching_for.begin(), end = searching_for.end(); itr != end; ++itr) { - unreachable->insert(itr->second); - } -} - ostream& operator<<(ostream& out, IO::ptr io) { io->write_debug(out); return out; } -void StartThreadIO::write_to(Ser& out) const { - IO::write_to(out, IO_START_THREAD); +void StartThreadIO::encode(bufferlist &bl) const { + action::Action action((action::StartThreadAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies())))); + ::encode(action, bl); } void StartThreadIO::write_debug(std::ostream& out) const { write_debug_base(out, "start thread"); } -void StopThreadIO::write_to(Ser& out) const { - IO::write_to(out, IO_STOP_THREAD); +void StopThreadIO::encode(bufferlist &bl) const { + action::Action action((action::StopThreadAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies())))); + ::encode(action, bl); } void StopThreadIO::write_debug(std::ostream& out) const { write_debug_base(out, "stop thread"); } -void ReadIO::write_to(Ser& out) const { - IO::write_to(out, IO_READ); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); +void ReadIO::encode(bufferlist &bl) const { + action::Action action((action::ReadAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx, m_offset, m_length))); + ::encode(action, bl); } void ReadIO::write_debug(std::ostream& out) const { @@ -213,11 +99,11 @@ void ReadIO::write_debug(std::ostream& out) const { out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; } -void WriteIO::write_to(Ser& out) const { - IO::write_to(out, IO_WRITE); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); +void WriteIO::encode(bufferlist &bl) const { + action::Action action((action::WriteAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx, m_offset, m_length))); + ::encode(action, bl); } void WriteIO::write_debug(std::ostream& out) const { @@ -225,11 +111,11 @@ void WriteIO::write_debug(std::ostream& out) const { out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; } -void AioReadIO::write_to(Ser& out) const { - IO::write_to(out, IO_ASYNC_READ); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); +void AioReadIO::encode(bufferlist &bl) const { + action::Action action((action::AioReadAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx, m_offset, m_length))); + ::encode(action, bl); } void AioReadIO::write_debug(std::ostream& out) const { @@ -237,11 +123,11 @@ void AioReadIO::write_debug(std::ostream& out) const { out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; } -void AioWriteIO::write_to(Ser& out) const { - IO::write_to(out, IO_ASYNC_WRITE); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); +void AioWriteIO::encode(bufferlist &bl) const { + action::Action action((action::AioWriteAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx, m_offset, m_length))); + ::encode(action, bl); } void AioWriteIO::write_debug(std::ostream& out) const { @@ -249,12 +135,11 @@ void AioWriteIO::write_debug(std::ostream& out) const { out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; } -void OpenImageIO::write_to(Ser& out) const { - IO::write_to(out, IO_OPEN_IMAGE); - out.write_uint64_t(m_imagectx); - out.write_string(m_name); - out.write_string(m_snap_name); - out.write_bool(m_readonly); +void OpenImageIO::encode(bufferlist &bl) const { + action::Action action((action::OpenImageAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx, m_name, m_snap_name, m_readonly))); + ::encode(action, bl); } void OpenImageIO::write_debug(std::ostream& out) const { @@ -262,9 +147,11 @@ void OpenImageIO::write_debug(std::ostream& out) const { out << ", imagectx=" << m_imagectx << ", name='" << m_name << "', snap_name='" << m_snap_name << "', readonly=" << m_readonly; } -void CloseImageIO::write_to(Ser& out) const { - IO::write_to(out, IO_CLOSE_IMAGE); - out.write_uint64_t(m_imagectx); +void CloseImageIO::encode(bufferlist &bl) const { + action::Action action((action::CloseImageAction( + ionum(), thread_id(), convert_dependencies(start_time(), dependencies()), + m_imagectx))); + ::encode(action, bl); } void CloseImageIO::write_debug(std::ostream& out) const { diff --git a/ceph/src/rbd_replay/ios.hpp b/ceph/src/rbd_replay/ios.hpp index 5bebcd71..17559331 100644 --- a/ceph/src/rbd_replay/ios.hpp +++ b/ceph/src/rbd_replay/ios.hpp @@ -18,13 +18,14 @@ // This code assumes that IO IDs and timestamps are related monotonically. // In other words, (a.id < b.id) == (a.timestamp < b.timestamp) for all IOs a and b. +#include "include/buffer.h" #include #include #include #include #include +#include #include "actions.hpp" -#include "Ser.hpp" namespace rbd_replay { @@ -35,23 +36,6 @@ typedef std::set > io_set_t; typedef std::map > io_map_t; -/** - Calculates reachability of IOs in the dependency graph. - All IOs in \c deps which are not transitive dependencies of anything in \c base - is added to \c unreachable. - In other words, for every IO \c x in \c deps: if nothing in \c base depends on \c x, - and nothing in \c base has dependencies that depend on \c x, etc., - then \c x is added to \c unreachable. - Note that \c unreachable is \em not cleared, so the same set can be used across multiple - calls to collect dependencies. - @param[in] deps IOs to search for - @param[in] base root set of IOs to search from - @param[out] unreachable collects unreachable IOs - @related IO -*/ -void batch_unreachable_from(const io_set_t& deps, const io_set_t& base, io_set_t* unreachable); - - /** Used by rbd-replay-prep for processing the raw trace. Corresponds to the Action class, except that Actions are executed by rbd-replay, @@ -60,26 +44,22 @@ void batch_unreachable_from(const io_set_t& deps, const io_set_t& base, io_set_t class IO : public boost::enable_shared_from_this { public: typedef boost::shared_ptr ptr; - - typedef boost::weak_ptr weak_ptr; + typedef std::vector ptrs; /** @param ionum ID of this %IO @param start_time time the %IO started, in nanoseconds @param thread_id ID of the thread that issued the %IO - @param prev previously issued %IO on the same thread. NULL for the first %IO on a thread. */ IO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - ptr prev) + const io_set_t& deps) : m_ionum(ionum), m_start_time(start_time), - m_dependencies(io_set_t()), - m_completion(weak_ptr()), - m_num_successors(0), + m_dependencies(deps), m_thread_id(thread_id), - m_prev(prev) { + m_completed(false) { } virtual ~IO() { @@ -97,21 +77,7 @@ public: return m_dependencies; } - void add_dependencies(const io_set_t& deps); - - /** - Returns the completion's number of successors, or 0 if the %IO does not have a completion. - */ - uint64_t num_completion_successors() const { - ptr c(m_completion.lock()); - return c ? c->m_num_successors : 0; - } - - virtual void write_to(Ser& out) const = 0; - - virtual bool is_completion() const { - return false; - } + virtual void encode(bufferlist &bl) const = 0; void set_ionum(action_id_t ionum) { m_ionum = ionum; @@ -121,40 +87,21 @@ public: return m_ionum; } - ptr prev() const { - return m_prev; - } - - void set_num_successors(uint32_t n) { - m_num_successors = n; - } - - uint32_t num_successors() const { - return m_num_successors; + thread_id_t thread_id() const { + return m_thread_id; } virtual void write_debug(std::ostream& out) const = 0; - /** - Creates the completion for this IO. - This may only be called once per IO, and may not be called on completion IOs. - The completion must be stored, or else m_completion will expire. - */ - ptr create_completion(uint64_t start_time, thread_id_t thread_id); - protected: - void write_to(Ser& out, io_type iotype) const; - void write_debug_base(std::ostream& out, std::string iotype) const; private: action_id_t m_ionum; uint64_t m_start_time; io_set_t m_dependencies; - boost::weak_ptr m_completion; - uint32_t m_num_successors; thread_id_t m_thread_id; - ptr m_prev; + bool m_completed; }; /// Used for dumping debug info. @@ -167,10 +114,10 @@ public: StartThreadIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { + : IO(ionum, start_time, thread_id, io_set_t()) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; }; @@ -179,11 +126,12 @@ class StopThreadIO : public IO { public: StopThreadIO(action_id_t ionum, uint64_t start_time, - thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { + thread_id_t thread_id, + const io_set_t& deps) + : IO(ionum, start_time, thread_id, deps) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; }; @@ -193,17 +141,17 @@ public: ReadIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx, uint64_t offset, uint64_t length) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx), m_offset(offset), m_length(length) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; @@ -218,17 +166,17 @@ public: WriteIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx, uint64_t offset, uint64_t length) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx), m_offset(offset), m_length(length) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; @@ -243,17 +191,17 @@ public: AioReadIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx, uint64_t offset, uint64_t length) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx), m_offset(offset), m_length(length) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; @@ -268,17 +216,17 @@ public: AioWriteIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx, uint64_t offset, uint64_t length) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx), m_offset(offset), m_length(length) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; void write_debug(std::ostream& out) const; @@ -293,19 +241,19 @@ public: OpenImageIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx, const std::string& name, const std::string& snap_name, bool readonly) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx), m_name(name), m_snap_name(snap_name), m_readonly(readonly) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; imagectx_id_t imagectx() const { return m_imagectx; @@ -325,13 +273,13 @@ public: CloseImageIO(action_id_t ionum, uint64_t start_time, thread_id_t thread_id, - IO::ptr prev, + const io_set_t& deps, imagectx_id_t imagectx) - : IO(ionum, start_time, thread_id, prev), + : IO(ionum, start_time, thread_id, deps), m_imagectx(imagectx) { } - void write_to(Ser& out) const; + virtual void encode(bufferlist &bl) const; imagectx_id_t imagectx() const { return m_imagectx; @@ -343,29 +291,6 @@ private: imagectx_id_t m_imagectx; }; -class CompletionIO : public IO { -public: - CompletionIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { - } - - void write_to(Ser& out) const { - } - - bool is_completion() const { - return true; - } - - void write_debug(std::ostream& out) const { - write_debug_base(out, "completion"); - } -}; - -/// @related IO -bool compare_io_ptrs_by_start_time(IO::ptr p1, IO::ptr p2); - } #endif diff --git a/ceph/src/rbd_replay/rbd-replay-prep.cc b/ceph/src/rbd_replay/rbd-replay-prep.cc index 8a602e0a..61cff592 100644 --- a/ceph/src/rbd_replay/rbd-replay-prep.cc +++ b/ceph/src/rbd_replay/rbd-replay-prep.cc @@ -15,19 +15,30 @@ // This code assumes that IO IDs and timestamps are related monotonically. // In other words, (a.id < b.id) == (a.timestamp < b.timestamp) for all IOs a and b. +#include "common/errno.h" +#include "rbd_replay/ActionTypes.h" #include #include #include +#include +#include #include #include #include #include +#include #include +#include #include "ios.hpp" using namespace std; using namespace rbd_replay; +#define ASSERT_EXIT(check, str) \ + if (!(check)) { \ + std::cerr << str << std::endl; \ + exit(1); \ + } class Thread { public: @@ -37,7 +48,6 @@ public: uint64_t window) : m_id(id), m_window(window), - m_pending_io(IO::ptr()), m_latest_io(IO::ptr()), m_max_ts(0) { } @@ -52,35 +62,26 @@ public: return m_max_ts; } - void issued_io(IO::ptr io, const map& threads) { + void issued_io(IO::ptr io, std::set *latest_ios) { assert(io); - io_set_t latest_ios; - for (map::const_iterator itr = threads.begin(), end = threads.end(); itr != end; ++itr) { - assertf(itr->second, "id = %ld", itr->first); - ptr thread(itr->second); - if (thread->m_latest_io) { - if (thread->m_latest_io->start_time() + m_window > io->start_time()) { - latest_ios.insert(thread->m_latest_io); - } - } + if (m_latest_io.get() != NULL) { + latest_ios->erase(m_latest_io); } - io->add_dependencies(latest_ios); m_latest_io = io; - m_pending_io = io; + latest_ios->insert(io); } thread_id_t id() const { return m_id; } - IO::ptr pending_io() { - return m_pending_io; + IO::ptr latest_io() { + return m_latest_io; } private: thread_id_t m_id; uint64_t m_window; - IO::ptr m_pending_io; IO::ptr m_latest_io; uint64_t m_max_ts; }; @@ -119,7 +120,10 @@ private: }; static void usage(string prog) { - cout << "Usage: " << prog << " [ --window ] [ --anonymize ] " << endl; + std::stringstream str; + str << "Usage: " << prog << " "; + std::cout << str.str() << "[ --window ] [ --anonymize ] [ --verbose ]" << std::endl + << std::string(str.str().size(), ' ') << " " << endl; } __attribute__((noreturn)) static void usage_exit(string prog, string msg) { @@ -132,14 +136,9 @@ class Processor { public: Processor() : m_window(1000000000ULL), // 1 billion nanoseconds, i.e., one second - m_threads(), m_io_count(0), - m_recent_completions(io_set_t()), - m_open_images(set()), - m_ios(vector()), - m_pending_ios(map()), m_anonymize(false), - m_anonymized_images(map()) { + m_verbose(false) { } void run(vector args) { @@ -155,11 +154,11 @@ public: } m_window = (uint64_t)(1e9 * atof(args[++i].c_str())); } else if (arg.find("--window=") == 0) { - // TODO: test - printf("Arg: '%s'\n", arg.c_str() + sizeof("--window=")); m_window = (uint64_t)(1e9 * atof(arg.c_str() + sizeof("--window="))); } else if (arg == "--anonymize") { m_anonymize = true; + } else if (arg == "--verbose") { + m_verbose = true; } else if (arg == "-h" || arg == "--help") { usage(args[0]); exit(0); @@ -186,10 +185,11 @@ public: NULL, // packet_seek NULL, // stream_list NULL); // metadata - assertf(trace_handle >= 0, "trace_handle = %d", trace_handle); + ASSERT_EXIT(trace_handle >= 0, "Error loading trace file"); uint64_t start_time_ns = bt_trace_handle_get_timestamp_begin(ctx, trace_handle, BT_CLOCK_REAL); - assert(start_time_ns != -1ULL); + ASSERT_EXIT(start_time_ns != -1ULL, + "Error extracting creation time from trace"); struct bt_ctf_iter *itr = bt_ctf_iter_create(ctx, NULL, // begin_pos @@ -198,6 +198,15 @@ public: struct bt_iter *bt_itr = bt_ctf_get_iter(itr); + int fd = open(output_file_name.c_str(), O_WRONLY | O_CREAT | O_EXCL, 0644); + ASSERT_EXIT(fd >= 0, "Error opening output file " << output_file_name << + ": " << cpp_strerror(errno)); + BOOST_SCOPE_EXIT( (fd) ) { + close(fd); + } BOOST_SCOPE_EXIT_END; + + write_banner(fd); + uint64_t trace_start = 0; bool first = true; while(true) { @@ -206,7 +215,7 @@ public: break; } uint64_t ts = bt_ctf_get_timestamp(evt); - assert(ts != -1ULL); + ASSERT_EXIT(ts != -1ULL, "Error extracting event timestamp"); if (first) { trace_start = ts; @@ -215,100 +224,76 @@ public: ts -= trace_start; ts += 4; // This is so we have room to insert two events (thread start and open image) at unique timestamps before whatever the first event is. - process_event(ts, evt); + IO::ptrs ptrs; + process_event(ts, evt, &ptrs); + serialize_events(fd, ptrs); int r = bt_iter_next(bt_itr); - assert(!r); + ASSERT_EXIT(r == 0, "Error advancing event iterator"); } bt_ctf_iter_destroy(itr); - insert_thread_stops(); + insert_thread_stops(fd); + } - for (vector::const_iterator itr = m_ios.begin(); itr != m_ios.end(); ++itr) { - IO::ptr io(*itr); - IO::ptr prev(io->prev()); - if (prev) { - // TODO: explain when prev is and isn't a dep - io_set_t::iterator depitr = io->dependencies().find(prev); - if (depitr != io->dependencies().end()) { - io->dependencies().erase(depitr); - } - } - if (io->is_completion()) { - io->dependencies().clear(); - } - for (io_set_t::const_iterator depitr = io->dependencies().begin(); depitr != io->dependencies().end(); ++depitr) { - IO::ptr dep(*depitr); - dep->set_num_successors(dep->num_successors() + 1); - } - } +private: + void write_banner(int fd) { + bufferlist bl; + bl.append(rbd_replay::action::BANNER); + int r = bl.write_fd(fd); + ASSERT_EXIT(r >= 0, "Error writing to output file: " << cpp_strerror(r)); + } + + void serialize_events(int fd, const IO::ptrs &ptrs) { + for (IO::ptrs::const_iterator it = ptrs.begin(); it != ptrs.end(); ++it) { + IO::ptr io(*it); + + bufferlist bl; + io->encode(bl); - ofstream myfile; - myfile.open(output_file_name.c_str(), ios::out | ios::binary); - Ser ser(myfile); - for (vector::iterator itr = m_ios.begin(); itr != m_ios.end(); ++itr) { - (*itr)->write_to(ser); + int r = bl.write_fd(fd); + ASSERT_EXIT(r >= 0, "Error writing to output file: " << cpp_strerror(r)); + + if (m_verbose) { + io->write_debug(std::cout); + std::cout << std::endl; + } } - myfile.close(); } -private: - void insert_thread_stops() { - sort(m_ios.begin(), m_ios.end(), compare_io_ptrs_by_start_time); - for (map::const_iterator itr = m_threads.begin(), end = m_threads.end(); itr != end; ++itr) { + void insert_thread_stops(int fd) { + IO::ptrs ios; + for (map::const_iterator itr = m_threads.begin(), + end = m_threads.end(); itr != end; ++itr) { Thread::ptr thread(itr->second); - const action_id_t none = -1; - action_id_t ionum = none; - action_id_t maxIONum = 0; // only valid if ionum is none - for (vector::const_iterator itr2 = m_ios.begin(); itr2 != m_ios.end(); ++itr2) { - IO::ptr io(*itr2); - if (io->ionum() > maxIONum) { - maxIONum = io->ionum(); - } - if (io->start_time() > thread->max_ts()) { - ionum = io->ionum(); - if (ionum & 1) { - ionum++; - } - break; - } - } - if (ionum == none) { - if (maxIONum & 1) { - maxIONum--; - } - ionum = maxIONum + 2; - } - for (vector::const_iterator itr2 = m_ios.begin(); itr2 != m_ios.end(); ++itr2) { - IO::ptr io(*itr2); - if (io->ionum() >= ionum) { - io->set_ionum(io->ionum() + 2); - } - } - IO::ptr stop_thread_io(new StopThreadIO(ionum, thread->max_ts(), thread->id())); - vector::iterator insertion_point = lower_bound(m_ios.begin(), m_ios.end(), stop_thread_io, compare_io_ptrs_by_start_time); - m_ios.insert(insertion_point, stop_thread_io); + ios.push_back(IO::ptr(new StopThreadIO(next_id(), thread->max_ts(), + thread->id(), + m_recent_completions))); } + serialize_events(fd, ios); } - void process_event(uint64_t ts, struct bt_ctf_event *evt) { + void process_event(uint64_t ts, struct bt_ctf_event *evt, + IO::ptrs *ios) { const char *event_name = bt_ctf_event_name(evt); const struct bt_definition *scope_context = bt_ctf_get_top_level_scope(evt, BT_STREAM_EVENT_CONTEXT); - assert(scope_context); + ASSERT_EXIT(scope_context != NULL, "Error retrieving event context"); + const struct bt_definition *scope_fields = bt_ctf_get_top_level_scope(evt, BT_EVENT_FIELDS); - assert(scope_fields); + ASSERT_EXIT(scope_fields != NULL, "Error retrieving event fields"); const struct bt_definition *pthread_id_field = bt_ctf_get_field(evt, scope_context, "pthread_id"); - assert(pthread_id_field); + ASSERT_EXIT(pthread_id_field != NULL, "Error retrieving thread id"); + thread_id_t threadID = bt_ctf_get_uint64(pthread_id_field); Thread::ptr &thread(m_threads[threadID]); if (!thread) { thread.reset(new Thread(threadID, m_window)); IO::ptr io(new StartThreadIO(next_id(), ts - 4, threadID)); - m_ios.push_back(io); + ios->push_back(io); } thread->insert_ts(ts); @@ -322,28 +307,34 @@ private: const char* string(const char* name) { const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); + ASSERT_EXIT(field != NULL, "Error retrieving field '" << name << "'"); + const char* c = bt_ctf_get_string(field); int err = bt_ctf_field_get_error(); - assertf(c && err == 0, "field name = '%s', err = %d", name, err); + ASSERT_EXIT(c && err == 0, "Error retrieving field value '" << name << + "': error=" << err); return c; } int64_t int64(const char* name) { const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); + ASSERT_EXIT(field != NULL, "Error retrieving field '" << name << "'"); + int64_t val = bt_ctf_get_int64(field); int err = bt_ctf_field_get_error(); - assertf(err == 0, "field name = '%s', err = %d", name, err); + ASSERT_EXIT(err == 0, "Error retrieving field value '" << name << + "': error=" << err); return val; } uint64_t uint64(const char* name) { const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); + ASSERT_EXIT(field != NULL, "Error retrieving field '" << name << "'"); + uint64_t val = bt_ctf_get_uint64(field); int err = bt_ctf_field_get_error(); - assertf(err == 0, "field name = '%s', err = %d", name, err); + ASSERT_EXIT(err == 0, "Error retrieving field value '" << name << + "': error=" << err); return val; } @@ -352,72 +343,69 @@ private: const struct bt_definition *m_scope; } fields(evt, scope_fields); - if (strcmp(event_name, "librbd:read_enter") == 0) { + if (strcmp(event_name, "librbd:open_image_enter") == 0) { string name(fields.string("name")); string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - uint64_t offset = fields.uint64("offset"); - uint64_t length = fields.uint64("length"); - require_image(ts, thread, imagectx, name, snap_name, readonly); - action_id_t ionum = next_id(); - IO::ptr io(new ReadIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - } else if (strcmp(event_name, "librbd:open_image_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); + bool readonly = fields.uint64("read_only"); imagectx_id_t imagectx = fields.uint64("imagectx"); action_id_t ionum = next_id(); pair aname(map_image_snap(name, snap_name)); - IO::ptr io(new OpenImageIO(ionum, ts, threadID, thread->pending_io(), imagectx, aname.first, aname.second, readonly)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); + IO::ptr io(new OpenImageIO(ionum, ts, threadID, m_recent_completions, + imagectx, aname.first, aname.second, + readonly)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(io); } else if (strcmp(event_name, "librbd:open_image_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - boost::shared_ptr io(boost::dynamic_pointer_cast(thread->pending_io())); + completed(thread->latest_io()); + boost::shared_ptr io(boost::dynamic_pointer_cast(thread->latest_io())); assert(io); m_open_images.insert(io->imagectx()); } else if (strcmp(event_name, "librbd:close_image_enter") == 0) { imagectx_id_t imagectx = fields.uint64("imagectx"); action_id_t ionum = next_id(); - IO::ptr io(new CloseImageIO(ionum, ts, threadID, thread->pending_io(), imagectx)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(thread->pending_io()); + IO::ptr io(new CloseImageIO(ionum, ts, threadID, m_recent_completions, + imagectx)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(thread->latest_io()); } else if (strcmp(event_name, "librbd:close_image_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - boost::shared_ptr io(boost::dynamic_pointer_cast(thread->pending_io())); + completed(thread->latest_io()); + boost::shared_ptr io(boost::dynamic_pointer_cast(thread->latest_io())); assert(io); m_open_images.erase(io->imagectx()); + } else if (strcmp(event_name, "librbd:read_enter") == 0 || + strcmp(event_name, "librbd:read2_enter") == 0) { + string name(fields.string("name")); + string snap_name(fields.string("snap_name")); + bool readonly = fields.int64("read_only"); + imagectx_id_t imagectx = fields.uint64("imagectx"); + uint64_t offset = fields.uint64("offset"); + uint64_t length = fields.uint64("length"); + require_image(ts, thread, imagectx, name, snap_name, readonly, ios); + action_id_t ionum = next_id(); + IO::ptr io(new ReadIO(ionum, ts, threadID, m_recent_completions, imagectx, + offset, length)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(io); } else if (strcmp(event_name, "librbd:read_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - } else if (strcmp(event_name, "librbd:write_enter") == 0) { + completed(thread->latest_io()); + } else if (strcmp(event_name, "librbd:write_enter") == 0 || + strcmp(event_name, "librbd:write2_enter") == 0) { string name(fields.string("name")); string snap_name(fields.string("snap_name")); bool readonly = fields.int64("read_only"); uint64_t offset = fields.uint64("off"); uint64_t length = fields.uint64("buf_len"); imagectx_id_t imagectx = fields.uint64("imagectx"); - require_image(ts, thread, imagectx, name, snap_name, readonly); + require_image(ts, thread, imagectx, name, snap_name, readonly, ios); action_id_t ionum = next_id(); - IO::ptr io(new WriteIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); + IO::ptr io(new WriteIO(ionum, ts, threadID, m_recent_completions, + imagectx, offset, length)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(io); } else if (strcmp(event_name, "librbd:write_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - } else if (strcmp(event_name, "librbd:aio_read_enter") == 0) { + completed(thread->latest_io()); + } else if (strcmp(event_name, "librbd:aio_read_enter") == 0 || + strcmp(event_name, "librbd:aio_read2_enter") == 0) { string name(fields.string("name")); string snap_name(fields.string("snap_name")); bool readonly = fields.int64("read_only"); @@ -425,14 +413,15 @@ private: imagectx_id_t imagectx = fields.uint64("imagectx"); uint64_t offset = fields.uint64("offset"); uint64_t length = fields.uint64("length"); - require_image(ts, thread, imagectx, name, snap_name, readonly); + require_image(ts, thread, imagectx, name, snap_name, readonly, ios); action_id_t ionum = next_id(); - IO::ptr io(new AioReadIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - m_ios.push_back(io); - thread->issued_io(io, m_threads); + IO::ptr io(new AioReadIO(ionum, ts, threadID, m_recent_completions, + imagectx, offset, length)); + ios->push_back(io); + thread->issued_io(io, &m_latest_ios); m_pending_ios[completion] = io; - } else if (strcmp(event_name, "librbd:aio_write_enter") == 0) { + } else if (strcmp(event_name, "librbd:aio_write_enter") == 0 || + strcmp(event_name, "librbd:aio_write2_enter") == 0) { string name(fields.string("name")); string snap_name(fields.string("snap_name")); bool readonly = fields.int64("read_only"); @@ -440,12 +429,12 @@ private: uint64_t length = fields.uint64("len"); uint64_t completion = fields.uint64("completion"); imagectx_id_t imagectx = fields.uint64("imagectx"); - require_image(ts, thread, imagectx, name, snap_name, readonly); + require_image(ts, thread, imagectx, name, snap_name, readonly, ios); action_id_t ionum = next_id(); - IO::ptr io(new AioWriteIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); + IO::ptr io(new AioWriteIO(ionum, ts, threadID, m_recent_completions, + imagectx, offset, length)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(io); m_pending_ios[completion] = io; } else if (strcmp(event_name, "librbd:aio_complete_enter") == 0) { uint64_t completion = fields.uint64("completion"); @@ -453,13 +442,9 @@ private: if (itr != m_pending_ios.end()) { IO::ptr completedIO(itr->second); m_pending_ios.erase(itr); - IO::ptr completionIO(completedIO->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); + completed(completedIO); } } - - // cout << ts << "\t" << event_name << "\tthreadID = " << threadID << endl; } action_id_t next_id() { @@ -469,9 +454,14 @@ private: } void completed(IO::ptr io) { - uint64_t limit = io->start_time() < m_window ? 0 : io->start_time() - m_window; - for (io_set_t::iterator itr = m_recent_completions.begin(); itr != m_recent_completions.end(); ) { - if ((*itr)->start_time() < limit) { + uint64_t limit = (io->start_time() < m_window ? + 0 : io->start_time() - m_window); + for (io_set_t::iterator itr = m_recent_completions.begin(); + itr != m_recent_completions.end(); ) { + IO::ptr recent_comp(*itr); + if ((recent_comp->start_time() < limit || + io->dependencies().count(recent_comp) != 0) && + m_latest_ios.count(recent_comp) == 0) { m_recent_completions.erase(itr++); } else { ++itr; @@ -496,20 +486,20 @@ private: imagectx_id_t imagectx, const string& name, const string& snap_name, - bool readonly) { + bool readonly, + IO::ptrs *ios) { assert(thread); if (m_open_images.count(imagectx) > 0) { return; } action_id_t ionum = next_id(); pair aname(map_image_snap(name, snap_name)); - IO::ptr io(new OpenImageIO(ionum, ts - 2, thread->id(), thread->pending_io(), imagectx, aname.first, aname.second, readonly)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - IO::ptr completionIO(io->create_completion(ts - 1, thread->id())); - m_ios.push_back(completionIO); - completed(completionIO); + IO::ptr io(new OpenImageIO(ionum, ts - 2, thread->id(), + m_recent_completions, imagectx, aname.first, + aname.second, readonly)); + thread->issued_io(io, &m_latest_ios); + ios->push_back(io); + completed(io); m_open_images.insert(imagectx); } @@ -518,13 +508,15 @@ private: uint32_t m_io_count; io_set_t m_recent_completions; set m_open_images; - vector m_ios; // keyed by completion map m_pending_ios; + std::set m_latest_ios; bool m_anonymize; map m_anonymized_images; + + bool m_verbose; }; int main(int argc, char** argv) { diff --git a/ceph/src/rgw/logrotate.conf b/ceph/src/rgw/logrotate.conf index 7e527e85..6cdfd13c 100644 --- a/ceph/src/rgw/logrotate.conf +++ b/ceph/src/rgw/logrotate.conf @@ -4,10 +4,10 @@ compress sharedscripts postrotate - if which invoke-rc.d > /dev/null 2>&1 && [ -x `which invoke-rc.d` ]; then - invoke-rc.d radosgw reload >/dev/null - elif which service > /dev/null 2>&1 && [ -x `which service` ]; then + if which service > /dev/null 2>&1 && [ -x `which service` ]; then service ceph-radosgw reload >/dev/null + elif which invoke-rc.d > /dev/null 2>&1 && [ -x `which invoke-rc.d` ]; then + invoke-rc.d radosgw reload >/dev/null fi # Possibly reload twice, but depending on ceph.conf the reload above may be a no-op if which initctl > /dev/null 2>&1 && [ -x `which initctl` ]; then diff --git a/ceph/src/rgw/rgw_admin.cc b/ceph/src/rgw/rgw_admin.cc index 45cb2e19..2ba77e33 100644 --- a/ceph/src/rgw/rgw_admin.cc +++ b/ceph/src/rgw/rgw_admin.cc @@ -112,6 +112,8 @@ void _usage() cerr << " replicalog get get replica metadata log entry\n"; cerr << " replicalog update update replica metadata log entry\n"; cerr << " replicalog delete delete replica metadata log entry\n"; + cout << " orphans find init and run search for leaked rados objects\n"; + cout << " orphans finish clean up search for leaked rados objects\n"; cerr << "options:\n"; cerr << " --uid= user id\n"; cerr << " --subuser= subuser name\n"; @@ -174,6 +176,9 @@ void _usage() cerr << " --max-objects specify max objects (negative value to disable)\n"; cerr << " --max-size specify max size (in bytes, negative value to disable)\n"; cerr << " --quota-scope scope of quota (bucket, user)\n"; + cout << "\nOrphans search options:\n"; + cout << " --pool data pool to scan for leaked rados objects in\n"; + cout << " --num-shards num of shards to use for keeping the temporary scan info\n"; cerr << "\n"; generic_client_usage(); } diff --git a/ceph/src/rgw/rgw_civetweb.cc b/ceph/src/rgw/rgw_civetweb.cc index 81e504c5..5c075f98 100644 --- a/ceph/src/rgw/rgw_civetweb.cc +++ b/ceph/src/rgw/rgw_civetweb.cc @@ -127,6 +127,13 @@ void RGWMongoose::init_env(CephContext *cct) char port_buf[16]; snprintf(port_buf, sizeof(port_buf), "%d", port); env.set("SERVER_PORT", port_buf); + + if (info->is_ssl) { + if (port == 0) { + strcpy(port_buf,"443"); + } + env.set("SERVER_PORT_SECURE", port_buf); + } } int RGWMongoose::send_status(const char *status, const char *status_name) diff --git a/ceph/src/rgw/rgw_common.h b/ceph/src/rgw/rgw_common.h index 5b4e39b0..d05e3167 100644 --- a/ceph/src/rgw/rgw_common.h +++ b/ceph/src/rgw/rgw_common.h @@ -80,7 +80,6 @@ using ceph::crypto::MD5; #define RGW_BUCKETS_OBJ_SUFFIX ".buckets" #define RGW_MAX_PENDING_CHUNKS 16 -#define RGW_MAX_PUT_SIZE (5ULL*1024*1024*1024) #define RGW_MIN_MULTIPART_SIZE (5ULL*1024*1024) #define RGW_FORMAT_PLAIN 0 diff --git a/ceph/src/rgw/rgw_op.cc b/ceph/src/rgw/rgw_op.cc index 4301bdde..cd8785f1 100644 --- a/ceph/src/rgw/rgw_op.cc +++ b/ceph/src/rgw/rgw_op.cc @@ -808,8 +808,13 @@ int RGWGetObj::handle_user_manifest(const char *prefix) if (pos < 0) return -EINVAL; - string bucket_name = prefix_str.substr(0, pos); - string obj_prefix = prefix_str.substr(pos + 1); + string bucket_name_raw, bucket_name; + bucket_name_raw = prefix_str.substr(0, pos); + url_decode(bucket_name_raw, bucket_name); + + string obj_prefix_raw, obj_prefix; + obj_prefix_raw = prefix_str.substr(pos + 1); + url_decode(obj_prefix_raw, obj_prefix); rgw_bucket bucket; @@ -1059,7 +1064,7 @@ void RGWStatAccount::execute() do { RGWUserBuckets buckets; - ret = rgw_read_user_buckets(store, s->user.user_id, buckets, marker, max_buckets, true); + ret = rgw_read_user_buckets(store, s->user.user_id, buckets, marker, max_buckets, false); if (ret < 0) { /* hmm.. something wrong here.. the user was authenticated, so it should exist */ @@ -2020,6 +2025,7 @@ void RGWPostObj::execute() goto done; } + processor->complete_hash(&hash); hash.Final(m); buf_to_hex(m, CEPH_CRYPTO_MD5_DIGESTSIZE, calc_md5); @@ -2562,8 +2568,17 @@ void RGWPutACLs::execute() new_policy.encode(bl); obj = rgw_obj(s->bucket, s->object); map attrs; - attrs[RGW_ATTR_ACL] = bl; + store->set_atomic(s->obj_ctx, obj); + + if (!s->object.empty()) { + ret = get_obj_attrs(store, s, obj, attrs); + if (ret < 0) + return; + } + + attrs[RGW_ATTR_ACL] = bl; + if (!s->object.empty()) { ret = store->set_attrs(s->obj_ctx, obj, attrs, NULL, ptracker); } else { diff --git a/ceph/src/rgw/rgw_op.h b/ceph/src/rgw/rgw_op.h index 0726fc3d..c4a64aec 100644 --- a/ceph/src/rgw/rgw_op.h +++ b/ceph/src/rgw/rgw_op.h @@ -243,6 +243,7 @@ protected: rgw_obj_key next_marker; string max_keys; string delimiter; + string encoding_type; bool list_versions; int max; int ret; diff --git a/ceph/src/rgw/rgw_orphan.cc b/ceph/src/rgw/rgw_orphan.cc index 2818d79f..f59e1f75 100644 --- a/ceph/src/rgw/rgw_orphan.cc +++ b/ceph/src/rgw/rgw_orphan.cc @@ -165,17 +165,13 @@ int RGWOrphanSearch::init(const string& job_name, RGWOrphanSearchInfo *info) { return r; } - uint64_t num_shards = (info->num_shards ? info->num_shards : DEFAULT_NUM_SHARDS); if (r == 0) { - if (num_shards != state.info.num_shards) { - return -EINVAL; - } search_info = state.info; search_stage = state.stage; - } else { /* r == -ENOENT */ + } else if (info) { /* r == -ENOENT, initiate a new job if info was provided */ search_info = *info; search_info.job_name = job_name; - search_info.num_shards = num_shards; + search_info.num_shards = (info->num_shards ? info->num_shards : DEFAULT_NUM_SHARDS); search_info.start_time = ceph_clock_now(store->ctx()); search_stage = RGWOrphanSearchStage(ORPHAN_SEARCH_STAGE_INIT); @@ -184,6 +180,9 @@ int RGWOrphanSearch::init(const string& job_name, RGWOrphanSearchInfo *info) { lderr(store->ctx()) << "ERROR: failed to write state ret=" << r << dendl; return r; } + } else { + lderr(store->ctx()) << "ERROR: job not found" << dendl; + return r; } index_objs_prefix = RGW_ORPHAN_INDEX_PREFIX + string("."); @@ -277,9 +276,28 @@ int RGWOrphanSearch::build_all_oids_index() string oid = i->get_oid(); string locator = i->get_locator(); - string name = oid; - if (locator.size()) - name += " (@" + locator + ")"; + ssize_t pos = oid.find('_'); + if (pos < 0) { + cout << "unidentified oid: " << oid << ", skipping" << std::endl; + /* what is this object, oids should be in the format of _, + * skip this entry + */ + continue; + } + string stripped_oid = oid.substr(pos + 1); + string name, instance, ns; + if (!rgw_obj::parse_raw_oid(stripped_oid, &name, &instance, &ns)) { + cout << "cannot parse oid: " << oid << ", skipping" << std::endl; + continue; + } + + if (ns.empty()) { + /* skipping head objects, we don't want to remove these as they are mutable and + * cleaning them up is racy (can race with object removal and a later recreation) + */ + cout << "skipping head object: oid=" << oid << std::endl; + continue; + } string oid_fp = obj_fingerprint(oid); diff --git a/ceph/src/rgw/rgw_rest.cc b/ceph/src/rgw/rgw_rest.cc index 45eba58a..859e34a7 100644 --- a/ceph/src/rgw/rgw_rest.cc +++ b/ceph/src/rgw/rgw_rest.cc @@ -555,7 +555,7 @@ void end_header(struct req_state *s, RGWOp *op, const char *content_type, const int r; if (content_type) { - r = s->cio->print("Content-type: %s\r\n", content_type); + r = s->cio->print("Content-Type: %s\r\n", content_type); if (r < 0) { ldout(s->cct, 0) << "ERROR: s->cio->print() returned err=" << r << dendl; } @@ -817,7 +817,7 @@ int RGWPutObj_ObjStore::verify_params() { if (s->length) { off_t len = atoll(s->length); - if (len > (off_t)RGW_MAX_PUT_SIZE) { + if (len > (off_t)(s->cct->_conf->rgw_max_put_size)) { return -ERR_TOO_LARGE; } } @@ -856,7 +856,7 @@ int RGWPutObj_ObjStore::get_data(bufferlist& bl) bl.append(bp, 0, len); } - if ((uint64_t)ofs + len > RGW_MAX_PUT_SIZE) { + if ((uint64_t)ofs + len > s->cct->_conf->rgw_max_put_size) { return -ERR_TOO_LARGE; } @@ -875,7 +875,7 @@ int RGWPostObj_ObjStore::verify_params() return -ERR_LENGTH_REQUIRED; } off_t len = atoll(s->length); - if (len > (off_t)RGW_MAX_PUT_SIZE) { + if (len > (off_t)(s->cct->_conf->rgw_max_put_size)) { return -ERR_TOO_LARGE; } diff --git a/ceph/src/rgw/rgw_rest_s3.cc b/ceph/src/rgw/rgw_rest_s3.cc index 768766f8..0cc7793a 100644 --- a/ceph/src/rgw/rgw_rest_s3.cc +++ b/ceph/src/rgw/rgw_rest_s3.cc @@ -243,6 +243,7 @@ int RGWListBucket_ObjStore_S3::get_params() return ret; } delimiter = s->info.args.get("delimiter"); + encoding_type = s->info.args.get("encoding-type"); return 0; } @@ -261,13 +262,23 @@ void RGWListBucket_ObjStore_S3::send_versioned_response() s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true" : "false")); + bool encode_key = false; + if (strcasecmp(encoding_type.c_str(), "url") == 0) + encode_key = true; + if (ret >= 0) { vector::iterator iter; for (iter = objs.begin(); iter != objs.end(); ++iter) { time_t mtime = iter->mtime.sec(); const char *section_name = (iter->is_delete_marker() ? "DeleteMarker" : "Version"); s->formatter->open_array_section(section_name); - s->formatter->dump_string("Key", iter->key.name); + if (encode_key) { + string key_name; + url_encode(iter->key.name, key_name); + s->formatter->dump_string("Key", key_name); + } else { + s->formatter->dump_string("Key", iter->key.name); + } string version_id = iter->key.instance; if (version_id.empty()) { version_id = "null"; @@ -328,11 +339,21 @@ void RGWListBucket_ObjStore_S3::send_response() s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true" : "false")); + bool encode_key = false; + if (strcasecmp(encoding_type.c_str(), "url") == 0) + encode_key = true; + if (ret >= 0) { vector::iterator iter; for (iter = objs.begin(); iter != objs.end(); ++iter) { s->formatter->open_array_section("Contents"); - s->formatter->dump_string("Key", iter->key.name); + if (encode_key) { + string key_name; + url_encode(iter->key.name, key_name); + s->formatter->dump_string("Key", key_name); + } else { + s->formatter->dump_string("Key", iter->key.name); + } time_t mtime = iter->mtime.sec(); dump_time(s, "LastModified", &mtime); s->formatter->dump_format("ETag", "\"%s\"", iter->etag.c_str()); @@ -372,13 +393,21 @@ void RGWGetBucketLocation_ObjStore_S3::send_response() end_header(s, this); dump_start(s); - string location_constraint(s->bucket_info.region); - if (s->bucket_info.region == "default") - location_constraint.clear(); + string region = s->bucket_info.region; + string api_name; + + map::iterator iter = store->region_map.regions.find(region); + if (iter != store->region_map.regions.end()) { + api_name = iter->second.api_name; + } else { + if (region != "default") { + api_name = region; + } + } s->formatter->dump_format_ns("LocationConstraint", "http://doc.s3.amazonaws.com/doc/2006-03-01/", - "%s",location_constraint.c_str()); + "%s",api_name.c_str()); rgw_flush_formatter_and_reset(s, s->formatter); } diff --git a/ceph/src/test/Makefile-client.am b/ceph/src/test/Makefile-client.am index b55ad4ee..d5b506bb 100644 --- a/ceph/src/test/Makefile-client.am +++ b/ceph/src/test/Makefile-client.am @@ -338,12 +338,6 @@ ceph_test_librbd_api_LDADD = \ $(LIBRBD) $(LIBRADOS) $(LIBCOMMON) $(UNITTEST_LDADD) $(RADOS_TEST_LDADD) bin_DEBUGPROGRAMS += ceph_test_librbd_api -if WITH_LTTNG -unittest_librbd_LDADD += $(LIBRBD_TP) -ceph_test_librbd_LDADD += $(LIBRBD_TP) -ceph_test_librbd_api_LDADD += $(LIBRBD_TP) -endif - if LINUX ceph_test_librbd_fsx_SOURCES = test/librbd/fsx.cc ceph_test_librbd_fsx_LDADD = \ diff --git a/ceph/src/test/bufferlist.cc b/ceph/src/test/bufferlist.cc index 09ee4739..3c8d0473 100644 --- a/ceph/src/test/bufferlist.cc +++ b/ceph/src/test/bufferlist.cc @@ -2356,6 +2356,46 @@ TEST(BufferList, TestCopyAll) { ASSERT_EQ(memcmp(big.get(), big2.get(), BIG_SZ), 0); } +TEST(BufferList, InvalidateCrc) { + const static size_t buffer_size = 262144; + ceph::shared_ptr big( + (unsigned char*)malloc(buffer_size), free); + unsigned char c = 0; + char* ptr = (char*) big.get(); + char* inptr; + for (size_t i = 0; i < buffer_size; ++i) { + ptr[i] = c++; + } + bufferlist bl; + + // test for crashes (shouldn't crash) + bl.invalidate_crc(); + + // put data into bufferlist + bl.append((const char*)big.get(), buffer_size); + + // get its crc + __u32 crc = bl.crc32c(0); + + // modify data in bl without its knowledge + inptr = (char*) bl.c_str(); + c = 0; + for (size_t i = 0; i < buffer_size; ++i) { + inptr[i] = c--; + } + + // make sure data in bl are now different than in big + EXPECT_NE(memcmp((void*) ptr, (void*) inptr, buffer_size), 0); + + // crc should remain the same + __u32 new_crc = bl.crc32c(0); + EXPECT_EQ(crc, new_crc); + + // force crc invalidate, check if it is updated + bl.invalidate_crc(); + EXPECT_NE(crc, bl.crc32c(0)); +} + TEST(BufferHash, all) { { bufferlist bl; diff --git a/ceph/src/test/centos-6/ceph.spec.in b/ceph/src/test/centos-6/ceph.spec.in index 140e0e31..3f9a126c 100644 --- a/ceph/src/test/centos-6/ceph.spec.in +++ b/ceph/src/test/centos-6/ceph.spec.in @@ -1,28 +1,33 @@ %bcond_with ocf %bcond_without cephfs_java -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) +%if (0%{?el5} || (0%{?rhel_version} >= 500 && 0%{?rhel_version} <= 600)) %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} -################################################################################# -# common -################################################################################# +# LTTng-UST enabled on Fedora, RHEL 6, and SLES 12 +%if 0%{?fedora} || 0%{?rhel} == 6 || 0%{?suse_version} == 1315 +%global _with_lttng 1 +%endif + Name: ceph Version: @VERSION@ Release: @RPM_RELEASE@%{?dist} Epoch: 1 Summary: User space components of the Ceph file system -License: GPL-2.0 +License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT Group: System Environment/Base URL: http://ceph.com/ Source0: http://ceph.com/download/%{name}-%{version}.tar.bz2 -%if 0%{?fedora} || 0%{?centos} || 0%{?rhel} +%if 0%{?fedora} || 0%{?rhel} Patch0: init-ceph.in-fedora.patch %endif +################################################################################# +# dependencies that apply across all distro families +################################################################################# Requires: librbd1 = %{epoch}:%{version}-%{release} Requires: librados2 = %{epoch}:%{version}-%{release} Requires: libcephfs1 = %{epoch}:%{version}-%{release} @@ -32,13 +37,17 @@ Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python Requires: python-requests -Requires: python-flask +Requires: grep Requires: xfsprogs +Requires: logrotate Requires: parted Requires: util-linux Requires: hdparm Requires: cryptsetup Requires(post): binutils +%if 0%{with cephfs_java} +BuildRequires: sharutils +%endif BuildRequires: gcc-c++ BuildRequires: boost-devel %if 0%{defined suse_version} @@ -49,6 +58,7 @@ BuildRequires: bzip2-devel BuildRequires: cryptsetup BuildRequires: gdbm BuildRequires: hdparm +BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libcurl-devel BuildRequires: libedit-devel @@ -57,10 +67,9 @@ BuildRequires: libuuid-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: libudev-devel BuildRequires: libtool -BuildRequires: leveldb-devel > 1.2 BuildRequires: make -BuildRequires: perl BuildRequires: parted +BuildRequires: perl BuildRequires: pkgconfig BuildRequires: python BuildRequires: python-nose @@ -77,13 +86,12 @@ BuildRequires: net-tools %endif ################################################################################# -# specific +# distro-conditional dependencies ################################################################################# -%if ! 0%{?rhel} || 0%{?fedora} -BuildRequires: sharutils -%endif - %if 0%{defined suse_version} +Requires: python-Flask +BuildRequires: net-tools +BuildRequires: libbz2-devel %if 0%{?suse_version} > 1210 Requires: gptfdisk BuildRequires: gperftools-devel @@ -91,7 +99,6 @@ BuildRequires: gperftools-devel Requires: scsirastools BuildRequires: google-perftools-devel %endif -Recommends: logrotate BuildRequires: %insserv_prereq BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel @@ -106,6 +113,18 @@ Requires(post): chkconfig Requires(preun):chkconfig Requires(preun):initscripts BuildRequires: gperftools-devel +Requires: python-flask +%endif +# lttng and babeltrace for rbd-replay-prep +%if 0%{?_with_lttng} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel +%endif +%if 0%{?suse_version} +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel +%endif %endif %description @@ -126,9 +145,6 @@ Requires: python-rados = %{epoch}:%{version}-%{release} Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python-requests -%if 0%{?rhel} || 0%{?fedora} -Requires: redhat-lsb-core -%endif # python-argparse is only needed in distros with Python 2.6 or lower %if (0%{?rhel} && 0%{?rhel} <= 6) || (0%{?suse_version} && 0%{?suse_version} <= 1110) Requires: python-argparse @@ -190,7 +206,7 @@ managers such as Pacemaker. Summary: RADOS distributed object store client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librados2 @@ -223,7 +239,7 @@ object store. Summary: RADOS striping interface Group: System Environment/Libraries License: LGPL-2.0 -Requires: librados2 = %{epoch}:%{version} +Requires: librados2 = %{epoch}:%{version}-%{release} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using @@ -245,7 +261,7 @@ Summary: RADOS block device client library Group: System Environment/Libraries License: LGPL-2.0 Requires: librados2 = %{epoch}:%{version}-%{release} -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librbd1 @@ -280,7 +296,7 @@ block device. Summary: Ceph distributed file system client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} Obsoletes: ceph-libcephfs %endif @@ -325,17 +341,13 @@ Summary: Ceph benchmarks and test tools Group: System Environment/Libraries License: LGPL-2.0 Requires: ceph-common -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -BuildRequires: lttng-ust-devel -BuildRequires: libbabeltrace-devel -%endif %description -n ceph-test This package contains Ceph benchmarks and test tools. %if 0%{with cephfs_java} %package -n libcephfs_jni1 -Summary: Java Native Interface library for CephFS Java bindings. +Summary: Java Native Interface library for CephFS Java bindings Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -346,7 +358,7 @@ This package contains the Java Native Interface library for CephFS Java bindings. %package -n libcephfs_jni1-devel -Summary: Development files for CephFS Java Native Interface library. +Summary: Development files for CephFS Java Native Interface library Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -357,7 +369,7 @@ This package contains the development files for CephFS Java Native Interface library. %package -n cephfs-java -Summary: Java libraries for the Ceph File System. +Summary: Java libraries for the Ceph File System Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -376,7 +388,7 @@ This package contains the Java libraries for the Ceph File System. %endif %package libs-compat -Summary: Meta package to include ceph libraries. +Summary: Meta package to include ceph libraries Group: System Environment/Libraries License: LGPL-2.0 Obsoletes: ceph-libs @@ -436,7 +448,7 @@ python-cephfs instead. ################################################################################# %prep %setup -q -%if 0%{?fedora} || 0%{?rhel} || 0%{?centos} +%if 0%{?fedora} || 0%{?rhel} %patch0 -p1 -b .init %endif @@ -529,8 +541,10 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/tmp mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mon mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/radosgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-rgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/radosgw %clean @@ -613,6 +627,10 @@ fi %{_libdir}/rados-classes/libcls_version.so* %dir %{_libdir}/ceph/erasure-code %{_libdir}/ceph/erasure-code/libec_*.so* +%if 0%{?_with_lttng} +%{_libdir}/libos_tp.so* +%{_libdir}/libosd_tp.so* +%endif %{_udevrulesdir}/60-ceph-partuuid-workaround.rules %{_udevrulesdir}/95-ceph-osd.rules %config %{_sysconfdir}/bash_completion.d/ceph @@ -646,6 +664,7 @@ fi %dir %{_localstatedir}/lib/ceph/bootstrap-osd %dir %{_localstatedir}/lib/ceph/bootstrap-mds %ghost %dir %{_localstatedir}/run/ceph/ +%dir %{_localstatedir}/lib/ceph/bootstrap-rgw ################################################################################# %files -n ceph-common @@ -659,6 +678,11 @@ fi %{_bindir}/ceph-crush-location %{_bindir}/rados %{_bindir}/rbd +%{_bindir}/rbd-replay +%{_bindir}/rbd-replay-many +%if 0%{?_with_lttng} +%{_bindir}/rbd-replay-prep +%endif %{_bindir}/ceph-post-file %{_bindir}/ceph-brag %{_mandir}/man8/ceph-authtool.8* @@ -670,11 +694,16 @@ fi %{_mandir}/man8/ceph.8* %{_mandir}/man8/rados.8* %{_mandir}/man8/rbd.8* +%{_mandir}/man8/rbd-replay.8* +%{_mandir}/man8/rbd-replay-many.8* +%{_mandir}/man8/rbd-replay-prep.8* %{_datadir}/ceph/known_hosts_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com.pub %dir %{_sysconfdir}/ceph/ %dir %{_localstatedir}/log/ceph/ +%dir %{_datarootdir}/ceph/ +%dir %{_libexecdir}/ceph/ %config %{_sysconfdir}/bash_completion.d/rados %config %{_sysconfdir}/bash_completion.d/rbd %config(noreplace) %{_sysconfdir}/ceph/rbdmap @@ -718,6 +747,7 @@ fi %config(noreplace) %{_sysconfdir}/logrotate.d/radosgw %config %{_sysconfdir}/bash_completion.d/radosgw-admin %dir %{_localstatedir}/log/radosgw/ +%dir %{_localstatedir}/lib/ceph/radosgw %post radosgw /sbin/ldconfig @@ -756,6 +786,9 @@ fi %files -n librados2 %defattr(-,root,root,-) %{_libdir}/librados.so.* +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so.* +%endif %post -n librados2 /sbin/ldconfig @@ -776,6 +809,9 @@ fi %{_includedir}/rados/rados_types.hpp %{_includedir}/rados/memory.h %{_libdir}/librados.so +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so +%endif ################################################################################# %files -n python-rados @@ -805,6 +841,9 @@ fi %files -n librbd1 %defattr(-,root,root,-) %{_libdir}/librbd.so.* +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so.* +%endif %post -n librbd1 /sbin/ldconfig @@ -822,6 +861,9 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_includedir}/rbd/librbd.hpp %{_includedir}/rbd/features.h %{_libdir}/librbd.so +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so +%endif ################################################################################# %files -n python-rbd @@ -883,14 +925,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_bindir}/ceph-monstore-tool %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-kvstore-tool -%{_mandir}/man8/rbd-replay.8* -%{_mandir}/man8/rbd-replay-many.8* -%{_mandir}/man8/rbd-replay-prep.8* -%{_bindir}/rbd-replay -%{_bindir}/rbd-replay-many -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -%{_bindir}/rbd-replay-prep -%endif ################################################################################# %if 0%{with cephfs_java} @@ -898,6 +932,12 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %defattr(-,root,root,-) %{_libdir}/libcephfs_jni.so.* +%post -n libcephfs_jni1 +/sbin/ldconfig + +%postun -n libcephfs_jni1 +/sbin/ldconfig + ################################################################################# %files -n libcephfs_jni1-devel %defattr(-,root,root,-) diff --git a/ceph/src/test/centos-7/ceph.spec.in b/ceph/src/test/centos-7/ceph.spec.in index 140e0e31..3f9a126c 100644 --- a/ceph/src/test/centos-7/ceph.spec.in +++ b/ceph/src/test/centos-7/ceph.spec.in @@ -1,28 +1,33 @@ %bcond_with ocf %bcond_without cephfs_java -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) +%if (0%{?el5} || (0%{?rhel_version} >= 500 && 0%{?rhel_version} <= 600)) %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} -################################################################################# -# common -################################################################################# +# LTTng-UST enabled on Fedora, RHEL 6, and SLES 12 +%if 0%{?fedora} || 0%{?rhel} == 6 || 0%{?suse_version} == 1315 +%global _with_lttng 1 +%endif + Name: ceph Version: @VERSION@ Release: @RPM_RELEASE@%{?dist} Epoch: 1 Summary: User space components of the Ceph file system -License: GPL-2.0 +License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT Group: System Environment/Base URL: http://ceph.com/ Source0: http://ceph.com/download/%{name}-%{version}.tar.bz2 -%if 0%{?fedora} || 0%{?centos} || 0%{?rhel} +%if 0%{?fedora} || 0%{?rhel} Patch0: init-ceph.in-fedora.patch %endif +################################################################################# +# dependencies that apply across all distro families +################################################################################# Requires: librbd1 = %{epoch}:%{version}-%{release} Requires: librados2 = %{epoch}:%{version}-%{release} Requires: libcephfs1 = %{epoch}:%{version}-%{release} @@ -32,13 +37,17 @@ Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python Requires: python-requests -Requires: python-flask +Requires: grep Requires: xfsprogs +Requires: logrotate Requires: parted Requires: util-linux Requires: hdparm Requires: cryptsetup Requires(post): binutils +%if 0%{with cephfs_java} +BuildRequires: sharutils +%endif BuildRequires: gcc-c++ BuildRequires: boost-devel %if 0%{defined suse_version} @@ -49,6 +58,7 @@ BuildRequires: bzip2-devel BuildRequires: cryptsetup BuildRequires: gdbm BuildRequires: hdparm +BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libcurl-devel BuildRequires: libedit-devel @@ -57,10 +67,9 @@ BuildRequires: libuuid-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: libudev-devel BuildRequires: libtool -BuildRequires: leveldb-devel > 1.2 BuildRequires: make -BuildRequires: perl BuildRequires: parted +BuildRequires: perl BuildRequires: pkgconfig BuildRequires: python BuildRequires: python-nose @@ -77,13 +86,12 @@ BuildRequires: net-tools %endif ################################################################################# -# specific +# distro-conditional dependencies ################################################################################# -%if ! 0%{?rhel} || 0%{?fedora} -BuildRequires: sharutils -%endif - %if 0%{defined suse_version} +Requires: python-Flask +BuildRequires: net-tools +BuildRequires: libbz2-devel %if 0%{?suse_version} > 1210 Requires: gptfdisk BuildRequires: gperftools-devel @@ -91,7 +99,6 @@ BuildRequires: gperftools-devel Requires: scsirastools BuildRequires: google-perftools-devel %endif -Recommends: logrotate BuildRequires: %insserv_prereq BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel @@ -106,6 +113,18 @@ Requires(post): chkconfig Requires(preun):chkconfig Requires(preun):initscripts BuildRequires: gperftools-devel +Requires: python-flask +%endif +# lttng and babeltrace for rbd-replay-prep +%if 0%{?_with_lttng} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel +%endif +%if 0%{?suse_version} +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel +%endif %endif %description @@ -126,9 +145,6 @@ Requires: python-rados = %{epoch}:%{version}-%{release} Requires: python-rbd = %{epoch}:%{version}-%{release} Requires: python-cephfs = %{epoch}:%{version}-%{release} Requires: python-requests -%if 0%{?rhel} || 0%{?fedora} -Requires: redhat-lsb-core -%endif # python-argparse is only needed in distros with Python 2.6 or lower %if (0%{?rhel} && 0%{?rhel} <= 6) || (0%{?suse_version} && 0%{?suse_version} <= 1110) Requires: python-argparse @@ -190,7 +206,7 @@ managers such as Pacemaker. Summary: RADOS distributed object store client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librados2 @@ -223,7 +239,7 @@ object store. Summary: RADOS striping interface Group: System Environment/Libraries License: LGPL-2.0 -Requires: librados2 = %{epoch}:%{version} +Requires: librados2 = %{epoch}:%{version}-%{release} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using @@ -245,7 +261,7 @@ Summary: RADOS block device client library Group: System Environment/Libraries License: LGPL-2.0 Requires: librados2 = %{epoch}:%{version}-%{release} -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} %endif %description -n librbd1 @@ -280,7 +296,7 @@ block device. Summary: Ceph distributed file system client library Group: System Environment/Libraries License: LGPL-2.0 -%if 0%{?rhel} || 0%{?centos} || 0%{?fedora} +%if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{epoch}:%{version}-%{release} Obsoletes: ceph-libcephfs %endif @@ -325,17 +341,13 @@ Summary: Ceph benchmarks and test tools Group: System Environment/Libraries License: LGPL-2.0 Requires: ceph-common -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -BuildRequires: lttng-ust-devel -BuildRequires: libbabeltrace-devel -%endif %description -n ceph-test This package contains Ceph benchmarks and test tools. %if 0%{with cephfs_java} %package -n libcephfs_jni1 -Summary: Java Native Interface library for CephFS Java bindings. +Summary: Java Native Interface library for CephFS Java bindings Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -346,7 +358,7 @@ This package contains the Java Native Interface library for CephFS Java bindings. %package -n libcephfs_jni1-devel -Summary: Development files for CephFS Java Native Interface library. +Summary: Development files for CephFS Java Native Interface library Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -357,7 +369,7 @@ This package contains the development files for CephFS Java Native Interface library. %package -n cephfs-java -Summary: Java libraries for the Ceph File System. +Summary: Java libraries for the Ceph File System Group: System Environment/Libraries License: LGPL-2.0 Requires: java @@ -376,7 +388,7 @@ This package contains the Java libraries for the Ceph File System. %endif %package libs-compat -Summary: Meta package to include ceph libraries. +Summary: Meta package to include ceph libraries Group: System Environment/Libraries License: LGPL-2.0 Obsoletes: ceph-libs @@ -436,7 +448,7 @@ python-cephfs instead. ################################################################################# %prep %setup -q -%if 0%{?fedora} || 0%{?rhel} || 0%{?centos} +%if 0%{?fedora} || 0%{?rhel} %patch0 -p1 -b .init %endif @@ -529,8 +541,10 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/tmp mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mon mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/radosgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-osd mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-mds +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/ceph/bootstrap-rgw mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/radosgw %clean @@ -613,6 +627,10 @@ fi %{_libdir}/rados-classes/libcls_version.so* %dir %{_libdir}/ceph/erasure-code %{_libdir}/ceph/erasure-code/libec_*.so* +%if 0%{?_with_lttng} +%{_libdir}/libos_tp.so* +%{_libdir}/libosd_tp.so* +%endif %{_udevrulesdir}/60-ceph-partuuid-workaround.rules %{_udevrulesdir}/95-ceph-osd.rules %config %{_sysconfdir}/bash_completion.d/ceph @@ -646,6 +664,7 @@ fi %dir %{_localstatedir}/lib/ceph/bootstrap-osd %dir %{_localstatedir}/lib/ceph/bootstrap-mds %ghost %dir %{_localstatedir}/run/ceph/ +%dir %{_localstatedir}/lib/ceph/bootstrap-rgw ################################################################################# %files -n ceph-common @@ -659,6 +678,11 @@ fi %{_bindir}/ceph-crush-location %{_bindir}/rados %{_bindir}/rbd +%{_bindir}/rbd-replay +%{_bindir}/rbd-replay-many +%if 0%{?_with_lttng} +%{_bindir}/rbd-replay-prep +%endif %{_bindir}/ceph-post-file %{_bindir}/ceph-brag %{_mandir}/man8/ceph-authtool.8* @@ -670,11 +694,16 @@ fi %{_mandir}/man8/ceph.8* %{_mandir}/man8/rados.8* %{_mandir}/man8/rbd.8* +%{_mandir}/man8/rbd-replay.8* +%{_mandir}/man8/rbd-replay-many.8* +%{_mandir}/man8/rbd-replay-prep.8* %{_datadir}/ceph/known_hosts_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com %{_datadir}/ceph/id_dsa_drop.ceph.com.pub %dir %{_sysconfdir}/ceph/ %dir %{_localstatedir}/log/ceph/ +%dir %{_datarootdir}/ceph/ +%dir %{_libexecdir}/ceph/ %config %{_sysconfdir}/bash_completion.d/rados %config %{_sysconfdir}/bash_completion.d/rbd %config(noreplace) %{_sysconfdir}/ceph/rbdmap @@ -718,6 +747,7 @@ fi %config(noreplace) %{_sysconfdir}/logrotate.d/radosgw %config %{_sysconfdir}/bash_completion.d/radosgw-admin %dir %{_localstatedir}/log/radosgw/ +%dir %{_localstatedir}/lib/ceph/radosgw %post radosgw /sbin/ldconfig @@ -756,6 +786,9 @@ fi %files -n librados2 %defattr(-,root,root,-) %{_libdir}/librados.so.* +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so.* +%endif %post -n librados2 /sbin/ldconfig @@ -776,6 +809,9 @@ fi %{_includedir}/rados/rados_types.hpp %{_includedir}/rados/memory.h %{_libdir}/librados.so +%if 0%{?_with_lttng} +%{_libdir}/librados_tp.so +%endif ################################################################################# %files -n python-rados @@ -805,6 +841,9 @@ fi %files -n librbd1 %defattr(-,root,root,-) %{_libdir}/librbd.so.* +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so.* +%endif %post -n librbd1 /sbin/ldconfig @@ -822,6 +861,9 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_includedir}/rbd/librbd.hpp %{_includedir}/rbd/features.h %{_libdir}/librbd.so +%if 0%{?_with_lttng} +%{_libdir}/librbd_tp.so +%endif ################################################################################# %files -n python-rbd @@ -883,14 +925,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_bindir}/ceph-monstore-tool %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-kvstore-tool -%{_mandir}/man8/rbd-replay.8* -%{_mandir}/man8/rbd-replay-many.8* -%{_mandir}/man8/rbd-replay-prep.8* -%{_bindir}/rbd-replay -%{_bindir}/rbd-replay-many -%if (0%{?fedora} >= 20 || 0%{?rhel} == 6) -%{_bindir}/rbd-replay-prep -%endif ################################################################################# %if 0%{with cephfs_java} @@ -898,6 +932,12 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %defattr(-,root,root,-) %{_libdir}/libcephfs_jni.so.* +%post -n libcephfs_jni1 +/sbin/ldconfig + +%postun -n libcephfs_jni1 +/sbin/ldconfig + ################################################################################# %files -n libcephfs_jni1-devel %defattr(-,root,root,-) diff --git a/ceph/src/test/cli/radosgw-admin/help.t b/ceph/src/test/cli/radosgw-admin/help.t index bdb7324b..a2945494 100644 --- a/ceph/src/test/cli/radosgw-admin/help.t +++ b/ceph/src/test/cli/radosgw-admin/help.t @@ -69,6 +69,8 @@ replicalog get get replica metadata log entry replicalog update update replica metadata log entry replicalog delete delete replica metadata log entry + orphans find init and run search for leaked rados objects + orphans finish clean up search for leaked rados objects options: --uid= user id --subuser= subuser name @@ -132,6 +134,10 @@ --max-size specify max size (in bytes, negative value to disable) --quota-scope scope of quota (bucket, user) + Orphans search options: + --pool data pool to scan for leaked rados objects in + --num-shards num of shards to use for keeping the temporary scan info + --conf/-c FILE read configuration from the given configuration file --id/-i ID set ID portion of my name --name/-n TYPE.ID set name diff --git a/ceph/src/test/encoding/types.h b/ceph/src/test/encoding/types.h index 21eefe74..d425885f 100644 --- a/ceph/src/test/encoding/types.h +++ b/ceph/src/test/encoding/types.h @@ -232,6 +232,10 @@ TYPE(EUpdate) TYPE(librbd::WatchNotify::NotifyMessage) TYPE(librbd::WatchNotify::ResponseMessage) +#include "rbd_replay/ActionTypes.h" +TYPE(rbd_replay::action::Dependency) +TYPE(rbd_replay::action::ActionEntry); + #ifdef WITH_RADOSGW #include "rgw/rgw_rados.h" diff --git a/ceph/src/test/librados/aio.cc b/ceph/src/test/librados/aio.cc index b9183aa0..99fff2e5 100644 --- a/ceph/src/test/librados/aio.cc +++ b/ceph/src/test/librados/aio.cc @@ -478,6 +478,41 @@ TEST(LibRadosAio, RoundTripPP3) destroy_one_pool_pp(pool_name, cluster); } +TEST(LibRadosAio, RoundTripSparseReadPP) { + AioTestDataPP test_data; + ASSERT_EQ("", test_data.init()); + AioCompletion *my_completion = test_data.m_cluster.aio_create_completion( + (void*)&test_data, set_completion_completePP, set_completion_safePP); + AioCompletion *my_completion_null = NULL; + ASSERT_NE(my_completion, my_completion_null); + char buf[128]; + memset(buf, 0xcc, sizeof(buf)); + bufferlist bl1; + bl1.append(buf, sizeof(buf)); + ASSERT_EQ(0, test_data.m_ioctx.aio_write("foo", my_completion, + bl1, sizeof(buf), 0)); + { + TestAlarm alarm; + sem_wait(&test_data.m_sem); + sem_wait(&test_data.m_sem); + } + ASSERT_EQ(0, my_completion->get_return_value()); + std::map extents; + bufferlist bl2; + AioCompletion *my_completion2 = test_data.m_cluster.aio_create_completion( + (void*)&test_data, set_completion_completePP, set_completion_safePP); + ASSERT_NE(my_completion2, my_completion_null); + ASSERT_EQ(0, test_data.m_ioctx.aio_sparse_read("foo", + my_completion2, &extents, &bl2, sizeof(buf), 0)); + { + TestAlarm alarm; + ASSERT_EQ(0, my_completion2->wait_for_complete()); + } + ASSERT_EQ(0, my_completion2->get_return_value()); + assert_eq_sparse(bl1, extents, bl2); + delete my_completion; + delete my_completion2; +} TEST(LibRadosAio, RoundTripAppend) { AioTestData test_data; @@ -2076,6 +2111,42 @@ TEST(LibRadosAioEC, RoundTripPP3) destroy_one_pool_pp(pool_name, cluster); } +TEST(LibRadosAioEC, RoundTripSparseReadPP) { + AioTestDataECPP test_data; + ASSERT_EQ("", test_data.init()); + AioCompletion *my_completion = test_data.m_cluster.aio_create_completion( + (void*)&test_data, set_completion_completeECPP, set_completion_safeECPP); + AioCompletion *my_completion_null = NULL; + ASSERT_NE(my_completion, my_completion_null); + char buf[128]; + memset(buf, 0xcc, sizeof(buf)); + bufferlist bl1; + bl1.append(buf, sizeof(buf)); + ASSERT_EQ(0, test_data.m_ioctx.aio_write("foo", my_completion, + bl1, sizeof(buf), 0)); + { + TestAlarm alarm; + sem_wait(&test_data.m_sem); + sem_wait(&test_data.m_sem); + } + ASSERT_EQ(0, my_completion->get_return_value()); + + map extents; + bufferlist bl2; + AioCompletion *my_completion2 = test_data.m_cluster.aio_create_completion( + (void*)&test_data, set_completion_completeECPP, set_completion_safeECPP); + ASSERT_NE(my_completion2, my_completion_null); + ASSERT_EQ(0, test_data.m_ioctx.aio_sparse_read("foo", + my_completion2, &extents, &bl2, sizeof(buf), 0)); + { + TestAlarm alarm; + ASSERT_EQ(0, my_completion2->wait_for_complete()); + } + ASSERT_EQ(0, my_completion2->get_return_value()); + assert_eq_sparse(bl1, extents, bl2); + delete my_completion; + delete my_completion2; +} TEST(LibRadosAioEC, RoundTripAppend) { AioTestDataEC test_data; diff --git a/ceph/src/test/librados/io.cc b/ceph/src/test/librados/io.cc index 6f391df7..0cb2a8e9 100644 --- a/ceph/src/test/librados/io.cc +++ b/ceph/src/test/librados/io.cc @@ -223,6 +223,25 @@ TEST_F(LibRadosIoPP, ReadOpPP) { } } +TEST_F(LibRadosIoPP, SparseReadOpPP) { + char buf[128]; + memset(buf, 0xcc, sizeof(buf)); + bufferlist bl; + bl.append(buf, sizeof(buf)); + ASSERT_EQ(0, ioctx.write("foo", bl, sizeof(buf), 0)); + + { + std::map extents; + bufferlist read_bl; + int rval = -1; + ObjectReadOperation op; + op.sparse_read(0, sizeof(buf), &extents, &read_bl, &rval); + ASSERT_EQ(0, ioctx.operate("foo", &op, NULL)); + ASSERT_EQ(0, rval); + assert_eq_sparse(bl, extents, read_bl); + } +} + TEST_F(LibRadosIo, RoundTrip) { char buf[128]; char buf2[128]; @@ -689,6 +708,25 @@ TEST_F(LibRadosIoECPP, ReadOpPP) { } } +TEST_F(LibRadosIoECPP, SparseReadOpPP) { + char buf[128]; + memset(buf, 0xcc, sizeof(buf)); + bufferlist bl; + bl.append(buf, sizeof(buf)); + ASSERT_EQ(0, ioctx.write("foo", bl, sizeof(buf), 0)); + + { + std::map extents; + bufferlist read_bl; + int rval = -1; + ObjectReadOperation op; + op.sparse_read(0, sizeof(buf), &extents, &read_bl, &rval); + ASSERT_EQ(0, ioctx.operate("foo", &op, NULL)); + ASSERT_EQ(0, rval); + assert_eq_sparse(bl, extents, read_bl); + } +} + TEST_F(LibRadosIoEC, RoundTrip) { char buf[128]; char buf2[128]; diff --git a/ceph/src/test/librados/test.cc b/ceph/src/test/librados/test.cc index f8a92a2f..fd92fc23 100644 --- a/ceph/src/test/librados/test.cc +++ b/ceph/src/test/librados/test.cc @@ -10,6 +10,7 @@ #include #include #include +#include "gtest/gtest.h" using namespace librados; @@ -43,25 +44,42 @@ std::string create_one_pool(const std::string &pool_name, rados_t *cluster) return ""; } +int destroy_ec_profile(rados_t *cluster) +{ + char *cmd[2]; + cmd[0] = (char *)"{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}"; + cmd[1] = NULL; + return rados_mon_command(*cluster, (const char **)cmd, 1, "", 0, NULL, 0, NULL, 0); +} + std::string create_one_ec_pool(const std::string &pool_name, rados_t *cluster) { std::string err = connect_cluster(cluster); if (err.length()) return err; + int ret = destroy_ec_profile(cluster); + if (ret) { + rados_shutdown(*cluster); + std::ostringstream oss; + oss << "rados_mon_command erasure-code-profile rm testprofile failed with error " << ret; + return oss.str(); + } + char *cmd[2]; - cmd[1] = NULL; - cmd[0] = (char *)"{\"prefix\": \"osd erasure-code-profile set\", \"name\": \"testprofile\", \"profile\": [ \"k=2\", \"m=1\", \"ruleset-failure-domain=osd\"]}"; - int ret = rados_mon_command(*cluster, (const char **)cmd, 1, "", 0, NULL, NULL, NULL, NULL); + std::string profile_create = "{\"prefix\": \"osd erasure-code-profile set\", \"name\": \"testprofile\", \"profile\": [ \"k=2\", \"m=1\", \"ruleset-failure-domain=osd\"]}"; + cmd[0] = (char *)profile_create.c_str(); + ret = rados_mon_command(*cluster, (const char **)cmd, 1, "", 0, NULL, 0, NULL, 0); if (ret) { - rados_shutdown(*cluster); std::ostringstream oss; + + rados_shutdown(*cluster); oss << "rados_mon_command erasure-code-profile set name:testprofile failed with error " << ret; return oss.str(); } - + std::string cmdstr = "{\"prefix\": \"osd pool create\", \"pool\": \"" + pool_name + "\", \"pool_type\":\"erasure\", \"pg_num\":8, \"pgp_num\":8, \"erasure_code_profile\":\"testprofile\"}"; cmd[0] = (char *)cmdstr.c_str(); @@ -69,13 +87,12 @@ std::string create_one_ec_pool(const std::string &pool_name, rados_t *cluster) if (ret) { std::ostringstream oss; - cmd[0] = (char *)"{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}"; - int ret2 = rados_mon_command(*cluster, (const char **)cmd, 1, "", 0, NULL, 0, NULL, 0); + int ret2 = destroy_ec_profile(cluster); if (ret2) oss << "rados_mon_command osd erasure-code-profile rm name:testprofile failed with error " << ret2 << std::endl; rados_shutdown(*cluster); - oss << "rados_mon_command erasure-code-profile set name:testprofile failed with error " << ret; + oss << "rados_mon_command osd pool create failed with error " << ret; return oss.str(); } @@ -98,14 +115,29 @@ std::string create_one_pool_pp(const std::string &pool_name, Rados &cluster) return ""; } +int destroy_ec_profile_pp(Rados &cluster) +{ + bufferlist inbl; + return cluster.mon_command("{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}", + inbl, NULL, NULL); +} + std::string create_one_ec_pool_pp(const std::string &pool_name, Rados &cluster) { std::string err = connect_cluster_pp(cluster); if (err.length()) return err; + int ret = destroy_ec_profile_pp(cluster); + if (ret) { + cluster.shutdown(); + std::ostringstream oss; + oss << "rados_mon_command erasure-code-profile rm testprofile failed with error " << ret; + return oss.str(); + } + bufferlist inbl; - int ret = cluster.mon_command( + ret = cluster.mon_command( "{\"prefix\": \"osd erasure-code-profile set\", \"name\": \"testprofile\", \"profile\": [ \"k=2\", \"m=1\", \"ruleset-failure-domain=osd\"]}", inbl, NULL, NULL); if (ret) { @@ -121,9 +153,7 @@ std::string create_one_ec_pool_pp(const std::string &pool_name, Rados &cluster) if (ret) { std::ostringstream oss; bufferlist inbl; - int ret2 = cluster.mon_command( - "{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}", - inbl, NULL, NULL); + int ret2 = destroy_ec_profile_pp(cluster); if (ret2) oss << "mon_command osd erasure-code-profile rm name:testprofile failed with error " << ret2 << std::endl; @@ -211,12 +241,7 @@ int destroy_one_ec_pool(const std::string &pool_name, rados_t *cluster) { int ret = rados_pool_delete(*cluster, pool_name.c_str()); if (ret == 0) { - char *cmd[2]; - - cmd[1] = NULL; - - cmd[0] = (char *)"{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}"; - int ret2 = rados_mon_command(*cluster, (const char **)cmd, 1, "", 0, NULL, 0, NULL, 0); + int ret2 = destroy_ec_profile(cluster); if (ret2) { rados_shutdown(*cluster); return ret2; @@ -243,9 +268,7 @@ int destroy_one_ec_pool_pp(const std::string &pool_name, Rados &cluster) int ret = cluster.pool_delete(pool_name.c_str()); bufferlist inbl; if (ret == 0) { - int ret2 = cluster.mon_command( - "{\"prefix\": \"osd erasure-code-profile rm\", \"name\": \"testprofile\"}", - inbl, NULL, NULL); + int ret2 = destroy_ec_profile_pp(cluster); if (ret2) { cluster.shutdown(); return ret2; @@ -255,3 +278,29 @@ int destroy_one_ec_pool_pp(const std::string &pool_name, Rados &cluster) cluster.shutdown(); return ret; } + +void assert_eq_sparse(bufferlist& expected, + const std::map& extents, + bufferlist& actual) { + bufferlist::iterator i = expected.begin(); + bufferlist::iterator p = actual.begin(); + uint64_t pos = 0; + for (std::map::const_iterator extent = extents.begin(); + extent != extents.end(); + ++extent) { + const uint64_t start = extent->first; + const uint64_t end = start + extent->second; + for (; pos < end; ++i, ++pos) { + ASSERT_FALSE(i.end()); + if (pos < start) { + // check the hole + ASSERT_EQ('\0', *i); + } else { + // then the extent + ASSERT_EQ(*i, *p); + ++p; + } + } + } + ASSERT_EQ(expected.length(), pos); +} diff --git a/ceph/src/test/librados/test.h b/ceph/src/test/librados/test.h index 6cf522de..cd1f9817 100644 --- a/ceph/src/test/librados/test.h +++ b/ceph/src/test/librados/test.h @@ -18,6 +18,7 @@ #include "include/rados/librados.h" #include "include/rados/librados.hpp" +#include #include #include @@ -35,6 +36,9 @@ int destroy_one_pool(const std::string &pool_name, rados_t *cluster); int destroy_one_ec_pool(const std::string &pool_name, rados_t *cluster); int destroy_one_pool_pp(const std::string &pool_name, librados::Rados &cluster); int destroy_one_ec_pool_pp(const std::string &pool_name, librados::Rados &cluster); +void assert_eq_sparse(bufferlist& expected, + const std::map& extents, + bufferlist& actual); class TestAlarm { diff --git a/ceph/src/test/librados_test_stub/TestRadosClient.cc b/ceph/src/test/librados_test_stub/TestRadosClient.cc index 925dc598..eac9d8b5 100644 --- a/ceph/src/test/librados_test_stub/TestRadosClient.cc +++ b/ceph/src/test/librados_test_stub/TestRadosClient.cc @@ -84,7 +84,8 @@ private: TestRadosClient::TestRadosClient(CephContext *cct) : m_cct(cct->get()), - m_watch_notify(m_cct) + m_aio_finisher(new Finisher(m_cct)), + m_watch_notify(m_cct, m_aio_finisher) { get(); @@ -96,7 +97,6 @@ TestRadosClient::TestRadosClient(CephContext *cct) } // replicate AIO callback processing - m_aio_finisher = new Finisher(m_cct); m_aio_finisher->start(); } diff --git a/ceph/src/test/librados_test_stub/TestWatchNotify.cc b/ceph/src/test/librados_test_stub/TestWatchNotify.cc index 14a43bc5..f40eea83 100644 --- a/ceph/src/test/librados_test_stub/TestWatchNotify.cc +++ b/ceph/src/test/librados_test_stub/TestWatchNotify.cc @@ -9,23 +9,19 @@ namespace librados { -TestWatchNotify::TestWatchNotify(CephContext *cct) - : m_cct(cct), m_finisher(new Finisher(cct)), m_handle(), m_notify_id(), +TestWatchNotify::TestWatchNotify(CephContext *cct, Finisher *finisher) + : m_cct(cct), m_finisher(finisher), m_handle(), m_notify_id(), m_file_watcher_lock("librados::TestWatchNotify::m_file_watcher_lock"), m_pending_notifies(0) { m_cct->get(); - m_finisher->start(); } TestWatchNotify::~TestWatchNotify() { - m_finisher->stop(); - delete m_finisher; m_cct->put(); } TestWatchNotify::NotifyHandle::NotifyHandle() - : pbl(NULL), pending_responses(), - lock("TestWatchNotify::NotifyHandle::lock") { + : lock("TestWatchNotify::NotifyHandle::lock") { } TestWatchNotify::Watcher::Watcher() @@ -50,7 +46,7 @@ int TestWatchNotify::list_watchers(const std::string& o, it != watcher->watch_handles.end(); ++it) { obj_watch_t obj; strcpy(obj.addr, ":/0"); - obj.watcher_id = static_cast(it->second.instance_id); + obj.watcher_id = static_cast(it->second.gid); obj.cookie = it->second.handle; obj.timeout_seconds = 30; out_watchers->push_back(obj); @@ -60,35 +56,64 @@ int TestWatchNotify::list_watchers(const std::string& o, int TestWatchNotify::notify(const std::string& oid, bufferlist& bl, uint64_t timeout_ms, bufferlist *pbl) { - Mutex lock("TestRadosClient::watcher_notify::lock"); - Cond cond; - bool done = false; + uint64_t notify_id; + { + Mutex::Locker file_watcher_locker(m_file_watcher_lock); + ++m_pending_notifies; + notify_id = ++m_notify_id; + } + SharedNotifyHandle notify_handle(new NotifyHandle()); { SharedWatcher watcher = get_watcher(oid); - RWLock::WLocker l(watcher->lock); - { - Mutex::Locker l2(m_file_watcher_lock); - ++m_pending_notifies; - uint64_t notify_id = ++m_notify_id; + RWLock::WLocker watcher_locker(watcher->lock); + + WatchHandles watch_handles = watcher->watch_handles; + for (WatchHandles::iterator w_it = watch_handles.begin(); + w_it != watch_handles.end(); ++w_it) { + WatchHandle &watch_handle = w_it->second; + + Mutex::Locker notify_handle_locker(notify_handle->lock); + notify_handle->pending_watcher_ids.insert(std::make_pair( + watch_handle.gid, watch_handle.handle)); + } + + watcher->notify_handles[notify_id] = notify_handle; + + FunctionContext *ctx = new FunctionContext( + boost::bind(&TestWatchNotify::execute_notify, this, oid, bl, notify_id)); + m_finisher->queue(ctx); + } + + { + utime_t timeout; + timeout.set_from_double(ceph_clock_now(m_cct) + (timeout_ms / 1000.0)); - SharedNotifyHandle notify_handle(new NotifyHandle()); - notify_handle->pbl = pbl; + Mutex::Locker notify_locker(notify_handle->lock); + while (!notify_handle->pending_watcher_ids.empty()) { + notify_handle->cond.WaitUntil(notify_handle->lock, timeout); + } - watcher->notify_handles[notify_id] = notify_handle; + if (pbl != NULL) { + ::encode(notify_handle->notify_responses, *pbl); + ::encode(notify_handle->pending_watcher_ids, *pbl); + } + } - FunctionContext *ctx = new FunctionContext( - boost::bind(&TestWatchNotify::execute_notify, this, - oid, bl, notify_id, &lock, &cond, &done)); - m_finisher->queue(ctx); + SharedWatcher watcher = get_watcher(oid); + Mutex::Locker file_watcher_locker(m_file_watcher_lock); + { + RWLock::WLocker watcher_locker(watcher->lock); + + watcher->notify_handles.erase(notify_id); + if (watcher->watch_handles.empty() && watcher->notify_handles.empty()) { + m_file_watchers.erase(oid); } } - lock.Lock(); - while (!done) { - cond.Wait(lock); + if (--m_pending_notifies == 0) { + m_file_watcher_cond.Signal(); } - lock.Unlock(); return 0; } @@ -107,20 +132,24 @@ void TestWatchNotify::notify_ack(const std::string& o, uint64_t notify_id, response.append(bl); SharedNotifyHandle notify_handle = it->second; - Mutex::Locker l2(notify_handle->lock); - --notify_handle->pending_responses; - notify_handle->notify_responses[std::make_pair(gid, handle)] = response; - notify_handle->cond.Signal(); + Mutex::Locker notify_handle_locker(notify_handle->lock); + + WatcherID watcher_id = std::make_pair(gid, handle); + notify_handle->notify_responses[watcher_id] = response; + notify_handle->pending_watcher_ids.erase(watcher_id); + if (notify_handle->pending_watcher_ids.empty()) { + notify_handle->cond.Signal(); + } } -int TestWatchNotify::watch(const std::string& o, uint64_t instance_id, +int TestWatchNotify::watch(const std::string& o, uint64_t gid, uint64_t *handle, librados::WatchCtx *ctx, librados::WatchCtx2 *ctx2) { SharedWatcher watcher = get_watcher(o); RWLock::WLocker l(watcher->lock); WatchHandle watch_handle; - watch_handle.instance_id = instance_id; + watch_handle.gid = gid; watch_handle.handle = ++m_handle; watch_handle.watch_ctx = ctx; watch_handle.watch_ctx2 = ctx2; @@ -131,24 +160,21 @@ int TestWatchNotify::watch(const std::string& o, uint64_t instance_id, } int TestWatchNotify::unwatch(uint64_t handle) { - - SharedWatcher watcher; - { - Mutex::Locker l(m_file_watcher_lock); - for (FileWatchers::iterator it = m_file_watchers.begin(); - it != m_file_watchers.end(); ++it) { - if (it->second->watch_handles.find(handle) != - it->second->watch_handles.end()) { - watcher = it->second; - break; + Mutex::Locker l(m_file_watcher_lock); + for (FileWatchers::iterator it = m_file_watchers.begin(); + it != m_file_watchers.end(); ++it) { + SharedWatcher watcher = it->second; + RWLock::WLocker watcher_locker(watcher->lock); + + WatchHandles::iterator w_it = watcher->watch_handles.find(handle); + if (w_it != watcher->watch_handles.end()) { + watcher->watch_handles.erase(w_it); + if (watcher->watch_handles.empty() && watcher->notify_handles.empty()) { + m_file_watchers.erase(it); } + break; } } - - if (watcher) { - RWLock::WLocker l(watcher->lock); - watcher->watch_handles.erase(handle); - } return 0; } @@ -168,65 +194,55 @@ TestWatchNotify::SharedWatcher TestWatchNotify::_get_watcher( } void TestWatchNotify::execute_notify(const std::string &oid, - bufferlist &bl, uint64_t notify_id, - Mutex *lock, Cond *cond, - bool *done) { - WatchHandles watch_handles; - SharedNotifyHandle notify_handle; - - { - SharedWatcher watcher = get_watcher(oid); - RWLock::RLocker l(watcher->lock); + bufferlist &bl, uint64_t notify_id) { + SharedWatcher watcher = get_watcher(oid); + RWLock::RLocker watcher_locker(watcher->lock); + WatchHandles &watch_handles = watcher->watch_handles; - NotifyHandles::iterator n_it = watcher->notify_handles.find(notify_id); - if (n_it == watcher->notify_handles.end()) { - return; - } - - watch_handles = watcher->watch_handles; - notify_handle = n_it->second; + NotifyHandles::iterator n_it = watcher->notify_handles.find(notify_id); + if (n_it == watcher->notify_handles.end()) { + return; } - utime_t timeout; - timeout.set_from_double(ceph_clock_now(m_cct) + 15); - - for (WatchHandles::iterator w_it = watch_handles.begin(); - w_it != watch_handles.end(); ++w_it) { - WatchHandle &watch_handle = w_it->second; - - bufferlist notify_bl; - notify_bl.append(bl); - if (watch_handle.watch_ctx2 != NULL) { - { - Mutex::Locker l2(notify_handle->lock); - ++notify_handle->pending_responses; + SharedNotifyHandle notify_handle = n_it->second; + Mutex::Locker notify_handle_locker(notify_handle->lock); + + WatcherIDs watcher_ids(notify_handle->pending_watcher_ids); + for (WatcherIDs::iterator w_id_it = watcher_ids.begin(); + w_id_it != watcher_ids.end(); ++w_id_it) { + WatcherID watcher_id = *w_id_it; + WatchHandles::iterator w_it = watch_handles.find(watcher_id.second); + if (w_it == watch_handles.end()) { + notify_handle->pending_watcher_ids.erase(watcher_id); + } else { + WatchHandle &watch_handle = w_it->second; + assert(watch_handle.gid == watcher_id.first); + assert(watch_handle.handle == watcher_id.second); + + bufferlist notify_bl; + notify_bl.append(bl); + + notify_handle->lock.Unlock(); + watcher->lock.put_read(); + if (watch_handle.watch_ctx2 != NULL) { + watch_handle.watch_ctx2->handle_notify(notify_id, w_it->first, 0, + notify_bl); + } else if (watch_handle.watch_ctx != NULL) { + watch_handle.watch_ctx->notify(0, 0, notify_bl); } - watch_handle.watch_ctx2->handle_notify(notify_id, w_it->first, 0, - notify_bl); - } else if (watch_handle.watch_ctx != NULL) { - watch_handle.watch_ctx->notify(0, 0, notify_bl); - } - } + watcher->lock.get_read(); + notify_handle->lock.Lock(); - { - Mutex::Locker l2(notify_handle->lock); - while (notify_handle->pending_responses > 0) { - notify_handle->cond.WaitUntil(notify_handle->lock, timeout); - } - if (notify_handle->pbl != NULL) { - ::encode(notify_handle->notify_responses, *notify_handle->pbl); + if (watch_handle.watch_ctx2 == NULL) { + // auto ack old-style watch/notify clients + notify_handle->notify_responses[watcher_id] = bufferlist(); + notify_handle->pending_watcher_ids.erase(watcher_id); + } } } - Mutex::Locker l3(*lock); - *done = true; - cond->Signal(); - - { - Mutex::Locker file_watcher_locker(m_file_watcher_lock); - if (--m_pending_notifies == 0) { - m_file_watcher_cond.Signal(); - } + if (notify_handle->pending_watcher_ids.empty()) { + notify_handle->cond.Signal(); } } diff --git a/ceph/src/test/librados_test_stub/TestWatchNotify.h b/ceph/src/test/librados_test_stub/TestWatchNotify.h index 1761302b..7ff4b1af 100644 --- a/ceph/src/test/librados_test_stub/TestWatchNotify.h +++ b/ceph/src/test/librados_test_stub/TestWatchNotify.h @@ -21,13 +21,14 @@ namespace librados { class TestWatchNotify : boost::noncopyable { public: + typedef std::pair WatcherID; + typedef std::set WatcherIDs; typedef std::map, bufferlist> NotifyResponses; struct NotifyHandle { NotifyHandle(); + WatcherIDs pending_watcher_ids; NotifyResponses notify_responses; - bufferlist *pbl; - size_t pending_responses; Mutex lock; Cond cond; }; @@ -35,7 +36,7 @@ public: typedef std::map NotifyHandles; struct WatchHandle { - uint64_t instance_id; + uint64_t gid; uint64_t handle; librados::WatchCtx* watch_ctx; librados::WatchCtx2* watch_ctx2; @@ -51,7 +52,7 @@ public: }; typedef boost::shared_ptr SharedWatcher; - TestWatchNotify(CephContext *cct); + TestWatchNotify(CephContext *cct, Finisher *finisher); ~TestWatchNotify(); void flush(); @@ -61,7 +62,7 @@ public: uint64_t timeout_ms, bufferlist *pbl); void notify_ack(const std::string& o, uint64_t notify_id, uint64_t handle, uint64_t gid, bufferlist& bl); - int watch(const std::string& o, uint64_t instance_id, uint64_t *handle, + int watch(const std::string& o, uint64_t gid, uint64_t *handle, librados::WatchCtx *ctx, librados::WatchCtx2 *ctx2); int unwatch(uint64_t handle); @@ -84,7 +85,7 @@ private: SharedWatcher get_watcher(const std::string& oid); SharedWatcher _get_watcher(const std::string& oid); void execute_notify(const std::string &oid, bufferlist &bl, - uint64_t notify_id, Mutex *lock, Cond *cond, bool *done); + uint64_t notify_id); }; diff --git a/ceph/src/test/librbd/test_librbd.cc b/ceph/src/test/librbd/test_librbd.cc index f48f081c..59981ea0 100644 --- a/ceph/src/test/librbd/test_librbd.cc +++ b/ceph/src/test/librbd/test_librbd.cc @@ -2276,6 +2276,46 @@ TEST_F(TestLibRBD, DiffIterateRegression6926) ASSERT_EQ(static_cast(0), extents.size()); } +TEST_F(TestLibRBD, DiffIterateParentDiscard) +{ + REQUIRE_FEATURE(RBD_FEATURE_LAYERING); + + librados::IoCtx ioctx; + ASSERT_EQ(0, this->_rados.ioctx_create(this->m_pool_name.c_str(), ioctx)); + + librbd::RBD rbd; + librbd::Image image; + std::string name = this->get_temp_image_name(); + uint64_t size = 20 << 20; + int order = 0; + + ASSERT_EQ(0, create_image_pp(rbd, ioctx, name.c_str(), size, &order)); + ASSERT_EQ(0, rbd.open(ioctx, image, name.c_str(), NULL)); + + interval_set exists; + interval_set one; + scribble(image, 10, 102400, &exists, &one); + ASSERT_EQ(0, image.snap_create("one")); + + ASSERT_EQ(1 << order, image.discard(0, 1 << order)); + ASSERT_EQ(0, image.snap_create("two")); + ASSERT_EQ(0, image.snap_protect("two")); + exists.clear(); + one.clear(); + + std::string clone_name = this->get_temp_image_name(); + ASSERT_EQ(0, rbd.clone(ioctx, name.c_str(), "two", ioctx, + clone_name.c_str(), RBD_FEATURE_LAYERING, &order)); + ASSERT_EQ(0, rbd.open(ioctx, image, clone_name.c_str(), NULL)); + + interval_set two; + scribble(image, 10, 102400, &exists, &two); + + interval_set diff; + ASSERT_EQ(0, image.diff_iterate(NULL, 0, size, iterate_cb, (void *)&diff)); + ASSERT_TRUE(two.subset_of(diff)); +} + TEST_F(TestLibRBD, ZeroLengthWrite) { rados_ioctx_t ioctx; @@ -2360,7 +2400,7 @@ TEST_F(TestLibRBD, LargeCacheRead) rados_ioctx_t ioctx; rados_ioctx_create(_cluster, m_pool_name.c_str(), &ioctx); - uint32_t new_cache_size = 16777216; + uint32_t new_cache_size = 1 << 20; std::string orig_cache_size; ASSERT_EQ(0, _rados.conf_get("rbd_cache_size", orig_cache_size)); ASSERT_EQ(0, _rados.conf_set("rbd_cache_size", @@ -2372,24 +2412,22 @@ TEST_F(TestLibRBD, LargeCacheRead) } BOOST_SCOPE_EXIT_END; rbd_image_t image; - int order = 0; - const char *name = "testimg"; - uint64_t size = new_cache_size + 1; + int order = 21; + std::string name = get_temp_image_name(); + uint64_t size = 1 << order; - ASSERT_EQ(0, create_image(ioctx, name, size, &order)); - ASSERT_EQ(0, rbd_open(ioctx, name, &image, NULL)); + ASSERT_EQ(0, create_image(ioctx, name.c_str(), size, &order)); + ASSERT_EQ(0, rbd_open(ioctx, name.c_str(), &image, NULL)); std::string buffer(1 << order, '1'); - for (size_t offs = 0; offs < size; offs += buffer.size()) { - size_t len = std::min(buffer.size(), size - offs); - ASSERT_EQ(static_cast(len), - rbd_write(image, offs, len, buffer.c_str())); - } + + ASSERT_EQ(static_cast(buffer.size()), + rbd_write(image, 0, buffer.size(), buffer.c_str())); ASSERT_EQ(0, rbd_invalidate_cache(image)); - buffer.resize(size); - ASSERT_EQ(static_cast(size-1024), rbd_read(image, 1024, size, &buffer[0])); + ASSERT_EQ(static_cast(buffer.size()), + rbd_read(image, 0, buffer.size(), &buffer[0])); ASSERT_EQ(0, rbd_close(image)); @@ -2464,8 +2502,12 @@ TEST_F(TestLibRBD, SnapCreateViaLockOwner) librbd::Image image1; ASSERT_EQ(0, rbd.open(ioctx, image1, name.c_str(), NULL)); + // switch to writeback cache + ASSERT_EQ(0, image1.flush()); + bufferlist bl; - ASSERT_EQ(0, image1.write(0, 0, bl)); + bl.append(std::string(4096, '1')); + ASSERT_EQ(bl.length(), image1.write(0, bl.length(), bl)); bool lock_owner; ASSERT_EQ(0, image1.is_exclusive_lock_owner(&lock_owner)); @@ -2637,7 +2679,13 @@ TEST_F(TestLibRBD, BlockingAIO) int order = 18; ASSERT_EQ(0, create_image_pp(rbd, ioctx, name.c_str(), size, &order)); + std::string non_blocking_aio; + ASSERT_EQ(0, _rados.conf_get("rbd_non_blocking_aio", non_blocking_aio)); ASSERT_EQ(0, _rados.conf_set("rbd_non_blocking_aio", "0")); + BOOST_SCOPE_EXIT( (non_blocking_aio) ) { + ASSERT_EQ(0, _rados.conf_set("rbd_non_blocking_aio", + non_blocking_aio.c_str())); + } BOOST_SCOPE_EXIT_END; librbd::Image image; ASSERT_EQ(0, rbd.open(ioctx, image, name.c_str(), NULL)); @@ -2786,3 +2834,34 @@ TEST_F(TestLibRBD, CacheMayCopyOnWrite) { ASSERT_EQ(1024, clone.read(offset + 2048, 1024, read_bl)); ASSERT_TRUE(expect_bl.contents_equal(read_bl)); } + +TEST_F(TestLibRBD, FlushEmptyOpsOnExternalSnapshot) { + std::string cache_enabled; + ASSERT_EQ(0, _rados.conf_get("rbd_cache", cache_enabled)); + ASSERT_EQ(0, _rados.conf_set("rbd_cache", "false")); + BOOST_SCOPE_EXIT( (cache_enabled) ) { + ASSERT_EQ(0, _rados.conf_set("rbd_cache", cache_enabled.c_str())); + } BOOST_SCOPE_EXIT_END; + + librados::IoCtx ioctx; + ASSERT_EQ(0, _rados.ioctx_create(m_pool_name.c_str(), ioctx)); + + librbd::RBD rbd; + std::string name = get_temp_image_name(); + uint64_t size = 1 << 18; + int order = 0; + ASSERT_EQ(0, create_image_pp(rbd, ioctx, name.c_str(), size, &order)); + + librbd::Image image1; + librbd::Image image2; + ASSERT_EQ(0, rbd.open(ioctx, image1, name.c_str(), NULL)); + ASSERT_EQ(0, rbd.open(ioctx, image2, name.c_str(), NULL)); + ASSERT_EQ(0, image1.snap_create("snap1")); + + librbd::RBD::AioCompletion *read_comp = + new librbd::RBD::AioCompletion(NULL, NULL); + bufferlist read_bl; + image2.aio_read(0, 1024, read_bl, read_comp); + ASSERT_EQ(0, read_comp->wait_for_complete()); + read_comp->release(); +} diff --git a/ceph/src/test/mon/PGMap.cc b/ceph/src/test/mon/PGMap.cc index 9f7a6b2d..f13fa893 100644 --- a/ceph/src/test/mon/PGMap.cc +++ b/ceph/src/test/mon/PGMap.cc @@ -81,7 +81,40 @@ TEST(pgmap, min_last_epoch_clean) } - +TEST(pgmap, calc_stats) +{ + bufferlist bl; + { + PGMap pg_map; + PGMap::Incremental inc; + osd_stat_t os; + pg_stat_t ps; + + ps.last_epoch_clean = 999; + inc.pg_stat_updates[pg_t(9,9)] = ps; + inc.version = 1; + inc.update_stat(0, 123, os); + pg_map.apply_incremental(g_ceph_context, inc); + ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean()); + pg_map.encode(bl); + } + { + PGMap pg_map; + PGMap::Incremental inc; + osd_stat_t os; + pg_stat_t ps; + + ps.last_epoch_clean = 999; + inc.pg_stat_updates[pg_t(9,9)] = ps; + inc.version = 1; + inc.update_stat(0, 321, os); + pg_map.apply_incremental(g_ceph_context, inc); + ASSERT_EQ(321u, pg_map.get_min_last_epoch_clean()); + bufferlist::iterator p = bl.begin(); + ::decode(pg_map, p); + ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean()); + } +} int main(int argc, char **argv) { vector args; diff --git a/ceph/src/test/mon/test_mon_workloadgen.cc b/ceph/src/test/mon/test_mon_workloadgen.cc index cb3419c5..e18906d1 100644 --- a/ceph/src/test/mon/test_mon_workloadgen.cc +++ b/ceph/src/test/mon/test_mon_workloadgen.cc @@ -244,8 +244,7 @@ class ClientStub : public TestStub return err; } - messenger.reset(Messenger::create(cct, cct->_conf->ms_type, entity_name_t::CLIENT(-1), - "stubclient", getpid())); + messenger.reset(Messenger::create_client_messenger(cct, "stubclient")); assert(messenger.get() != NULL); messenger->set_default_policy( diff --git a/ceph/src/test/osd/Object.cc b/ceph/src/test/osd/Object.cc index c5ff040e..68dd2b18 100644 --- a/ceph/src/test/osd/Object.cc +++ b/ceph/src/test/osd/Object.cc @@ -182,3 +182,43 @@ bool ObjectDesc::check(bufferlist &to_check) { } return true; } + +bool ObjectDesc::check_sparse(const std::map& extents, + bufferlist &to_check) { + iterator i = begin(); + bufferlist::iterator p = to_check.begin(); + uint64_t pos = 0; + for (std::map::const_iterator extent = extents.begin(); + extent != extents.end(); + ++extent) { + const uint64_t start = extent->first; + const uint64_t end = start + extent->second; + for (; pos < end; ++i, ++pos) { + if (i.end()) { + std::cout << "reached end of iterator first" << std::endl; + return false; + } + if (pos < start) { + // check the hole + if (*i != '\0') { + std::cout << "incorrect buffer at pos " << pos << std::endl; + return false; + } + } else { + // then the extent + if (*i != *p) { + std::cout << "incorrect buffer at pos " << pos << std::endl; + return false; + } + ++p; + } + } + } + uint64_t size = layers.empty() ? 0 : + most_recent_gen()->get_length(most_recent()); + if (pos != size) { + std::cout << "only read " << pos << " out of size " << size << std::endl; + return false; + } + return true; +} diff --git a/ceph/src/test/osd/Object.h b/ceph/src/test/osd/Object.h index bffb397c..feeefebe 100644 --- a/ceph/src/test/osd/Object.h +++ b/ceph/src/test/osd/Object.h @@ -358,6 +358,8 @@ public: // takes ownership of gen void update(ContentsGenerator *gen, const ContDesc &next); bool check(bufferlist &to_check); + bool check_sparse(const std::map& extends, + bufferlist &to_check); const ContDesc &most_recent(); ContentsGenerator *most_recent_gen() { return layers.begin()->first.get(); diff --git a/ceph/src/test/osd/RadosModel.h b/ceph/src/test/osd/RadosModel.h index 8d6889ed..46a936e5 100644 --- a/ceph/src/test/osd/RadosModel.h +++ b/ceph/src/test/osd/RadosModel.h @@ -983,6 +983,8 @@ public: bufferlist result; int retval; + std::map extent_result; + bool is_sparse_read; map attrs; int attrretval; @@ -1003,9 +1005,10 @@ public: oid(oid), snap(0), retval(0), + is_sparse_read(false), attrretval(0) {} - + void _begin() { context->state_lock.Lock(); @@ -1049,11 +1052,23 @@ public: context->io_ctx.snap_set_read(context->snaps[snap]); } - op.read(0, - !old_value.has_contents() ? 0 : - old_value.most_recent_gen()->get_length(old_value.most_recent()), - &result, - &retval); + uint64_t read_len = 0; + if (old_value.has_contents()) + read_len = old_value.most_recent_gen()->get_length(old_value.most_recent()); + if (rand() % 2) { + is_sparse_read = false; + op.read(0, + read_len, + &result, + &retval); + } else { + is_sparse_read = true; + op.sparse_read(0, + read_len, + &extent_result, + &result, + &retval); + } for (map::iterator i = old_value.attrs.begin(); i != old_value.attrs.end(); @@ -1122,9 +1137,16 @@ public: << ", expected " << old_value.most_recent() << std::endl; context->errors++; } - if (!old_value.check(result)) { - cerr << num << ": oid " << oid << " contents " << to_check << " corrupt" << std::endl; - context->errors++; + if (is_sparse_read) { + if (!old_value.check_sparse(extent_result, result)) { + cerr << num << ": oid " << oid << " contents " << to_check << " corrupt" << std::endl; + context->errors++; + } + } else { + if (!old_value.check(result)) { + cerr << num << ": oid " << oid << " contents " << to_check << " corrupt" << std::endl; + context->errors++; + } } if (context->errors) assert(0); } diff --git a/ceph/src/test/test_rbd_replay.cc b/ceph/src/test/test_rbd_replay.cc index 633c5fb4..24146875 100644 --- a/ceph/src/test/test_rbd_replay.cc +++ b/ceph/src/test/test_rbd_replay.cc @@ -17,11 +17,9 @@ #include #include #include -#include "rbd_replay/Deser.hpp" #include "rbd_replay/ImageNameMap.hpp" #include "rbd_replay/ios.hpp" #include "rbd_replay/rbd_loc.hpp" -#include "rbd_replay/Ser.hpp" using namespace rbd_replay; @@ -38,41 +36,6 @@ static void add_mapping(ImageNameMap *map, std::string mapping_string) { map->add_mapping(mapping); } -TEST(RBDReplay, Ser) { - std::ostringstream oss; - rbd_replay::Ser ser(oss); - ser.write_uint32_t(0x01020304u); - ser.write_string("hello"); - ser.write_bool(true); - ser.write_bool(false); - std::string s(oss.str()); - const char* data = s.data(); - size_t size = s.size(); - ASSERT_EQ(15U, size); - const char expected_data[] = {1, 2, 3, 4, 0, 0, 0, 5, 'h', 'e', 'l', 'l', 'o', 1, 0}; - for (size_t i = 0; i < size; i++) { - EXPECT_EQ(expected_data[i], data[i]); - } -} - -TEST(RBDReplay, Deser) { - const char data[] = {1, 2, 3, 4, 0, 0, 0, 5, 'h', 'e', 'l', 'l', 'o', 1, 0}; - const std::string s(data, sizeof(data)); - std::istringstream iss(s); - rbd_replay::Deser deser(iss); - EXPECT_FALSE(deser.eof()); - EXPECT_EQ(0x01020304u, deser.read_uint32_t()); - EXPECT_FALSE(deser.eof()); - EXPECT_EQ("hello", deser.read_string()); - EXPECT_FALSE(deser.eof()); - EXPECT_TRUE(deser.read_bool()); - EXPECT_FALSE(deser.eof()); - EXPECT_FALSE(deser.read_bool()); - EXPECT_FALSE(deser.eof()); - deser.read_uint8_t(); - EXPECT_TRUE(deser.eof()); -} - TEST(RBDReplay, ImageNameMap) { ImageNameMap m; add_mapping(&m, "x@y=y@x"); @@ -169,57 +132,3 @@ TEST(RBDReplay, rbd_loc_parse) { EXPECT_FALSE(m.parse("a@b/c")); } -static IO::ptr mkio(action_id_t ionum, int num_expected, ...) { - IO::ptr io(new StartThreadIO(ionum, ionum, 0)); - - va_list ap; - va_start(ap, num_expected); - for (int i = 0; i < num_expected ; i++) { - IO::ptr* dep = va_arg(ap, IO::ptr*); - if (!dep) { - break; - } - io->dependencies().insert(*dep); - } - va_end(ap); - - return io; -} - -TEST(RBDReplay, batch_unreachable_from) { - io_set_t deps; - io_set_t base; - io_set_t unreachable; - IO::ptr io1(mkio(1, 0)); - IO::ptr io2(mkio(2, 1, &io1)); - IO::ptr io3(mkio(3, 1, &io2)); - IO::ptr io4(mkio(4, 1, &io1)); - IO::ptr io5(mkio(5, 2, &io2, &io4)); - IO::ptr io6(mkio(6, 2, &io3, &io5)); - IO::ptr io7(mkio(7, 1, &io4)); - IO::ptr io8(mkio(8, 2, &io5, &io7)); - IO::ptr io9(mkio(9, 2, &io6, &io8)); - // 1 (deps) <-- 2 (deps) <-- 3 (deps) - // ^ ^ ^ - // | | | - // 4 <--------- 5 (base) <-- 6 (deps) - // ^ ^ ^ - // | | | - // 7 <--------- 8 <--------- 9 - deps.insert(io1); - deps.insert(io2); - deps.insert(io3); - deps.insert(io6); - base.insert(io5); - // Anything in 'deps' which is not reachable from 'base' is added to 'unreachable' - batch_unreachable_from(deps, base, &unreachable); - EXPECT_EQ(0U, unreachable.count(io1)); - EXPECT_EQ(0U, unreachable.count(io2)); - EXPECT_EQ(1U, unreachable.count(io3)); - EXPECT_EQ(0U, unreachable.count(io4)); - EXPECT_EQ(0U, unreachable.count(io5)); - EXPECT_EQ(1U, unreachable.count(io6)); - EXPECT_EQ(0U, unreachable.count(io7)); - EXPECT_EQ(0U, unreachable.count(io8)); - EXPECT_EQ(0U, unreachable.count(io9)); -} diff --git a/ceph/src/tools/ceph_monstore_tool.cc b/ceph/src/tools/ceph_monstore_tool.cc index 744000eb..c37c3af5 100644 --- a/ceph/src/tools/ceph_monstore_tool.cc +++ b/ceph/src/tools/ceph_monstore_tool.cc @@ -12,6 +12,7 @@ */ #include #include +#include #include #include @@ -23,6 +24,10 @@ #include "include/stringify.h" #include "mon/MonitorDBStore.h" #include "mon/Paxos.h" +#include "mon/MonMap.h" +#include "mds/MDSMap.h" +#include "osd/OSDMap.h" +#include "crush/CrushCompiler.h" namespace po = boost::program_options; using namespace std; @@ -164,6 +169,8 @@ int parse_cmd_args( * dump-trace < --trace-file arg > * replay-trace * random-gen + * rewrite-crush + * inflate-pgmap * * wanted syntax: * @@ -192,6 +199,10 @@ void usage(const char *n, po::options_description &d) << " (default: last committed)\n" << " get mdsmap [-- options] get mdsmap (version VER if specified)\n" << " (default: last committed)\n" + << " get crushmap [-- options] get crushmap (version VER if specified)\n" + << " (default: last committed)\n" + << " show-versions [-- options] show the first&last committed version of map\n" + << " (show-versions -- --help for more info)\n" << " dump-keys dumps store keys to FILE\n" << " (default: stdout)\n" << " dump-paxos [-- options] dump paxos transactions\n" @@ -202,6 +213,10 @@ void usage(const char *n, po::options_description &d) << " (replay-trace -- --help for more info)\n" << " random-gen [-- options] add randomly generated ops to the store\n" << " (random-gen -- --help for more info)\n" + << " rewrite-crush [-- options] add a rewrite commit to the store\n" + << " (rewrite-crush -- --help for more info)\n" + << " inflate-pgmap [-- options] add given number of pgmaps to store\n" + << " (inflate-pgmap -- --help for more info)\n" << std::endl; std::cerr << d << std::endl; std::cerr @@ -213,6 +228,287 @@ void usage(const char *n, po::options_description &d) << std::endl; } +int update_osdmap(MonitorDBStore& store, version_t ver, bool copy, + ceph::shared_ptr crush, + MonitorDBStore::Transaction* t) { + const string prefix("osdmap"); + + // full + bufferlist bl; + int r = 0; + r = store.get(prefix, store.combine_strings("full", ver), bl); + if (r) { + std::cerr << "Error getting full map: " << cpp_strerror(r) << std::endl; + return r; + } + OSDMap osdmap; + osdmap.decode(bl); + osdmap.crush = crush; + if (copy) { + osdmap.inc_epoch(); + } + bl.clear(); + // be consistent with OSDMonitor::update_from_paxos() + osdmap.encode(bl, CEPH_FEATURES_ALL|CEPH_FEATURE_RESERVED); + t->put(prefix, store.combine_strings("full", osdmap.get_epoch()), bl); + + // incremental + OSDMap::Incremental inc; + if (copy) { + inc.epoch = osdmap.get_epoch(); + inc.fsid = osdmap.get_fsid(); + } else { + bl.clear(); + r = store.get(prefix, ver, bl); + if (r) { + std::cerr << "Error getting inc map: " << cpp_strerror(r) << std::endl; + return r; + } + OSDMap::Incremental inc(bl); + if (inc.crush.length()) { + inc.crush.clear(); + crush->encode(inc.crush); + } + if (inc.fullmap.length()) { + OSDMap fullmap; + fullmap.decode(inc.fullmap); + fullmap.crush = crush; + inc.fullmap.clear(); + fullmap.encode(inc.fullmap); + } + } + assert(osdmap.have_crc()); + inc.full_crc = osdmap.get_crc(); + bl.clear(); + // be consistent with OSDMonitor::update_from_paxos() + inc.encode(bl, CEPH_FEATURES_ALL|CEPH_FEATURE_RESERVED); + t->put(prefix, inc.epoch, bl); + return 0; +} + +int rewrite_transaction(MonitorDBStore& store, int version, + const string& crush_file, + MonitorDBStore::Transaction* t) { + const string prefix("osdmap"); + + // calc the known-good epoch + version_t last_committed = store.get(prefix, "last_committed"); + version_t good_version = 0; + if (version <= 0) { + if (last_committed >= (unsigned)-version) { + good_version = last_committed + version; + } else { + std::cerr << "osdmap-version is less than: -" << last_committed << std::endl; + return EINVAL; + } + } else { + good_version = version; + } + if (good_version >= last_committed) { + std::cout << "good epoch is greater or equal to the last committed one: " + << good_version << " >= " << last_committed << std::endl; + return 0; + } + + // load/extract the crush map + int r = 0; + ceph::shared_ptr crush(new CrushWrapper); + if (crush_file.empty()) { + bufferlist bl; + r = store.get(prefix, store.combine_strings("full", good_version), bl); + if (r) { + std::cerr << "Error getting map: " << cpp_strerror(r) << std::endl; + return r; + } + OSDMap osdmap; + osdmap.decode(bl); + crush = osdmap.crush; + } else { + string err; + bufferlist bl; + r = bl.read_file(crush_file.c_str(), &err); + if (r) { + std::cerr << err << ": " << cpp_strerror(r) << std::endl; + return r; + } + bufferlist::iterator p = bl.begin(); + crush->decode(p); + } + + // prepare a transaction to rewrite the epochs + // (good_version, last_committed] + // with the good crush map. + // XXX: may need to break this into several paxos versions? + assert(good_version < last_committed); + for (version_t v = good_version + 1; v <= last_committed; v++) { + cout << "rewriting epoch #" << v << "/" << last_committed << std::endl; + r = update_osdmap(store, v, false, crush, t); + if (r) + return r; + } + + // add a new osdmap epoch to store, so monitors will update their current osdmap + // in addition to the ones stored in epochs. + // + // This is needed due to the way the monitor updates from paxos and the + // facilities we are leveraging to push this update to the rest of the + // quorum. + // + // In a nutshell, we are generating a good version of the osdmap, with a + // proper crush, and building a transaction that will replace the bad + // osdmaps with good osdmaps. But this transaction needs to be applied on + // all nodes, so that the monitors will have good osdmaps to share with + // clients. We thus leverage Paxos, specifically the recovery mechanism, by + // creating a pending value that will be committed once the monitors form an + // initial quorum after being brought back to life. + // + // However, the way the monitor works has the paxos services, including the + // OSDMonitor, updating their state from disk *prior* to the recovery phase + // begins (so they have an up to date state in memory). This means the + // OSDMonitor will see the old, broken map, before the new paxos version is + // applied to disk, and the old version is cached. Even though we have the + // good map now, and we share the good map with clients, we will still be + // working on the old broken map. Instead of mucking around the monitor to + // make this work, we instead opt for adding the same osdmap but with a + // newer version, so that the OSDMonitor picks up on it when it updates from + // paxos after the proposal has been committed. This is not elegant, but + // avoids further unpleasantness that would arise from kludging around the + // current behavior. Also, has the added benefit of making sure the clients + // get an updated version of the map (because last_committed+1 > + // last_committed) :) + // + cout << "adding a new epoch #" << last_committed+1 << std::endl; + r = update_osdmap(store, last_committed++, true, crush, t); + if (r) + return r; + t->put(prefix, store.combine_strings("full", "latest"), last_committed); + t->put(prefix, "last_committed", last_committed); + return 0; +} + +/** + * create a new paxos version which carries a proposal to rewrite all epochs + * of incremental and full map of "osdmap" after a faulty crush map is injected. + * so the leader will trigger a recovery and propagate this fix to its peons, + * after the proposal is accepted, and the transaction in it is applied. all + * monitors will rewrite the bad crush map with the good one, and have a new + * osdmap epoch with the good crush map in it. + */ +int rewrite_crush(const char* progname, + vector& subcmds, + MonitorDBStore& store) { + po::options_description op_desc("Allowed 'rewrite-crush' options"); + int version = -1; + string crush_file; + op_desc.add_options() + ("help,h", "produce this help message") + ("crush", po::value(&crush_file), + ("path to the crush map file " + "(default: will instead extract it from the known-good osdmap)")) + ("good-epoch", po::value(&version), + "known-good epoch of osdmap, if a negative number '-N' is given, the " + "$last_committed-N is used instead (default: -1). " + "Please note, -1 is not necessarily a good epoch, because there are " + "good chance that we have more epochs slipped into the monstore after " + "the one where the crushmap is firstly injected.") + ; + po::variables_map op_vm; + int r = parse_cmd_args(&op_desc, NULL, NULL, subcmds, &op_vm); + if (r) { + return -r; + } + if (op_vm.count("help")) { + usage(progname, op_desc); + return 0; + } + + MonitorDBStore::Transaction rewrite_txn; + r = rewrite_transaction(store, version, crush_file, &rewrite_txn); + if (r) { + return r; + } + + // store the transaction into store as a proposal + const string prefix("paxos"); + version_t pending_v = store.get(prefix, "last_committed") + 1; + MonitorDBStore::TransactionRef t(new MonitorDBStore::Transaction); + bufferlist bl; + rewrite_txn.encode(bl); + cout << "adding pending commit " << pending_v + << " " << bl.length() << " bytes" << std::endl; + t->put(prefix, pending_v, bl); + t->put(prefix, "pending_v", pending_v); + // a large enough yet unique proposal number will probably do the trick + version_t pending_pn = (store.get(prefix, "accepted_pn") / 100 + 4) * 100 + 1; + t->put(prefix, "pending_pn", pending_pn); + store.apply_transaction(t); + return 0; +} + +int inflate_pgmap(MonitorDBStore& st, unsigned n, bool can_be_trimmed) { + // put latest pg map into monstore to bloat it up + // only format version == 1 is supported + version_t last = st.get("pgmap", "last_committed"); + bufferlist bl; + + // get the latest delta + int r = st.get("pgmap", last, bl); + if (r) { + std::cerr << "Error getting pgmap: " << cpp_strerror(r) << std::endl; + return r; + } + + // try to pull together an idempotent "delta" + ceph::unordered_map pg_stat; + for (KeyValueDB::Iterator i = st.get_iterator("pgmap_pg"); + i->valid(); i->next()) { + pg_t pgid; + if (!pgid.parse(i->key().c_str())) { + std::cerr << "unable to parse key " << i->key() << std::endl; + continue; + } + bufferlist pg_bl = i->value(); + pg_stat_t ps; + bufferlist::iterator p = pg_bl.begin(); + ::decode(ps, p); + // will update the last_epoch_clean of all the pgs. + pg_stat[pgid] = ps; + } + + version_t first = st.get("pgmap", "first_committed"); + version_t ver = last; + MonitorDBStore::TransactionRef txn(new MonitorDBStore::Transaction); + for (unsigned i = 0; i < n; i++) { + bufferlist trans_bl; + bufferlist dirty_pgs; + for (ceph::unordered_map::iterator ps = pg_stat.begin(); + ps != pg_stat.end(); ++ps) { + ::encode(ps->first, dirty_pgs); + if (!can_be_trimmed) { + ps->second.last_epoch_clean = first; + } + ::encode(ps->second, dirty_pgs); + } + utime_t inc_stamp = ceph_clock_now(NULL); + ::encode(inc_stamp, trans_bl); + ::encode_destructively(dirty_pgs, trans_bl); + bufferlist dirty_osds; + ::encode(dirty_osds, trans_bl); + txn->put("pgmap", ++ver, trans_bl); + // update the db in batch + if (txn->size() > 1024) { + st.apply_transaction(txn); + // reset the transaction + txn.reset(new MonitorDBStore::Transaction); + } + } + txn->put("pgmap", "last_committed", ver); + txn->put("pgmap_meta", "version", ver); + // this will also piggy back the leftover pgmap added in the loop above + st.apply_transaction(txn); + return 0; +} + int main(int argc, char **argv) { int err = 0; po::options_description desc("Allowed options"); @@ -330,6 +626,7 @@ int main(int argc, char **argv) { } else if (cmd == "get") { unsigned v = 0; string outpath; + bool readable = false; string map_type; // visible options for this command po::options_description op_desc("Allowed 'get' options"); @@ -339,6 +636,8 @@ int main(int argc, char **argv) { "output file (default: stdout)") ("version,v", po::value(&v), "map version to obtain") + ("readable,r", po::value(&readable)->default_value(false), + "print the map infomation in human readable format") ; // this is going to be a positional argument; we don't want to show // it as an option during --help, but we do want to have it captured @@ -366,7 +665,11 @@ int main(int argc, char **argv) { } if (v == 0) { - v = st.get(map_type, "last_committed"); + if (map_type == "crushmap") { + v = st.get("osdmap", "last_committed"); + } else { + v = st.get(map_type, "last_committed"); + } } int fd = STDOUT_FILENO; @@ -380,26 +683,100 @@ int main(int argc, char **argv) { } } + BOOST_SCOPE_EXIT((&r) (&fd) (&outpath)) { + ::close(fd); + if (r < 0 && fd != STDOUT_FILENO) { + ::remove(outpath.c_str()); + } + } BOOST_SCOPE_EXIT_END + bufferlist bl; r = 0; if (map_type == "osdmap") { r = st.get(map_type, st.combine_strings("full", v), bl); + } else if (map_type == "crushmap") { + bufferlist tmp; + r = st.get("osdmap", st.combine_strings("full", v), tmp); + OSDMap osdmap; + osdmap.decode(tmp); + osdmap.crush->encode(bl); } else { r = st.get(map_type, v, bl); } if (r < 0) { std::cerr << "Error getting map: " << cpp_strerror(r) << std::endl; err = EINVAL; - ::close(fd); goto done; } - bl.write_fd(fd); + + if (readable) { + stringstream ss; + bufferlist out; + if (map_type == "monmap") { + MonMap monmap; + monmap.decode(bl); + monmap.print(ss); + } else if (map_type == "osdmap") { + OSDMap osdmap; + osdmap.decode(bl); + osdmap.print(ss); + } else if (map_type == "mdsmap") { + MDSMap mdsmap; + mdsmap.decode(bl); + mdsmap.print(ss); + } else if (map_type == "crushmap") { + CrushWrapper cw; + bufferlist::iterator it = bl.begin(); + cw.decode(it); + CrushCompiler cc(cw, std::cerr, 0); + cc.decompile(ss); + } else { + std::cerr << "This type of readable map does not exist: " << map_type << std::endl + << "You can only specify[osdmap|monmap|mdsmap|crushmap]" << std::endl; + } + out.append(ss); + out.write_fd(fd); + } else { + bl.write_fd(fd); + } if (!outpath.empty()) { std::cout << "wrote " << map_type << " version " << v << " to " << outpath << std::endl; } + } else if (cmd == "show-versions") { + string map_type; //map type:osdmap,monmap... + // visible options for this command + po::options_description op_desc("Allowed 'show-versions' options"); + op_desc.add_options() + ("help,h", "produce this help message") + ("map-type", po::value(&map_type), "map_type"); + + po::positional_options_description op_positional; + op_positional.add("map-type", 1); + + po::variables_map op_vm; + int r = parse_cmd_args(&op_desc, NULL, &op_positional, + subcmds, &op_vm); + if (r < 0) { + err = -r; + goto done; + } + + if (op_vm.count("help") || map_type.empty()) { + usage(argv[0], op_desc); + err = 0; + goto done; + } + + unsigned int v_first = 0; + unsigned int v_last = 0; + v_first = st.get(map_type, "first_committed"); + v_last = st.get(map_type, "last_committed"); + + std::cout << "first committed:\t" << v_first << "\n" + << "last committed:\t" << v_last << std::endl; } else if (cmd == "dump-paxos") { unsigned dstart = 0; unsigned dstop = ~0; @@ -686,12 +1063,37 @@ int main(int argc, char **argv) { << stringify(si_t(total_size)) << ")" << std::endl; } while (it->valid()); - + out_store.close(); std::cout << "summary: copied " << total_keys << " keys, using " << total_tx << " transactions, totalling " << stringify(si_t(total_size)) << std::endl; std::cout << "from '" << store_path << "' to '" << out_path << "'" << std::endl; + } else if (cmd == "rewrite-crush") { + err = rewrite_crush(argv[0], subcmds, st); + } else if (cmd == "inflate-pgmap") { + unsigned n = 2000; + bool can_be_trimmed = false; + po::options_description op_desc("Allowed 'inflate-pgmap' options"); + op_desc.add_options() + ("num-maps,n", po::value(&n), + "number of maps to add (default: 2000)") + ("can-be-trimmed", po::value(&can_be_trimmed), + "can be trimmed (default: false)") + ; + + po::variables_map op_vm; + try { + po::parsed_options op_parsed = po::command_line_parser(subcmds). + options(op_desc).run(); + po::store(op_parsed, op_vm); + po::notify(op_vm); + } catch (po::error &e) { + std::cerr << "error: " << e.what() << std::endl; + err = EINVAL; + goto done; + } + err = inflate_pgmap(st, n, can_be_trimmed); } else { std::cerr << "Unrecognized command: " << cmd << std::endl; usage(argv[0], desc); diff --git a/ceph/src/tools/cephfs/MDSUtility.cc b/ceph/src/tools/cephfs/MDSUtility.cc index 54985adf..708b57c8 100644 --- a/ceph/src/tools/cephfs/MDSUtility.cc +++ b/ceph/src/tools/cephfs/MDSUtility.cc @@ -26,7 +26,7 @@ MDSUtility::MDSUtility() : waiting_for_mds_map(NULL) { monc = new MonClient(g_ceph_context); - messenger = Messenger::create(g_ceph_context, g_ceph_context->_conf->ms_type, entity_name_t::CLIENT(), "mds", getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "mds"); mdsmap = new MDSMap(); objecter = new Objecter(g_ceph_context, messenger, monc, NULL, 0, 0); } diff --git a/ceph/src/tools/rados/rados.cc b/ceph/src/tools/rados/rados.cc index 4b96ac5a..a48d7302 100644 --- a/ceph/src/tools/rados/rados.cc +++ b/ceph/src/tools/rados/rados.cc @@ -185,6 +185,8 @@ void usage(ostream& out) " Set number of concurrent I/O operations\n" " --show-time\n" " prefix output with date/time\n" +" --no-verify\n" +" do not verify contents of read objects\n" "\n" "LOAD GEN OPTIONS:\n" " --num-objects total number of objects\n" @@ -1142,6 +1144,7 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, int concurrent_ios = 16; unsigned op_size = default_op_size; bool cleanup = true; + bool no_verify = false; const char *snapname = NULL; snap_t snapid = CEPH_NOSNAP; std::map::const_iterator i; @@ -1311,7 +1314,10 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, if (i != opts.end()) { nspace = i->second; } - + i = opts.find("no-verify"); + if (i != opts.end()) { + no_verify = true; + } // open rados ret = rados.init_with_context(g_ceph_context); @@ -2262,7 +2268,7 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, RadosBencher bencher(g_ceph_context, rados, io_ctx); bencher.set_show_time(show_time); ret = bencher.aio_bench(operation, seconds, num_objs, - concurrent_ios, op_size, cleanup, run_name); + concurrent_ios, op_size, cleanup, run_name, no_verify); if (ret != 0) cerr << "error during benchmark: " << ret << std::endl; } @@ -2641,6 +2647,8 @@ int main(int argc, const char **argv) opts["show-time"] = "true"; } else if (ceph_argparse_flag(args, i, "--no-cleanup", (char*)NULL)) { opts["no-cleanup"] = "true"; + } else if (ceph_argparse_flag(args, i, "--no-verify", (char*)NULL)) { + opts["no-verify"] = "true"; } else if (ceph_argparse_witharg(args, i, &val, "--run-name", (char*)NULL)) { opts["run-name"] = val; } else if (ceph_argparse_witharg(args, i, &val, "--prefix", (char*)NULL)) { diff --git a/ceph/src/tracing/Makefile.am b/ceph/src/tracing/Makefile.am index 16d300ec..5c6a4e24 100644 --- a/ceph/src/tracing/Makefile.am +++ b/ceph/src/tracing/Makefile.am @@ -1,79 +1,78 @@ -EXTRA_DIST = tracing-common.h +EXTRA_DIST += \ + tracing/tracing-common.h if WITH_LTTNG -%.c %.h: %.tp - $(LTTNG_GEN_TP_PROG) $< -o $*.c -o $*.h +tracing/%.h: tracing/%.tp + $(LTTNG_GEN_TP_PROG) $< -o tracing/$*.h endif -dist_noinst_DATA = \ - librados.tp \ - librbd.tp \ - oprequest.tp \ - osd.tp \ - pg.tp \ - objectstore.tp +dist_noinst_DATA += \ + tracing/librados.tp \ + tracing/librbd.tp \ + tracing/oprequest.tp \ + tracing/osd.tp \ + tracing/pg.tp \ + tracing/objectstore.tp if WITH_LTTNG +libosd_tp_la_SOURCES = \ + tracing/oprequest.c \ + tracing/osd.c \ + tracing/pg.c nodist_libosd_tp_la_SOURCES = \ - oprequest.c \ - oprequest.h \ - osd.c \ - osd.h \ - pg.h \ - pg.c + tracing/oprequest.h \ + tracing/osd.h \ + tracing/pg.h endif libosd_tp_la_LIBADD = -llttng-ust -ldl -libosd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libosd_tp_la_LDFLAGS = +libosd_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +libosd_tp_la_LDFLAGS = -version-info 1:0:0 if WITH_LTTNG +librados_tp_la_SOURCES = \ + tracing/librados.c nodist_librados_tp_la_SOURCES = \ - librados.c \ - librados.h + tracing/librados.h endif librados_tp_la_LIBADD = -llttng-ust -ldl -librados_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librados_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librados_tp_la_LDFLAGS = +librados_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +librados_tp_la_LDFLAGS = -version-info 2:0:0 if WITH_LTTNG +librbd_tp_la_SOURCES = \ + tracing/librbd.c nodist_librbd_tp_la_SOURCES = \ - librbd.c \ - librbd.h + tracing/librbd.h endif librbd_tp_la_LIBADD = -llttng-ust -ldl -librbd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librbd_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librbd_tp_la_LDFLAGS = +librbd_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +librbd_tp_la_LDFLAGS = -version-info 1:0:0 if WITH_LTTNG +libos_tp_la_SOURCES = \ + tracing/objectstore.c nodist_libos_tp_la_SOURCES = \ - objectstore.c \ - objectstore.h + tracing/objectstore.h endif libos_tp_la_LIBADD = -llttng-ust -ldl -libos_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libos_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -libos_tp_la_LDFLAGS = +libos_tp_la_CFLAGS = -I$(top_srcdir)/src/tracing -I$(top_srcdir)/src $(AM_CFLAGS) -fpic +libos_tp_la_LDFLAGS = -version-info 1:0:0 if WITH_LTTNG -noinst_LTLIBRARIES = \ +lib_LTLIBRARIES += \ libosd_tp.la \ + libos_tp.la \ librados_tp.la \ - librbd_tp.la \ - libos_tp.la + librbd_tp.la -BUILT_SOURCES = \ - librados.h \ - librbd.h \ - oprequest.h \ - osd.h \ - pg.h \ - objectstore.h +BUILT_SOURCES += \ + tracing/librados.h \ + tracing/librbd.h \ + tracing/objectstore.h \ + tracing/oprequest.h \ + tracing/osd.h \ + tracing/pg.h endif -CLEANFILES = \ - $(nodist_libosd_tp_la_SOURCES) \ - $(nodist_librados_tp_la_SOURCES) \ - $(nodist_librbd_tp_la_SOURCES) \ - $(nodist_libos_tp_la_SOURCES) +CLEANFILES += \ + $(BUILT_SOURCES) diff --git a/ceph/src/tracing/Makefile.in b/ceph/src/tracing/Makefile.in deleted file mode 100644 index 13c3458c..00000000 --- a/ceph/src/tracing/Makefile.in +++ /dev/null @@ -1,818 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = src/tracing -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/depcomp $(dist_noinst_DATA) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_classpath.m4 \ - $(top_srcdir)/m4/ac_prog_jar.m4 \ - $(top_srcdir)/m4/ac_prog_javac.m4 \ - $(top_srcdir)/m4/ac_prog_javac_works.m4 \ - $(top_srcdir)/m4/ac_prog_javah.m4 \ - $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/m4/ax_arm.m4 \ - $(top_srcdir)/m4/ax_c_pretty_func.m4 \ - $(top_srcdir)/m4/ax_c_var_func.m4 \ - $(top_srcdir)/m4/ax_check_compile_flag.m4 \ - $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/ax_cxx_static_cast.m4 \ - $(top_srcdir)/m4/ax_intel.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/src/acconfig.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libos_tp_la_DEPENDENCIES = -@WITH_LTTNG_TRUE@nodist_libos_tp_la_OBJECTS = \ -@WITH_LTTNG_TRUE@ libos_tp_la-objectstore.lo -libos_tp_la_OBJECTS = $(nodist_libos_tp_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libos_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libos_tp_la_CFLAGS) \ - $(CFLAGS) $(libos_tp_la_LDFLAGS) $(LDFLAGS) -o $@ -@WITH_LTTNG_TRUE@am_libos_tp_la_rpath = -libosd_tp_la_DEPENDENCIES = -@WITH_LTTNG_TRUE@nodist_libosd_tp_la_OBJECTS = \ -@WITH_LTTNG_TRUE@ libosd_tp_la-oprequest.lo libosd_tp_la-osd.lo \ -@WITH_LTTNG_TRUE@ libosd_tp_la-pg.lo -libosd_tp_la_OBJECTS = $(nodist_libosd_tp_la_OBJECTS) -libosd_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libosd_tp_la_LDFLAGS) $(LDFLAGS) -o $@ -@WITH_LTTNG_TRUE@am_libosd_tp_la_rpath = -librados_tp_la_DEPENDENCIES = -@WITH_LTTNG_TRUE@nodist_librados_tp_la_OBJECTS = \ -@WITH_LTTNG_TRUE@ librados_tp_la-librados.lo -librados_tp_la_OBJECTS = $(nodist_librados_tp_la_OBJECTS) -librados_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(librados_tp_la_CFLAGS) $(CFLAGS) $(librados_tp_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@WITH_LTTNG_TRUE@am_librados_tp_la_rpath = -librbd_tp_la_DEPENDENCIES = -@WITH_LTTNG_TRUE@nodist_librbd_tp_la_OBJECTS = librbd_tp_la-librbd.lo -librbd_tp_la_OBJECTS = $(nodist_librbd_tp_la_OBJECTS) -librbd_tp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(librbd_tp_la_CFLAGS) \ - $(CFLAGS) $(librbd_tp_la_LDFLAGS) $(LDFLAGS) -o $@ -@WITH_LTTNG_TRUE@am_librbd_tp_la_rpath = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(nodist_libos_tp_la_SOURCES) $(nodist_libosd_tp_la_SOURCES) \ - $(nodist_librados_tp_la_SOURCES) \ - $(nodist_librbd_tp_la_SOURCES) -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(dist_noinst_DATA) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CXXFLAGS = @AM_CXXFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -ARM_FLAGS = @ARM_FLAGS@ -ARM_NEON_FLAGS = @ARM_NEON_FLAGS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@ -BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CRYPTOPP_CFLAGS = @CRYPTOPP_CFLAGS@ -CRYPTOPP_LIBS = @CRYPTOPP_LIBS@ -CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ -CRYPTO_LIBS = @CRYPTO_LIBS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXTRA_CLASSPATH_JAR = @EXTRA_CLASSPATH_JAR@ -FGREP = @FGREP@ -GCOV_PREFIX_STRIP = @GCOV_PREFIX_STRIP@ -GIT_CHECK = @GIT_CHECK@ -GREP = @GREP@ -HAVE_CXX11 = @HAVE_CXX11@ -HAVE_VALGRIND = @HAVE_VALGRIND@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTEL_FLAGS = @INTEL_FLAGS@ -INTEL_PCLMUL_FLAGS = @INTEL_PCLMUL_FLAGS@ -INTEL_SSE2_FLAGS = @INTEL_SSE2_FLAGS@ -INTEL_SSE3_FLAGS = @INTEL_SSE3_FLAGS@ -INTEL_SSE4_1_FLAGS = @INTEL_SSE4_1_FLAGS@ -INTEL_SSE4_2_FLAGS = @INTEL_SSE4_2_FLAGS@ -INTEL_SSE_FLAGS = @INTEL_SSE_FLAGS@ -INTEL_SSSE3_FLAGS = @INTEL_SSSE3_FLAGS@ -JAR = @JAR@ -JAVAC = @JAVAC@ -JAVAH = @JAVAH@ -JDK_CPPFLAGS = @JDK_CPPFLAGS@ -KEYUTILS_LIB = @KEYUTILS_LIB@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEDIT_CFLAGS = @LIBEDIT_CFLAGS@ -LIBEDIT_LIBS = @LIBEDIT_LIBS@ -LIBFUSE = @LIBFUSE@ -LIBJEMALLOC = @LIBJEMALLOC@ -LIBOBJS = @LIBOBJS@ -LIBROCKSDB_CFLAGS = @LIBROCKSDB_CFLAGS@ -LIBROCKSDB_LIBS = @LIBROCKSDB_LIBS@ -LIBS = @LIBS@ -LIBTCMALLOC = @LIBTCMALLOC@ -LIBTOOL = @LIBTOOL@ -LIBZFS_CFLAGS = @LIBZFS_CFLAGS@ -LIBZFS_LIBS = @LIBZFS_LIBS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTTNG_GEN_TP_CHECK = @LTTNG_GEN_TP_CHECK@ -LTTNG_GEN_TP_PROG = @LTTNG_GEN_TP_PROG@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NSS_CFLAGS = @NSS_CFLAGS@ -NSS_LIBS = @NSS_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -RESOLV_LIBS = @RESOLV_LIBS@ -RPM_RELEASE = @RPM_RELEASE@ -SED = @SED@ -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@ -YASM_CHECK = @YASM_CHECK@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -acx_pthread_config = @acx_pthread_config@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = tracing-common.h -dist_noinst_DATA = \ - librados.tp \ - librbd.tp \ - oprequest.tp \ - osd.tp \ - pg.tp \ - objectstore.tp - -@WITH_LTTNG_TRUE@nodist_libosd_tp_la_SOURCES = \ -@WITH_LTTNG_TRUE@ oprequest.c \ -@WITH_LTTNG_TRUE@ oprequest.h \ -@WITH_LTTNG_TRUE@ osd.c \ -@WITH_LTTNG_TRUE@ osd.h \ -@WITH_LTTNG_TRUE@ pg.h \ -@WITH_LTTNG_TRUE@ pg.c - -libosd_tp_la_LIBADD = -llttng-ust -ldl -libosd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libosd_tp_la_LDFLAGS = -@WITH_LTTNG_TRUE@nodist_librados_tp_la_SOURCES = \ -@WITH_LTTNG_TRUE@ librados.c \ -@WITH_LTTNG_TRUE@ librados.h - -librados_tp_la_LIBADD = -llttng-ust -ldl -librados_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librados_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librados_tp_la_LDFLAGS = -@WITH_LTTNG_TRUE@nodist_librbd_tp_la_SOURCES = \ -@WITH_LTTNG_TRUE@ librbd.c \ -@WITH_LTTNG_TRUE@ librbd.h - -librbd_tp_la_LIBADD = -llttng-ust -ldl -librbd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librbd_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librbd_tp_la_LDFLAGS = -@WITH_LTTNG_TRUE@nodist_libos_tp_la_SOURCES = \ -@WITH_LTTNG_TRUE@ objectstore.c \ -@WITH_LTTNG_TRUE@ objectstore.h - -libos_tp_la_LIBADD = -llttng-ust -ldl -libos_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libos_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -libos_tp_la_LDFLAGS = -@WITH_LTTNG_TRUE@noinst_LTLIBRARIES = \ -@WITH_LTTNG_TRUE@ libosd_tp.la \ -@WITH_LTTNG_TRUE@ librados_tp.la \ -@WITH_LTTNG_TRUE@ librbd_tp.la \ -@WITH_LTTNG_TRUE@ libos_tp.la - -@WITH_LTTNG_TRUE@BUILT_SOURCES = \ -@WITH_LTTNG_TRUE@ librados.h \ -@WITH_LTTNG_TRUE@ librbd.h \ -@WITH_LTTNG_TRUE@ oprequest.h \ -@WITH_LTTNG_TRUE@ osd.h \ -@WITH_LTTNG_TRUE@ pg.h \ -@WITH_LTTNG_TRUE@ objectstore.h - -CLEANFILES = \ - $(nodist_libosd_tp_la_SOURCES) \ - $(nodist_librados_tp_la_SOURCES) \ - $(nodist_librbd_tp_la_SOURCES) \ - $(nodist_libos_tp_la_SOURCES) - -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tracing/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/tracing/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libos_tp.la: $(libos_tp_la_OBJECTS) $(libos_tp_la_DEPENDENCIES) $(EXTRA_libos_tp_la_DEPENDENCIES) - $(AM_V_CCLD)$(libos_tp_la_LINK) $(am_libos_tp_la_rpath) $(libos_tp_la_OBJECTS) $(libos_tp_la_LIBADD) $(LIBS) - -libosd_tp.la: $(libosd_tp_la_OBJECTS) $(libosd_tp_la_DEPENDENCIES) $(EXTRA_libosd_tp_la_DEPENDENCIES) - $(AM_V_CCLD)$(libosd_tp_la_LINK) $(am_libosd_tp_la_rpath) $(libosd_tp_la_OBJECTS) $(libosd_tp_la_LIBADD) $(LIBS) - -librados_tp.la: $(librados_tp_la_OBJECTS) $(librados_tp_la_DEPENDENCIES) $(EXTRA_librados_tp_la_DEPENDENCIES) - $(AM_V_CCLD)$(librados_tp_la_LINK) $(am_librados_tp_la_rpath) $(librados_tp_la_OBJECTS) $(librados_tp_la_LIBADD) $(LIBS) - -librbd_tp.la: $(librbd_tp_la_OBJECTS) $(librbd_tp_la_DEPENDENCIES) $(EXTRA_librbd_tp_la_DEPENDENCIES) - $(AM_V_CCLD)$(librbd_tp_la_LINK) $(am_librbd_tp_la_rpath) $(librbd_tp_la_OBJECTS) $(librbd_tp_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libos_tp_la-objectstore.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libosd_tp_la-oprequest.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libosd_tp_la-osd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libosd_tp_la-pg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librados_tp_la-librados.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librbd_tp_la-librbd.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libos_tp_la-objectstore.lo: objectstore.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libos_tp_la_CPPFLAGS) $(CPPFLAGS) $(libos_tp_la_CFLAGS) $(CFLAGS) -MT libos_tp_la-objectstore.lo -MD -MP -MF $(DEPDIR)/libos_tp_la-objectstore.Tpo -c -o libos_tp_la-objectstore.lo `test -f 'objectstore.c' || echo '$(srcdir)/'`objectstore.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libos_tp_la-objectstore.Tpo $(DEPDIR)/libos_tp_la-objectstore.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='objectstore.c' object='libos_tp_la-objectstore.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libos_tp_la_CPPFLAGS) $(CPPFLAGS) $(libos_tp_la_CFLAGS) $(CFLAGS) -c -o libos_tp_la-objectstore.lo `test -f 'objectstore.c' || echo '$(srcdir)/'`objectstore.c - -libosd_tp_la-oprequest.lo: oprequest.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libosd_tp_la-oprequest.lo -MD -MP -MF $(DEPDIR)/libosd_tp_la-oprequest.Tpo -c -o libosd_tp_la-oprequest.lo `test -f 'oprequest.c' || echo '$(srcdir)/'`oprequest.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libosd_tp_la-oprequest.Tpo $(DEPDIR)/libosd_tp_la-oprequest.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oprequest.c' object='libosd_tp_la-oprequest.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libosd_tp_la-oprequest.lo `test -f 'oprequest.c' || echo '$(srcdir)/'`oprequest.c - -libosd_tp_la-osd.lo: osd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libosd_tp_la-osd.lo -MD -MP -MF $(DEPDIR)/libosd_tp_la-osd.Tpo -c -o libosd_tp_la-osd.lo `test -f 'osd.c' || echo '$(srcdir)/'`osd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libosd_tp_la-osd.Tpo $(DEPDIR)/libosd_tp_la-osd.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='osd.c' object='libosd_tp_la-osd.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libosd_tp_la-osd.lo `test -f 'osd.c' || echo '$(srcdir)/'`osd.c - -libosd_tp_la-pg.lo: pg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libosd_tp_la-pg.lo -MD -MP -MF $(DEPDIR)/libosd_tp_la-pg.Tpo -c -o libosd_tp_la-pg.lo `test -f 'pg.c' || echo '$(srcdir)/'`pg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libosd_tp_la-pg.Tpo $(DEPDIR)/libosd_tp_la-pg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pg.c' object='libosd_tp_la-pg.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libosd_tp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libosd_tp_la-pg.lo `test -f 'pg.c' || echo '$(srcdir)/'`pg.c - -librados_tp_la-librados.lo: librados.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librados_tp_la_CPPFLAGS) $(CPPFLAGS) $(librados_tp_la_CFLAGS) $(CFLAGS) -MT librados_tp_la-librados.lo -MD -MP -MF $(DEPDIR)/librados_tp_la-librados.Tpo -c -o librados_tp_la-librados.lo `test -f 'librados.c' || echo '$(srcdir)/'`librados.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librados_tp_la-librados.Tpo $(DEPDIR)/librados_tp_la-librados.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='librados.c' object='librados_tp_la-librados.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librados_tp_la_CPPFLAGS) $(CPPFLAGS) $(librados_tp_la_CFLAGS) $(CFLAGS) -c -o librados_tp_la-librados.lo `test -f 'librados.c' || echo '$(srcdir)/'`librados.c - -librbd_tp_la-librbd.lo: librbd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librbd_tp_la_CPPFLAGS) $(CPPFLAGS) $(librbd_tp_la_CFLAGS) $(CFLAGS) -MT librbd_tp_la-librbd.lo -MD -MP -MF $(DEPDIR)/librbd_tp_la-librbd.Tpo -c -o librbd_tp_la-librbd.lo `test -f 'librbd.c' || echo '$(srcdir)/'`librbd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librbd_tp_la-librbd.Tpo $(DEPDIR)/librbd_tp_la-librbd.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='librbd.c' object='librbd_tp_la-librbd.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librbd_tp_la_CPPFLAGS) $(CPPFLAGS) $(librbd_tp_la_CFLAGS) $(CFLAGS) -c -o librbd_tp_la-librbd.lo `test -f 'librbd.c' || echo '$(srcdir)/'`librbd.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) $(DATA) -installdirs: -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -@WITH_LTTNG_TRUE@%.c %.h: %.tp -@WITH_LTTNG_TRUE@ $(LTTNG_GEN_TP_PROG) $< -o $*.c -o $*.h - -# 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/ceph/src/tracing/librados.c b/ceph/src/tracing/librados.c new file mode 100644 index 00000000..5b8d4d66 --- /dev/null +++ b/ceph/src/tracing/librados.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "librados.h" diff --git a/ceph/src/tracing/librbd.c b/ceph/src/tracing/librbd.c new file mode 100644 index 00000000..6e5977c4 --- /dev/null +++ b/ceph/src/tracing/librbd.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "librbd.h" diff --git a/ceph/src/tracing/objectstore.c b/ceph/src/tracing/objectstore.c new file mode 100644 index 00000000..21bbf271 --- /dev/null +++ b/ceph/src/tracing/objectstore.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "objectstore.h" diff --git a/ceph/src/tracing/oprequest.c b/ceph/src/tracing/oprequest.c new file mode 100644 index 00000000..02f1fc53 --- /dev/null +++ b/ceph/src/tracing/oprequest.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "oprequest.h" diff --git a/ceph/src/tracing/osd.c b/ceph/src/tracing/osd.c new file mode 100644 index 00000000..ff70ddff --- /dev/null +++ b/ceph/src/tracing/osd.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "osd.h" diff --git a/ceph/src/tracing/pg.c b/ceph/src/tracing/pg.c new file mode 100644 index 00000000..661ebb77 --- /dev/null +++ b/ceph/src/tracing/pg.c @@ -0,0 +1,6 @@ + +#define TRACEPOINT_CREATE_PROBES +/* + * The header containing our TRACEPOINT_EVENTs. + */ +#include "pg.h" diff --git a/ceph/src/upstart/ceph-osd.conf b/ceph/src/upstart/ceph-osd.conf index 2438c206..76d90169 100644 --- a/ceph/src/upstart/ceph-osd.conf +++ b/ceph/src/upstart/ceph-osd.conf @@ -22,4 +22,8 @@ instance ${cluster:-ceph}/$id export cluster export id -exec /usr/bin/ceph-osd --cluster="${cluster:-ceph}" -i "$id" -f +script + test -f /etc/default/ceph && . /etc/default/ceph + export TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES + exec /usr/bin/ceph-osd --cluster="${cluster:-ceph}" -i "$id" -f +end script diff --git a/debian/ceph.NEWS b/debian/ceph.NEWS new file mode 100644 index 00000000..4943633d --- /dev/null +++ b/debian/ceph.NEWS @@ -0,0 +1,56 @@ +ceph (0.80.9-2) unstable; urgency=medium + + ## CRUSH fixes in 0.80.9 + + The 0.80.9 point release fixes several issues with CRUSH that trigger excessive + data migration when adjusting OSD weights. These are most obvious when a very + small weight change (e.g., a change from 0 to .01) triggers a large amount of + movement, but the same set of bugs can also lead to excessive (though less + noticeable) movement in other cases. + + However, because the bug may already have affected your cluster, fixing it + may trigger movement back to the more correct location. For this reason, you + must manually opt-in to the fixed behavior. + + In order to set the new tunable to correct the behavior: + + ceph osd crush set-tunable straw_calc_version 1 + + Note that this change will have no immediate effect. However, from this + point forward, any ‘straw’ bucket in your CRUSH map that is adjusted will get + non-buggy internal weights, and that transition may trigger some rebalancing. + + You can estimate how much rebalancing will eventually be necessary on your + cluster with: + + ceph osd getcrushmap -o /tmp/cm + crushtool -i /tmp/cm --num-rep 3 --test --show-mappings > /tmp/a 2>&1 + crushtool -i /tmp/cm --set-straw-calc-version 1 -o /tmp/cm2 + crushtool -i /tmp/cm2 --reweight -o /tmp/cm2 + crushtool -i /tmp/cm2 --num-rep 3 --test --show-mappings > /tmp/b 2>&1 + wc -l /tmp/a # num total mappings + diff -u /tmp/a /tmp/b | grep -c ^+ # num changed mappings + + Divide the total number of lines in /tmp/a with the number of lines + changed. We've found that most clusters are under 10%. + + You can force all of this rebalancing to happen at once with: + + ceph osd crush reweight-all + + Otherwise, it will happen at some unknown point in the future when + CRUSH weights are next adjusted. + + ## Mapping rbd devices with rbdmap on systemd systems + + If you have setup rbd mappings in /etc/ceph/rbdmap and corresponding mounts + in /etc/fstab things might break with systemd because systemd waits for the + rbd device to appear before the legacy rbdmap init file has a chance to run + and drops into emergency mode if it times out. + + This can be fixed by adding the nofail option in /etc/fstab to all rbd + backed mount points. With this systemd does not wait for the device and + proceeds with the boot process. After rbdmap mapped the device, systemd + detects the new device and mounts the file system. + + -- Gaudenz Steinlin Mon, 04 May 2015 22:49:48 +0200 diff --git a/debian/ceph.dirs b/debian/ceph.dirs index ca7a8806..c8999fd6 100644 --- a/debian/ceph.dirs +++ b/debian/ceph.dirs @@ -1,8 +1,8 @@ etc/ceph -var/log/ceph -var/lib/ceph/tmp +var/lib/ceph/bootstrap-mds +var/lib/ceph/bootstrap-osd +var/lib/ceph/mds var/lib/ceph/mon var/lib/ceph/osd -var/lib/ceph/mds -var/lib/ceph/bootstrap-osd -var/lib/ceph/bootstrap-mds +var/lib/ceph/tmp +var/log/ceph diff --git a/debian/ceph.logrotate b/debian/ceph.logrotate new file mode 120000 index 00000000..df20846f --- /dev/null +++ b/debian/ceph.logrotate @@ -0,0 +1 @@ +../src/logrotate.conf \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 20e541fc..9a2e0989 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +ceph (0.94.6-1~u14.04+mos1) mos9.0; urgency=low + + * New upstream bugfix only release + * Added patche which makes ceph-disk work with udev generated symlinks + * Added a patch to fix rados bench crash + * Adjust packaging: + - disable make check, it fails anyway since some necessary files are + missing in the upstream tarball + - skip build dependencies necessary for tests only (valgrind, virtualenv) + - don't install ceph-deploy manual page to avoid file conflicts with + ceph-deploy package + + -- Alexey Sheplyakov Wed, 24 Feb 2016 16:48:44 +0300 + ceph (0.94.5-0u~u14.04+mos1) mos8.0; urgency=medium * Rebuild for Ubuntu 14.04 diff --git a/debian/control b/debian/control index 8ca243cf..cfc88a8b 100644 --- a/debian/control +++ b/debian/control @@ -2,49 +2,48 @@ Source: ceph Section: admin Priority: optional Maintainer: MOS ceph team -XSBC-Original-Maintainer: Ceph Maintainers +XSBC-Original-Maintainer: Ceph Maintainer Homepage: http://ceph.com/ -Build-Depends: - debhelper (>= 9~), - default-jdk, - dh-autoreconf, - dh-python, - dh-systemd (>= 1.5), - dpkg-dev (>= 1.16.1~), - javahelper, - junit4, - libaio-dev, - libatomic-ops-dev, - libbabeltrace-ctf-dev, - libbabeltrace-dev, - libblkid-dev, - libboost-dev, - libboost-program-options-dev, - libboost-system-dev, - libboost-thread-dev, - libbz2-dev, - libcurl4-gnutls-dev, - libedit-dev, - libexpat1-dev, - libfcgi-dev, - libfuse-dev, - libgoogle-perftools-dev [i386 amd64 powerpc armhf arm64 ppc64el], - libkeyutils-dev, - libleveldb-dev, - libnss3-dev, - libs3-dev, - libsnappy-dev, - libtool, - libudev-dev, - libxml2-dev, - pkg-config, - python-all (>= 2.6.6-3~), - python-nose, - uuid-dev, - uuid-runtime, - xfslibs-dev, - yasm [amd64], - zlib1g-dev +Build-Depends: debhelper (>= 9~), + default-jdk, + dh-autoreconf, + dh-python, + dh-systemd (>= 1.5), + dpkg-dev (>= 1.16.1~), + javahelper, + junit4, + libaio-dev, + libatomic-ops-dev, + libblkid-dev (>= 2.17), + libboost-dev (>= 1.54), + libboost-program-options-dev (>= 1.54), + libboost-system-dev (>= 1.54), + libboost-thread-dev (>= 1.54), + libbabeltrace-ctf-dev, + libbabeltrace-dev, + libbz2-dev, + libcurl4-gnutls-dev, + libedit-dev, + libexpat1-dev, + libfcgi-dev, + libfuse-dev, + libgoogle-perftools-dev [i386 amd64 powerpc armhf arm64 ppc64el], + libkeyutils-dev, + libleveldb-dev, + libnss3-dev, + libs3-dev, + libsnappy-dev, + libtool, + libudev-dev, + libxml2-dev, + pkg-config, + python-all (>= 2.6.6-3~), + python-nose, + uuid-dev, + uuid-runtime, + xfslibs-dev, + yasm [amd64], + zlib1g-dev Build-Conflicts: libcrypto++-dev Standards-Version: 3.9.6 X-Python-Version: >= 2.6 @@ -52,29 +51,27 @@ XS-Testsuite: autopkgtest Package: ceph Architecture: linux-any -Depends: - binutils, - ceph-common (= ${binary:Version}), - cryptsetup-bin | cryptsetup, - gdisk, - hdparm | sdparm, - parted, - python-flask, - uuid-runtime, - xfsprogs, - ${misc:Depends}, - ${python:Depends}, - ${shlibs:Depends} +Depends: binutils, + ceph-common (= ${binary:Version}), + cryptsetup-bin | cryptsetup, + gdisk, + hdparm | sdparm, + parted, + python-flask, + uuid-runtime, + xfsprogs, + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} Pre-Depends: ${misc:Pre-Depends} -Breaks: python-ceph (<< 0.93-0ubuntu1~) +Breaks: python-ceph (<< 0.94.1-1~) Conflicts: gceph, librgw-dev, librgw1, librgw1-dbg, obsync -Replaces: - gceph, - librgw-dev, - librgw1, - librgw1-dbg, - obsync, - python-ceph (<< 0.93-0ubuntu1~) +Replaces: gceph, + librgw-dev, + librgw1, + librgw1-dbg, + obsync, + python-ceph (<< 0.94.1-1~) Recommends: libcephfs1, librados2, librbd1, ntp | time-daemon | chrony Suggests: logrotate Description: distributed storage and file system @@ -101,25 +98,22 @@ Description: debugging symbols for ceph Package: ceph-common Architecture: linux-any -Depends: - librbd1 (= ${binary:Version}), - python-cephfs (= ${binary:Version}), - python-rados (= ${binary:Version}), - python-rbd (= ${binary:Version}), - python-requests, - ${misc:Depends}, - ${python:Depends}, - ${shlibs:Depends} +Depends: librbd1 (= ${binary:Version}), + python-cephfs (= ${binary:Version}), + python-rados (= ${binary:Version}), + python-rbd (= ${binary:Version}), + python-requests, + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} Conflicts: ceph-client-tools -Breaks: - ceph (<< 0.93-0ubuntu3~), - librbd1 (<< 0.93-0ubuntu1~), - python-ceph (<< 0.93-0ubuntu1~) -Replaces: - ceph (<< 0.93-0ubuntu3~), - ceph-client-tools, - librbd1 (<< 0.93-0ubuntu1~), - python-ceph (<< 0.93-0ubuntu1~) +Breaks: ceph (<< 0.93-0ubuntu3~), + librbd1 (<< 0.94.1-1~), + python-ceph (<< 0.94.1-1~) +Replaces: ceph (<< 0.93-0ubuntu3~), + ceph-client-tools, + librbd1 (<< 0.94.1-1~), + python-ceph (<< 0.94.1-1~) Suggests: ceph, ceph-mds Description: common utilities to mount and interact with a ceph storage cluster Ceph is a distributed storage and file system designed to provide @@ -477,12 +471,11 @@ Description: debugging symbols for ceph-test Package: python-ceph Architecture: all Section: python -Depends: - python-cephfs (>= ${binary:Version}), - python-rados (>= ${binary:Version}), - python-rbd (>= ${binary:Version}), - ${misc:Depends}, - ${python:Depends} +Depends: python-cephfs (>= ${binary:Version}), + python-rados (>= ${binary:Version}), + python-rbd (>= ${binary:Version}), + ${misc:Depends}, + ${python:Depends} Description: Meta-package for python libraries for the Ceph libraries Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -494,8 +487,8 @@ Package: python-rados Architecture: linux-any Section: python Depends: librados2 (= ${binary:Version}), ${misc:Depends}, ${python:Depends} -Replaces: python-ceph (<< 0.93-0ubuntu1~) -Breaks: python-ceph (<< 0.93-0ubuntu1~) +Replaces: python-ceph (<< 0.94.1-1~) +Breaks: python-ceph (<< 0.94.1-1~) Description: Python libraries for the Ceph librados library Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -508,8 +501,8 @@ Package: python-rbd Architecture: linux-any Section: python Depends: librbd1 (= ${binary:Version}), ${misc:Depends}, ${python:Depends} -Replaces: python-ceph (<< 0.93-0ubuntu1~) -Breaks: python-ceph (<< 0.93-0ubuntu1~) +Replaces: python-ceph (<< 0.94.1-1~) +Breaks: python-ceph (<< 0.94.1-1~) Description: Python libraries for the Ceph librbd library Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -522,8 +515,8 @@ Package: python-cephfs Architecture: linux-any Section: python Depends: libcephfs1 (= ${binary:Version}), ${misc:Depends}, ${python:Depends} -Replaces: python-ceph (<< 0.93-0ubuntu1~) -Breaks: python-ceph (<< 0.93-0ubuntu1~) +Replaces: python-ceph (<< 0.94.1-1~) +Breaks: python-ceph (<< 0.94.1-1~) Description: Python libraries for the Ceph libcephfs library Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, diff --git a/debian/copyright b/debian/copyright index 9cba12f7..1d676919 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,6 +2,8 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: ceph Upstream-Contact: Sage Weil Source: http://ceph.com/ +Files-Excluded: src/erasure-code/jerasure/gf-complete + src/erasure-code/jerasure/jerasure Files: * Copyright: 2004-2014 Sage Weil diff --git a/debian/gbp.conf b/debian/gbp.conf index fce89ec4..458ab470 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -1,5 +1,6 @@ [DEFAULT] -debian-branch = ubuntu +debian-branch = hammer +upstream-branch = upstream-hammer pristine-tar = True [import-orig] diff --git a/debian/patches/ObjBencher-seq_read_bench-fix-locking-errors.patch b/debian/patches/ObjBencher-seq_read_bench-fix-locking-errors.patch new file mode 100644 index 00000000..430a92ea --- /dev/null +++ b/debian/patches/ObjBencher-seq_read_bench-fix-locking-errors.patch @@ -0,0 +1,50 @@ +From: Alexey Sheplyakov +Date: Fri, 26 Feb 2016 15:01:11 +0300 +Subject: ObjBencher::seq_read_bench: fix locking errors + +- take a lock before completion_ret +- remove extraneous comparison: it's clearly misplaced (bad merge?) + and tries to unlock a Mutex twice in a row + +Fixes: #14873 + +Signed-off-by: Alexey Sheplyakov +--- + src/common/obj_bencher.cc | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/src/common/obj_bencher.cc b/src/common/obj_bencher.cc +index db4fd8f..a196e83 100644 +--- a/src/common/obj_bencher.cc ++++ b/src/common/obj_bencher.cc +@@ -598,13 +598,13 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre + index[slot] = data.started; + lock.Unlock(); + completion_wait(slot); ++ lock.Lock(); + r = completion_ret(slot); + if (r < 0) { + cerr << "read got " << r << std::endl; + lock.Unlock(); + goto ERR; + } +- lock.Lock(); + total_latency += data.cur_latency; + if (data.cur_latency > data.max_latency) data.max_latency = data.cur_latency; + if (data.cur_latency < data.min_latency) data.min_latency = data.cur_latency; +@@ -624,14 +624,7 @@ int ObjBencher::seq_read_bench(int seconds_to_run, int num_objects, int concurre + lock.Lock(); + ++data.started; + ++data.in_flight; +- lock.Unlock(); +- if (memcmp(data.object_contents, cur_contents->c_str(), data.object_size) != 0) { +- cerr << name[slot] << " is not correct!" << std::endl; +- ++errors; +- } else { +- lock.Unlock(); +- } +- ++ lock.Unlock(); + name[slot] = newName; + } + diff --git a/debian/patches/bug-10036.patch b/debian/patches/bug-10036.patch new file mode 100644 index 00000000..360e476c --- /dev/null +++ b/debian/patches/bug-10036.patch @@ -0,0 +1,32 @@ +Last-Update: 2014-12-25 +Bug-Ceph: http://tracker.ceph.com/issues/10036 +Author: Mykola Golub +Description: show primary-affinity in OSD tree + +--- a/src/osd/OSDMap.cc ++++ b/src/osd/OSDMap.cc +@@ -2349,19 +2349,23 @@ + *out << std::setprecision(4) + << (exists(cur) ? get_weightf(cur) : 0) + << std::setprecision(p) + << "\t"; ++ *out << std::setprecision(4) ++ << (exists(cur) ? get_primary_affinityf(cur) : 0) ++ << std::setprecision(p); + } + if (f) { + f->dump_float("reweight", get_weightf(cur)); ++ f->dump_float("primary_affinity", get_primary_affinityf(cur)); + } + } + } + + void OSDMap::print_tree(ostream *out, Formatter *f) const + { + if (out) +- *out << "# id\tweight\ttype name\tup/down\treweight\n"; ++ *out << "# id\tweight\ttype name\tup/down\treweight\tprimary-affinity\n"; + if (f) + f->open_array_section("nodes"); + set touched; + set roots; diff --git a/debian/patches/ceph-disk-fix-symlinks-handling.patch b/debian/patches/ceph-disk-fix-symlinks-handling.patch new file mode 100644 index 00000000..341dc023 --- /dev/null +++ b/debian/patches/ceph-disk-fix-symlinks-handling.patch @@ -0,0 +1,128 @@ +From: Alexey Sheplyakov +Date: Tue, 5 Jan 2016 12:28:34 +0300 +Subject: ceph-disk: fix symlinks handling + +ceph-disk fails to work with a symlink pointing to the actual device due +to a naive device name parsing in split_dev_base_partnum: + +[node-9][WARNIN] DEBUG:ceph-disk:Journal /dev/disk/by-id/ata-INTEL_SSDSC2BW240A4_PHDA410301812403GN-part3 was previously prepared with ceph-disk. Reusing it. +[node-9][WARNIN] INFO:ceph-disk:Running command: /sbin/sgdisk -i 2 /dev/disk/by-id/ata-INTEL_SSDSC +[node-9][WARNIN] Problem opening /dev/disk/by-id/ata-INTEL_SSDSC for reading! Error is 2. + +Rewrite split_dev_base_partnum so it uses /sys/block/dev/MAJOR:minor/partition +instead of device name parsing. Use /sys/block/dev/M:m in list_partitions, +list_all_partitions instead of the basename since the user/distro can set +arbitrary device names (not necessary matching to those used by the driver). + +Fixes: #14231 + +Signed-off-by: Alexey Sheplyakov +--- + src/ceph-disk | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 44 insertions(+), 12 deletions(-) + +diff --git a/src/ceph-disk b/src/ceph-disk +index 7620ff8..49bc978 100755 +--- a/src/ceph-disk ++++ b/src/ceph-disk +@@ -88,6 +88,7 @@ DMCRYPT_TOBE_UUID = '89c57f98-2fe5-4dc0-89c1-5ec00ceff2be' + DMCRYPT_JOURNAL_TOBE_UUID = '89c57f98-2fe5-4dc0-89c1-35865ceff2be' + + DEFAULT_FS_TYPE = 'xfs' ++SYSFS = '/sys' + + MOUNT_OPTIONS = dict( + btrfs='noatime,user_subvol_rm_allowed', +@@ -358,6 +359,38 @@ def platform_information(): + str(codename).strip() + ) + ++# ++# An alternative block_path implementation would be ++# ++# name = basename(dev) ++# return /sys/devices/virtual/block/$name ++# ++# It is however more fragile because it relies on the fact ++# that the basename of the device the user will use always ++# matches the one the driver will use. On Ubuntu 14.04, for ++# instance, when multipath creates a partition table on ++# ++# /dev/mapper/353333330000007d0 -> ../dm-0 ++# ++# it will create partition devices named ++# ++# /dev/mapper/353333330000007d0-part1 ++# ++# which is the same device as /dev/dm-1 but not a symbolic ++# link to it: ++# ++# ubuntu@other:~$ ls -l /dev/mapper /dev/dm-1 ++# brw-rw---- 1 root disk 252, 1 Aug 15 17:52 /dev/dm-1 ++# lrwxrwxrwx 1 root root 7 Aug 15 17:52 353333330000007d0 -> ../dm-0 ++# brw-rw---- 1 root disk 252, 1 Aug 15 17:52 353333330000007d0-part1 ++# ++# Using the basename in this case fails. ++# ++def block_path(dev): ++ path = os.path.realpath(dev) ++ rdev = os.stat(path).st_rdev ++ (M, m) = (os.major(rdev), os.minor(rdev)) ++ return "{sysfs}/dev/block/{M}:{m}".format(sysfs=SYSFS, M=M, m=m) + + def get_dev_name(path): + """ +@@ -447,21 +480,22 @@ def list_all_partitions(): + """ + dev_part_list = {} + for name in os.listdir('/sys/block'): ++ LOG.debug("list_all_partitions: " + name) + # /dev/fd0 may hang http://tracker.ceph.com/issues/6827 + if re.match(r'^fd\d$', name): + continue +- if not os.path.exists(os.path.join('/sys/block', name, 'device')): +- continue +- dev_part_list[name] = list_partitions(name) ++ dev_part_list[name] = list_partitions(os.path.join('/dev', name)) + return dev_part_list + + +-def list_partitions(basename): ++def list_partitions(dev): + """ + Return a list of partitions on the given device name + """ ++ dev = os.path.realpath(dev) + partitions = [] +- for name in os.listdir(os.path.join('/sys/block', basename)): ++ basename = os.path.basename(dev) ++ for name in os.listdir(block_path(dev)): + if name.startswith(basename): + partitions.append(name) + return partitions +@@ -561,8 +595,7 @@ def verify_not_in_use(dev, check_partitions=False): + raise Error('Device %s is in use by a device-mapper mapping (dm-crypt?)' % dev, ','.join(holders)) + + if check_partitions and not is_partition(dev): +- basename = get_dev_name(os.path.realpath(dev)) +- for partname in list_partitions(basename): ++ for partname in list_partitions(dev): + partition = get_dev_path(partname) + if is_mounted(partition): + raise Error('Device is mounted', partition) +@@ -2362,11 +2395,10 @@ def get_dev_fs(dev): + + + def split_dev_base_partnum(dev): +- if 'loop' in dev or 'cciss' in dev or 'nvme' in dev: +- return re.match('(.*\d+)p(\d+)', dev).group(1, 2) +- else: +- return re.match('(\D+)(\d+)', dev).group(1, 2) +- ++ b = block_path(dev) ++ partnum = open(os.path.join(b, 'partition')).read().strip() ++ base = get_partition_base(dev) ++ return (base, partnum) + + def get_partition_type(part): + """ diff --git a/debian/patches/rbdmap3-lazyumount.patch b/debian/patches/rbdmap3-lazyumount.patch index f4159828..64a075aa 100644 --- a/debian/patches/rbdmap3-lazyumount.patch +++ b/debian/patches/rbdmap3-lazyumount.patch @@ -29,11 +29,11 @@ Signed-off-by: Dmitry Smirnov --- a/src/init-rbdmap +++ b/src/init-rbdmap -@@ -104,7 +104,18 @@ do_unmap() { +@@ -105,7 +105,18 @@ do_unmap() { MNT=$(findmnt --mtab --source ${DEV} --noheadings | awk '{print $1'}) if [ -n "${MNT}" ]; then - log_action_cont_msg "un-mounting '${MNT}'" -- UMNT_RV=$(umount "${MNT}" 2>&1) + logger -p "daemon.debug" -t init-rbdmap "Unmounting '${MNT}'" +- umount "${MNT}" >>/dev/null 2>&1 + local ULAZY="" + local RUNLEVEL=$(runlevel | awk '{print $2}') + if [ $? -eq 0 ]; then @@ -45,7 +45,7 @@ Signed-off-by: Dmitry Smirnov + fi + fi + fi -+ UMNT_RV=$(umount ${ULAZY} "${MNT}" 2>&1) ++ umount ${ULAZY} "${MNT}" >>/dev/null 2>&1 fi if mountpoint -q "${MNT}"; then ## Un-mounting failed. diff --git a/debian/patches/series b/debian/patches/series index 44e9de69..91f94c4b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,8 +6,19 @@ rbdmap3-lazyumount.patch arch.patch modules.patch sample.ceph.conf.patch +# Disabled until adopted upstream +# use_system_jerasure.patch virtualenv-never-download.patch +# Testing patches +tests-disable-ceph-disk.patch +tests-disable.patch + +## From Ubuntu ceph-osd-prestart-path.patch fix-argparse-defaults.patch fix-cycles-arch.patch vivid-does-systemd.patch + +## MOS +ceph-disk-fix-symlinks-handling.patch +ObjBencher-seq_read_bench-fix-locking-errors.patch diff --git a/debian/patches/tests-disable-ceph-disk.patch b/debian/patches/tests-disable-ceph-disk.patch new file mode 100644 index 00000000..200407c8 --- /dev/null +++ b/debian/patches/tests-disable-ceph-disk.patch @@ -0,0 +1,16 @@ +Last-Update: 2014-10-31 +Forwarded: no +Author: Dmitry Smirnov +Description: disable (FS-dependent?) "ceph-disk" test which always seems to fail... + +--- a/src/test/Makefile.am ++++ b/src/test/Makefile.am +@@ -83,8 +83,6 @@ check_SCRIPTS += \ + + if ENABLE_ROOT_MAKE_CHECK + check_SCRIPTS += test/ceph-disk-root.sh +-else +-check_SCRIPTS += test/ceph-disk.sh + endif + + EXTRA_DIST += \ diff --git a/debian/patches/tests-disable.patch b/debian/patches/tests-disable.patch new file mode 100644 index 00000000..9056fb90 --- /dev/null +++ b/debian/patches/tests-disable.patch @@ -0,0 +1,52 @@ +Last-Update: 2014-10-31 +Forwarded: no +Author: Dmitry Smirnov +Description: disable tests that depend on network... + +--- a/src/test/Makefile.am ++++ b/src/test/Makefile.am +@@ -62,6 +62,7 @@ bin_DEBUGPROGRAMS += ceph_bench_log + + ## Unit tests + ++if WITH_CLUSTER_TESTS + check_SCRIPTS += \ + test/ceph_objectstore_tool.py \ + test/test-ceph-helpers.sh \ +@@ -80,6 +81,7 @@ check_SCRIPTS += \ + test/osd/osd-bench.sh \ + test/osd/osd-copy-from.sh \ + test/mon/mon-handle-forward.sh ++endif + + if ENABLE_ROOT_MAKE_CHECK + check_SCRIPTS += test/ceph-disk-root.sh +--- a/configure.ac ++++ b/configure.ac +@@ -1181,6 +1181,13 @@ AC_LANG_POP([C++]) + + AM_CONDITIONAL(WITH_BUILD_TESTS, test "$WITH_BUILD_TESTS" = "1") + ++AC_ARG_WITH([cluster-tests], ++ [AS_HELP_STRING([--with-cluster-tests], [enables cluster tests])], ++ [], ++ [with_cluster_tests=no] ++) ++AM_CONDITIONAL(WITH_CLUSTER_TESTS, [ test "$with_cluster_tests" = "yes" ]) ++ + AM_PATH_PYTHON([2.4], + [], [AC_MSG_FAILURE([Failed to find Python 2.4 or newer])]) + +--- a/src/test/erasure-code/Makefile.am ++++ b/src/test/erasure-code/Makefile.am +@@ -1,8 +1,10 @@ + if ENABLE_SERVER + if WITH_OSD + ++if WITH_CLUSTER_TESTS + check_SCRIPTS += \ + test/erasure-code/test-erasure-code.sh ++endif + + noinst_HEADERS += \ + test/erasure-code/ceph_erasure_code_benchmark.h diff --git a/debian/patches/use_system_jerasure.patch b/debian/patches/use_system_jerasure.patch new file mode 100644 index 00000000..7c9858c9 --- /dev/null +++ b/debian/patches/use_system_jerasure.patch @@ -0,0 +1,182 @@ +Last-Update: 2014-12-09 +Forwarded: not-needed +Author: Dmitry Smirnov +Description: use system "libjerasure" instead of bundled one. + +--- a/src/erasure-code/jerasure/Makefile.am ++++ b/src/erasure-code/jerasure/Makefile.am +@@ -1,40 +1,8 @@ + # jerasure plugin + noinst_HEADERS += \ +- 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 \ +- erasure-code/jerasure/gf-complete/include/gf_method.h \ +- erasure-code/jerasure/gf-complete/include/gf_rand.h \ +- erasure-code/jerasure/gf-complete/include/gf_w16.h \ +- erasure-code/jerasure/gf-complete/include/gf_w32.h \ +- erasure-code/jerasure/gf-complete/include/gf_w4.h \ +- erasure-code/jerasure/gf-complete/include/gf_w64.h \ +- erasure-code/jerasure/gf-complete/include/gf_w8.h \ +- erasure-code/jerasure/jerasure/include/cauchy.h \ +- erasure-code/jerasure/jerasure/include/galois.h \ +- erasure-code/jerasure/jerasure/include/jerasure.h \ +- erasure-code/jerasure/jerasure/include/liberation.h \ +- erasure-code/jerasure/jerasure/include/reed_sol.h \ + erasure-code/jerasure/ErasureCodeJerasure.h + + jerasure_sources = \ +- 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 + +@@ -42,13 +10,11 @@ erasure-code/jerasure/ErasureCodePluginJ + + libec_jerasure_generic_la_SOURCES = ${jerasure_sources} + libec_jerasure_generic_la_CFLAGS = ${AM_CFLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_generic_la_CXXFLAGS= ${AM_CXXFLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_generic_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS) +-libec_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared ++libec_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -lJerasure + if LINUX + libec_jerasure_generic_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' + endif +@@ -85,17 +51,15 @@ libec_jerasure_sse3_la_CFLAGS = ${AM_CFL + ${INTEL_SSE2_FLAGS} \ + ${INTEL_SSE3_FLAGS} \ + ${INTEL_SSSE3_FLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_sse3_la_CXXFLAGS= ${AM_CXXFLAGS} \ + ${INTEL_SSE_FLAGS} \ + ${INTEL_SSE2_FLAGS} \ + ${INTEL_SSE3_FLAGS} \ + ${INTEL_SSSE3_FLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_sse3_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS) +-libec_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared ++libec_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -lJerasure + if LINUX + libec_jerasure_sse3_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' + endif +@@ -112,8 +76,7 @@ libec_jerasure_sse4_la_CFLAGS = ${AM_CFL + ${INTEL_SSSE3_FLAGS} \ + ${INTEL_SSE4_1_FLAGS} \ + ${INTEL_SSE4_2_FLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_sse4_la_CXXFLAGS= ${AM_CXXFLAGS} \ + ${INTEL_SSE_FLAGS} \ + ${INTEL_SSE2_FLAGS} \ +@@ -121,10 +84,9 @@ libec_jerasure_sse4_la_CXXFLAGS= ${AM_CX + ${INTEL_SSSE3_FLAGS} \ + ${INTEL_SSE4_1_FLAGS} \ + ${INTEL_SSE4_2_FLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include ++ -I$(includedir)/jerasure + libec_jerasure_sse4_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS) +-libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared ++libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -lJerasure + if LINUX + libec_jerasure_sse4_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' + endif +@@ -138,7 +100,7 @@ libec_jerasure_la_SOURCES = \ + 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} -module -avoid-version -shared ++libec_jerasure_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -lJerasure + if LINUX + libec_jerasure_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' + endif +--- a/src/erasure-code/shec/Makefile.am ++++ b/src/erasure-code/shec/Makefile.am +@@ -6,54 +6,24 @@ libec_shec_la_SOURCES = \ + 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 ++ erasure-code/shec/determinant.c + noinst_HEADERS += \ + erasure-code/shec/ErasureCodeShec.h \ + erasure-code/shec/ErasureCodeShecTableCache.h \ +- erasure-code/shec/shec.h \ +- erasure-code/jerasure/jerasure/include/cauchy.h \ +- erasure-code/jerasure/jerasure/include/galois.h \ +- erasure-code/jerasure/jerasure/include/jerasure.h \ +- erasure-code/jerasure/jerasure/include/liberation.h \ +- erasure-code/jerasure/jerasure/include/reed_sol.h \ +- erasure-code/jerasure/gf-complete/include/gf_int.h \ +- erasure-code/jerasure/gf-complete/include/gf_complete.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 ++ erasure-code/shec/shec.h + + erasure-code/shec/ErasureCodePluginShec.cc: ./ceph_ver.h + + libec_shec_la_CFLAGS = ${AM_CFLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure \ +- -I$(srcdir)/erasure-code/shec ++ -I$(srcdir)/erasure-code/shec \ ++ -I$(includedir)/jerasure + libec_shec_la_CXXFLAGS= ${AM_CXXFLAGS} \ +- -I$(srcdir)/erasure-code/jerasure/jerasure/include \ +- -I$(srcdir)/erasure-code/jerasure/gf-complete/include \ +- -I$(srcdir)/erasure-code/jerasure \ +- -I$(srcdir)/erasure-code/shec ++ -I$(srcdir)/erasure-code/shec \ ++ -I$(includedir)/jerasure + 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} -module -avoid-version -shared ++libec_shec_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared -lJerasure + if LINUX + libec_shec_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' + endif diff --git a/debian/radosgw.dirs b/debian/radosgw.dirs index f54add55..b99cc97b 100644 --- a/debian/radosgw.dirs +++ b/debian/radosgw.dirs @@ -1,3 +1,3 @@ +var/lib/ceph/radosgw var/log/ceph var/log/radosgw -var/lib/ceph/radosgw diff --git a/debian/radosgw.logrotate b/debian/radosgw.logrotate new file mode 120000 index 00000000..6790479f --- /dev/null +++ b/debian/radosgw.logrotate @@ -0,0 +1 @@ +../src/rgw/logrotate.conf \ No newline at end of file diff --git a/debian/rules b/debian/rules index 6d3e2314..301b56e4 100755 --- a/debian/rules +++ b/debian/rules @@ -19,6 +19,8 @@ extraopts += --with-ocf --with-rest-bench --with-nss extraopts += --with-debug extraopts += --enable-cephfs-java extraopts += --with-babeltrace +## do not build with lttng just yet, see #765842. +extraopts += --without-lttng ifeq ($(DEB_HOST_ARCH), armel) # armel supports ARMv4t or above instructions sets. @@ -37,8 +39,6 @@ endif # Use system provided libs3 extraopts += --with-system-libs3 -#extraopts += --with-cluster-tests - %: dh $@ --with javahelper,python2,autoreconf,systemd --parallel @@ -48,8 +48,6 @@ override_dh_autoreconf: dh_autoreconf $(DH_AS_NEEDED) override_dh_auto_configure: - ## copy gtest sources - #cp -Rv /usr/src/gtest src/ dh_auto_configure -- $(extraopts) override_dh_auto_build: @@ -57,8 +55,6 @@ override_dh_auto_build: cp -v src/upstart/rbdmap.conf debian/ceph.rbdmap.upstart override_dh_auto_clean: - #$(RM) -rv src/gtest - $(RM) -rv src/test/fake_home src/mkfs src/test-ceph-disk/osd dh_auto_clean rm -fv debian/*.upstart @@ -119,7 +115,6 @@ override_dh_makeshlibs: dh_makeshlibs -V -X/usr/lib/jni -X/usr/lib/$(DEB_HOST_MULTIARCH)/ceph/erasure-code override_dh_auto_test: - # Skip tests as they depend on virtualenv - : + #-dh_auto_test -v || cat src/test-suite.log .PHONY: override_dh_auto_configure override_dh_installinit override_dh_strip override_dh_makeshlibs override_dh_auto_test diff --git a/debian/watch b/debian/watch index dae6427a..c1d7ce99 100644 --- a/debian/watch +++ b/debian/watch @@ -1,3 +1,3 @@ version=3 opts="uversionmangle=s/-/~/" \ - http://ceph.com/download/ceph-(\d.*)\.tar\.bz2 + http://ceph.com/download/ceph-(0\.94\.\d.*)\.tar\.gz -- 2.45.2