Module Name: src Committed By: riastradh Date: Sat Apr 4 12:34:45 UTC 2015
Modified Files: src/sys/fs/msdosfs: msdosfs_vnops.c src/sys/fs/sysvbfs: sysvbfs_vnops.c src/sys/fs/udf: udf_vnops.c src/tests/fs/vfs: t_io.c Log Message: Fix remaining read(fd, NULL, 1) cases. To generate a diff of this commit: cvs rdiff -u -r1.92 -r1.93 src/sys/fs/msdosfs/msdosfs_vnops.c cvs rdiff -u -r1.56 -r1.57 src/sys/fs/sysvbfs/sysvbfs_vnops.c cvs rdiff -u -r1.97 -r1.98 src/sys/fs/udf/udf_vnops.c cvs rdiff -u -r1.15 -r1.16 src/tests/fs/vfs/t_io.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/fs/msdosfs/msdosfs_vnops.c diff -u src/sys/fs/msdosfs/msdosfs_vnops.c:1.92 src/sys/fs/msdosfs/msdosfs_vnops.c:1.93 --- src/sys/fs/msdosfs/msdosfs_vnops.c:1.92 Sat Mar 28 19:24:05 2015 +++ src/sys/fs/msdosfs/msdosfs_vnops.c Sat Apr 4 12:34:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: msdosfs_vnops.c,v 1.92 2015/03/28 19:24:05 maxv Exp $ */ +/* $NetBSD: msdosfs_vnops.c,v 1.93 2015/04/04 12:34:44 riastradh Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.92 2015/03/28 19:24:05 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.93 2015/04/04 12:34:44 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -532,8 +532,13 @@ msdosfs_read(void *v) } while (error == 0 && uio->uio_resid > 0 && n != 0); out: - if ((ap->a_ioflag & IO_SYNC) == IO_SYNC) - error = deupdat(dep, 1); + if ((ap->a_ioflag & IO_SYNC) == IO_SYNC) { + int uerror; + + uerror = deupdat(dep, 1); + if (error == 0) + error = uerror; + } bad: fstrans_done(vp->v_mount); return (error); Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.56 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.57 --- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.56 Fri Dec 26 15:23:21 2014 +++ src/sys/fs/sysvbfs/sysvbfs_vnops.c Sat Apr 4 12:34:45 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sysvbfs_vnops.c,v 1.56 2014/12/26 15:23:21 hannken Exp $ */ +/* $NetBSD: sysvbfs_vnops.c,v 1.57 2015/04/04 12:34:45 riastradh Exp $ */ /*- * Copyright (c) 2004 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.56 2014/12/26 15:23:21 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.57 2015/04/04 12:34:45 riastradh Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -426,7 +426,7 @@ sysvbfs_read(void *arg) struct sysvbfs_node *bnode = v->v_data; struct bfs_inode *inode = bnode->inode; vsize_t sz, filesz = bfs_file_size(inode); - int err; + int err, uerr; const int advice = IO_ADV_DECODE(a->a_ioflag); DPRINTF("%s: type=%d\n", __func__, v->v_type); @@ -450,7 +450,11 @@ sysvbfs_read(void *arg) DPRINTF("%s: read %ldbyte\n", __func__, sz); } - return sysvbfs_update(v, NULL, NULL, UPDATE_WAIT); + uerr = sysvbfs_update(v, NULL, NULL, UPDATE_WAIT); + if (err == 0) + err = uerr; + + return err; } int Index: src/sys/fs/udf/udf_vnops.c diff -u src/sys/fs/udf/udf_vnops.c:1.97 src/sys/fs/udf/udf_vnops.c:1.98 --- src/sys/fs/udf/udf_vnops.c:1.97 Wed Jan 28 14:00:58 2015 +++ src/sys/fs/udf/udf_vnops.c Sat Apr 4 12:34:45 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: udf_vnops.c,v 1.97 2015/01/28 14:00:58 martin Exp $ */ +/* $NetBSD: udf_vnops.c,v 1.98 2015/04/04 12:34:45 riastradh Exp $ */ /* * Copyright (c) 2006, 2008 Reinoud Zandijk @@ -32,7 +32,7 @@ #include <sys/cdefs.h> #ifndef lint -__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.97 2015/01/28 14:00:58 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udf_vnops.c,v 1.98 2015/04/04 12:34:45 riastradh Exp $"); #endif /* not lint */ @@ -251,8 +251,13 @@ udf_read(void *v) /* note access time unless not requested */ if (!(vp->v_mount->mnt_flag & MNT_NOATIME)) { udf_node->i_flags |= IN_ACCESS; - if ((ioflag & IO_SYNC) == IO_SYNC) - error = udf_update(vp, NULL, NULL, NULL, UPDATE_WAIT); + if ((ioflag & IO_SYNC) == IO_SYNC) { + int uerror; + + uerror = udf_update(vp, NULL, NULL, NULL, UPDATE_WAIT); + if (error == 0) + error = uerror; + } } return error; Index: src/tests/fs/vfs/t_io.c diff -u src/tests/fs/vfs/t_io.c:1.15 src/tests/fs/vfs/t_io.c:1.16 --- src/tests/fs/vfs/t_io.c:1.15 Sat Mar 28 17:45:47 2015 +++ src/tests/fs/vfs/t_io.c Sat Apr 4 12:34:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: t_io.c,v 1.15 2015/03/28 17:45:47 riastradh Exp $ */ +/* $NetBSD: t_io.c,v 1.16 2015/04/04 12:34:44 riastradh Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -233,9 +233,6 @@ read_fault(const atf_tc_t *tc, const cha ATF_REQUIRE_EQ(rump_sys_write(fd, &ch, 1), 1); RL(rump_sys_close(fd)); RL(fd = rump_sys_open("file", O_RDONLY | O_SYNC | O_RSYNC)); - if (FSTYPE_MSDOS(tc) || - FSTYPE_SYSVBFS(tc)) - atf_tc_expect_fail("bad sync atime update code path"); ATF_REQUIRE_ERRNO(EFAULT, rump_sys_read(fd, NULL, 1) == -1); RL(rump_sys_close(fd)); FSTEST_EXIT();