diff options
| author | Jan Kara <[email protected]> | 2025-04-24 13:45:13 +0000 |
|---|---|---|
| committer | Andrew Morton <[email protected]> | 2025-05-08 06:39:40 +0000 |
| commit | fcaf3b2683b05a9684acdebda706a12025a6927a (patch) | |
| tree | 3a89a9d4a9caf09d8dc4528ea03bf60fac45a6c5 /mm/vmalloc.c | |
| parent | ocfs2: implement handshaking with ocfs2 recovery thread (diff) | |
| download | kernel-fcaf3b2683b05a9684acdebda706a12025a6927a.tar.gz kernel-fcaf3b2683b05a9684acdebda706a12025a6927a.zip | |
ocfs2: stop quota recovery before disabling quotas
Currently quota recovery is synchronized with unmount using sb->s_umount
semaphore. That is however prone to deadlocks because
flush_workqueue(osb->ocfs2_wq) called from umount code can wait for quota
recovery to complete while ocfs2_finish_quota_recovery() waits for
sb->s_umount semaphore.
Grabbing of sb->s_umount semaphore in ocfs2_finish_quota_recovery() is
only needed to protect that function from disabling of quotas from
ocfs2_dismount_volume(). Handle this problem by disabling quota recovery
early during unmount in ocfs2_dismount_volume() instead so that we can
drop acquisition of sb->s_umount from ocfs2_finish_quota_recovery().
Link: https://lkml.kernel.org/r/[email protected]
Fixes: 5f530de63cfc ("ocfs2: Use s_umount for quota recovery protection")
Signed-off-by: Jan Kara <[email protected]>
Reported-by: Shichangkuo <[email protected]>
Reported-by: Murad Masimov <[email protected]>
Reviewed-by: Heming Zhao <[email protected]>
Tested-by: Heming Zhao <[email protected]>
Acked-by: Joseph Qi <[email protected]>
Cc: Changwei Ge <[email protected]>
Cc: Joel Becker <[email protected]>
Cc: Jun Piao <[email protected]>
Cc: Junxiao Bi <[email protected]>
Cc: Mark Fasheh <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'mm/vmalloc.c')
0 files changed, 0 insertions, 0 deletions
