Message ID | 20171010215103.20828-1-bo.li.liu@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/11/2017 05:51 AM, Liu Bo wrote: > It was introduced because btrfs used to do blkdev_put in a deferred > work, now that btrfs has put blkdev in place, this rcu_barrier can be > removed. Reviewed-by: Anand Jain <anand.jain@oracle.com> Thanks, Anand > Signed-off-by: Liu Bo <bo.li.liu@oracle.com> > --- > fs/btrfs/volumes.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 0e8f16c..d983cea 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -958,12 +958,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; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/11/2017 02:11 PM, Anand Jain wrote: > > > On 10/11/2017 05:51 AM, Liu Bo wrote: >> It was introduced because btrfs used to do blkdev_put in a deferred >> work, now that btrfs has put blkdev in place, this rcu_barrier can be >> removed. On the 2nd thought, modprobe -r btrfs would still need rcu_barrier(), some where else outside of umount context ? Thanks, Anand > Reviewed-by: Anand Jain <anand.jain@oracle.com> > > Thanks, Anand > > >> Signed-off-by: Liu Bo <bo.li.liu@oracle.com> >> --- >> fs/btrfs/volumes.c | 6 ------ >> 1 file changed, 6 deletions(-) >> >> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c >> index 0e8f16c..d983cea 100644 >> --- a/fs/btrfs/volumes.c >> +++ b/fs/btrfs/volumes.c >> @@ -958,12 +958,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; >> } >> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Oct 11, 2017 at 03:41:23PM +0800, Anand Jain wrote: > > > On 10/11/2017 02:11 PM, Anand Jain wrote: > > > > > > On 10/11/2017 05:51 AM, Liu Bo wrote: > > > It was introduced because btrfs used to do blkdev_put in a deferred > > > work, now that btrfs has put blkdev in place, this rcu_barrier can be > > > removed. > > On the 2nd thought, modprobe -r btrfs would still need rcu_barrier(), some > where else outside of umount context ? Thanks a lot for the comments. 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. Thanks, -liubo > > Thanks, Anand > > > > Reviewed-by: Anand Jain <anand.jain@oracle.com> > > > > Thanks, Anand > > > > > > > Signed-off-by: Liu Bo <bo.li.liu@oracle.com> > > > --- > > > fs/btrfs/volumes.c | 6 ------ > > > 1 file changed, 6 deletions(-) > > > > > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > > > index 0e8f16c..d983cea 100644 > > > --- a/fs/btrfs/volumes.c > > > +++ b/fs/btrfs/volumes.c > > > @@ -958,12 +958,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; > > > } > > > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Oct 11, 2017 at 11:02:49AM -0600, Liu Bo wrote: > On Wed, Oct 11, 2017 at 03:41:23PM +0800, Anand Jain wrote: > > > > > > On 10/11/2017 02:11 PM, Anand Jain wrote: > > > > > > > > > On 10/11/2017 05:51 AM, Liu Bo wrote: > > > > It was introduced because btrfs used to do blkdev_put in a deferred > > > > work, now that btrfs has put blkdev in place, this rcu_barrier can be > > > > removed. > > > > On the 2nd thought, modprobe -r btrfs would still need rcu_barrier(), some > > where else outside of umount context ? > > Thanks a lot for the comments. > > 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. Added to the changelog. Reviewed-by: David Sterba <dsterba@suse.com> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 0e8f16c..d983cea 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -958,12 +958,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; }
It was introduced because btrfs used to do blkdev_put in a deferred work, now that btrfs has put blkdev in place, this rcu_barrier can be removed. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> --- fs/btrfs/volumes.c | 6 ------ 1 file changed, 6 deletions(-)