Re: [PATCH v2] f2fs: Fix deadlock in shutdown ioctl

From: Sahitya Tummala
Date: Fri May 18 2018 - 02:43:41 EST


On Thu, May 17, 2018 at 06:08:26PM -0700, Jaegeuk Kim wrote:
>
> if (in == F2FS_GOING_DOWN_FULLSYNC) {
> sb = freeze_bdev();
> if (IS_ERR(sb))
> return PTR_ERR(sb);
> if (unlikely(!sb))
> return -EINVAL;
> }
>
> ret = mnt_want_write_file();

It will be stuck/blocked here as freeze_bdev() now holds the write
lock for all the cases including SB_FREEZE_WRITE. As freeze_bdev()
holds the write lock, I think f2fs_stop_checkpoint() should be safe
even without mnt_want_write_file().

I have posted v3 as per Chao's comments to exclude mnt_want_write_file()
for F2FS_GOING_DOWN_FULLSYNC case.
Please check and let me know if there are any further comments.

> ...
> switch() {
> case F2FS_GOING_DOWN_FULLSYNC:
> f2fs_stop_checkpoint();
> dhaw_bdev();
> break;
> ...
> }
>
> drop:
> ...
>
>
--
Sent by a consultant of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.