Skip to content

Commit

Permalink
gfs2: Register fs after creating workqueues
Browse files Browse the repository at this point in the history
Before this patch, the gfs2 file system was registered prior to creating
the three workqueues. In some cases this allowed dlm to send recovery
work to a workqueue that did not yet exist because gfs2 was still
initializing.

This patch changes the order of gfs2's initialization routine so it only
registers the file system after the work queues are created.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
  • Loading branch information
Bob Peterson authored and Andreas Gruenbacher committed Sep 20, 2022
1 parent 670f8ce commit 74b1b10
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions fs/gfs2/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,6 @@ static int __init init_gfs2_fs(void)
if (error)
goto fail_shrinker;

error = register_filesystem(&gfs2_fs_type);
if (error)
goto fail_fs1;

error = register_filesystem(&gfs2meta_fs_type);
if (error)
goto fail_fs2;

error = -ENOMEM;
gfs_recovery_wq = alloc_workqueue("gfs_recovery",
WQ_MEM_RECLAIM | WQ_FREEZABLE, 0);
Expand All @@ -180,22 +172,30 @@ static int __init init_gfs2_fs(void)
goto fail_mempool;

gfs2_register_debugfs();
error = register_filesystem(&gfs2_fs_type);
if (error)
goto fail_fs1;

error = register_filesystem(&gfs2meta_fs_type);
if (error)
goto fail_fs2;


pr_info("GFS2 installed\n");

return 0;

fail_fs2:
unregister_filesystem(&gfs2_fs_type);
fail_fs1:
mempool_destroy(gfs2_page_pool);
fail_mempool:
destroy_workqueue(gfs2_freeze_wq);
fail_wq3:
destroy_workqueue(gfs2_control_wq);
fail_wq2:
destroy_workqueue(gfs_recovery_wq);
fail_wq1:
unregister_filesystem(&gfs2meta_fs_type);
fail_fs2:
unregister_filesystem(&gfs2_fs_type);
fail_fs1:
unregister_shrinker(&gfs2_qd_shrinker);
fail_shrinker:
kmem_cache_destroy(gfs2_trans_cachep);
Expand Down

0 comments on commit 74b1b10

Please sign in to comment.