]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: do not use btrfs_end_transaction_throttle everywhere
authorJosef Bacik <josef@redhat.com>
Fri, 13 Jan 2012 00:10:12 +0000 (19:10 -0500)
committerChris Mason <chris.mason@oracle.com>
Mon, 16 Jan 2012 20:28:54 +0000 (15:28 -0500)
commit354acd212f18770a4e8cddbf78c0c6ccbbcdd885
treee03f4ced4f7c84e9828e4f4a4cbe894369300800
parent73d3de01792d1613e921824be04ef2c7c265ce49
Btrfs: do not use btrfs_end_transaction_throttle everywhere

A user reported a problem where things like open with O_CREAT would take up to
30 seconds when he had nfs activity on the same mount.  This is because all of
our quick metadata operations, like create, symlink etc all do
btrfs_end_transaction_throttle, which if the transaction is blocked will wait
for the commit to complete before it returns.  This adds a ridiculous amount of
latency and isn't really needed.  The normal btrfs_end_transaction will mark the
transaction as blocked and wake the transaction kthread up if it thinks the
transaction needs to end (this being in the running out of global reserve space
scenario), and this is all that is really needed since we've already done
everything we're going to do, we just need to return.  This should help people
with the latency they were seeing when using synchronous heavy workloads.
Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/inode.c
fs/btrfs/xattr.c