Sage Weil [Tue, 8 Dec 2009 16:25:21 +0000 (08:25 -0800)]
logger: avoid dup lines when we get behind
If we get behind (say, after SIGSTOP ... SIGCONT),
instead of printing dup lines for every interval we missed,
print just the first and last. That will make any graph
have a nice, hopefully obvious perfectly horizontal line.
Sage Weil [Mon, 7 Dec 2009 22:28:45 +0000 (14:28 -0800)]
filestore: limit size of flusher queue
Limit the size of the flusher queue to avoid hitting max open files
limit. If we hit the max, just don't queue async flush, so we close the
fd immediately.
Sage Weil [Thu, 3 Dec 2009 23:16:08 +0000 (15:16 -0800)]
mds: avoid scatter writebehind from predirty_*
predirty_journal_parents does wrlock_start with
nowait=true. Make sure we don't then simple_lock if
lock->is_updated(), as that will call scatter_writebehind,
which will barf if a log event is currently open (which
it is in this case).
Sage Weil [Thu, 3 Dec 2009 23:54:24 +0000 (15:54 -0800)]
buffer: optional buffer debug output
This interferes with the dout crap because we can't #include it, so you
need to turn all that output off to avoid getting jumbled output. Or
better yet make sure you don't daemon() but still log dout to a file.
Sage Weil [Thu, 3 Dec 2009 00:08:44 +0000 (16:08 -0800)]
init-ceph: optionally copy executable to remote host before running it
This both preserves the version of the binary that we ran (for interpreting
core files) and avoids any possibility of SIGBUS due to nfs lameness when
rarely used text pages get faulted back in.
Sage Weil [Wed, 2 Dec 2009 20:00:19 +0000 (12:00 -0800)]
mds: set mdr->in[n] in rdlock_path_xlock_dentry
This keeps things consistent with what we'd get with
path_traverse. Namely, it means that if done_locking gets
set to true, then a future call to rdlock_path_pin_ref can
bail out and return mdr->in[n] and get a correct value.
Sage Weil [Mon, 23 Nov 2009 22:45:00 +0000 (14:45 -0800)]
mon: avoid mds state update when clearing laggy flag
Do not clear laggy flag (or otherwise get into prepare_update) if the mds
hasn't seen the latest map. Previously we could go to clear laggy and also
revert to an old mds state.
Sage Weil [Sat, 21 Nov 2009 05:42:04 +0000 (21:42 -0800)]
mds: do not eval subtree root during rename_prepare
The eval may lead to a scatter_writebehind, which screws up the journal
ordering. Since the inode is also locked, we will end up evaling it
later anyway, so don't worry about it.
I'm a bit unsure about the adjust_subtree_after_rename... that is during
the rename_apply stage (after the log entry committed), so i think it's
safe to do a scatter_writebehind here.. since we're not between a predirty
and submit_entry.
Sage Weil [Sat, 21 Nov 2009 00:20:02 +0000 (16:20 -0800)]
mds: fix client purge crash
set_state moves the session to the per-session lists; do
this _before_ remove_session (which removes the session
entirely). Otherwise we fail an assert when deleting
the session:
mds/SessionMap.h: In function 'virtual Session::~Session()':
mds/SessionMap.h:141: FAILED assert(!session_list_item.is_on_xlist())
1: ./cmds(_Z18__ceph_assert_failPKcS0_iS0_+0x36) [0x97fc87]
2: ./cmds(_ZN7SessionD0Ev+0x47) [0x73d817]
3: ./cmds(_ZN16RefCountedObject3putEv+0xdb) [0x712c3b]
4: ./cmds(_ZN10ConnectionD0Ev+0x3a) [0x713f88]
5: ./cmds(_ZN10Connection3putEv+0x3d) [0x71294b]
6: ./cmds(_ZN15SimpleMessenger4PipeD1Ev+0x7f) [0x7130e1]
7: ./cmds(_ZN15SimpleMessenger6reaperEv+0x228) [0x7048ba]
8: ./cmds(_ZN15SimpleMessenger4waitEv+0x28) [0x7059dc]
9: ./cmds(main+0x305) [0x6f9345]
10: /lib/libc.so.6(__libc_start_main+0xe6) [0x7f2091e715c6]
11: ./cmds [0x6f8e39]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
Sage Weil [Fri, 20 Nov 2009 21:03:41 +0000 (13:03 -0800)]
mds: fix reconnect race
Don't ignore client replay or session msgs if we are
moving to reconnect state. The client may get the mdsmap
before us and send things our way, so take them if we
are reconnect, or if we want reconnect.