Message ID | HK2PR04MB3891563FC310AE5E70896932817B9@HK2PR04MB3891.apcprd04.prod.outlook.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | exfat: fix missing REQ_SYNC in exfat_update_bhs() | expand |
2021-12-20 10:52 GMT+09:00, Yuezhang.Mo@sony.com <Yuezhang.Mo@sony.com>: > If 'dirsync' is enabled, all directory updates within the > filesystem should be done synchronously. exfat_update_bh() > does as this, but exfat_update_bhs() does not. > > Signed-off-by: Yuezhang.Mo <Yuezhang.Mo@sony.com> > Reviewed-by: Andy.Wu <Andy.Wu@sony.com> > Reviewed-by: Aoyama, Wataru <wataru.aoyama@sony.com> > Reviewed-by: Kobayashi, Kento <Kento.A.Kobayashi@sony.com> Applied, Thanks for your patch.
> If 'dirsync' is enabled, all directory updates within the > filesystem should be done synchronously. exfat_update_bh() > does as this, but exfat_update_bhs() does not. > > Signed-off-by: Yuezhang.Mo <Yuezhang.Mo@sony.com> > Reviewed-by: Andy.Wu <Andy.Wu@sony.com> > Reviewed-by: Aoyama, Wataru <wataru.aoyama@sony.com> > Reviewed-by: Kobayashi, Kento <Kento.A.Kobayashi@sony.com> > --- > fs/exfat/misc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/exfat/misc.c b/fs/exfat/misc.c > index d34e6193258d..d5bd8e6d9741 100644 > --- a/fs/exfat/misc.c > +++ b/fs/exfat/misc.c > @@ -10,6 +10,7 @@ > #include <linux/fs.h> > #include <linux/slab.h> > #include <linux/buffer_head.h> > +#include <linux/blk_types.h> > > #include "exfat_raw.h" > #include "exfat_fs.h" > @@ -180,7 +181,7 @@ int exfat_update_bhs(struct buffer_head **bhs, int > nr_bhs, int sync) > set_buffer_uptodate(bhs[i]); > mark_buffer_dirty(bhs[i]); > if (sync) > - write_dirty_buffer(bhs[i], 0); > + write_dirty_buffer(bhs[i], REQ_SYNC); I think there is no problem in terms of functionality related to "synchronously" in the original code. However, REQ_SYNC could affect I/O scheduling, and exfat_update_bh() already requests I/O with this flag by calling sync_dirty_buffer(). And it is desirable for two functions to have the same concept for I/O requests. So, the original code does not seem like a bug, but this patch looks useful. Thanks. Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com> > } > > for (i = 0; i < nr_bhs && sync; i++) { > -- > 2.25.1
From 6760187314aae4381ff573bd78a0153a6b831e0e Mon Sep 17 00:00:00 2001 From: "Yuezhang.Mo" <Yuezhang.Mo@sony.com> Date: Mon, 16 Aug 2021 11:30:51 +0800 Subject: [PATCH] exfat: fix missing REQ_SYNC in exfat_update_bhs() If 'dirsync' is enabled, all directory updates within the filesystem should be done synchronously. exfat_update_bh() does as this, but exfat_update_bhs() does not. Signed-off-by: Yuezhang.Mo <Yuezhang.Mo@sony.com> Reviewed-by: Andy.Wu <Andy.Wu@sony.com> Reviewed-by: Aoyama, Wataru <wataru.aoyama@sony.com> Reviewed-by: Kobayashi, Kento <Kento.A.Kobayashi@sony.com> --- fs/exfat/misc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/exfat/misc.c b/fs/exfat/misc.c index d34e6193258d..d5bd8e6d9741 100644 --- a/fs/exfat/misc.c +++ b/fs/exfat/misc.c @@ -10,6 +10,7 @@ #include <linux/fs.h> #include <linux/slab.h> #include <linux/buffer_head.h> +#include <linux/blk_types.h> #include "exfat_raw.h" #include "exfat_fs.h" @@ -180,7 +181,7 @@ int exfat_update_bhs(struct buffer_head **bhs, int nr_bhs, int sync) set_buffer_uptodate(bhs[i]); mark_buffer_dirty(bhs[i]); if (sync) - write_dirty_buffer(bhs[i], 0); + write_dirty_buffer(bhs[i], REQ_SYNC); } for (i = 0; i < nr_bhs && sync; i++) { -- 2.25.1