summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* mds: fix filelock eval_gathercuttlefish-4832Sage Weil2013-10-091-1/+2
| | | | | | | | | Broken by a08d62045657713bf0a5372bf14136082ec3b17e Reported-by: Yan, Zheng <yan.zheng@intel.com> Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit e8300d0afb5154d4d13536abdcf47bd5cc8ce810) Reviewed-by: Greg Farnum <greg@inktank.com>
* mds: do not double-queue file recovery in eval_gatherSage Weil2013-10-091-5/+4
| | | | | | | | | | | | | | | | | | | | | This fixes a specific case of double-queuing seen in #4832: - client goes stale, inode marked NEEDSRECOVER - eval does sync, queued, -> RECOVERING - client resumes - client goes stale (again), inode marked NEEDSRECOVER - eval_gather queues *again* Note that a cursory look at the recovery code makes me think this needs a much more serious overhaul. In particular, I don't think we should be triggering recovery when transitioning *from* a stable state, but explicitly when we are flagged, or when gathering. We should probably also hold a wrlock over the recovery period and remove the force_wrlock kludge from the final size check. Opened ticket #5268. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit a08d62045657713bf0a5372bf14136082ec3b17e) Reviewed-by: Greg Farnum <greg@inktank.com>
* v0.61.8v0.61.8Gary Lowell2013-08-182-1/+7
|
* RadosClient: shutdown monclient after dropping lockSamuel Just2013-08-181-1/+1
| | | | | | | | | | Otherwise, the monclient shutdown may deadlock waiting on a context trying to take the RadosClient lock. Fixes: #5897 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 0aacd10e2557c55021b5be72ddf39b9cea916be4)
* mon/OSDMonitor: make 'osd pool mksnap ...' not expose uncommitted stateSage Weil2013-08-171-23/+27
| | | | | | | | | | [This is a backport of d1501938f5d07c067d908501fc5cfe3c857d7281] We were returning success without waiting if the pending pool state had the snap. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
* mon/OSDMonitor: make 'osd pool rmsnap ...' not racy/crashySage Weil2013-08-161-24/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE: This is a manual backport of d90683fdeda15b726dcf0a7cab7006c31e99f14. Due to all kinds of collateral changes in the mon the original patch doesn't cleanly apply. Ensure that the snap does in fact exist before we try to remove it. This avoids a crash where a we get two dup rmsnap requests (due to thrashing, or a reconnect, or something), the committed (p) value does have the snap, but the uncommitted (pp) does not. This fails the old test such that we try to remove it from pp again, and assert. Restructure the flow so that it is easier to distinguish the committed short return from the uncommitted return (which must still wait for the commit). 0> 2013-07-16 14:21:27.189060 7fdf301e9700 -1 osd/osd_types.cc: In function 'void pg_pool_t::remove_snap(snapid_t)' thread 7fdf301e9700 time 2013-07-16 14:21:27.187095 osd/osd_types.cc: 662: FAILED assert(snaps.count(s)) ceph version 0.66-602-gcd39d8a (cd39d8a6727d81b889869e98f5869e4227b50720) 1: (pg_pool_t::remove_snap(snapid_t)+0x6d) [0x7ad6dd] 2: (OSDMonitor::prepare_command(MMonCommand*)+0x6407) [0x5c1517] 3: (OSDMonitor::prepare_update(PaxosServiceMessage*)+0x1fb) [0x5c41ab] 4: (PaxosService::dispatch(PaxosServiceMessage*)+0x937) [0x598c87] 5: (Monitor::handle_command(MMonCommand*)+0xe56) [0x56ec36] 6: (Monitor::_ms_dispatch(Message*)+0xd1d) [0x5719ad] 7: (Monitor::handle_forward(MForward*)+0x821) [0x572831] 8: (Monitor::_ms_dispatch(Message*)+0xe44) [0x571ad4] 9: (Monitor::ms_dispatch(Message*)+0x32) [0x588c52] 10: (DispatchQueue::entry()+0x549) [0x7cf1d9] 11: (DispatchQueue::DispatchThread::entry()+0xd) [0x7060fd] 12: (()+0x7e9a) [0x7fdf35165e9a] 13: (clone()+0x6d) [0x7fdf334fcccd] NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
* librados: fix async aio completion wakeupSage Weil2013-08-151-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | For aio flush, we register a wait on the most recent write. The write completion code, however, was *only* waking the waiter if they were waiting on that write, without regard to previous writes (completed or not). For example, we might have 6 and 7 outstanding and wait on 7. If they finish in order all is well, but if 7 finishes first we do the flush completion early. Similarly, if we - start 6 - start 7 - finish 7 - flush; wait on 7 - finish 6 we can hang forever. Fix by doing any completions that are prior to the oldest pending write in the aio write completion handler. Refs: #5919 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com> Tested-by: Oliver Francke <Oliver.Francke@filoo.de> (cherry picked from commit 16ed0b9af8bc08c7dabead1c1a7c1a22b1fb02fb)
* librados: fix locking for AioCompletionImpl refcountingJosh Durgin2013-08-151-5/+9
| | | | | | | | | | | | | | | | | | | Add an already-locked helper so that C_Aio{Safe,Complete} can increment the reference count when their caller holds the lock. C_AioCompleteAndSafe's caller is not holding the lock, so call regular get() to ensure no racing updates can occur. This eliminates all direct manipulations of AioCompletionImpl->ref, and makes the necessary locking clear. The only place C_AioCompleteAndSafe is used is in handling aio_flush_async(). This could cause a missing completion. Refs: #5919 Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> Tested-by: Oliver Francke <Oliver.Francke@filoo.de> (cherry picked from commit 7a52e2ff5025754f3040eff3fc52d4893cafc389)
* mon/Paxos: bootstrap peon too if monmap updatesSage Weil2013-08-131-1/+7
| | | | | | | | | If we get a monmap update, the leader bootstraps. Peons should do the same. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Greg Farnum <greg@inktank.com> (cherry picked from commit efe5b67bb700ef6218d9579abf43cc9ecf25ef52)
* osd: fix race when queuing recovery opsSage Weil2013-08-131-7/+22
| | | | | | | | | | | | | | Previously we would sample how many ops to start under the lock, drop it, and start that many. This is racy because multiple threads can jump in and we start too many ops. Instead, claim as many slots as we can and release them back later if we do not end up using them. Take care to re-wake the work-queue since we are releasing more resources for wq use. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Samuel Just <sam.just@inktank.com> (cherry picked from commit 01d3e094823d716be0b39e15323c2506c6f0cc3b)
* osd: tolerate racing threads starting recovery opsSage Weil2013-08-131-1/+1
| | | | | | | | | | | | | | We sample the (max - active) recovery ops to know how many to start, but do not hold the lock over the full duration, such that it is possible to start too many ops. This isn't problematic except that our condition checks for being == max but not beyond it, and we will continue to start recovery ops when we shouldn't. Fix this by adjusting the conditional to be <=. Reported-by: Stefan Priebe <s.priebe@profihost.ag> Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: David Zafman <david.zafman@inktank.com> (cherry picked from commit 3791a1e55828ba541f9d3e8e3df0da8e79c375f9)
* ceph-disk: fix mount options passed to move_mountSage Weil2013-08-121-0/+6
| | | | | | | | | | | Commit 6cbe0f021f62b3ebd5f68fcc01a12fde6f08cff5 added a mount_options but in certain cases it may be blank. Fill in with the defaults, just as we do in mount(). Backport: cuttlefish Reviewed-by: Dan Mick <dan.mick@inktank.com> Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit cb50b5a7f1ab2d4e7fdad623a0e7769000755a70)
* rgw: fix multi deleteYehuda Sadeh2013-08-121-1/+1
| | | | | | | | | | | | | | | | Fixes: #5931 Backport: bobtail, cuttlefish Fix a bad check, where we compare the wrong field. Instead of comparing the ret code to 0, we compare the string value to 0 which generates implicit casting, hence the crash. Signed-off-by: Yehuda Sadeh <yehuda@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com> (cherry picked from commit f9f1c48ad799da2b4be0077bf9d61ae116da33d7) Conflicts: src/rgw/rgw_rest_s3.cc
* ceph.spec.in: obsolete ceph-libs only on the affected distroDanny Al-Gaaf2013-08-091-0/+6
| | | | | | | | The ceph-libs package existed only on Redhat based distro, there was e.g. never such a package on SUSE. Therefore: make sure the 'Obsoletes' is only set on these affected distros. Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
* ceph.spec.in: Obsolete ceph-libsGary Lowell2013-08-091-0/+3
| | | | | Signed-off-by: Gary Lowell <gary.lowell@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
* common: pick_addresses: fix bug with observer class that triggered #5205Joao Eduardo Luis2013-08-091-7/+6
| | | | | | | | | | | | | | | | | | The Observer class we defined to observe conf changes and thus avoid triggering #5205 (as fixed by eb86eebe1ba42f04b46f7c3e3419b83eb6fe7f9a), was returning always the same const static array, which would lead us to always populate the observer's list with an observer for 'public_addr'. This would of course become a problem when trying to obtain the observer for 'cluster_add' during md_config_t::set_val() -- thus triggering the same assert as initially reported on #5205. Backport: cuttlefish Fixes: #5205 Signed-off-by: Joao Eduardo Luis <jecluis@gmail.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 7ed6de9dd7aed59f3c5dd93e012cf080bcc36d8a)
* make sure we are using the mount optionsAlfredo Deza2013-08-081-0/+4
| | | | | Signed-off-by: Alfredo Deza <alfredo@deza.pe> (cherry picked from commit 34831d0989d4bcec4920068b6ee09ab6b3234c91)
* PG: set !flushed in Reset()Samuel Just2013-08-081-1/+2
| | | | | | | | | | Otherwise, we might serve a pull before we start_flush in the ReplicaActive constructor. Fixes: #5799 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9e7d6d547e0e8a6db6ba611882afa9bf74ea0195)
* osd: make open classes on start optionalSage Weil2013-08-072-1/+4
| | | | | | | This is cuttlefish; default to the old behavior! Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 6f996223fb34650771772b88355046746f238cf2)
* osd: load all classes on startupSage Weil2013-08-073-1/+40
| | | | | | | | | | | | | | | This avoid creating a wide window between when ceph-osd is started and when a request arrives needing a class and it is loaded. In particular, upgrading the packages in that window may cause linkage errors (if the class API has changed, for example). Fixes: #5752 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com> (cherry picked from commit c24e652d8c5e693498814ebe38c6adbec079ea36) Conflicts: src/osd/ClassHandler.cc
* ceph_test_rados: print version banner on startupSage Weil2013-07-281-0/+3
| | | | | | | | It is helpful when looking at qa run logs to see what version of the tester is running. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 12c1f1157c7b9513a3d9f716a8ec62fce00d28f5)
* ceph_test_rados: add --pool <name> argSage Weil2013-07-281-1/+3
| | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit bcfbd0a3ffae6947464d930f636c8b35d1331e9d)
* upstart: stop ceph-create-keys when the monitor stopsSage Weil2013-07-261-0/+1
| | | | | | | | This avoids lingering ceph-create-keys tasks. Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit a90a2b42db8de134b8ea5d81cab7825fb9ec50b4)
* FileStore: fix fd leak in _check_global_replay_guardSamuel Just2013-07-261-0/+1
| | | | | | | | | | Bug introduced in f3f92fe21061e21c8b259df5ef283a61782a44db. Fixes: #5766 Backport: cuttlefish Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit c562b72e703f671127d0ea2173f6a6907c825cd1)
* mon/Paxos: share uncommitted value when leader is/was behindSage Weil2013-07-251-1/+1
| | | | | | | | | | | | | | | | | | If the leader has and older lc than we do, and we are sharing states to bring them up to date, we still want to also share our uncommitted value. This particular case was broken by b26b7f6e, which was only contemplating the case where the leader was ahead of us or at the same point as us, but not the case where the leader was behind. Note that the call to share_state() a few lines up will bring them fully up to date, so after they receive and store_state() for this message they will be at the same lc as we are. Fixes: #5750 Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Greg Farnum <greg@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com> (cherry picked from commit 05b6c7e8645081f405c616735238ae89602d3cc6)
* Merge remote-tracking branch 'gh/cuttlefish-next' into cuttlefishSage Weil2013-07-2517-131/+412
|\
| * HashIndex: reset attr upon split or merge completionSamuel Just2013-07-251-13/+2
| | | | | | | | | | | | | | | | | | | | A replay of an in progress merge or split might make our counts unreliable. Fixes: #5723 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 0dc3efdd885377a07987d868af5bb7a38245c90b)
| * test/filestore/store_test: add test for 5723Samuel Just2013-07-252-5/+77
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 37a4c4af54879512429bb114285bcb4c7c3488d5) Conflicts: src/os/LFNIndex.cc src/test/filestore/store_test.cc
| * FileStore::_collection_rename: fix global replay guardSamuel Just2013-07-251-3/+10
| | | | | | | | | | | | | | | | | | | | | | If the replay is being replayed, we might have already performed the rename, skip it. Also, we must set the collection replay guard only after we have done the rename. Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 870c474c5348831fcb13797d164f49682918fb30)
| * PGLog::rewind_divergent_log: unindex only works from tail, index() insteadSamuel Just2013-07-241-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: #5714 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 6957dbc75cc2577652b542aa3eae69f03060cb63) The original patch covered the same code in PGLog.cc. Conflicts: src/osd/PGLog.cc src/osd/PG.cc
| * msg/Pipe: do not hold pipe_lock for verify_authorizer()Sage Weil2013-07-241-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We shouldn't hold the pipe_lock while doing the ms_verify_authorizer upcalls. Fix by unlocking a bit earlier, and verifying our state is still correct in the failure path. This regression was introduced by ecab4bb9513385bd765cca23e4e2fadb7ac4bac2. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Greg Farnum <greg@inktank.com> (cherry picked from commit 723d691f7a1f53888618dfc311868d1988f61f56) Conflicts: src/msg/Pipe.cc
| * msg/Pipe: a bit of additional debug outputSage Weil2013-07-241-2/+7
| | | | | | | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 16568d9e1fb8ac0c06ebaa1e1dc1d6a432a5e4d4)
| * msg/Pipe: hold pipe_lock during important parts of accept()Sage Weil2013-07-241-14/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously we did not bother with locking for accept() because we were not visible to any other threads. However, we need to close accepting Pipes from mark_down_all(), which means we need to handle interference. Fix up the locking so that we hold pipe_lock when looking at Pipe state and verify that we are still in the ACCEPTING state any time we retake the lock. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit ecab4bb9513385bd765cca23e4e2fadb7ac4bac2)
| * msgr: fix a typo/goto-cross from dd4addef2dGreg Farnum2013-07-241-1/+2
| | | | | | | | | | | | | | | | We didn't build or review carefully enough! Signed-off-by: Greg Farnum <greg@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 1a84411209b13084b3edb87897d5d678937e3299)
| * msgr: close accepting_pipes from mark_down_all()Sage Weil2013-07-241-0/+11
| | | | | | | | | | | | | | | | We need to catch these pipes too, particularly when doing a rebind(), to avoid them leaking through. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 687fe888b32ac9d41595348dfc82111c8dbf2fcb)
| * msgr: maintain list of accepting pipesSage Weil2013-07-243-0/+11
| | | | | | | | | | | | | | | | | | New pipes exist in a sort of limbo before we know who the peer is and add them to rank_pipe. Keep a list of them in accepting_pipes for that period. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit dd4addef2d5b457cc9a58782fe42af6b13c68b81)
| * msgr: adjust nonce on rebind()Sage Weil2013-07-241-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can have a situation where: - we have a pipe to a peer - pipe goes to standby (on peer) - we rebind to a new port - .... - we rebind again to the same old port - we connect to peer and get reattached to the ancient pipe from two instances back. Avoid that by picking a new nonce each time we rebind. Add 1,000,000 each time so that the port is still legible in the printed output. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 994e2bf224ab7b7d5b832485ee14de05354d2ddf) Conflicts: src/msg/Accepter.cc
| * msgr: mark_down_all() after, not before, rebindSage Weil2013-07-241-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are shutting down all old connections and binding to new ports, we want to avoid a sequence like: - close all prevoius connections - new connection comes in on old port - rebind to new ports -> connection from old port leaks through As a first step, close all connections after we shut down the old accepter and before we start the new one. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 07a0860a1899c7353bb506e33de72fdd22b857dd) Conflicts: src/msg/SimpleMessenger.cc
| * msg/Pipe: unlock msgr->lock earlier in accept()Sage Weil2013-07-241-4/+1
| | | | | | | | | | | | | | | | Small cleanup. Nothing needs msgr->lock for the previously larger window. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit ad548e72fd94b4a16717abd3b3f1d1be4a3476cf)
| * msg/Pipe: avoid creating empty out_q entrySage Weil2013-07-241-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to maintain the invariant that all sub queues in out_q are never empty. Fix discard_requeued_up_to() to avoid creating an entry unless we know it is already present. This bug leads to an incorrect reconnect attempt when - we accept a pipe (lossless peer) - they send some stuff, maybe - fault - we initiate reconnect, even tho we have nothing queued In particular, we shouldn't reconnect because we aren't checking for resets, and the fact that our out_seq is 0 while the peer's might be something else entirely will trigger asserts later. This fixes at least one source of #5626, and possibly #5517. Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9f1c27261811733f40acf759a72958c3689c8516)
| * msg/Pipe: assert lock is held in various helpersSage Weil2013-07-241-0/+3
| | | | | | | | | | | | | | These all require that we hold pipe_lock. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 579d858aabbe5df88543d096ef4dbddcfc023cca)
| * msg/Pipe: be a bit more explicit about encoding outgoing messagesSage Weil2013-07-241-2/+8
| | | | | | | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 4282971d47b90484e681ff1a71ae29569dbd1d32)
| * msg/Pipe: fix RECONNECT_SEQ behaviorSage Weil2013-07-241-1/+9
| | | | | | | | | | | | | | | | | | | | Calling handle_ack() here has no effect because we have already spliced sent messages back into our out queue. Instead, pull them out of there and discard. Add a few assertions along the way. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Greg Farnum <greg@inktank.com> (cherry picked from commit 495ee108dbb39d63e44cd3d4938a6ec7d11b12e3)
| * msgr: reaper: make sure pipe has been cleared (under pipe_lock)Sage Weil2013-07-241-2/+2
| | | | | | | | | | | | | | | | | | | | All paths to pipe shutdown should have cleared the con->pipe reference already. Assert as much. Also, do it under pipe_lock! Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9586305a2317c7d6bbf31c9cf5b67dc93ccab50d)
| * msg/Pipe: goto fail_unlocked on early failures in accept()Sage Weil2013-07-241-55/+46
| | | | | | | | | | | | | | | | | | Instead of duplicating an incomplete cleanup sequence (that does not clear_pipe()), goto fail_unlocked and do the cleanup in a generic way. s/rc/r/ while we are here. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit ec612a5bda119cea52bbac9b2a49ecf1e83b08e5)
| * msgr: clear con->pipe inside pipe_lock on mark_downSage Weil2013-07-241-0/+10
| | | | | | | | | | | | | | We need to do this under protection of the pipe_lock. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit afafb87e8402242d3897069f4b94ba46ffe0c413)
| * msgr: clear_pipe inside pipe_lock on mark_down_allSage Weil2013-07-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Observed a segfault in rebind -> mark_down_all -> clear_pipe -> put that may have been due to a racing thread clearing the connection_state pointer. Do the clear_pipe() call under the protection of pipe_lock, as we do in all other contexts. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 5fc1dabfb3b2cbffdee3214d24d7769d6e440e45) Conflicts: src/msg/SimpleMessenger.cc
| * ReplicatedPG: track temp collection contents, clear during on_changeSamuel Just2013-07-242-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We also assert in on_flushed() that the temp collection is actually empty. Fixes: #5670 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 47516d9c4b7f023f3a16e166749fa7b1c7b3b24c) Conflicts: src/osd/ReplicatedPG.cc
| * PG, ReplicatedPG: pass a transaction down to ReplicatedPG::on_changeSamuel Just2013-07-244-7/+10
| | | | | | | | | | | | Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9f56a7b8bfcb63cb4fbbc0c9b8ff01de9e518c57)
| * PG: start flush on primary only after we process the master logSamuel Just2013-07-241-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Once we start serving reads, stray objects must have already been removed. Therefore, we have to flush all operations up to the transaction writing out the authoritative log. On replicas, we flush in Stray() if we will not eventually be activated and in ReplicaActive if we are in the acting set. This way a replica won't serve a replica read until the store is consistent. Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit b41f1ba48563d1d3fd17c2f62d10103b5d63f305)