Messages in this thread | | | Subject | Re: [PATCH v3] exfat: remove EXFAT_SB_DIRTY flag | From | Tetsuhiro Kohada <> | Date | Thu, 18 Jun 2020 17:36:34 +0900 |
| |
Thank you for your comment.
On 2020/06/17 16:20, Sungjong Seo wrote: >> remove EXFAT_SB_DIRTY flag and related codes. >> >> This flag is set/reset in exfat_put_super()/exfat_sync_fs() to avoid >> sync_blockdev(). >> However ... >> - exfat_put_super(): >> Before calling this, the VFS has already called sync_filesystem(), so sync >> is never performed here. >> - exfat_sync_fs(): >> After calling this, the VFS calls sync_blockdev(), so, it is meaningless >> to check EXFAT_SB_DIRTY or to bypass sync_blockdev() here. >> Not only that, but in some cases can't clear VOL_DIRTY. >> ex: >> VOL_DIRTY is set when rmdir starts, but when non-empty-dir is detected, >> return error without setting EXFAT_SB_DIRTY. >> If performe 'sync' in this state, VOL_DIRTY will not be cleared. >> > > Since this patch does not resolve 'VOL_DIRTY in ENOTEMPTY' problem you > mentioned, > it would be better to remove the description above for that and to make new > patch.
I mentioned rmdir as an example. However, this problem is not only with rmdirs. VOL_DIRTY remains when some functions abort with an error. In original, VOL_DIRTY is not cleared even if performe 'sync'. With this patch, it ensures that VOL_DIRTY will be cleared by 'sync'.
Is my description insufficient?
BTW Even with this patch applied, VOL_DIRTY remains until synced in the above case. It's not easy to reproduce as rmdir, but I'll try to fix it in the future.
BR --- Tetsuhiro Kohada <kohada.t2@gmail.com>
| |