[Btrfs-devel] [PATCH] delay commit if work is done while we're asleep

Chris Mason chris.mason at oracle.com
Thu Aug 9 08:20:51 PDT 2007


On Thu, 9 Aug 2007 11:07:39 -0400
Josef Bacik <jwhiter at redhat.com> wrote:

> Hello,
> 
> Ok this one works I promise :).  Cleaned a few things up and such,
> but basically same idea as before, I keep the waitqueue, I use
> schedule_timeout which keeps us from deadlocking.  This speeds us up
> a decent amount, without the patch I usually get 70-75 files/sec.
> With this patch I get between 85-115 files/sec. The reason there is
> such a wide spread depends mostly on when the transaction cleaner
> runs while I'm running the test, as this is only single threaded.
> Feedback is appreciated.  Thank you,

It looks great to me, thanks for working on this.  One change I'll
probably make here is to do something like this:

prepare_to_wait
if (trans->transaction->num_writers > 1)
    timeout = MAX_SCHEDULE_TIMEOUT
else
    timeout = 1
drop locks
schedule_timeout(timeout);

This way we don't loop in schedule when there are writers around who
will wake us.  I'll give it a try this afternoon.

-chris



More information about the Btrfs-devel mailing list