> -----邮件原件----- > 发件人: Yuezhang.Mo@xxxxxxxx <Yuezhang.Mo@xxxxxxxx> > 发送时间: 2025年6月13日 18:14 > 收件人: Cixi Geng <cixi.geng@xxxxxxxxx>; linkinjeon@xxxxxxxxxx; > sj1557.seo@xxxxxxxxxxx > 抄送: linux-fsdevel@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; 张政旭 > (Zhengxu Zhang) <Zhengxu.Zhang@xxxxxxxxxx> > 主题: Re: [PATCH] exfat: fdatasync flag should be same like generic_write_sync() > > > > > generic_file_write_iter(), when calling generic_rite_sync() and > > s/_rite/_write > I will fix this by next patch. > > --- a/fs/exfat/file.c > > +++ b/fs/exfat/file.c > > @@ -625,7 +625,7 @@ static ssize_t exfat_file_write_iter(struct kiocb *iocb, > struct iov_iter *iter) > > > > if (iocb_is_dsync(iocb) && iocb->ki_pos > pos) { > > ssize_t err = vfs_fsync_range(file, pos, iocb->ki_pos - 1, > > - iocb->ki_flags & IOCB_SYNC); > > + (iocb->ki_flags & IOCB_SYNC) ? 0 : 1); > > How about calling generic_write_sync() instead of vfs_fsync_range(), like in > generic_file_write_iter()? The second arg of vfs_fsync_range "pos" maybe changed by valid_size (if pos > valid_size). It can not replace by iocb->ki_pos - ret (ret by __generic_file_write_iter). So current way maybe better.