On Tue, Jun 29, 2021 at 05:07:10AM -0000, Christos Zoulas wrote:
 > >* Does anyone know why dev/kloader.c calls namei and then vn_open on
 > >the same path? I remember seeing this before and leaving it alone
 > >because nobody I could find was sure what the deal was, but it's
 > >unlikely to work as-is and increasingly likely to break over time...
 > 
 > Just fix it, and if something breaks we'll put it back.

Ok, I will do exactly that :-) but separately.

 > >-   NDINIT(&nd, LOOKUP, NOFOLLOW, pb);
 > >-   error = vn_open(&nd, filemode, createmode);
 > >+   error = vn_open(NULL, pb, 0, filemode, createmode, vpp, NULL, NULL);
 > 
 > This is the only NOFOLLOW NDINIT case, should that be 'createmode |
 > O_NOFOLLOW'?

Yes it should, thanks. (Except filemode, not createmode.) Too many
mostly-the-same changes...

 > >-   NDINIT(&nd, CREATE, LOCKPARENT, pb);
 > >    
 > >    /*
 > >     * Since we do not hold ulfs_extattr_uepm_lock anymore,
 > >     * another thread may race with us for backend creation,
 > >-    * but only one can succeed here thanks to O_EXCL
 > >+    * but only one can succeed here thanks to O_EXCL.
 > >+    *
 > >+    * backing_vp is the backing store. 
 > >     */
 > >-   error = vn_open(&nd, O_CREAT|O_EXCL|O_RDWR, 0600);
 > >+   error = vn_open(NULL, pb, 0, O_CREAT|O_EXCL|O_RDWR, 0600,
 > >+                   &backing_vp, NULL, NULL);
 > 
 > I guess O_CREAT will do the LOCKPARENT later...

Indeed.

 > I would have preferred if EMOVEFD/EDUPFD were gc'ed as part of the patch,
 > because there is a lot of ugliness left.

So would I, but it's a big deal (requires changing every [cb]devsw...)

-- 
David A. Holland
dholl...@netbsd.org

Reply via email to