Date: Mon, 2 Aug 1999 08:13:33 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Alfred Perlstein <bright@rush.net> Cc: hackers@FreeBSD.ORG Subject: Re: confusion about nfsm_srvmtofh bad behavior? Message-ID: <199908021513.IAA13285@apollo.backplane.com> References: <Pine.BSF.3.96.990802072500.20420l-100000@cygnus.rush.net>
next in thread | previous in thread | raw e-mail | index | archive | help
:On Mon, 2 Aug 1999, Alfred Perlstein wrote:
:
:> } \
:> if (fhlen != 0) { \
:> nfsm_dissect(tl, u_int32_t *, NFSX_V3FH); \
:> bcopy((caddr_t)tl, (caddr_t)(f), NFSX_V3FH); \
:> if ((nfsd->nd_flag & ND_NFSV3) == 0) \
:> nfsm_adv(NFSX_V2FH - NFSX_V3FH); \
:> } \
:> }
:
:...
:
:> it then rewinds the mbuf pointers (i think) because of the
:> over "dissection" above.
:> ---
:>
:> why does it do the copy, then rewind it, it seems like it knows
:> it's doing something wrong and instead of fixing it, it just
:> compensates after the fact.
:
:yes, replying to my own message.
:
:the only thing i can think of is that the extra data is safely
:ignored because the routines that use these macros seem to
:pass the version of NFS to all the function that they call...
:
:however unless i'm wrong (which i probably am) nfsV2 stuff
:could be made faster if it was correctly noted and less data
:was copied. It would also DTRT and not access data it isn't
:supposed to :)
:
:it seems like all of the V3 handles are the same length so
:there isn't much to do there...
:
:-Alfred
Well, I must say that it certainly looks like a bug. It is not going
to blow anything up since the nfsm_dissect() will break out if it runs
out of buffer space, but it certainly seems inefficient. I am somewhat
loath to fix anything in NFS that does not create a demonstrateable
problem for fear of creating new problems, though, it is quite possible
that the server code depends on the extra junk in the file handle for
V2 mounts - A full audit of nfs_nqlease.c and nfs_serv.c would be
necessary before this could be fixed.
-Matt
Matthew Dillon
<dillon@backplane.com>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199908021513.IAA13285>
