Date: Thu, 7 Jan 2021 21:42:18 GMT From: Chuck Silvers <chs@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 11403bdeb415 - main - vfs: fix rangelock range in vn_rdwr() for IO_APPEND Message-ID: <202101072142.107LgIRl033419@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by chs: URL: https://cgit.FreeBSD.org/src/commit/?id=11403bdeb4158531af36bc7c51cbbba27deb69b1 commit 11403bdeb4158531af36bc7c51cbbba27deb69b1 Author: Chuck Silvers <chs@FreeBSD.org> AuthorDate: 2021-01-06 20:04:25 +0000 Commit: Chuck Silvers <chs@FreeBSD.org> CommitDate: 2021-01-07 21:37:35 +0000 vfs: fix rangelock range in vn_rdwr() for IO_APPEND vn_rdwr() must lock the entire file range for IO_APPEND just like vn_io_fault() does for O_APPEND. Reviewed by: kib, imp, mckusick Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D28008 --- sys/kern/vfs_vnops.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index f69115047eba..2ca2cf124c23 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -584,6 +584,8 @@ vn_rdwr(enum uio_rw rw, struct vnode *vp, void *base, int len, off_t offset, if (rw == UIO_READ) { rl_cookie = vn_rangelock_rlock(vp, offset, offset + len); + } else if ((ioflg & IO_APPEND) != 0) { + rl_cookie = vn_rangelock_wlock(vp, 0, OFF_MAX); } else { rl_cookie = vn_rangelock_wlock(vp, offset, offset + len);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202101072142.107LgIRl033419>