On Tue, Jul 30, 2024 at 6:20 AM Haifeng Xu <haifeng.xu@xxxxxxxxxx> wrote: > > Since commit 5679897eb104 ("vfs: make sync_filesystem return errors from > ->sync_fs"), the return value from sync_fs callback can be seen in > sync_filesystem(). Thus the errseq_set opreation can be removed here. > > Depends-on: commit 5679897eb104 ("vfs: make sync_filesystem return errors from ->sync_fs") > Signed-off-by: Haifeng Xu <haifeng.xu@xxxxxxxxxx> > Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > Changes since v1: > - Add Depends-on and Reviewed-by tags. > --- > fs/overlayfs/super.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c > index 06a231970cb5..fe511192f83c 100644 > --- a/fs/overlayfs/super.c > +++ b/fs/overlayfs/super.c > @@ -202,15 +202,9 @@ static int ovl_sync_fs(struct super_block *sb, int wait) > int ret; > > ret = ovl_sync_status(ofs); > - /* > - * We have to always set the err, because the return value isn't > - * checked in syncfs, and instead indirectly return an error via > - * the sb's writeback errseq, which VFS inspects after this call. > - */ > - if (ret < 0) { > - errseq_set(&sb->s_wb_err, -EIO); > + > + if (ret < 0) > return -EIO; > - } > > if (!ret) > return ret; > -- > 2.25.1 > FYI, this change is queued in overlayfs-next. However, I went to see if overlayfs has test coverage for this and it does not. The test coverage added by Darrick to the mentioned vfs commit is test xfs/546, so it does not run on other fs, although it is quite generic. I fixed this test so it could run on overlayfs (like this): # This command is complicated a bit because in the case of overlayfs the # syncfs fd needs to be opened before shutdown and it is different from the # shutdown fd, so we cannot use the _scratch_shutdown() helper. # Filter out xfs_io output of active fds. $XFS_IO_PROG -x -c "open $(_scratch_shutdown_handle)" -c 'shutdown -f ' -c close -c syncfs $SCRATCH_MNT | \ grep -vF '[00' and it passes on both xfs and overlayfs (over xfs), but if I try to make it "generic" it fails on ext4, which explicitly allows syncfs after shutdown: if (unlikely(ext4_forced_shutdown(sb))) return 0; Ted, Darrick, Do you have any insight as to why this ext4 behavior differs from xfs or another idea how to exercise the syncfs error in a generic test? I could fork an overlay/* test from the xfs/* test and require that underlying fs is xfs, but that would be ugly. Any ideas? Thanks, Amir.