OSDN Git Service

Btrfs: remove rcu_barrier in btrfs_close_devices
authorLiu Bo <bo.li.liu@oracle.com>
Tue, 10 Oct 2017 21:51:02 +0000 (15:51 -0600)
committerDavid Sterba <dsterba@suse.com>
Mon, 22 Jan 2018 15:08:11 +0000 (16:08 +0100)
It was introduced because btrfs used to do blkdev_put in a deferred
work, now that btrfs has blkdev_put in place, this rcu_barrier can be
removed.

modprobe -r btrfs will do btrfs_cleanup_fs_uuids(), where it cleanup
every %fs_devices on the list, but when we do btrfs_close_devices(), we
have replaced the devices on the list with dummy ones which only have
the same name and uuid, so modprobe -r btrfs will free those instead of
what we were using, this change won't cause a problem for it.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ copied 2nd paragraph from mailinglist discussion ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index c96635a..7ea81e1 100644 (file)
@@ -936,12 +936,6 @@ int btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
                __btrfs_close_devices(fs_devices);
                free_fs_devices(fs_devices);
        }
-       /*
-        * Wait for rcu kworkers under __btrfs_close_devices
-        * to finish all blkdev_puts so device is really
-        * free when umount is done.
-        */
-       rcu_barrier();
        return ret;
 }