linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/8] Fix freeze/sysfs deadlock in better method.
@ 2015-01-29  1:27 Qu Wenruo
  2015-01-29  1:27 ` [PATCH v4 1/8] Revert "btrfs: add support for processing pending changes" related commits Qu Wenruo
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Qu Wenruo @ 2015-01-29  1:27 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba

Patchset to solve the previous found freeze/sysfs deadlock.

Unlike previous pending_changes, which uses transaction commits to
ensure mount option doesn't change during transaction.
This idea is great in concept, but will introduce extra and somewhat
duplicated ro/freeze check, and the original synchronized behavior is
also changed.

[Per-transaction mount option]
This patch use the RCU-like concept, which will copy the mount_opt from
fs_info into btrfs_transaction, and each btrfs_test_opt() for specific
mount option bit(SPACE_CACHE/INODE_MAP_CACHE) should be changed to
btrfs_test_trans_opt().
So mount option during transaction won't be changed, and also, no extra
read_only or freeze check is needed, the commit routine is also
untouched.

[Use VFS protect for sysfs change]
The 6th patch will introduce a new help function get_vfsmount_sb() to
get a vfsmount from a sb, with this vfsmount, we can use vfs level
mnt_want_write() to do a comprehensive protection other than the cheap
ro/freeze check.

Qu Wenruo (8):
  Revert "btrfs: add support for processing pending changes" related    
    commits
  btrfs: Make btrfs_parse_options() parse mount option in a atomic way
  btrfs: Introduce per-transaction mount_opt to keep mount option    
    consistent during transaction.
  btrfs: Use btrfs_test_trans_opt() to handle SPACE_CACHE if it's under 
       transaction protect.
  btrfs: Use btrfs_test_trans_opt() to handle INODE_CACHE if it's under 
       transaction protect.
  vfs: Add get_vfsmount_sb() function to get vfsmount from a given sb.
  btrfs: Use mnt_want_write() to protect label change.
  btrfs: Use mnt_want_write() to protect sysfs feature change.

 fs/btrfs/ctree.h            |  64 +++-------------------
 fs/btrfs/disk-io.c          |   6 ---
 fs/btrfs/extent-tree.c      |   2 +-
 fs/btrfs/free-space-cache.c |   2 +-
 fs/btrfs/inode-map.c        |   5 +-
 fs/btrfs/super.c            | 129 ++++++++++++++++++++++----------------------
 fs/btrfs/sysfs.c            |  73 ++++++++++++++++++-------
 fs/btrfs/transaction.c      |  43 ++-------------
 fs/btrfs/transaction.h      |   6 ++-
 fs/namespace.c              |  25 +++++++++
 include/linux/mount.h       |   1 +
 11 files changed, 167 insertions(+), 189 deletions(-)

-- 
2.2.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-01-29  2:20 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-29  1:27 [PATCH v4 0/8] Fix freeze/sysfs deadlock in better method Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 1/8] Revert "btrfs: add support for processing pending changes" related commits Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 2/8] btrfs: Introduce per-transaction mount_opt to keep mount option consistent during transaction Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 2/8] btrfs: Make btrfs_parse_options() parse mount option in a atomic way Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 3/8] btrfs: Introduce per-transaction mount_opt to keep mount option consistent during transaction Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 3/8] btrfs: Use btrfs_test_trans_opt() to handle SPACE_CACHE if it's under transaction protect Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 4/8] btrfs: Use btrfs_test_trans_opt() to handle INODE_CACHE " Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 4/8] btrfs: Use btrfs_test_trans_opt() to handle SPACE_CACHE " Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 5/8] btrfs: Make btrfs_parse_options() parse mount option in a atomic way Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 5/8] btrfs: Use btrfs_test_trans_opt() to handle INODE_CACHE if it's under transaction protect Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 6/8] vfs: Add get_vfsmount_sb() function to get vfsmount from a given sb Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 7/8] btrfs: Use mnt_want_write() to protect label change Qu Wenruo
2015-01-29  1:27 ` [PATCH v4 8/8] btrfs: Use mnt_want_write() to protect sysfs feature change Qu Wenruo
2015-01-29  2:21 ` [PATCH v4 0/8] Fix freeze/sysfs deadlock in better method Qu Wenruo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).