All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] remove BUG_ON()s in btrfs_close_one_device()
@ 2019-11-13 10:27 Johannes Thumshirn
  2019-11-13 10:27 ` [PATCH v2 1/7] btrfs: decrement number of open devices after closing the device not before Johannes Thumshirn
                   ` (8 more replies)
  0 siblings, 9 replies; 24+ messages in thread
From: Johannes Thumshirn @ 2019-11-13 10:27 UTC (permalink / raw)
  To: David Sterba; +Cc: Qu Wenru, Linux BTRFS Mailinglist, Johannes Thumshirn

This series attempts to remove the BUG_ON()s in btrfs_close_one_device().
Therefore some reorganization of btrfs_close_one_device() and
close_fs_devices() was needed.

Forthermore a new BUG_ON() had to be temporarily introduced but is removed
again in the last patch of theis series.

Although it is generally legal to return -ENOMEM on umount(2), the error
handling up until close_ctree() as neither close_ctree() nor btrfs_put_super()
would be able to handle the error.

This series has passed fstests without any deviation from the baseline and
also the new error handling was tested via error injection using this snippet:

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 7c55169c0613..c58802c9c39c 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1069,6 +1069,9 @@ static int btrfs_close_one_device(struct btrfs_device *device)
 
 	new_device = btrfs_alloc_device(NULL, &device->devid,
 					device->uuid);
+	btrfs_free_device(new_device);
+	pr_err("%s() INJECTING -ENOMEM\n", __func__);
+	new_device = ERR_PTR(-ENOMEM);
 	if (IS_ERR(new_device))
 		return PTR_ERR(new_device);

Changes to v1:

Fixed the decremt of btrfs_fs_devices::seeding.

In addition to this, I've added two patches changing btrfs_fs_devices::seeding
and btrfs_fs_devices::rotating to bool, as they are in fact used as booleans.

Johannes Thumshirn (7):
  btrfs: decrement number of open devices after closing the device not
    before
  btrfs: handle device allocation failure in btrfs_close_one_device()
  btrfs: handle allocation failure in strdup
  btrfs: handle error return of close_fs_devices()
  btrfs: remove final BUG_ON() in close_fs_devices()
  btrfs: change btrfs_fs_devices::seeing to bool
  btrfs: change btrfs_fs_devices::rotating to bool

 fs/btrfs/volumes.c | 81 ++++++++++++++++++++++++++++++++++++------------------
 fs/btrfs/volumes.h |  4 +--
 2 files changed, 56 insertions(+), 29 deletions(-)

-- 
2.16.4


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

end of thread, other threads:[~2019-11-15 21:11 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-13 10:27 [PATCH v2 0/7] remove BUG_ON()s in btrfs_close_one_device() Johannes Thumshirn
2019-11-13 10:27 ` [PATCH v2 1/7] btrfs: decrement number of open devices after closing the device not before Johannes Thumshirn
2019-11-13 10:27 ` [PATCH v2 2/7] btrfs: handle device allocation failure in btrfs_close_one_device() Johannes Thumshirn
2019-11-13 14:58   ` David Sterba
2019-11-14  8:48     ` Johannes Thumshirn
2019-11-14 10:56       ` Anand Jain
2019-11-14 12:03         ` Johannes Thumshirn
2019-11-14 13:02         ` Johannes Thumshirn
2019-11-13 10:27 ` [PATCH v2 3/7] btrfs: handle allocation failure in strdup Johannes Thumshirn
2019-11-14 11:00   ` Anand Jain
2019-11-15  9:39     ` David Sterba
2019-11-15 21:11   ` Nikolay Borisov
2019-11-13 10:27 ` [PATCH v2 4/7] btrfs: handle error return of close_fs_devices() Johannes Thumshirn
2019-11-13 15:00   ` David Sterba
2019-11-14  8:15     ` Johannes Thumshirn
2019-11-13 10:27 ` [PATCH v2 5/7] btrfs: remove final BUG_ON() in close_fs_devices() Johannes Thumshirn
2019-11-13 15:02   ` David Sterba
2019-11-14  9:01     ` Johannes Thumshirn
2019-11-13 10:27 ` [PATCH v2 6/7] btrfs: change btrfs_fs_devices::seeing to bool Johannes Thumshirn
2019-11-14 11:04   ` Anand Jain
2019-11-13 10:27 ` [PATCH v2 7/7] btrfs: change btrfs_fs_devices::rotating " Johannes Thumshirn
2019-11-14 11:05   ` Anand Jain
2019-11-13 11:56 ` [PATCH v2 0/7] remove BUG_ON()s in btrfs_close_one_device() Qu Wenruo
2019-11-13 15:05 ` David Sterba

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.