cvs commit: src/sys/kern vfs_syscalls.c

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu Apr 22 16:31:57 PDT 2004


On Fri, Apr 23, 2004 at 01:19:10AM +0200, Thomas Moestl wrote:
+> On Thu, 2004/04/22 at 08:40:28 -0700, Pawel Jakub Dawidek wrote:
+> > pjd         2004/04/22 08:40:27 PDT
+> > 
+> >   FreeBSD src repository
+> > 
+> >   Modified files:
+> >     sys/kern             vfs_syscalls.c 
+> >   Log:
+> >   Look out! vn_start_write() is able to return 0 and NULL 'mp'.
+> 
+> Hmmm, I'm not sure, but wasn't the real bug to use the struct mount *
+> that vn_start_write() returns instead of nd.ni_vp->v_mount (or at
+> least, not using nd.ni_vp->v_mount if mp turns out to be NULL)? 
+> extattrctl() chooses that way.
+> It seems that file systems are not required to implement
+> VOP_GETWRITEMOUNT(), but could choose to implement VFS_QUOTACTL()
+> anyway (although IIRC there currently are none that maintain this
+> combination), so unconditionally returning EOPNOTSUPP would be too
+> strict.
+> 
+> The only case where the mount point of the vnode and the mount point
+> returned by vn_start_write() should differ is when unionfs is
+> involved; in that case, the correct semantics of quotactl() is a bit
+> doubtful, and so unionfs does not support quotactl() at all; thus
+> using the mount point of the vnode should not break anything.

Yes. Even quotactl(2) in RELENG_4 is using nd.ni_vp->v_mount.
Anyone want to test this patch:

	http://people.freebsd.org/~pjd/patches/vfs_syscalls.c.3.patch

-- 
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd at FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/cvs-src/attachments/20040423/f1f22ce3/attachment.bin


More information about the cvs-src mailing list