summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* client: fix whitespace in stat relpathwip-5021Sage Weil2013-07-011-4/+4
| | | | Signed-off-by: Sage Weil <sage@inktank.com>
* client: use __func__ instead of incorrect function name in ↵Sage Weil2013-07-011-4/+4
| | | | | | insert_readdir_results Signed-off-by: Sage Weil <sage@inktank.com>
* client: make less noise when unlinking during readdirSage Weil2013-07-011-4/+8
| | | | | | Skip, but do not talk about, NULL dentries. Signed-off-by: Sage Weil <sage@inktank.com>
* client: invalidate dentry leases when unlinkingSage Weil2013-06-241-1/+7
| | | | | | | | In many case when we are unlinking inodes we also need to invalidate the dentry lease, as we are not promised that the dentry is NULL. Be a bit over-conservative here for good measure. Signed-off-by: Sage Weil <sage@inktank.com>
* client: audit unlink() callersSage Weil2013-06-241-12/+13
| | | | | | Basically, always keep the dentry and dir, unless we are pruning. Signed-off-by: Sage Weil <sage@inktank.com>
* client: unlink dentry on traceless rmdir, unlink replySage Weil2013-06-241-3/+6
| | | | | | | This used to be handled in _unlink() and _rmdir() even when a trace was present in the reply, but this is cleaner. Signed-off-by: Sage Weil <sage@inktank.com>
* client: do not manually clean up on unlink/rmdirSage Weil2013-06-241-16/+0
| | | | | | The reply handler will do this in a safe, ordered fashion. Signed-off-by: Sage Weil <sage@inktank.com>
* client: refactor _lookup; fix NULL dentry caseSage Weil2013-06-241-7/+13
| | | | | | | Return ENOENT for a valid NULL dentry in our cache. Restructure _lookup to avoid duplicating some code. Signed-off-by: Sage Weil <sage@inktank.com>
* client: skip insert_trace on safe requestsSage Weil2013-06-241-0/+6
| | | | | | Only do this for the first reply. Signed-off-by: Sage Weil <sage@inktank.com>
* client: handle traceless rename in insert_trace, not verify_reply_traceSage Weil2013-06-241-9/+14
| | | | | | | | | | The insert_trace() logic is about managing local cache consistency; the verify_reply_trace() is about retrying requests to get the results that our callers need. Set up stubs to handle rmdir and unlink while we are here. Signed-off-by: Sage Weil <sage@inktank.com>
* client: avoid blindly removing dentriesSage Weil2013-06-241-3/+7
| | | | | | | | | | MetaRequests may have references to these dentries. Instead of removing them and tearing down the directory, just unlink them from the inodes. We could be a bit smarter here if we looked at the reference count, but this works too. Signed-off-by: Sage Weil <sage@inktank.com>
* client: leave NULL dentry in place on ENOENT during lookupSage Weil2013-06-242-25/+29
| | | | | | | If we get a NULL lookup result, unlink the inode but leave the dentry in place. Signed-off-by: Sage Weil <sage@inktank.com>
* client: add debugging around traceless reply failuresSage Weil2013-06-241-8/+15
| | | | | | Tracking down #5021 Signed-off-by: Sage Weil <sage@inktank.com>
* Merge remote-tracking branch 'gh/next'Sage Weil2013-06-246-5/+34
|\
| * mon/Elector: cancel election timer if we bootstrapSage Weil2013-06-241-0/+1
| | | | | | | | | | | | | | | | | | If we short-circuit and bootstrap, cancel our timer. Otherwise it will go off some time later when we are in who knows what state. Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
| * mon: cancel probe timeout on resetSage Weil2013-06-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are probing and get (say) an election timeout that calls reset(), cancel the timer. Otherwise, we assert later with a splat like 2013-06-24 01:09:33.675882 7fb9627e7700 4 mon.b@0(leader) e1 probe_timeout 0x307a520 2013-06-24 01:09:33.676956 7fb9627e7700 -1 mon/Monitor.cc: In function 'void Monitor::probe_timeout(int)' thread 7fb9627e7700 time 2013-06-24 01:09:43.675904 mon/Monitor.cc: 1888: FAILED assert(is_probing() || is_synchronizing()) ceph version 0.64-613-g134d08a (134d08a9654f66634b893d493e4a92f38acc63cf) 1: (Monitor::probe_timeout(int)+0x161) [0x56f5c1] 2: (Context::complete(int)+0xa) [0x574a2a] 3: (SafeTimer::timer_thread()+0x425) [0x7059a5] 4: (SafeTimerThread::entry()+0xd) [0x7065dd] 5: (()+0x7e9a) [0x7fb966f62e9a] 6: (clone()+0x6d) [0x7fb9652f9ccd] NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this. Fixes: #5438 Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
| * mon/AuthMonitor: ensure initial rotating keys get encoded when ↵Sage Weil2013-06-241-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | create_initial called 2x The create_initial() method may get called multiple times; make sure it will unconditionally generate new/initial rotating keys. Move the block up so that we can easily assert as much. Broken by commit cd98eb0c651d9ee62e19c2cc92eadae9bed678cd. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
| * init-radosgw.sysv: remove -x debug modeSage Weil2013-06-241-1/+1
| | | | | | | | | | Fixes: #5443 Signed-off-by: Sage Weil <sage@inktank.com>
| * common/pick_addresses: behave even after internal_safe_to_start_threadsSage Weil2013-06-241-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ceph-mon recently started using Preforker to working around forking issues. As a result, internal_safe_to_start_threads got set sooner and calls to pick_addresses() which try to set string config values now fail because there are no config observers for them. Work around this by observing the change while we adjust the value. We assume pick_addresses() callers are smart enough to realize that their result will be reflected by cct->_conf and not magically handled elsewhere. Fixes: #5195, #5205 Backport: cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com>
| * Add python-argparse to dependencies (for pre-2.7 systems)Dan Mick2013-06-241-1/+2
| | | | | | | | Signed-off-by: Dan Mick <dan.mick@inktank.com>
* | osd: tolerate racing threads starting recovery opsSage Weil2013-06-241-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>
* | Merge pull request #376 from dalgaaf/wip-da-SCA-cppcheck-3Sage Weil2013-06-247-13/+12
|\ \ | | | | | | Reviewed-by: Sage Weil <sage@inktank.com>
| * | test/librados/cmd.cc: use static_cast instead of C-Style castDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | osdc/Objecter.cc: use static_cast instead of C-Style castDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | mon/MonClient.cc: use static_cast instead of C-Style castDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | common/cmdparse.cc: reduce scope of local variable 'pos'Danny Al-Gaaf2013-06-241-2/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | common/cmdparse.cc: remove unused variableDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | osd/OSD.cc: prefer prefix ++operator for non-trivial iteratorDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | OSDMonitor.cc: prefer prefix ++operator for non-trivial iteratorDanny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | mon/MonCap.cc: use empty() instead of if(size())Danny Al-Gaaf2013-06-241-1/+1
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
| * | common/cmdparse.cc: prefer prefix ++operator for non-trivial iteratorDanny Al-Gaaf2013-06-241-4/+4
| | | | | | | | | | | | Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
* | | debian, rpm: remove python-lockfile dependencySage Weil2013-06-242-2/+0
| | | | | | | | | | | | | | | | | | | | | As for 2a4953b697a3464862fd3913336edfd7eede2487 ceph-disk no longer uses this. Signed-off-by: Sage Weil <sage@inktank.com>
* | | Merge remote-tracking branch 'gh/next'Sage Weil2013-06-246-8/+27
|\ \ \ | |/ / |/| / | |/
| * mds: do not assume segment list is non-empty in standby_trim_segmentsSage Weil2013-06-242-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we restart standby replay shortly after startup, before we actually have any segments, we an trigger a segfault here: ceph version 0.64-441-gc39b99c (c39b99cdecceaca77f66eafbcc38387406826406) 1: ceph-mds() [0x975caa] 2: (()+0xfcb0) [0x7fc33b5a5cb0] 3: (MDLog::standby_trim_segments()+0x192) [0x78a932] 4: (MDS::C_MDS_StandbyReplayRestartFinish::finish(int)+0x39) [0x595f69] 5: (Journaler::_finish_reprobe(int, unsigned long, Context*)+0x190) [0x7917b0] 6: (Filer::_probed(Filer::Probe*, object_t const&, unsigned long, utime_t)+0x558) [0x7c6b38] 7: (Objecter::C_Stat::finish(int)+0xc0) [0x7c7930] 8: (Objecter::handle_osd_op_reply(MOSDOpReply*)+0xe48) [0x7b2c78] 9: (MDS::handle_core_message(Message*)+0xae8) [0x589858] 10: (MDS::_dispatch(Message*)+0x2f) [0x589a1f] 11: (MDS::ms_dispatch(Message*)+0x1d3) [0x58b4a3] 12: (DispatchQueue::entry()+0x3f1) [0x943861] 13: (DispatchQueue::DispatchThread::entry()+0xd) [0x86e32d] Fixes: #5333 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Greg Farnum <greg@inktank.com> (cherry picked from commit abd0ff64e108b7670a062b3fa39baaf3d3e48fb3)
| * Merge pull request #374 from ceph/wip-5427Sage Weil2013-06-243-6/+11
| |\ | | | | | | Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
| | * mon/AuthMonitor: make initial auth include rotating keysSage Weil2013-06-233-6/+11
| |/ | | | | | | | | | | | | | | This closes a very narrow race during mon creation where there are no service keys. Fixes: #5427 Signed-off-by: Sage Weil <sage@inktank.com>
| * mon: do not leak no_reply messagesSage Weil2013-06-231-1/+5
| | | | | | | | | | | | | | | | | | I think I assumed no_reply() was releasing the references, but it is not. Which is better, since send_reply() doesn't either. Fix the leaks by dropping the message ref explicitly. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
| * mon: fix leak of MOSDFailure messagesSage Weil2013-06-232-0/+10
| | | | | | | | | | | | | | | | We need to discard/cancel/free the failure report messages before we cancel a report out. Assert in the dtor to ensure we didn't forget. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
| * debian: ceph-common requires matching version of python-cephSage Weil2013-06-221-1/+1
| | | | | | | | | | | | If they skew the ceph_argparse.py module may be missing. Signed-off-by: Sage Weil <sage@inktank.com>
* | Merge pull request #375 from ceph/wip-msgrGregory Farnum2013-06-232-60/+71
|\ \ | | | | | | | | | | | | misc msgr fixes Reviewed-by: Greg Farnum <greg@inktank.com>
| * | msgr: clear_pipe+queue reset when replacing lossy connectionsSage Weil2013-06-232-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | We already handle the lossless replacement and lossy fault paths, but not the lossy replacement. This fixes an assert(!cleared) in the reaper. Adjust comments appropriately. Signed-off-by: Sage Weil <sage@inktank.com>
| * | msgr: reaper: make sure pipe has been cleared (under pipe_lock)Sage Weil2013-06-231-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | msg/Pipe: goto fail_unlocked on early failures in accept()Sage Weil2013-06-231-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>
| * | msgr: clear con->pipe inside pipe_lock on mark_downSage Weil2013-06-231-0/+10
| | | | | | | | | | | | | | | | | | We need to do this under protection of the pipe_lock. Signed-off-by: Sage Weil <sage@inktank.com>
| * | msgr: clear_pipe inside pipe_lock on mark_down_allSage Weil2013-06-231-1/+1
|/ / | | | | | | | | | | | | | | | | 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>
* | Merge branch 'next'Dan Mick2013-06-215-941/+987
|\ \ | |/ | | | | | | Conflicts: src/ceph.in
| * Add header comments and Inktank copyrights to ceph.in/ceph_argparse.pyDan Mick2013-06-212-0/+25
| | | | | | | | Signed-off-by: Dan Mick <dan.mick@inktank.com>
| * ceph.in: rip out reusable code to pybind/ceph_argparse.pyDan Mick2013-06-214-928/+943
| | | | | | | | | | | | | | Signed-off-by: Dan Mick <dan.mick@inktank.com> Conflicts: src/ceph.in
| * ceph: even shinierSage Weil2013-06-211-4/+2
| | | | | | | | | | Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com>
| * ceph: do not busy-loop on ceph -wSage Weil2013-06-211-0/+2
| | | | | | | | | | Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com>