From: Boris Burkov <boris@bur.io>
To: Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>
Cc: linux-btrfs@vger.kernel.org, kernel-team@fb.com,
Boris Burkov <boris@bur.io>
Subject: [PATCH RFC] btrfs: change commit txn to end txn in subvol_setflags ioctl
Date: Tue, 4 Aug 2020 10:55:16 -0700 [thread overview]
Message-ID: <20200804175516.2511704-1-boris@bur.io> (raw)
Currently, btrfs_ioctl_subvol_setflags forces a btrfs_commit_transaction
while holding subvol_sem. As a result, we have seen workloads where
calling `btrfs property set -ts <subvol> ro false` hangs waiting for a
legitimately slow commit. This gets even worse if the workload tries to
set flags on multiple subvolumes and the ioctls pile up on subvol_sem.
Change the commit to a btrfs_end_transaction so that the ioctl can
return in a timely fashion and piggy back on a later commit.
Signed-off-by: Boris Burkov <boris@bur.io>
---
fs/btrfs/ioctl.c | 2 +-
fs/btrfs/transaction.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index bd3511c5ca81..3ae484768ce7 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1985,7 +1985,7 @@ static noinline int btrfs_ioctl_subvol_setflags(struct file *file,
goto out_reset;
}
- ret = btrfs_commit_transaction(trans);
+ ret = btrfs_end_transaction(trans);
out_reset:
if (ret)
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 20c6ac1a5de7..1dc44209c2ae 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -47,7 +47,7 @@
* | Will wait for previous running transaction to completely finish if there
* | is one
* |
- * | Then one of the following happes:
+ * | Then one of the following happens:
* | - Wait for all other trans handle holders to release.
* | The btrfs_commit_transaction() caller will do the commit work.
* | - Wait for current transaction to be committed by others.
@@ -60,7 +60,7 @@
* |
* | To next stage:
* | Caller is chosen to commit transaction N, and all other trans handle
- * | haven been released.
+ * | have been released.
* V
* Transaction N [[TRANS_STATE_COMMIT_DOING]]
* |
--
2.24.1
next reply other threads:[~2020-08-04 17:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-04 17:55 Boris Burkov [this message]
2020-08-04 22:48 ` [PATCH RFC] btrfs: change commit txn to end txn in subvol_setflags ioctl Qu Wenruo
2020-08-04 23:08 ` Josef Bacik
2020-08-05 13:40 ` Martin Raiber
2020-08-07 20:45 ` Boris Burkov
2020-08-10 18:05 ` Martin Raiber
2020-08-25 20:23 ` Boris Burkov
2020-08-26 14:23 ` Josef Bacik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200804175516.2511704-1-boris@bur.io \
--to=boris@bur.io \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox