Ceph is a distributed object, block, and file storage platform
Go to file
Sage Weil 3ce9534d78 client: close snaprealm on last cap removal during reconnect
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>
2011-04-01 16:21:45 -07:00
debian Merge branch 'next' 2011-03-30 16:55:38 -07:00
fusetrace
man man: Make </VirtualHost> be on its own line. 2011-03-31 13:36:01 -07:00
qa direct_io_test: use mkstmp instead of mkostemps 2011-03-17 18:02:17 -07:00
src client: close snaprealm on last cap removal during reconnect 2011-04-01 16:21:45 -07:00
udev debian: add udev rules 2011-03-10 16:08:39 -08:00
wireshark
.gitignore Make git ignore stamp files from debian build. 2011-03-07 11:33:33 -08:00
AUTHORS
autogen.sh
builddebs.sh
ceph.spec.in Add an RPM BuildRequires on keyutils-libs-devel. 2011-03-29 15:37:10 -07:00
ChangeLog
configure.ac mount.ceph: Use kernel key management API when possible. 2011-03-29 12:55:17 -07:00
COPYING
debvers.sh
do_autogen.sh do_autogen: create radosgw 2011-03-23 17:33:51 -07:00
INSTALL
Makefile.am debian: add udev rules 2011-03-10 16:08:39 -08:00
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