So says dpkg-gencontrol, at least:
warning: dpkg-gencontrol: Depends field of package librados-dev: unknown substitution variable ${shlibs:Depends}
...
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
We may block in the write path because we've reached out dirty data limit.
Hold a reference to the FILE_BUFFER cap during that interval so we don't
lose the cap and put new dirty buffers into the objectcacher out of turn.
(We could also recheck our ability to take the ref after blocking, but I
think this is cleaner.)
Signed-off-by: Sage Weil <sage@newdream.net>
Have _flush return true if there are no dirty buffers. Clean up some
redundant conditionals in the callers
Signed-off-by: Sage Weil <sage@newdream.net>
We should never arrive in _flush() and not have a reference to the inode
in question, because the presence of dirty buffers pins the inode. This
condition was introduced forever ago; clean it out.
Signed-off-by: Sage Weil <sage@newdream.net>
We should either hold a ref or not; whether we release one can't depend on
whether one is held because we can't assume the ref belongs to us.
This changes the fix in cf6b1de4 so that the ObjectCacher just calls the
flush callback if it happens to trim all dirty buffers.
We also drop the (bogus) assert about the number of refs held.
Signed-off-by: Sage Weil <sage@newdream.net>
If there are no FILE_BUFFER cap_refs, then we can bail out early.
Otherwise we will end up dropping refs we don't have.
Signed-off-by: Sage Weil <sage@newdream.net>
We already hold the lock from a few frames up the stack (ms_dispatch).
Reported-by: Simon Tian <aixt2006@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
This reverts commit c26649861e.
I'm not having any problems linking. I suspect this was some automake
failure and that a 'make clean' is all that's needed to put everything
straight...
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
Change the SYNC flag to MON and send the Mlog synchronously in the do_log
call. This eliminates teh send_log vestigates completely. Either we are
a monitor and queue for ourselves immediately, or log sending is handled
by MonClient.
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
We have a lossless session with the monitor! Only send log entries once.
Otherwise, if the mon is down or something, we end up building up a HUGE
backlog of requests by resending the same messages over and over again.
To do this:
- keep track of which entire we've sent.
- reset when the session resets
- let the MonClient control when log entries are sent, and reset
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
Saw this on sid i386:
msg/SimpleMessenger.cc: In function 'void alloc_aligned_buffer(ceph::bufferlist&
, int, int)':
msg/SimpleMessenger.cc:1782:14: error: '__sysconf' was not declared in this scop
e
msg/SimpleMessenger.cc:1789:23: error: '__sysconf' was not declared in this scop
Some header is clobbering out PAGE_* macros. Make our header more
forceful.
Signed-off-by: Sage Weil <sage@newdream.net>
There was an old change in file_eval() that was allowing us to switch from
SYNC to MIX or EXCL while there were rdlocks, which either caused lots of
lock thrashing or could (I think) hang things up completely. This was
from ea10a672, an ancient fix for something related that appears to have
taken out the rdlocked check by accident.
In my tests (one writer, one stat-er), this took things from long stalls
(up to 20 seconds) to very responsive stats. Yay!
Fixes: #791
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
This is a hack since we currently use same_up_since to denote the beginning of an interval.
We should probably change this usaged or rename it to same_interval since.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>