summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* limit how long flusher holds the lockwip-cache-stallSage Weil2013-08-231-1/+3
|
* rgw: fix crash when creating new zone on initYehuda Sadeh2013-08-231-8/+8
| | | | | | | | | Moving the watch/notify init before the zone init, as we might need to send a notification. Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Yehuda Sadeh <yehuda@inktank.com> (cherry picked from commit 3d55534268de7124d29bd365ea65da8d2f63e501)
* rgw: change cache / watch-notify init sequenceYehuda Sadeh2013-08-233-5/+16
| | | | | | | | | | | | | | Fixes: #6046 We were initializing the watch-notify (through the cache init) before reading the zone info which was much too early, as we didn't have the control pool name yet. Now simplifying init/cleanup a bit, cache doesn't call watch/notify init and cleanup directly, but rather states its need through a virtual callback. Signed-off-by: Yehuda Sadeh <yehuda@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit d26ba3ab0374e77847c742dd00cb3bc9301214c2)
* enable mds rejoin with active inodes' old parent xattrsAlexandre Oliva2013-08-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the parent xattrs of active inodes that the mds attempts to open during rejoin lack pool info (struct_v < 5), this field will be filled in with -1, causing the mds to retry fetching a backtrace with a pool number that matches the expected value, which fails and causes the err==-ENOENT branch to be taken and retry pool 1, which succeeds, but with pool -1, and so keeps on bouncing between the two retry cases forever. This patch arranges for the mds to go along with pool -1 instead of insisting that it be refetched, enabling it to complete recovery instead of eating cpu, network bandwidth and metadata osd's resources like there's no tomorrow, in what AFAICT is an infinite and very busy loop. This is not a new problem: I've had it even before upgrading from Cuttlefish to Dumpling, I'd just never managed to track it down, and force-unmounting the filesystem and then restarting the mds was an easier (if inconvenient) work-around, particularly because it always hit when the filesystem was under active, heavy-ish use (or there wouldn't be much reason for caps recovery ;-) There are two issues not addressed in this patch, however. One is that nothing seems to proactively update the parent xattr when it is found to be outdated, so it remains out of date forever. Not even renaming top-level directories causes the xattrs to be recursively rewritten. AFAICT that's a bug. The other is that inodes that don't have a parent xattr (created by even older versions of ceph) are reported as non-existing in the mds rejoin message, because the absence of the parent xattr is signaled as a missing inode (?failed to reconnect caps for missing inodes?). I suppose this may cause more serious recovery problems. I suppose a global pass over the filesystem tree updating parent xattrs that are out-of-date would be desirable, if we find any parent xattrs still lacking current information; it might make sense to activate it as a background thread from the backtrace decoding function, when it finds a parent xattr that's too out-of-date, or as a separate client (ceph-fsck?). Backport: dumpling, cuttlefish Signed-off-by: Alexandre Oliva <oliva@gnu.org> Reviewed-by: Zheng, Yan <zheng.z.yan@intel.com> (cherry picked from commit 617dc36d477fd83b2d45034fe6311413aa1866df)
* mds: remove waiting lock before merging with neighboursDavid Disseldorp2013-08-231-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CephFS currently deadlocks under CTDB's ping_pong POSIX locking test when run concurrently on multiple nodes. The deadlock is caused by failed removal of a waiting_locks entry when the waiting lock is merged with an existing lock, e.g: Initial MDS state (two clients, same file): held_locks -- start: 0, length: 1, client: 4116, pid: 7899, type: 2 start: 2, length: 1, client: 4110, pid: 40767, type: 2 waiting_locks -- start: 1, length: 1, client: 4116, pid: 7899, type: 2 Waiting lock entry 4116@1:1 fires: handle_client_file_setlock: start: 1, length: 1, client: 4116, pid: 7899, type: 2 MDS state after lock is obtained: held_locks -- start: 0, length: 2, client: 4116, pid: 7899, type: 2 start: 2, length: 1, client: 4110, pid: 40767, type: 2 waiting_locks -- start: 1, length: 1, client: 4116, pid: 7899, type: 2 Note that the waiting 4116@1:1 lock entry is merged with the existing 4116@0:1 held lock to become a 4116@0:2 held lock. However, the now handled 4116@1:1 waiting_locks entry remains. When handling a lock request, the MDS calls adjust_locks() to merge the new lock with available neighbours. If the new lock is merged, then the waiting_locks entry is not located in the subsequent remove_waiting() call because adjust_locks changed the new lock to include the old locks. This fix ensures that the waiting_locks entry is removed prior to modification during merge. Signed-off-by: David Disseldorp <ddiss@suse.de> Reviewed-by: Greg Farnum <greg@inktank.com> (cherry picked from commit 476e4902907dfadb3709ba820453299ececf990b)
* mon/PGMap: OSD byte counts 4x too large (conversion to bytes overzealous)Dan Mick2013-08-231-3/+3
| | | | | | Fixes: #6049 Signed-off-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit eca53bbf583027397f0d5e050a76498585ecb059)
* ceph-disk: specify the filetype when mountingAlfredo Deza2013-08-231-0/+1
| | | | | | Signed-off-by: Alfredo Deza <alfredo.deza@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit f040020fb2a7801ebbed23439159755ff8a3edbd)
* v0.67.2v0.67.2Gary Lowell2013-08-222-1/+7
|
* .gitignore: ignore test-driverSage Weil2013-08-221-0/+1
| | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit edf2c3449ec96d91d3d7ad01c50f7a79b7b2f7cc)
* fuse: fix warning when compiled against old fuse versionsSage Weil2013-08-221-1/+1
| | | | | | | | client/fuse_ll.cc: In function 'void invalidate_cb(void*, vinodeno_t, int64_t, int64_t)': warning: client/fuse_ll.cc:540: unused variable 'fino' Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9833e9dabe010e538cb98c51d79b6df58ce28f9e)
* json_spirit: remove unused typedefSage Weil2013-08-221-2/+0
| | | | | | | | | | | | In file included from json_spirit/json_spirit_writer.cpp:7:0: json_spirit/json_spirit_writer_template.h: In function 'String_type json_spirit::non_printable_to_string(unsigned int)': json_spirit/json_spirit_writer_template.h:37:50: warning: typedef 'Char_type' locally defined but not used [-Wunused-local-typedefs] typedef typename String_type::value_type Char_type; (Also, ha ha, this file uses \r\n.) Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 6abae35a3952e5b513895267711fea63ff3bad09)
* gtest: add build-aux/test-driver to .gitignoreSage Weil2013-08-221-0/+1
| | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit c9cdd19d1cd88b84e8a867f5ab85cb51fdc6f8e4)
* objecter: resend unfinished lingers when osdmap is no longer pausedJosh Durgin2013-08-211-2/+12
| | | | | | | | | | | | | | | | Plain Ops that haven't finished yet need to be resent if the osdmap transitions from full or paused to unpaused. If these Ops are triggered by LingerOps, they will be cancelled instead (since should_resend = false), but the LingerOps that triggered them will not be resent. Fix this by checking the registered flag for all linger ops, and resending any of them that aren't paused anymore. Fixes: #6070 Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage.weil@inktank.com> (cherry picked from commit 38a0ca66a79af4b541e6322467ae3a8a4483cc72)
* pybind: fix Rados.conf_parse_env testSage Weil2013-08-201-6/+2
| | | | | | | | | | This happens after we connect, which means we get ENOSYS always. Instead, parse_env inside the normal setup method, which had the added benefit of being able to debug these tests. Backport: dumpling Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 6ef1970340c57d6e02f947348fb38882b51d131c)
* librados: fix MWatchNotify leakSage Weil2013-08-201-9/+6
| | | | | | | | | | | Do not leak the message if the watcher is not registered. Also, simplify this block. Fixes (part of): #5949 Backport: dumpling, cuttlefish Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com> (cherry picked from commit 6f5d8036f3e70c5e30edf7e36fb8ff9a56197f60)
* PG: remove old log when we upgrade log versionSamuel Just2013-08-192-0/+9
| | | | | | | | | | Otherwise the log_oid will be non-empty and the next boot will cause us to try to upgrade again. Fixes: #6057 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 1f851cb2489a95526de932ec6734ebf413e43490)
* PGLog: add a config to disable PGLog::check()Samuel Just2013-08-193-3/+12
| | | | | | | | | This is a debug check which may be causing excessive cpu usage. Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Samuel Just <sam.just@inktank.com> (cherry picked from commit 00080d785f6695b800f71317a3048a21064e61cb)
* ceph: parse CEPH_ARGS environment variableSage Weil2013-08-191-0/+1
| | | | | | | Fixes: #6052 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit 67a95b9880c9bc6e858150352318d68d64ed74ad)
* rados pybind: add conf_parse_env()Sage Weil2013-08-192-0/+19
| | | | | | Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit eef7cacdb19313907a9367187b742db5382ee584)
* rgw: drain requests before exitingYehuda Sadeh2013-08-181-0/+1
| | | | | | | | Fixes: #5953 Signed-off-by: Yehuda Sadeh <yehuda@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 3cbf6a7b031c2ce8072733c5c0b7ceb53fdcb090)
* rgw: do not leak handler in get_handler() error pathSage Weil2013-08-181-1/+3
| | | | | | | | | If we fail to initialize, delete the handler. Fixes (part of): #5949 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com> (cherry picked from commit 810c52de36719c3ee6cf2bdf59d5cde8840bbe55)
* rgw: fix leak of RGWDataChangesLog::renew_threadSage Weil2013-08-181-0/+1
| | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 25948319c4d256c4aeb0137eb88947e54d14cc79)
* rgw: free resolver on shutdownSage Weil2013-08-183-1/+8
| | | | | Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit a31356338b8ae55df59d829d9080ffad70b97d10)
* rgw: fix up signal handlingSage Weil2013-08-181-20/+35
| | | | | | | | | | | | OMG libfcgi is annoying with shutdown and signals. You need to close the fd *and* resend a signal to ensure that you kick the accept loop hard enough to make it shut down. Document this, and switch to the async signal handlers. Put them tightly around the runtime loop as we do with other daemons. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 59b13cebee600dad2551d2c7dc3482b05eaf8b22)
* v0.67.1v0.67.1Gary Lowell2013-08-162-1/+7
|
* ceph.in: --admin-daemon was not returning EINVAL on bad commandDan Mick2013-08-151-18/+19
| | | | | | | | Fix by restructuring code to hoist common code and have only one place where admin_socket is actually called. Signed-off-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit 266460e97ec9ef9711e9eaa4bd954f3188d8da69)
* mon: use str_join instead of std::copySage Weil2013-08-152-12/+4
| | | | | | | | The std::copy method leaves a trailing separator. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit 35565ee64e41d7fddc7849c6006692c78227132c)
* config: fix stringification of config valuesSage Weil2013-08-151-4/+4
| | | | | | | | | | | The std::copy construct leaves a trailing separator character, which breaks parsing for booleans (among other things) and probably mangles everything else too. Backport: dumpling Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Samuel Just <sam.just@inktank.com> (cherry picked from commit fc23cfe3fe567b30413d8af0c614a32fec238939)
* common: add str_join helperSage Weil2013-08-151-1/+14
| | | | | | Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Dan Mick <dan.mick@inktank.com> (cherry picked from commit ce3a0944d9b47f7b178fe7775c9d105305b238e0)
* rados.py: fix Rados() unicode checkingJosh Durgin2013-08-142-1/+15
| | | | | | | | | Check new parameters and check that rados_id is not None again to catch the empty string. Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage.weil@inktank.com> (cherry picked from commit 4422f21a6586467a63ce6841552d0f60aa849cf1)
* rados.py: fix Rados() backwards compatibilityJosh Durgin2013-08-142-2/+27
| | | | | | | | | | | | | | | | | Previously it had no name parameter, so the default will be used by old clients. However, if an old client set rados_id, a new check that both rados_id and name are set would result in an error. Fix this by only applying the default names after the check, and add tests of this behavior. This was introduced in 783b7ec847c7f987ac1814c9c41c91921cac4eba, so it does not affect cuttlefish. Fixes: #5970 Reported-by: Michael Morgan <mmorgan@dca.net> Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage.weil@inktank.com> (cherry picked from commit 34da9cbc33205623cf64aee1989f53dfb2c5bddd)
* librados: fix async aio completion wakeupSage Weil2013-08-141-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-141-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)
* v0.67v0.67Gary Lowell2013-08-131-0/+6
|
* 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>
* ceph-disk: fix mount options passed to move_mountSage Weil2013-08-091-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>
* config_opts.h: reduce osd_recovery_max_active and osd_recovery_max_single_startSamuel Just2013-08-091-2/+2
| | | | | Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: David Zafman <david.zafman@inktank.com>
* ceph: retry new-style mon command if we get EINVAL from the old-style commandSage Weil2013-08-091-15/+23
| | | | | | | | | | | | | | | We can race with a mon upgrade: - get command descriptions, get EINVAL - mons upgrade, new quorum - send old-style command - get EINVAL In this case, we should try one last time to get the command descriptions. Fixes: #5788 Reviewed-by: Dan Mick <dan.mick@inktank.com> Signed-off-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>
* rgw: return 423 Locked response when failing to lock objectYehuda Sadeh2013-08-094-0/+8
| | | | | | | | | | Fixes: #5882 Translate the EBUSY we get when trying to lock a shard / object to 423 Locked response. Beforehand it was just translated to the default 500. Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
* rgw: make RGWHTTPClient callback methods pure virtualYehuda Sadeh2013-08-092-3/+22
| | | | | | | | This will make it easier to catch interface changes, like the ones that triggered #5921. Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
* rgw: rename read_header() to receive_header() where neededYehuda Sadeh2013-08-091-2/+2
| | | | | | | The same as with #5921, fixing a missed interface change. Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
* rgw: rename data receive callbacks in swift token revocationYehuda Sadeh2013-08-091-2/+2
| | | | | | | | | | | | Fixes: #5921 As part of the work that was made for dumpling, the http client in-data callback was renamed in order to avoid confusion. However, we missed the rename in a couple of places, which this patch amend. Reported-by: Roald van Loon <roaldvanloon@gmail.com> Reviewed-by: Sage Weil <sage@inktank.com> Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
* RadosClient: shutdown monclient after dropping lockSamuel Just2013-08-081-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>
* buffer: change #include orderSage Weil2013-08-081-1/+2
| | | | | | | huangjun <hjwsm1989@gmail.com> reports that this fixes the compilation on CentOS5. Signed-off-by: Sage Weil <sage@inktank.com>
* 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)
* Merge pull request #487 from ceph/wip-5746Sage Weil2013-08-081-3/+8
|\ | | | | | | | | ceph.in: Re-enable ceph interactive mode (missing its output). Reviewed-by: Sage Weil <sage@inktank.com>
| * ceph.in: Re-enable ceph interactive mode (missing its output).Dan Mick2013-08-081-3/+8
| | | | | | | | | | | | | | | | | | Also, loop on error. There's no reason to exit the interpreter loop on an error, and it's probably less annoying if we don't. Print the error, and any output, and continue. Fixes: #5746 Signed-off-by: Dan Mick <dan.mick@inktank.com>
* | Merge pull request #488 from dmick/wip-dmick-daemon-einvalSage Weil2013-08-081-2/+4
|\ \ | | | | | | | | | | | | Wip dmick daemon einval Reviewed-by: Sage Weil <sage@inktank.com>
| * | ceph.in: return EINVAL on daemon command errorDan Mick2013-08-081-2/+4
|/ / | | | | | | Signed-off-by: Dan Mick <dan.mick@inktank.com>