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"

Reply via email to