We were missing a Makefile dependency for debug.cc, without it make -j fails
because ceph_ver.h hasn't been created.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Sage Weil <sage@newdream.net>
Not doing so can eventually lead to
msg/SimpleMessenger.cc: In function 'int SimpleMessenger::Pipe::accept()':
msg/SimpleMessenger.cc:765: FAILED assert(existing->state == STATE_CONNECTING)
A dir may be redirtied after the commit, such that it never becomes clean.
It only needs to stay on the 'new' list until it's been written to disk
at least once, though.
We would block on journal full, but then try to continue where we left off,
which broke thoroughly. Add return codes, and wait at the proper times:
- if journal if full on first event, wait. otherwise, write what we have
so far.
- wait in write_thread_entry(), not check_for_full().
Also fix up 'room' calculation.
Prior to ceph-client.git commit 819ccbfa448, this will cause a
VFS: Busy inodes after unmount of ceph. Self-destruct in 5 seconds. Have a nice day...
on umount.
We should only drop obsolete snapped metadata when it is unreferenced, and
at that point we need to drop the dentry AND inode, not just the dentry.
This delays things until caps are released, among other things.
Not sure what the reasoning behind this was.
This code is from pre git history, and the git->subversion conversion
managed to make pretty git-blame unusable. I doubt I really documented
what its purpose at that point was anyway.
This lets us drop the src, orig_src ceph_entity_addr's from the message
header, saving about 160 bytes per message.
The feature is optional. We can still talk to peers who use the old
protocol.
Do not journal ack unless the tid is registered in the LogSegment. Once
we journal it, we remove it from the LogSegment list, and once it's
journaled, we remove the pending_commit[tid] entry.
This fixes a bug where the mds got two acks, journaled both of them, and
crashed in the completion for the second because pending_commit[tid] was
gone. The second ack should have been ignored.
The rejoin ack intializes replica lock states correctly; we can't send any
lock messages before that. This fixes both the check max size call (which
sends lock messages taking the wrlock) and the file_recover() call
(which does the same).
Instead, we make two lists, files to recover and those to fix up. The lock
states for both are set to PRE_SCAN (LOCK on replica). After the rejoin
acks go out, we either check_inode_max_size or file_recover.
If file_recover someday grows another caller, this may need something a bit
more sophisticated.