Alexandre Oliva <oliva@gnu.org>
Alex Elder <elder@inktank.com>
Alexey Lapitsky <lex@realisticgroup.com>
+Alexey Sheplyakov <asheplyakov@mirantis.com>
Alfredo Deza <adeza@redhat.com>
Alfredo Deza <alfredo.deza@inktank.com>
Ali Maredia <ali@linuxbox.com>
BJ Lougee <almightybeeij@gmail.com>
Bjørnar Ness <bjornar.ness@gmail.com>
Blaine Gardner <blaine.gardner@hp.com>
+Bo Cai <cai.bo@h3c.com>
Boris Ranto <branto@redhat.com>
+Brad Hubbard <bhubbard@redhat.com>
Brandon Seibel <brandon@seibelnet.ca>
branto1 <branto@redhat.com>
+brian <bjfelton@gmail.com>
Brian Chrisman <brchrisman@gmail.com>
Brian Rak <dn@devicenull.org>
Brown, David M JR <david.brown@pnl.gov>
Chen Baozi <baozich@gmail.com>
Chendi Xue <chendi.xue@intel.com>
Cheng Cheng <ccheng.leo@gmail.com>
+Chengyuan Li <chengyli@ebay.com>
Chris Dunlop <chris@onthe.net.au>
Chris Glass <tribaal@gmail.com>
Chris Holcombe <chris.holcombe@nebula.com>
Christopher O'Connell <jwriteclub@gmail.com>
Christoph Hellwig <hch@infradead.org>
Christos Stavrakakis <stavr.chris@gmail.com>
+Cilang Zhao <zhao.cilang@h3c.com>
Colin Mattson <colinmattson@gmail.com>
Colin P. McCabe <colinm@hq.newdream.net>
Dan Chai <tengweicai@gmail.com>
Daniel Gollub <d.gollub@telekom.de>
+Daniel Gryniewicz <dang@fprintf.net>
Daniel J. Hofmann <daniel@trvx.org>
Dan Mick <dan.mick@inktank.com>
Dan Mick <dmick@redhat.com>
Dongmao Zhang <deanraccoon@gmail.com>
Dongsu Park <dpark1978@gmail.com>
Dong Yuan <yuandong1222@gmail.com>
+Douglas Fuller <dfuller@redhat.com>
dwj192 <duanweijun@h3c.com>
Eleanor Cawthon <eleanor.cawthon@inktank.com>
Emily Popper <emily.popper@dreamhost.com>
Henry C Chang <henry_c_chang@tcloudcomputing.com>
Henry Chang <henry@bigtera.com>
Herb Shiu <herb_shiu@tcloudcomputing.com>
+Herve Rousseau <hroussea@cern.ch>
Hervé Rousseau <hroussea@cern.ch>
Holger Macht <hmacht@suse.de>
Huamin Chen <hchen@redhat.com>
Huang Jun <hjwsm1989@gmail.com>
Ian Holsman <lists@holsman.net>
+Igor Fedotov <ifedotov@mirantis.com>
Ilya Dryomov <idryomov@redhat.com>
Ilya Dryomov <ilya.dryomov@inktank.com>
islepnev <islepnev@gmail.com>
Janne Grunau <j@jannau.net>
Jason Dillaman <dillaman@redhat.com>
Javier M. Mellid <jmunhoz@igalia.com>
+Jeff Weber <jweber@cofront.net>
+Jenkins Build Slave User <jenkins-build@jenkins-slave-wheezy.localdomain>
Jenkins <jenkins@ceph.com>
Jenkins <jenkins@inktank.com>
Jens-Christian Fischer <jens-christian.fischer@switch.ch>
João Eduardo LuÃs <joao@redhat.com>
Joao Eduardo Luis <joao@suse.de>
Joe Buck <jbbuck@gmail.com>
+Joe Julian <jjulian@io.com>
Johannes Erdfelt <johannes@erdfelt.com>
John Spray <john.spray@inktank.com>
John Spray <jspray@redhat.com>
Loic Dachary <loic@dachary.org>
Luis Pabón <lpabon@redhat.com>
Lukasz Jagiello <lukasz@wikia-inc.com>
+Lu Shi <shi.lu@h3c.com>
Ma Jianpeng <jianpeng.ma@intel.com>
Marco Garcês <marco.garces@bci.co.mz>
Marcus Sorensen <shadowsor@gmail.com>
Pete V <peter@squid.newdream.net>
Petr Machata <pmachata@redhat.com>
Pierre Rognant <prognant@oodrive.com>
+Piotr Dałek <piotr.dalek@ts.fujitsu.com>
+qiankunzheng <zheng.qiankun@h3c.com>
qiushanggao <qiushanggao@qq.com>
Radoslaw Zarzynski <rzarzynski@mirantis.com>
Raju Kurunkad <raju.kurunkad@sandisk.com>
Roald J. van Loon <roald@roaldvanloon.nl>
RobertJansen1 <r.jansen86@gmail.com>
Robin H. Johnson <robbat2@gentoo.org>
+Robin H. Johnson <robin.johnson@dreamhost.com>
Rohan Mars <code@rohanmars.com>
Roman Haritonov <reclosedev@gmail.com>
Ron Allred <rallred@itrefined.com>
Ross Turk <rturk@redhat.com>
Ruben Kerkhof <ruben@rubenkerkhof.com>
Ruifeng Yang <149233652@qq.com>
+Ruifeng Yang <yangruifeng.09209@h3c.com>
Rutger ter Borg <rutger@terborg.net>
Sage Weil <sage@inktank.com>
Sage Weil <sweil@redhat.com>
Samuel Just <sjust@redhat.com>
Sandon Van Ness <sandon@inktank.com>
Sandon Van Ness <svanness@redhat.com>
+Sangdi Xu <xu.sangdi@h3c.com>
Scott A. Brandt <scott@cs.ucsc.edu>
Scott Devoid <devoid@anl.gov>
Sean Channel <pentabular@gmail.com>
VRan Liu <gliuwr@gmail.com>
Vu Pham <vu@mellanox.com>
Walter Huf <hufman@gmail.com>
+wangchaunhong <root@A22832429.(none)>
Wang, Yaguang <yaguang.wang@intel.com>
Warren Usui <warren.usui@inktank.com>
+Weijun Duan <duanweijun@h3c.com>
Wei Luo <luowei@yahoo-inc.com>
Wesley Spikes <wesley.spikes@dreamhost.com>
Wido den Hollander <wido@42on.com>
Xan Peng <xanpeng@gmail.com>
Xiaowei Chen <cxwshawn@gmail.com>
Xiaoxi Chen <xiaoxi.chen@intel.com>
+xiexingguo <258156334@qq.com>
Xihui He <xihuihe@gmail.com>
Xing Lin <xinglin@cs.utah.edu>
+Xinze Chi <xinze@xksy.com>
Xinze Chi <xmdxcxz@gmail.com>
Xiong Yiliang <xiongyiliang@xunlei.com>
+yangruifeng <yangruifeng.09209@h3c.com>
Yann Dupont <yann@objoo.org>
Yan, Zheng <zheng.z.yan@intel.com>
Yan, Zheng <zyan@redhat.com>
Zhe Zhang <zzxuanyuan@gmail.com>
Zhiqiang Wang <zhiqiang.wang@intel.com>
Zhi Zhang <zhangz.david@outlook.com>
+zqkkqz <zheng.qiankun@h3c.com>
-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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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"
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
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
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"
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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 '?'
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
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
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
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
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
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
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
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
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
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 <hjwsm1989@gmail.com>
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
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.
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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/
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
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
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
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
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
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
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
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.
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
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
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
6f43c6c osdc/Objecter: pass correct cookie value to error
b34e545 os/FileStore.cc: insert not empty list<Context*> 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<coll_t, CollectionIndex* > 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 <name> [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 <chris.holcombe@nebula.com>
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).
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
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
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
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.
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
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
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
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
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 <stiopa@gmail.com>
-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
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
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
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
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
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
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.
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
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
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 <contact@intel.com>
5ce0919 ceph_objectstore_tool: Fixes to make import work again
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
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
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()
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
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 <xmdxcxz@gmail.com>
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
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 <hjwsm1989@gmail.com>
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
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
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'
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"
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
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
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
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
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
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
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
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
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
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
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
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
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
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 <yann@objoo.org>
-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
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 <yguang@yahoo-inc.com>
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
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 <id> command
+7849d79 crushtool: add --show-location <id> 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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()
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
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
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
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
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
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.
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
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
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
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
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
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.
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
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.
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
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
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
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
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
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.
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
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
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 <pool> 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.
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.
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
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
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
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
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
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 <poolname> 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()
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
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
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
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
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
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
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
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
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.
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
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 <pg,op> 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
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
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<Context*>&)
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
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
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
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
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.
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
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
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()
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
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'
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
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'
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
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
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
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<std::string>
-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
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
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 <kevin@kelphead.org>
-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
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.
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 <pool> 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
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
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
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 <yguang@yahoo-inc.com>
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.
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
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
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
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
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
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 ...'
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
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
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
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
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
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
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()
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
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
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
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
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
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
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
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 <jrcresawn@gmail.com>
-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()
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 <pool> <size>' 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
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
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
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
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 <warren.usui@inktank.com>
-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 <warren.usui@inktank.com>
+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
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 <warren.usui@inktank.com>
-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 <warren.usui@inktank.com>
-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 <warren.usui@inktank.com>
+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 <warren.usui@inktank.com>
+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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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.
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
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 <sam.just@inktank.com>
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
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
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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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 <pool> <type>
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
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
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
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
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
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
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
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.
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
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
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
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
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.
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
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
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
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
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
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
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
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
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 <hjwsm1989@gmail.com>
+e46d2ca fix the bug ctypes.util.find_library to search for librados failed on Centos6.4. Signed-off-by: huangjun <hjwsm1989@gmail.com>
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
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
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
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
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 <hjwsm1989@gmail.com>
-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
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
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 <hjwsm1989@gmail.com>
ccaab2a rgw: init src_bucket_name, src_object in the S3 handler
db7eb77 rgw: get rid of req_state.bucket_name
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
5d2cf46 Update ceph-authtool.rst
7bcfe09 ceph.spec.in: Add erasure-code related files. Signed-off-by: huangjun <hjwsm1989@gmail.com>
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
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
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.
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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.
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
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
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
92997a4 mon: fix 'osd dump <epoch>'
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
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
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
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
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
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
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
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
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.
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
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
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
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
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 ***
%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}
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}
BuildRequires: cryptsetup
BuildRequires: gdbm
BuildRequires: hdparm
+BuildRequires: leveldb-devel > 1.2
BuildRequires: libaio-devel
BuildRequires: libcurl-devel
BuildRequires: libedit-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
%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
Requires: scsirastools
BuildRequires: google-perftools-devel
%endif
-Recommends: logrotate
BuildRequires: %insserv_prereq
BuildRequires: mozilla-nss-devel
BuildRequires: keyutils-devel
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
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
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
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
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
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
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
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
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
%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
#################################################################################
%prep
%setup -q
-%if 0%{?fedora} || 0%{?rhel} || 0%{?centos}
+%if 0%{?fedora} || 0%{?rhel}
%patch0 -p1 -b .init
%endif
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
%{_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
%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
%{_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*
%{_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
%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
%files -n librados2
%defattr(-,root,root,-)
%{_libdir}/librados.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librados_tp.so.*
+%endif
%post -n librados2
/sbin/ldconfig
%{_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
%files -n librbd1
%defattr(-,root,root,-)
%{_libdir}/librbd.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so.*
+%endif
%post -n librbd1
/sbin/ldconfig
%{_includedir}/rbd/librbd.hpp
%{_includedir}/rbd/features.h
%{_libdir}/librbd.so
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so
+%endif
#################################################################################
%files -n python-rbd
%{_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}
%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,-)
%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}
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}
BuildRequires: cryptsetup
BuildRequires: gdbm
BuildRequires: hdparm
+BuildRequires: leveldb-devel > 1.2
BuildRequires: libaio-devel
BuildRequires: libcurl-devel
BuildRequires: libedit-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
%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
Requires: scsirastools
BuildRequires: google-perftools-devel
%endif
-Recommends: logrotate
BuildRequires: %insserv_prereq
BuildRequires: mozilla-nss-devel
BuildRequires: keyutils-devel
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
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
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
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
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
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
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
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
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
%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
#################################################################################
%prep
%setup -q
-%if 0%{?fedora} || 0%{?rhel} || 0%{?centos}
+%if 0%{?fedora} || 0%{?rhel}
%patch0 -p1 -b .init
%endif
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
%{_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
%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
%{_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*
%{_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
%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
%files -n librados2
%defattr(-,root,root,-)
%{_libdir}/librados.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librados_tp.so.*
+%endif
%post -n librados2
/sbin/ldconfig
%{_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
%files -n librbd1
%defattr(-,root,root,-)
%{_libdir}/librbd.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so.*
+%endif
%post -n librbd1
/sbin/ldconfig
%{_includedir}/rbd/librbd.hpp
%{_includedir}/rbd/features.h
%{_libdir}/librbd.so
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so
+%endif
#################################################################################
%files -n python-rbd
%{_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}
%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,-)
#! /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 <ceph-devel@vger.kernel.org>.
#
# 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=''
# 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]...
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
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.
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 $@
# Define the identity of the package.
PACKAGE='ceph'
- VERSION='0.94.5'
+ VERSION='0.94.6'
cat >>confdefs.h <<_ACEOF
# Define the identity of the package.
PACKAGE='ceph'
- VERSION='0.94.5'
+ VERSION='0.94.6'
cat >>confdefs.h <<_ACEOF
{ $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'
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'
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
# 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
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\\"
"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" ;;
# 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
])
AC_MSG_CHECKING([for sched.h])
-+AC_LANG_PUSH([C++])
+AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#define _GNU_SOURCE
#include <sched.h>
], [
AC_MSG_RESULT([no])
])
-+AC_LANG_POP([C++])
+AC_LANG_POP([C++])
#
src/ocf/ceph
src/ocf/rbd
src/java/Makefile
- src/tracing/Makefile
man/Makefile
ceph.spec])
AC_OUTPUT
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.\" 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
\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
.UNINDENT
.UNINDENT
.sp
-To list all users in cluster:
+To list all users in the cluster:
.INDENT 0.0
.INDENT 3.5
.sp
.\" 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
.
.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
.\" 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
.
.UNINDENT
.INDENT 0.0
.TP
+.B skip <bytes>
+Seek <bytes> 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.
.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
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
Connect to specified monitor (instead of looking through
\fBceph.conf\fP).
.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-journal\-check <rank>
+Attempt to replay the journal for MDS <rank>, then exit.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-hot\-standby <rank>
+Start as a hot standby for MDS <rank>.
+.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
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
.\" 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
.
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
.\" 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
.
.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
.\" 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
.
.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 <profile>.
.sp
Usage:
.\" 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
.
.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
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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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
.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
.\" 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
.
.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
.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:
.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
.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
.\" 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
.
.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:
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
.\" 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
.
.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
.\" 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
.
.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
.\" 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
.
.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:
.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
.\" 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
.
.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
.\" 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
.
.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
-9764da52395923e0b32908d83a9f7304401fee43
-v0.94.5
+e832001feaf8c176593e0325c8298e3f16dfb403
+v0.94.6
BUILT_SOURCES =
EXTRA_DIST =
CLEANFILES =
+dist_noinst_DATA =
noinst_HEADERS =
bin_PROGRAMS =
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
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
include test/Makefile.am
include tools/Makefile.am
include Makefile-rocksdb.am
+include tracing/Makefile.am
# shell scripts
$(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) \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
# 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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
@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 \
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 \
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 =
@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 \
$(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)
@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 \
$(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
@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) \
@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 \
@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)
@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 \
$(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)
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
$(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 \
@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) \
@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) \
@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 = \
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)
@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 = \
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 \
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
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
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) \
@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 \
@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
@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
@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 \
@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
@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) \
@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) \
@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) \
@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) \
@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) \
@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) \
@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) \
@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) \
@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 \
@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 \
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 \
@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) \
@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) \
@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) \
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) \
$(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 \
$(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 = \
@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)
$(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) \
$(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) \
@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) \
@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) \
@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) \
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) \
$(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) \
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
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) \
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) \
$(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
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) \
$(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 \
$(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 \
$(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) \
@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) \
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) \
$(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) \
$(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) \
$(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) \
$(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) \
$(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) \
$(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) \
$(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) \
$(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) \
$(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 \
$(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) \
@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) \
$(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 \
@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) \
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) \
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) \
$(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) \
@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) \
@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
@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)
@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
@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 \
@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 $@
@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)
@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)
@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) \
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) \
@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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
@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) \
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) \
@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) \
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) \
@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)
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) \
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) \
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) \
@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)
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 \
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 \
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) \
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) \
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 \
$(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) \
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) \
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) \
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) \
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) \
@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) \
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) \
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) \
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) \
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) \
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) \
$(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) \
@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 $@
@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) \
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) \
@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) \
@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) \
@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) \
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) \
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) \
@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) \
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) \
@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) \
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) \
@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) \
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) \
@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) \
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) \
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) \
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) \
@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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
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) \
$(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) \
$(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) \
$(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) \
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 \
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 \
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 \
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@
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) \
$(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 \
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
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 \
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 \
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 \
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 \
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
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 \
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
##################################
-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
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)
# 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 \
@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
@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 \
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 \
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} \
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} \
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
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 \
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 \
#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 \
@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
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
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
# 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
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 \
# 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 \
# 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
@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 \
@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) \
@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
@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
@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
@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}
@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
@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
@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
@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
@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}
@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
@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}
@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}
@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}
@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
@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
@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
@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
@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 = \
# 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
@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) \
@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)
@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 \
@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
-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
@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
@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
.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*) \
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
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) \
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)
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) \
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)
@: > 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)
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)
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)
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)
-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
@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@
@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@
@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$$||'`;\
@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
-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=; \
-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"
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
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
# 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
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;
}
{
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;
'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
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));
#include "msg/Messenger.h"
#include "common/Timer.h"
+#include "common/TracepointProvider.h"
#include "common/ceph_argparse.h"
#include "global/global_init.h"
#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)
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,
global_init_daemonize(g_ceph_context, 0);
common_init_finish(g_ceph_context);
+ TracepointProvider::initialize<osd_tracepoint_traits>(g_ceph_context);
+ TracepointProvider::initialize<os_tracepoint_traits>(g_ceph_context);
+
MonClient mc(g_ceph_context);
if (mc.build_initial_monmap() < 0)
return -1;
cout << "ceph-syn: starting " << g_conf->num_client << " syn client(s)" << std::endl;
for (int i=0; i<g_conf->num_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();
bufferlist bl;
map<string, bufferlist> keys;
+ std::map<string, bufferlist>::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<string, struct rgw_bucket_dir_entry>& m = new_dir.m;
- std::map<string, bufferlist>::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<string, struct rgw_bucket_dir_entry>& 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;
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 += \
common/Initialize.h \
common/ContextCompletion.h \
common/bit_vector.hpp \
- common/valgrind.h
+ common/valgrind.h \
+ common/TracepointProvider.h
if ENABLE_XIO
noinst_HEADERS += \
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);
}
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;
}
--- /dev/null
+// -*- 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<std::string> &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;
+ }
+}
+
--- /dev/null
+// -*- 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 <dlfcn.h>
+#include <set>
+#include <string>
+#include <boost/noncopyable.hpp>
+
+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 <const Traits &traits>
+ 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 <const Traits &traits>
+ static void initialize(CephContext *cct) {
+#if WITH_LTTNG
+ TypedSingleton<traits> *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 <std::string> &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
#include "Mutex.h"
#include "Cond.h"
#include "Thread.h"
+#include "include/unordered_map.h"
#include "common/config_obs.h"
#include "common/HeartbeatMap.h"
};
+ template<typename T>
+ 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<T *>(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<T *> m_items;
+ };
private:
vector<WorkQueue_*> work_queues;
int last_work_queue;
/// 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++;
}
};
-class ContextWQ : public ThreadPool::WorkQueueVal<std::pair<Context *, int> > {
+/// Work queue that asynchronously completes contexts (executes callbacks).
+/// @see Finisher
+class ContextWQ : public ThreadPool::PointerWQ<Context> {
public:
ContextWQ(const string &name, time_t ti, ThreadPool *tp)
- : ThreadPool::WorkQueueVal<std::pair<Context *, int> >(name, ti, 0, tp) {}
+ : ThreadPool::PointerWQ<Context>(name, ti, 0, tp),
+ m_lock("ContextWQ::m_lock") {
+ }
void queue(Context *ctx, int result = 0) {
- ThreadPool::WorkQueueVal<std::pair<Context *, int> >::queue(
- std::make_pair(ctx, result));
+ if (result != 0) {
+ Mutex::Locker locker(m_lock);
+ m_context_results[ctx] = result;
+ }
+ ThreadPool::PointerWQ<Context>::queue(ctx);
}
-
protected:
- virtual void _enqueue(std::pair<Context *, int> item) {
- _queue.push_back(item);
- }
- virtual void _enqueue_front(std::pair<Context *, int> item) {
- _queue.push_front(item);
- }
- virtual bool _empty() {
- return _queue.empty();
- }
- virtual std::pair<Context *, int> _dequeue() {
- std::pair<Context *, int> item = _queue.front();
- _queue.pop_front();
- return item;
+ virtual void _clear() {
+ ThreadPool::PointerWQ<Context>::_clear();
+
+ Mutex::Locker locker(m_lock);
+ m_context_results.clear();
}
- virtual void _process(std::pair<Context *, int> item) {
- item.first->complete(item.second);
+
+ virtual void process(Context *ctx) {
+ int result = 0;
+ {
+ Mutex::Locker locker(m_lock);
+ ceph::unordered_map<Context *, int>::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<std::pair<Context *, int> > _queue;
+ Mutex m_lock;
+ ceph::unordered_map<Context*, int> m_context_results;
};
class ShardedThreadPool {
return crc;
}
+void buffer::list::invalidate_crc()
+{
+ for (std::list<ptr>::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
{
join_service_thread();
- for (map<string, AssociatedSingletonObject*>::iterator it = _associated_objs.begin();
+ for (map<string, SingletonWrapper*>::iterator it = _associated_objs.begin();
it != _associated_objs.end(); ++it)
delete it->second;
#include <string>
#include <set>
+#include "include/assert.h"
#include "include/buffer.h"
#include "include/atomic.h"
#include "common/cmdparse.h"
#include "include/Spinlock.h"
+#include <boost/noncopyable.hpp>
class AdminSocket;
class CephContextServiceThread;
~CephContext();
atomic_t nref;
public:
- class AssociatedSingletonObject {
- public:
- virtual ~AssociatedSingletonObject() {}
- };
CephContext *get() {
nref.inc();
return this;
ceph_spin_lock(&_associated_objs_lock);
if (!_associated_objs.count(name)) {
p = new T(this);
- _associated_objs[name] = reinterpret_cast<AssociatedSingletonObject*>(p);
+ _associated_objs[name] = new TypedSingletonWrapper<T>(p);
} else {
- p = reinterpret_cast<T*>(_associated_objs[name]);
+ TypedSingletonWrapper<T> *wrapper =
+ dynamic_cast<TypedSingletonWrapper<T> *>(_associated_objs[name]);
+ assert(wrapper != NULL);
+ p = wrapper->singleton;
}
ceph_spin_unlock(&_associated_objs_lock);
}
std::ostream *message);
private:
+ struct SingletonWrapper : boost::noncopyable {
+ virtual ~SingletonWrapper() {}
+ };
+
+ template <typename T>
+ struct TypedSingletonWrapper : public SingletonWrapper {
+ TypedSingletonWrapper(T *p) : singleton(p) {
+ }
+ virtual ~TypedSingletonWrapper() {
+ delete singleton;
+ }
+
+ T *singleton;
+ };
+
CephContext(const CephContext &rhs);
CephContext &operator=(const CephContext &rhs);
ceph::HeartbeatMap *_heartbeat_map;
ceph_spinlock_t _associated_objs_lock;
- std::map<std::string, AssociatedSingletonObject*> _associated_objs;
+ std::map<std::string, SingletonWrapper*> _associated_objs;
// crypto
CryptoNone *_crypto_none;
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)
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
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)
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)
// 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)
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)
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
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)
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;
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;
}
}
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);
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)
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;
lock.Unlock();
release_completion(slot);
delete contents[slot];
+ contents[slot] = 0;
}
timePassed = ceph_clock_now(cct) - data.start_time;
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;
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)
}
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) {
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
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];
}
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);
}
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);
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) {
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;
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];
}
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);
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) {
}
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);
}
#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
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;
osize = 0;
for (i = 0; i < wsize; i++) {
+ int bno;
/*
* see CRUSH_N, CRUSH_N_MINUS macros.
* basically, numrep <= 0 means relative to
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)
recurse_tries = choose_tries;
osize += crush_choose_firstn(
map,
- map->buckets[-1-w[i]],
+ map->buckets[bno],
weight, weight_max,
x, numrep,
curstep->arg2,
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,
int write_fd(int fd) const;
int write_fd_zero_copy(int fd) const;
uint32_t crc32c(uint32_t crc) const;
+ void invalidate_crc();
};
/*
int write_fd(int fd) const;
int write_fd_zero_copy(int fd) const;
uint32_t crc32c(uint32_t crc) const;
+ void invalidate_crc();
};
/*
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
[ -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
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)
# 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
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
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}
;;
*)
- 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
* 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;
}
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),
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;
}
private:
- uint64_t msgr_nonce;
bool mounted;
bool inited;
Client *client;
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;
}
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
#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) {
common_init_finish(cct);
int err;
- uint64_t nonce;
// already connected?
if (state == CONNECTING)
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;
#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"
#include <stdexcept>
#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
#define RADOS_LIST_MAX_ENTRIES 1024
+namespace {
+
+TracepointProvider::Traits tracepoint_traits("librados_tp.so", "rados_tracing");
+
+} // anonymous namespace
+
/*
* Structure of this file
*
}
///////////////////////////// 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
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<tracepoint_traits>(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<rados_t>(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()
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<rados_t>(new librados::RadosClient(cct));
+ }
tracepoint(librados, rados_create2_exit, retval, *pcluster);
+
+ cct->put();
return retval;
}
*/
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<tracepoint_traits>(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);
# 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_.*'
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<const char*>(&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);
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;
}
#include "include/encoding.h"
#include "include/stringify.h"
#include "common/errno.h"
+#include "common/WorkQueue.h"
#include <sstream>
#include <boost/bind.hpp>
#include <boost/function.hpp>
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);
}
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);
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());
}
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;
}
}
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<AsyncRequestId, AsyncRequest>::iterator req_it =
m_async_requests.find(payload.async_request_id);
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<AsyncRequestId, AsyncRequest>::iterator req_it =
m_async_requests.find(payload.async_request_id);
<< 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) {
}
}
- ::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;
}
}
- ::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,
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
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<void> {
ImageWatcher *image_watcher;
uint64_t notify_id;
{
}
- 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 <typename Payload>
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);
+ }
}
};
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);
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
if (r < 0) {
lderr(cct) << "error refreshing object map: " << cpp_strerror(r)
<< dendl;
- invalidate();
+ invalidate(false);
m_object_map.clear();
return;
}
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: "
if (r < 0) {
lderr(cct) << "unable to load snapshot object map '" << snap_oid << "': "
<< cpp_strerror(r) << dendl;
- invalidate();
+ invalidate(false);
return;
}
if (r < 0) {
lderr(cct) << "unable to rollback object map: " << cpp_strerror(r)
<< dendl;
- invalidate();
+ invalidate(true);
}
}
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));
if (r < 0) {
lderr(cct) << "unable to snapshot object map '" << snap_oid << "': "
<< cpp_strerror(r) << dendl;
- invalidate();
+ invalidate(false);
}
}
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;
}
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,
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;
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);
bool m_enabled;
- void invalidate();
+ void invalidate(bool force);
};
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);
}
}
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)
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;
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;
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<uint64_t> *diff = static_cast<interval_set<uint64_t> *>(arg);
- diff->insert(off, len);
+ // it's possible for a discard to create a hole in the parent image --
+ // ignore
+ if (exists) {
+ interval_set<uint64_t> *diff = static_cast<interval_set<uint64_t> *>(arg);
+ diff->insert(off, len);
+ }
return 0;
}
#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"
#include <vector>
#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
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,
}
}
+CephContext* get_cct(IoCtx &io_ctx) {
+ return reinterpret_cast<CephContext*>(io_ctx.cct());
+}
+
librbd::AioCompletion* get_aio_completion(librbd::RBD::AioCompletion *comp) {
return reinterpret_cast<librbd::AioCompletion *>(comp->pc);
}
const char *snap_name)
{
ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, false);
+ TracepointProvider::initialize<tracepoint_traits>(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<ImageCtx*>(image.ctx));
+ image.ctx = NULL;
+ }
+
int r = librbd::open_image(ictx);
if (r < 0) {
tracepoint(librbd, open_image_exit, r);
const char *snap_name)
{
ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, true);
+ TracepointProvider::initialize<tracepoint_traits>(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<ImageCtx*>(image.ctx));
+ image.ctx = NULL;
+ }
+
int r = librbd::open_image(ictx);
if (r < 0) {
tracepoint(librbd, open_image_exit, r);
int RBD::create(IoCtx& io_ctx, const char *name, uint64_t size, int *order)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
int RBD::create2(IoCtx& io_ctx, const char *name, uint64_t size,
uint64_t features, int *order)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
uint64_t features, int *order, uint64_t stripe_unit,
uint64_t stripe_count)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
IoCtx& c_ioctx, const char *c_name, uint64_t features,
int *c_order)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
IoCtx& c_ioctx, const char *c_name, uint64_t features,
int *c_order, uint64_t stripe_unit, int stripe_count)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
int RBD::remove(IoCtx& io_ctx, const char *name)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
int RBD::remove_with_progress(IoCtx& io_ctx, const char *name,
ProgressContext& pctx)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
int RBD::list(IoCtx& io_ctx, vector<string>& names)
{
+ TracepointProvider::initialize<tracepoint_traits>(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) {
int RBD::rename(IoCtx& src_io_ctx, const char *srcname, const char *destname)
{
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(get_cct(io_ctx));
tracepoint(librbd, list_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id());
vector<string> cpp_names;
int r = librbd::list(io_ctx, cpp_names);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
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<tracepoint_traits>(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);
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<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx src_io_ctx;
librados::IoCtx::from_rados_ioctx_t(src_p, src_io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
{
librados::IoCtx io_ctx;
librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+ TracepointProvider::initialize<tracepoint_traits>(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);
}
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) {
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) {
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
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;
<< " 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()) {
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);
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;
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();
}
} 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") {
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 {
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;
}
virtual pair<string,string> get_next_key() {
assert(iter->valid());
- pair<string,string> 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<string,string> r = iter->raw_key();
+ if (sync_prefixes.count(r.first) > 0) {
+ iter->next();
+ return r;
+ }
+ }
+ return pair<string,string>();
}
virtual bool _is_valid() {
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) {
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) {
}
}
}
- // blow away any osd_epoch items beyond max_osd
- map<int,epoch_t>::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.*/
<< " to " << req->get_orig_source_inst()
<< dendl;
- int osd = -1;
- if (req->get_source().is_osd()) {
- osd = req->get_source().num();
- map<int,epoch_t>::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()) {
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;
}
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<int,epoch_t>::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,
m->newest_map = osdmap.get_epoch();
m->maps[first] = bl;
session->con->send_message(m);
+ session->osd_epoch = first;
first++;
}
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;
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;
}
goto reply;
}
- if (!_check_remove_tier(pool_id, p, &err, &ss)) {
+ if (!_check_remove_tier(pool_id, p, NULL, &err, &ss)) {
goto reply;
}
*/
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;
map<int,double> osd_weight;
- /*
- * cache what epochs we think osds have. this is purely
- * optimization to try to avoid sending the same inc maps twice.
- */
- map<int,epoch_t> osd_epoch;
SimpleLRU<version_t, bufferlist> inc_osd_cache;
SimpleLRU<version_t, bufferlist> 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);
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);
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)
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);
void PGMap::recovery_summary(Formatter *f, list<string> *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];
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];
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];
for (map<int,float>::iterator p = wm.begin(); p != wm.end(); ++p) {
ceph::unordered_map<int32_t,osd_stat_t>::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) /
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));
}
}
uint64_t global_id;
map<string, Subscription*> sub_map;
+ epoch_t osd_epoch; // the osdmap epoch sent to the mon client
AuthServiceHandler *auth_handler;
EntityName entity_name;
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);
}
#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)
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
* @{
void accept();
};
-class WorkerPool: CephContext::AssociatedSingletonObject {
+class WorkerPool {
WorkerPool(const WorkerPool &);
WorkerPool& operator=(const WorkerPool &);
CephContext *cct;
#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
dout(10) << " -ERANGE, got " << len << dendl;
if (len < 0) {
assert(!m_filestore_fail_eio || len != -EIO);
+ delete[] names2;
return len;
}
name = names2;
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;
q.push_back(o);
}
Op *peek_queue() {
+ Mutex::Locker l(qlock);
assert(apply_lock.is_locked());
return q.front();
}
libos_la_CXXFLAGS = ${AM_CXXFLAGS}
libos_la_LIBADD = $(LIBOS_TYPES)
-if WITH_LTTNG
-libos_la_LIBADD += $(LIBOS_TP)
-endif
noinst_LTLIBRARIES += libos.la
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<string, bufferlist>::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;
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 += \
#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
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;
p->second->osr->flush();
}
}
+ clear_pg_stat_queue();
// finish ops
op_shardedwq.drain(); // should already be empty except for lagard PGs
<< " " << 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;
}
}
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)
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;
}
}
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<utime_t, spg_t> 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;
}
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 {
Mutex sched_scrub_lock;
int scrubs_pending;
int scrubs_active;
- set< pair<utime_t,spg_t> > 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<ScrubJob> 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<utime_t,spg_t>(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<utime_t,spg_t> p(t, pgid);
- set<pair<utime_t,spg_t> >::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<utime_t, spg_t> *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<utime_t, spg_t> >::iterator iter = last_scrub_pg.begin();
+ set<ScrubJob>::iterator iter = sched_scrub_pg.begin();
*out = *iter;
return true;
}
- bool next_scrub_stamp(pair<utime_t, spg_t> next,
- pair<utime_t, spg_t> *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<utime_t, spg_t> >::iterator iter = last_scrub_pg.lower_bound(next);
- if (iter == last_scrub_pg.end())
+ set<ScrubJob>::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;
// -- 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<PG*> scrub_queue;
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;
}
{
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
}
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);
}
#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
#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
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);
}
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<pg_shard_t, pg_info_t>::iterator p = peer_info.find(from);
if (p != peer_info.end() && p->second.last_update == oinfo.last_update) {
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;
void PG::replay_queued_ops()
{
assert(is_replay());
+ assert(is_active() || is_activating());
eversion_t c = info.last_update;
list<OpRequestRef> replay;
dout(10) << "replay_queued_ops" << dendl;
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();
}
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)
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; i<acting.size(); i++) {
- if (acting[i] == pg_whoami.osd)
- continue;
- if (acting[i] == CRUSH_ITEM_NONE)
- continue;
- ConnectionRef con = osd->get_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);
<< 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)
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 >();
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();
}
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());
}
}
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<PriorSet> &prior_set = context< Peering >().prior_set;
if (old_start < pg->info.history.last_epoch_started) {
<< ", 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 >();
}
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 {
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); }
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;
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.
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<string, bufferlist>::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);
}
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<time_t,HitSetRef>::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<time_t,HitSetRef>::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;
// 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;
}
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;
}
}
};
+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<uint64_t, uint64_t> extents;
+ extents.insert(make_pair(0, len));
+ ::encode(extents, outdata);
+ ::encode_destructively(data_bl, outdata);
+ data_bl.swap(outdata);
+ }
+};
+
template<typename V>
static string list_keys(const map<string, V>& m) {
string s;
/* 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;
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) {
}
}
- 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:
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;
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<pair<uint64_t, entity_name_t>, WatchRef>::iterator i =
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);
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);
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;
}
// 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 {
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<ceph_tid_t, ProxyReadOpRef>::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);
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;
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;
void ReplicatedPG::kick_object_context_blocked(ObjectContextRef obc)
{
const hobject_t& soid = obc->obs.oi.soid;
- map<hobject_t, list<OpRequestRef> >::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<OpRequestRef>& ls = p->second;
- dout(10) << __func__ << " " << soid << " requeuing " << ls.size() << " requests" << dendl;
- requeue_ops(ls);
- waiting_for_blocked_object.erase(p);
+ map<hobject_t, list<OpRequestRef> >::iterator p = waiting_for_blocked_object.find(soid);
+ if (p != waiting_for_blocked_object.end()) {
+ list<OpRequestRef>& 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);
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);
++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
::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<entity_name_t, watch_info_t> old_watchers;
::decode(soid, bl);
::decode(myoloc, bl);
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)";
}
}
void new_object() {
set_data_digest(-1);
- set_omap_digest(-1);
+ clear_omap_digest();
}
void encode(bufferlist& bl) const;
uint64_t rx_bytes = static_cast<uint64_t>(
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) {
vector<OSDOp> 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());
} 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,
NULL, NULL,
info->pobjver);
o->oncommit_sync = oncommit;
+ o->outbl = poutbl;
o->snapid = info->snap;
o->snapc = info->snapc;
o->mtime = info->mtime;
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;
// 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 {
}
}
} 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();
_send_op(op);
}
} else {
+ _op_cancel_map_check(op);
_cancel_linger_op(op);
}
s->lock.unlock();
RWLock::RLocker rl(rwlock);
const pg_pool_t *pi = osdmap->get_pg_pool(poolid);
+ if (!pi)
+ return -ENOENT;
for (map<snapid_t,pool_snap_info_t>::const_iterator p = pi->snaps.begin();
p != pi->snaps.end();
++p) {
if (!session_locked) {
s->lock.get_write();
}
- _finish_op(op);
+ _finish_op(op, 0);
if (!session_locked) {
s->lock.unlock();
}
if (!op->target.paused)
resend[op->tid] = op;
} else {
+ _op_cancel_map_check(op);
_cancel_linger_op(op);
}
}
set<OSDSession*> 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<int,OSDSession*>::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) {
- OSDSession *s = siter->second;
- RWLock::RLocker l(s->lock);
- for (map<ceph_tid_t,Op*>::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<uint64_t,LingerOp*>::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<uint64_t,CommandOp*>::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<int,OSDSession*>::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) {
+ OSDSession *s = siter->second;
+ RWLock::RLocker l(s->lock);
+ bool found = false;
+ for (map<ceph_tid_t,Op*>::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<uint64_t,LingerOp*>::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<uint64_t,CommandOp*>::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());
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)
}
}
- 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)
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;
op->oncommit_sync = NULL;
}
_op_cancel_map_check(op);
- _finish_op(op);
+ _finish_op(op, r);
s->lock.unlock();
return 0;
rwlock.get_write();
std::vector<ceph_tid_t> to_cancel;
+ bool found = false;
for (map<int, OSDSession *>::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) {
OSDSession *s = siter->second;
}
}
s->lock.unlock();
- }
- for (std::vector<ceph_tid_t>::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<ceph_tid_t>::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(
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);
}
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;
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);
}
Op *op = iter->second;
- _finish_op(op);
+ _finish_op(op, 0);
}
MOSDOp *Objecter::_prepare_osd_op(Op *op)
// 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;
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;
}
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;
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);
}
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;
}
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);
}
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;
}
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);
}
CommandOp *op = it->second;
_command_cancel_map_check(op);
- _finish_command(op, -ETIMEDOUT, "");
+ _finish_command(op, r, "");
return 0;
}
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);
}
// we trigger these from an async finisher
Context *on_notify_finish;
bufferlist *notify_result_bl;
+ uint64_t notify_id;
WatchContext *watch_context;
on_reg_commit(NULL),
on_notify_finish(NULL),
notify_result_bl(NULL),
+ notify_id(0),
watch_context(NULL),
session(NULL),
register_tid(0),
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();
}
info->put();
}
void finish(int r) {
- objecter->_linger_commit(info, r);
+ objecter->_linger_commit(info, r, outbl);
}
};
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<int>& oldacting,
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);
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());
}
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);
void get_pool_stats(list<string>& pools, map<string,pool_stat_t> *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
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
* LGPL2. See file COPYING.
*
*/
+#define _LARGEFILE64_SOURCE
#include "include/int_types.h"
#include "mon/MonClient.h"
#include <sstream>
#include <stdlib.h>
#include <sys/types.h>
+#include <unistd.h>
#include <time.h>
#include "include/memory.h"
#include <sys/ioctl.h>
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 {
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);
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;
}
--- /dev/null
+// -*- 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 <iostream>
+#include <boost/variant.hpp>
+
+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<void> {
+public:
+ EncodeVisitor(bufferlist &bl) : m_bl(bl) {
+ }
+
+ template <typename Action>
+ inline void operator()(const Action &action) const {
+ ::encode(static_cast<uint8_t>(Action::ACTION_TYPE), m_bl);
+ action.encode(m_bl);
+ }
+private:
+ bufferlist &m_bl;
+};
+
+class DecodeVisitor : public boost::static_visitor<void> {
+public:
+ DecodeVisitor(__u8 version, bufferlist::iterator &iter)
+ : m_version(version), m_iter(iter) {
+ }
+
+ template <typename Action>
+ 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<void> {
+public:
+ DumpVisitor(Formatter *formatter) : m_formatter(formatter) {}
+
+ template <typename Action>
+ 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<Dependency *> &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<ActionEntry *> &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<uint32_t>(type) << ")";
+ break;
+ }
+ return out;
+}
+
--- /dev/null
+// -*- 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 <iosfwd>
+#include <list>
+#include <string>
+#include <vector>
+#include <boost/variant/variant.hpp>
+
+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<Dependency *> &o);
+};
+
+WRITE_CLASS_ENCODER(Dependency);
+
+typedef std::vector<Dependency> 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<ActionType>(-1);
+
+ void encode(bufferlist &bl) const;
+ void decode(__u8 version, bufferlist::iterator &it);
+ void dump(Formatter *f) const;
+};
+
+typedef boost::variant<StartThreadAction,
+ StopThreadAction,
+ ReadAction,
+ WriteAction,
+ AioReadAction,
+ AioWriteAction,
+ OpenImageAction,
+ CloseImageAction,
+ UnknownAction> 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<ActionEntry *> &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
--- /dev/null
+// -*- 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
--- /dev/null
+// -*- 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
+++ /dev/null
-// -*- 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 <adamcrume@gmail.com>
- *
- * 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 <arpa/inet.h>
-#include <cstdlib>
-#include <endian.h>
-
-
-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<char*>(&data), sizeof(data));
- return data;
-}
-
-uint16_t rbd_replay::Deser::read_uint16_t() {
- uint16_t data;
- m_in.read(reinterpret_cast<char*>(&data), sizeof(data));
- return ntohs(data);
-}
-
-uint32_t rbd_replay::Deser::read_uint32_t() {
- uint32_t data;
- m_in.read(reinterpret_cast<char*>(&data), sizeof(data));
- return ntohl(data);
-}
-
-uint64_t rbd_replay::Deser::read_uint64_t() {
- uint64_t data;
- m_in.read(reinterpret_cast<char*>(&data), sizeof(data));
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- data = (static_cast<uint64_t>(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<char*>(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();
-}
+++ /dev/null
-// -*- 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 <adamcrume@gmail.com>
- *
- * 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 <iostream>
-#include <stdint.h>
-
-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
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
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
*/
#include "Replayer.hpp"
+#include "common/errno.h"
+#include "rbd_replay/ActionTypes.h"
+#include "rbd_replay/BufferReader.h"
#include <boost/foreach.hpp>
#include <boost/thread/thread.hpp>
+#include <boost/scope_exit.hpp>
#include <fstream>
#include "global/global_context.h"
#include "rbd_replay_debug.hpp"
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),
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<thread_id_t, Worker*> 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;
return tracker.actions.count(id) > 0;
}
-void Replayer::wait_for_actions(const vector<dependency_d> &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);
#include <boost/thread/mutex.hpp>
#include <boost/thread/shared_mutex.hpp>
+#include "rbd_replay/ActionTypes.h"
#include "BoundedBuffer.hpp"
#include "ImageNameMap.hpp"
#include "PendingIO.hpp"
bool is_action_complete(action_id_t id);
- void wait_for_actions(const std::vector<dependency_d> &deps);
+ void wait_for_actions(const action::Dependencies &deps);
std::string pool_name() const;
+++ /dev/null
-// -*- 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 <adamcrume@gmail.com>
- *
- * 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 <arpa/inet.h>
-#include <cstdlib>
-#include <endian.h>
-
-
-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<char*>(&data), sizeof(data));
-}
-
-void rbd_replay::Ser::write_uint16_t(uint16_t data) {
- data = htons(data);
- m_out.write(reinterpret_cast<char*>(&data), sizeof(data));
-}
-
-void rbd_replay::Ser::write_uint32_t(uint32_t data) {
- data = htonl(data);
- m_out.write(reinterpret_cast<char*>(&data), sizeof(data));
-}
-
-void rbd_replay::Ser::write_uint64_t(uint64_t data) {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- data = (static_cast<uint64_t>(htonl(data)) << 32 | htonl(data >> 32));
-#endif
- m_out.write(reinterpret_cast<char*>(&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);
-}
+++ /dev/null
-// -*- 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 <adamcrume@gmail.com>
- *
- * 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 <iostream>
-#include <stdint.h>
-
-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
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<dependency_d> &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<dependency_d> 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<Action::ptr> {
+ 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) {
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);
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 << "]";
-}
#include <boost/shared_ptr.hpp>
#include "include/rbd/librbd.hpp"
-#include "Deser.hpp"
+#include "common/Formatter.h"
+#include "rbd_replay/ActionTypes.h"
#include "rbd_loc.hpp"
+#include <iostream>
// Stupid Doxygen requires this or else the typedef docs don't appear anywhere.
/// @file rbd_replay/actions.hpp
/// 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.
*/
public:
typedef boost::shared_ptr<Action> ptr;
- Action(action_id_t id,
- thread_id_t thread_id,
- int num_successors,
- int num_completion_successors,
- std::vector<dependency_d> &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.
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 <typename ActionType>
+class TypedAction : public Action {
+public:
+ TypedAction(const ActionType &action) : m_action(action) {
}
- const std::vector<dependency_d>& 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<dependency_d> 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<action::StartThreadAction> {
public:
- DummyAction(action_id_t id,
- thread_id_t thread_id,
- int num_successors,
- int num_completion_successors,
- std::vector<dependency_d> &predecessors)
- : Action(id, thread_id, num_successors, num_completion_successors, predecessors) {
+ explicit StartThreadAction(const action::StartThreadAction &action)
+ : TypedAction<action::StartThreadAction>(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<action::StopThreadAction> {
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::StopThreadAction>(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<action::AioReadAction> {
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::AioReadAction>(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<action::ReadAction> {
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::ReadAction>(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<action::AioWriteAction> {
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::AioWriteAction>(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<action::WriteAction> {
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::WriteAction>(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<action::OpenImageAction> {
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::OpenImageAction>(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<action::CloseImageAction> {
public:
- explicit StartThreadAction(Action &src);
-
- void perform(ActionCtx &ctx);
-
- bool is_start_thread();
+ CloseImageAction(const action::CloseImageAction &action)
+ : TypedAction<action::CloseImageAction>(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";
+ }
};
}
// 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<action_id_t, IO::ptr>& s) {
- if (s.empty()) {
- return 0;
- }
- return s.begin()->second->start_time();
-}
-
-static uint64_t max_time(const map<action_id_t, IO::ptr>& s) {
- if (s.empty()) {
- return 0;
- }
- map<action_id_t, IO::ptr>::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> 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;
}
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<IO::ptr> 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<IO::ptr>::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<action_id_t, IO::ptr> searching_for;
- for (io_set_t::const_iterator itr = deps.begin(); itr != deps.end(); ++itr) {
- searching_for[(*itr)->ionum()] = *itr;
- }
-
- map<action_id_t, IO::ptr> 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<action_id_t, boost::shared_ptr<IO> >::iterator b_itr(boundary.end());
- --b_itr;
- boost::shared_ptr<IO> 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 {
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 {
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 {
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 {
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 {
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 {
// 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 <boost/enable_shared_from_this.hpp>
#include <boost/shared_ptr.hpp>
#include <iostream>
#include <map>
#include <set>
+#include <vector>
#include "actions.hpp"
-#include "Ser.hpp"
namespace rbd_replay {
typedef std::map<action_id_t, boost::shared_ptr<IO> > 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,
class IO : public boost::enable_shared_from_this<IO> {
public:
typedef boost::shared_ptr<IO> ptr;
-
- typedef boost::weak_ptr<IO> weak_ptr;
+ typedef std::vector<ptr> 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() {
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;
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<IO> m_completion;
- uint32_t m_num_successors;
thread_id_t m_thread_id;
- ptr m_prev;
+ bool m_completed;
};
/// Used for dumping debug info.
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;
};
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;
};
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;
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;
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;
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;
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;
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;
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
// 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 <babeltrace/babeltrace.h>
#include <babeltrace/ctf/events.h>
#include <babeltrace/ctf/iterator.h>
+#include <sys/types.h>
+#include <fcntl.h>
#include <cstdlib>
#include <string>
#include <assert.h>
#include <fstream>
+#include <set>
#include <boost/thread/thread.hpp>
+#include <boost/scope_exit.hpp>
#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:
uint64_t window)
: m_id(id),
m_window(window),
- m_pending_io(IO::ptr()),
m_latest_io(IO::ptr()),
m_max_ts(0) {
}
return m_max_ts;
}
- void issued_io(IO::ptr io, const map<thread_id_t, ptr>& threads) {
+ void issued_io(IO::ptr io, std::set<IO::ptr> *latest_ios) {
assert(io);
- io_set_t latest_ios;
- for (map<thread_id_t, ptr>::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;
};
};
static void usage(string prog) {
- cout << "Usage: " << prog << " [ --window <seconds> ] [ --anonymize ] <trace-input> <replay-output>" << endl;
+ std::stringstream str;
+ str << "Usage: " << prog << " ";
+ std::cout << str.str() << "[ --window <seconds> ] [ --anonymize ] [ --verbose ]" << std::endl
+ << std::string(str.str().size(), ' ') << "<trace-input> <replay-output>" << endl;
}
__attribute__((noreturn)) static void usage_exit(string prog, string msg) {
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<imagectx_id_t>()),
- m_ios(vector<IO::ptr>()),
- m_pending_ios(map<uint64_t, IO::ptr>()),
m_anonymize(false),
- m_anonymized_images(map<string, AnonymizedImage>()) {
+ m_verbose(false) {
}
void run(vector<string> args) {
}
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);
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
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) {
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;
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<IO::ptr>::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<IO::ptr>::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<thread_id_t, Thread::ptr>::const_iterator itr = m_threads.begin(), end = m_threads.end(); itr != end; ++itr) {
+ void insert_thread_stops(int fd) {
+ IO::ptrs ios;
+ for (map<thread_id_t, Thread::ptr>::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<IO::ptr>::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<IO::ptr>::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<IO::ptr>::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);
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;
}
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<string, string> 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<OpenImageIO> io(boost::dynamic_pointer_cast<OpenImageIO>(thread->pending_io()));
+ completed(thread->latest_io());
+ boost::shared_ptr<OpenImageIO> io(boost::dynamic_pointer_cast<OpenImageIO>(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<CloseImageIO> io(boost::dynamic_pointer_cast<CloseImageIO>(thread->pending_io()));
+ completed(thread->latest_io());
+ boost::shared_ptr<CloseImageIO> io(boost::dynamic_pointer_cast<CloseImageIO>(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");
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");
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");
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() {
}
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;
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<string, string> 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);
}
uint32_t m_io_count;
io_set_t m_recent_completions;
set<imagectx_id_t> m_open_images;
- vector<IO::ptr> m_ios;
// keyed by completion
map<uint64_t, IO::ptr> m_pending_ios;
+ std::set<IO::ptr> m_latest_ios;
bool m_anonymize;
map<string, AnonymizedImage> m_anonymized_images;
+
+ bool m_verbose;
};
int main(int argc, char** argv) {
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
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=<id> user id\n";
cerr << " --subuser=<name> subuser name\n";
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();
}
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)
#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
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;
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 */
goto done;
}
+ processor->complete_hash(&hash);
hash.Final(m);
buf_to_hex(m, CEPH_CRYPTO_MD5_DIGESTSIZE, calc_md5);
new_policy.encode(bl);
obj = rgw_obj(s->bucket, s->object);
map<string, bufferlist> 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 {
rgw_obj_key next_marker;
string max_keys;
string delimiter;
+ string encoding_type;
bool list_versions;
int max;
int ret;
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);
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(".");
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 <bucket marker>_<obj>,
+ * 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);
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;
}
{
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;
}
}
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;
}
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;
}
return ret;
}
delimiter = s->info.args.get("delimiter");
+ encoding_type = s->info.args.get("encoding-type");
return 0;
}
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<RGWObjEnt>::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";
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<RGWObjEnt>::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());
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<string, RGWRegion>::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);
}
$(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 = \
ASSERT_EQ(memcmp(big.get(), big2.get(), BIG_SZ), 0);
}
+TEST(BufferList, InvalidateCrc) {
+ const static size_t buffer_size = 262144;
+ ceph::shared_ptr <unsigned char> 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;
%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}
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}
BuildRequires: cryptsetup
BuildRequires: gdbm
BuildRequires: hdparm
+BuildRequires: leveldb-devel > 1.2
BuildRequires: libaio-devel
BuildRequires: libcurl-devel
BuildRequires: libedit-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
%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
Requires: scsirastools
BuildRequires: google-perftools-devel
%endif
-Recommends: logrotate
BuildRequires: %insserv_prereq
BuildRequires: mozilla-nss-devel
BuildRequires: keyutils-devel
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
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
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
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
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
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
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
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
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
%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
#################################################################################
%prep
%setup -q
-%if 0%{?fedora} || 0%{?rhel} || 0%{?centos}
+%if 0%{?fedora} || 0%{?rhel}
%patch0 -p1 -b .init
%endif
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
%{_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
%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
%{_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*
%{_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
%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
%files -n librados2
%defattr(-,root,root,-)
%{_libdir}/librados.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librados_tp.so.*
+%endif
%post -n librados2
/sbin/ldconfig
%{_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
%files -n librbd1
%defattr(-,root,root,-)
%{_libdir}/librbd.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so.*
+%endif
%post -n librbd1
/sbin/ldconfig
%{_includedir}/rbd/librbd.hpp
%{_includedir}/rbd/features.h
%{_libdir}/librbd.so
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so
+%endif
#################################################################################
%files -n python-rbd
%{_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}
%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,-)
%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}
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}
BuildRequires: cryptsetup
BuildRequires: gdbm
BuildRequires: hdparm
+BuildRequires: leveldb-devel > 1.2
BuildRequires: libaio-devel
BuildRequires: libcurl-devel
BuildRequires: libedit-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
%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
Requires: scsirastools
BuildRequires: google-perftools-devel
%endif
-Recommends: logrotate
BuildRequires: %insserv_prereq
BuildRequires: mozilla-nss-devel
BuildRequires: keyutils-devel
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
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
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
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
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
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
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
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
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
%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
#################################################################################
%prep
%setup -q
-%if 0%{?fedora} || 0%{?rhel} || 0%{?centos}
+%if 0%{?fedora} || 0%{?rhel}
%patch0 -p1 -b .init
%endif
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
%{_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
%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
%{_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*
%{_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
%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
%files -n librados2
%defattr(-,root,root,-)
%{_libdir}/librados.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librados_tp.so.*
+%endif
%post -n librados2
/sbin/ldconfig
%{_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
%files -n librbd1
%defattr(-,root,root,-)
%{_libdir}/librbd.so.*
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so.*
+%endif
%post -n librbd1
/sbin/ldconfig
%{_includedir}/rbd/librbd.hpp
%{_includedir}/rbd/features.h
%{_libdir}/librbd.so
+%if 0%{?_with_lttng}
+%{_libdir}/librbd_tp.so
+%endif
#################################################################################
%files -n python-rbd
%{_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}
%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,-)
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=<id> user id
--subuser=<name> subuser name
--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
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"
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<uint64_t, uint64_t> 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;
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<uint64_t, uint64_t> 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;
}
}
+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<uint64_t, uint64_t> 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];
}
}
+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<uint64_t, uint64_t> 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];
#include <string>
#include <time.h>
#include <unistd.h>
+#include "gtest/gtest.h"
using namespace librados;
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();
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();
}
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) {
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;
{
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;
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;
cluster.shutdown();
return ret;
}
+
+void assert_eq_sparse(bufferlist& expected,
+ const std::map<uint64_t, uint64_t>& extents,
+ bufferlist& actual) {
+ bufferlist::iterator i = expected.begin();
+ bufferlist::iterator p = actual.begin();
+ uint64_t pos = 0;
+ for (std::map<uint64_t, uint64_t>::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);
+}
#include "include/rados/librados.h"
#include "include/rados/librados.hpp"
+#include <map>
#include <string>
#include <unistd.h>
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<uint64_t, uint64_t>& extents,
+ bufferlist& actual);
class TestAlarm
{
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();
}
// replicate AIO callback processing
- m_aio_finisher = new Finisher(m_cct);
m_aio_finisher->start();
}
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()
it != watcher->watch_handles.end(); ++it) {
obj_watch_t obj;
strcpy(obj.addr, ":/0");
- obj.watcher_id = static_cast<int64_t>(it->second.instance_id);
+ obj.watcher_id = static_cast<int64_t>(it->second.gid);
obj.cookie = it->second.handle;
obj.timeout_seconds = 30;
out_watchers->push_back(obj);
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;
}
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;
}
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;
}
}
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();
}
}
class TestWatchNotify : boost::noncopyable {
public:
+ typedef std::pair<uint64_t, uint64_t> WatcherID;
+ typedef std::set<WatcherID> WatcherIDs;
typedef std::map<std::pair<uint64_t, uint64_t>, bufferlist> NotifyResponses;
struct NotifyHandle {
NotifyHandle();
+ WatcherIDs pending_watcher_ids;
NotifyResponses notify_responses;
- bufferlist *pbl;
- size_t pending_responses;
Mutex lock;
Cond cond;
};
typedef std::map<uint64_t, SharedNotifyHandle> NotifyHandles;
struct WatchHandle {
- uint64_t instance_id;
+ uint64_t gid;
uint64_t handle;
librados::WatchCtx* watch_ctx;
librados::WatchCtx2* watch_ctx2;
};
typedef boost::shared_ptr<Watcher> SharedWatcher;
- TestWatchNotify(CephContext *cct);
+ TestWatchNotify(CephContext *cct, Finisher *finisher);
~TestWatchNotify();
void flush();
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);
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);
};
ASSERT_EQ(static_cast<size_t>(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<uint64_t> exists;
+ interval_set<uint64_t> 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<uint64_t> two;
+ scribble(image, 10, 102400, &exists, &two);
+
+ interval_set<uint64_t> 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;
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",
} 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<uint64_t>(buffer.size(), size - offs);
- ASSERT_EQ(static_cast<ssize_t>(len),
- rbd_write(image, offs, len, buffer.c_str()));
- }
+
+ ASSERT_EQ(static_cast<ssize_t>(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<ssize_t>(size-1024), rbd_read(image, 1024, size, &buffer[0]));
+ ASSERT_EQ(static_cast<ssize_t>(buffer.size()),
+ rbd_read(image, 0, buffer.size(), &buffer[0]));
ASSERT_EQ(0, rbd_close(image));
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));
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));
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();
+}
}
-
+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<const char*> args;
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(
}
return true;
}
+
+bool ObjectDesc::check_sparse(const std::map<uint64_t, uint64_t>& extents,
+ bufferlist &to_check) {
+ iterator i = begin();
+ bufferlist::iterator p = to_check.begin();
+ uint64_t pos = 0;
+ for (std::map<uint64_t, uint64_t>::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;
+}
// takes ownership of gen
void update(ContentsGenerator *gen, const ContDesc &next);
bool check(bufferlist &to_check);
+ bool check_sparse(const std::map<uint64_t, uint64_t>& extends,
+ bufferlist &to_check);
const ContDesc &most_recent();
ContentsGenerator *most_recent_gen() {
return layers.begin()->first.get();
bufferlist result;
int retval;
+ std::map<uint64_t, uint64_t> extent_result;
+ bool is_sparse_read;
map<string, bufferlist> attrs;
int attrretval;
oid(oid),
snap(0),
retval(0),
+ is_sparse_read(false),
attrretval(0)
{}
-
+
void _begin()
{
context->state_lock.Lock();
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<string, ContDesc>::iterator i = old_value.attrs.begin();
i != old_value.attrs.end();
<< ", 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);
}
#include <stdint.h>
#include <boost/foreach.hpp>
#include <cstdarg>
-#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;
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");
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));
-}
*/
#include <boost/program_options/variables_map.hpp>
#include <boost/program_options/parsers.hpp>
+#include <boost/scope_exit.hpp>
#include <stdlib.h>
#include <string>
#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;
* dump-trace < --trace-file arg >
* replay-trace
* random-gen
+ * rewrite-crush
+ * inflate-pgmap
*
* wanted syntax:
*
<< " (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"
<< " (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
<< std::endl;
}
+int update_osdmap(MonitorDBStore& store, version_t ver, bool copy,
+ ceph::shared_ptr<CrushWrapper> 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<CrushWrapper> 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<string>& 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<string>(&crush_file),
+ ("path to the crush map file "
+ "(default: will instead extract it from the known-good osdmap)"))
+ ("good-epoch", po::value<int>(&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_t, pg_stat_t> 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<pg_t, pg_stat_t>::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");
} 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");
"output file (default: stdout)")
("version,v", po::value<unsigned>(&v),
"map version to obtain")
+ ("readable,r", po::value<bool>(&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
}
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;
}
}
+ 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<string>(&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;
<< 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<unsigned>(&n),
+ "number of maps to add (default: 2000)")
+ ("can-be-trimmed", po::value<bool>(&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);
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);
}
" 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"
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<std::string, std::string>::const_iterator i;
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);
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;
}
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)) {
-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)
+++ /dev/null
-# 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:
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "librados.h"
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "librbd.h"
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "objectstore.h"
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "oprequest.h"
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "osd.h"
--- /dev/null
+
+#define TRACEPOINT_CREATE_PROBES
+/*
+ * The header containing our TRACEPOINT_EVENTs.
+ */
+#include "pg.h"
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
--- /dev/null
+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 <gaudenz@debian.org> Mon, 04 May 2015 22:49:48 +0200
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
--- /dev/null
+../src/logrotate.conf
\ No newline at end of file
+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 <asheplyakov@mirantis.com> 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
Section: admin
Priority: optional
Maintainer: MOS ceph team <mos-ceph@mirantis.com>
-XSBC-Original-Maintainer: Ceph Maintainers <ceph-maintainers@lists.ceph.com>
+XSBC-Original-Maintainer: Ceph Maintainer <ceph-maintainers@list.ceph.com>
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
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
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
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,
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,
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,
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,
Upstream-Name: ceph
Upstream-Contact: Sage Weil <sage@newdream.net>
Source: http://ceph.com/
+Files-Excluded: src/erasure-code/jerasure/gf-complete
+ src/erasure-code/jerasure/jerasure
Files: *
Copyright: 2004-2014 Sage Weil <sage@newdream.net>
[DEFAULT]
-debian-branch = ubuntu
+debian-branch = hammer
+upstream-branch = upstream-hammer
pristine-tar = True
[import-orig]
--- /dev/null
+From: Alexey Sheplyakov <asheplyakov@mirantis.com>
+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 <asheplyakov@mirantis.com>
+---
+ 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;
+ }
+
--- /dev/null
+Last-Update: 2014-12-25
+Bug-Ceph: http://tracker.ceph.com/issues/10036
+Author: Mykola Golub <mgolub@mirantis.com>
+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<int> touched;
+ set<int> roots;
--- /dev/null
+From: Alexey Sheplyakov <asheplyakov@mirantis.com>
+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 <asheplyakov@mirantis.com>
+---
+ 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):
+ """
--- 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
+ 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.
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
--- /dev/null
+Last-Update: 2014-10-31
+Forwarded: no
+Author: Dmitry Smirnov <onlyjob@member.fsf.org>
+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 += \
--- /dev/null
+Last-Update: 2014-10-31
+Forwarded: no
+Author: Dmitry Smirnov <onlyjob@member.fsf.org>
+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
--- /dev/null
+Last-Update: 2014-12-09
+Forwarded: not-needed
+Author: Dmitry Smirnov <onlyjob@member.fsf.org>
+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
+var/lib/ceph/radosgw
var/log/ceph
var/log/radosgw
-var/lib/ceph/radosgw
--- /dev/null
+../src/rgw/logrotate.conf
\ No newline at end of file
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.
# Use system provided libs3
extraopts += --with-system-libs3
-#extraopts += --with-cluster-tests
-
%:
dh $@ --with javahelper,python2,autoreconf,systemd --parallel
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:
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
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
version=3
opts="uversionmangle=s/-/~/" \
- http://ceph.com/download/ceph-(\d.*)\.tar\.bz2
+ http://ceph.com/download/ceph-(0\.94\.\d.*)\.tar\.gz