On Fri, Nov 13, 2020 at 09:31:58AM +0000, Konstantin Belousov wrote:
> Author: kib
> Date: Fri Nov 13 09:31:57 2020
> New Revision: 367631
> URL: https://svnweb.freebsd.org/changeset/base/367631
>
> Log:
> Implement vn_lock_pair().
>
> In collaboration with: pho
> Reviewed by: mckusick (previous version), markj (previous version)
> Tested by: markj (syzkaller), pho
> Sponsored by: The FreeBSD Foundation
> Differential revision: https://reviews.freebsd.org/D26136
>
> Modified:
> head/sys/kern/vfs_vnops.c
> head/sys/sys/vnode.h
>
> Modified: head/sys/kern/vfs_vnops.c
> ==============================================================================
> --- head/sys/kern/vfs_vnops.c Fri Nov 13 02:05:45 2020 (r367630)
> +++ head/sys/kern/vfs_vnops.c Fri Nov 13 09:31:57 2020 (r367631)
> @@ -275,6 +276,10 @@ restart:
> vn_finished_write(mp);
> if (error) {
> NDFREE(ndp, NDF_ONLY_PNBUF);
> + if (error == ERELOOKUP) {
> + NDREINIT(ndp);
> + goto restart;
> + }
> return (error);
> }
> fmode &= ~O_TRUNC;
> @@ -1524,6 +1529,7 @@ vn_truncate(struct file *fp, off_t length, struct ucre
>
> vp = fp->f_vnode;
>
> +retry:
> /*
> * Lock the whole range for truncation. Otherwise split i/o
> * might happen partly before and partly after the truncation.
> @@ -1550,6 +1556,8 @@ out:
> vn_finished_write(mp);
> out1:
> vn_rangelock_unlock(vp, rl_cookie);
> + if (error == ERELOOKUP)
> + goto retry;
> return (error);
> }
These chunks really belong to r367632 and not r367631, they leaked there
due to my mishandling of the split. I am sorry for that, but I do not think
it is reasonable to revert and re-commit.
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"