Commit 4e458869 authored by Zhang Xiaoxu's avatar Zhang Xiaoxu Committed by Damien Le Moal

zonefs: Fix race between modprobe and mount

There is a race between modprobe and mount as below:

 modprobe zonefs                | mount -t zonefs
--------------------------------|-------------------------
 zonefs_init                    |
  register_filesystem       [1] |
                                | zonefs_fill_super    [2]
  zonefs_sysfs_init         [3] |

1. register zonefs suceess, then
2. user can mount the zonefs
3. if sysfs initialize failed, the module initialize failed.

Then the mount process maybe some error happened since the module
initialize failed.

Let's register zonefs after all dependency resource ready. And
reorder the dependency resource release in module exit.

Fixes: 9277a6d4 ("zonefs: Export open zone resource information through sysfs")
Signed-off-by: default avatarZhang Xiaoxu <zhangxiaoxu5@huawei.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
parent 61ba9e97
......@@ -1922,18 +1922,18 @@ static int __init zonefs_init(void)
if (ret)
return ret;
ret = register_filesystem(&zonefs_type);
ret = zonefs_sysfs_init();
if (ret)
goto destroy_inodecache;
ret = zonefs_sysfs_init();
ret = register_filesystem(&zonefs_type);
if (ret)
goto unregister_fs;
goto sysfs_exit;
return 0;
unregister_fs:
unregister_filesystem(&zonefs_type);
sysfs_exit:
zonefs_sysfs_exit();
destroy_inodecache:
zonefs_destroy_inodecache();
......@@ -1942,9 +1942,9 @@ static int __init zonefs_init(void)
static void __exit zonefs_exit(void)
{
unregister_filesystem(&zonefs_type);
zonefs_sysfs_exit();
zonefs_destroy_inodecache();
unregister_filesystem(&zonefs_type);
}
MODULE_AUTHOR("Damien Le Moal");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment