]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mds: remove MDSlaveUpdate from list on deletion
authorSage Weil <sage@newdream.net>
Tue, 19 Apr 2011 16:25:30 +0000 (09:25 -0700)
committerSage Weil <sage@newdream.net>
Tue, 19 Apr 2011 16:25:30 +0000 (09:25 -0700)
commitd55399ffec224206ea324e83bb8ead1e9ca1eddc
tree322d13dd7c71321168a108a326e3f3434eac3d72
parente4e2b742fe31170db9a3e46dbd30f8a2a685253d
mds: remove MDSlaveUpdate from list on deletion

These are added to the LogSegment list on the slaves, but also need to be
removed from that list when we replay a COMMIT|ROLLBACK or when the op's
fate is determined during the resolve stage.

This fixes a crash like

./include/elist.h: In function 'elist<T>::item::~item() [with T =
MDSlaveUpdate*]', in thread '0x7fb2004d5700'
./include/elist.h: 39: FAILED assert(!is_on_list())
 ceph version 0.26 (commit:9981ff90968398da43c63106694d661f5e3d07d5)
 1: (MDSlaveUpdate::~MDSlaveUpdate()+0x59) [0x4d9fe9]
 2: (ESlaveUpdate::replay(MDS*)+0x422) [0x4d2772]
 3: (MDLog::_replay_thread()+0xb90) [0x67f850]
 4: (MDLog::ReplayThread::entry()+0xd) [0x4b89ed]
 5: (()+0x7971) [0x7fb20564a971]
 6: (clone()+0x6d) [0x7fb2042e692d]
 ceph version 0.26 (commit:9981ff90968398da43c63106694d661f5e3d07d5)
 1: (MDSlaveUpdate::~MDSlaveUpdate()+0x59) [0x4d9fe9]
 2: (ESlaveUpdate::replay(MDS*)+0x422) [0x4d2772]
 3: (MDLog::_replay_thread()+0xb90) [0x67f850]
 4: (MDLog::ReplayThread::entry()+0xd) [0x4b89ed]
 5: (()+0x7971) [0x7fb20564a971]

Fixes: #1019
Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/MDCache.h