mirror of
https://github.com/ceph/ceph
synced 2025-02-25 20:13:04 +00:00
Ceph is a distributed object, block, and file storage platform
The invariant is is_any_caps() IFF in->snaprealm, where is_any_caps() is !caps.empty || exporting_mds >= 0. If we clear exporting_mds and caps can be non-empty, we need to drop the snaprealm reference. Fixes crash like client/Client.cc: In function 'void Client::add_update_cap(Inode*, int, uint64_t, unsigned int, unsigned int, unsigned int, inodeno_t, int)', in thread '0x7f213df10700' client/Client.cc: 2244: FAILED assert(in->snaprealm == 0) client/Client.cc: In function 'void Client::add_update_cap(Inode*, int, uint64_t, unsigned int, unsigned int, unsigned int, inodeno_t, int)', in thread '0x7f213df10700' client/Client.cc: 2244: FAILED assert(in->snaprealm == 0) ceph version 0.25-570-g8ea9380 (commit:8ea938000624b5d67237b52cceee83b04d310d3c) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x53) [0x7bd566] 2: (Client::add_update_cap(Inode*, int, unsigned long, unsigned int, unsigned int, unsigned int, inodeno_t, int)+0xe6) [0x64af82] 3: (Client::add_update_inode(InodeStat*, utime_t, int)+0xca2) [0x63e1ec] 4: (Client::insert_trace(MetaRequest*, utime_t, int)+0x5cf) [0x63f4cb] 5: (Client::handle_client_reply(MClientReply*)+0x915) [0x6448c7] 6: (Client::ms_dispatch(Message*)+0x167) [0x644d5b] 7: (Messenger::ms_deliver_dispatch(Message*)+0x63) [0x62e911] 8: (SimpleMessenger::dispatch_entry()+0x6fd) [0x61ace1] 9: (SimpleMessenger::DispatchThread::entry()+0x2c) [0x610b90] 10: (Thread::_entry_func(void*)+0x23) [0x62d7f3] 11: (()+0x68ba) [0x7f21418e98ba] 12: (clone()+0x6d) [0x7f21407e502d] ceph version 0.25-570-g8ea9380 (commit:8ea938000624b5d67237b52cceee83b04d310d3c) triggered by an MDS reconnect on a 3-node cluster. (Workload in this case was just csyn --syn makedirs 7 7 7.) Signed-off-by: Sage Weil <sage.weil@dreamhost.com> |
||
---|---|---|
debian | ||
fusetrace | ||
man | ||
qa | ||
src | ||
udev | ||
wireshark | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
builddebs.sh | ||
ceph.spec.in | ||
ChangeLog | ||
configure.ac | ||
COPYING | ||
debvers.sh | ||
do_autogen.sh | ||
INSTALL | ||
Makefile.am | ||
NEWS | ||
publish.sh | ||
pull.sh | ||
push.sh | ||
README | ||
RELEASE_CHECKLIST | ||
release.sh | ||
sign.sh | ||
SubmittingPatches | ||
update_pbuilder.sh |
Ceph - a scalable distributed file system ----------------------------------------- Please see http://ceph.newdream.net/ for current info. ---- To build the server daemons, and FUSE client, $ ./autogen.sh $ ./configure $ make or $ cd src $ make (Note that the FUSE client will only be built if libfuse is present.) ---- A quick summary of binaries that will be built in src/ daemons: cmon -- monitor daemon. handles cluster state and configuration information. cosd -- storage daemon. stores objects on a given block device. cmds -- metadata daemon. handles file system namespace. ceph -- send management commands to the monitor cluster. userland clients: cfuse -- fuse client. csyn -- synthetic workload generator client. tools: monmaptool -- create/edit mon map osdmaptool -- create/edit osd map crushtool -- create/edit crush map scripts: mkcephfs -- cluster mkfs tool init-ceph -- init.d start/stop script