> :Well, since a server specifies the maximum file size it can
> :handle, it seems good form to check for that in the client.
> :(Although I'd agree that a server shouldn't crash if a read/write
> : that goes beyond that limit.)
> :
> :Also, as Matt notes, off_t is signed. As such, it looks to me like
> :the check could mess up if uio_offset it right near 0x7fffffffffffffff,
> :so that uio->ui_offset + uio->uio_resid ends up negative. I think the
> :check a little above that for uio_offset < 0 should also check
> :uio_offset + uio_resid < 0 to avoid this.
> :
> :rick
> 
>     Yes, though doing an overflow check in C, at least with newer versions
>     of GCC, requires a separate comparison.  The language has been mangled
>     pretty badly over the years.
> 
> 
>     if (a + b < a)    -> can be optimized-out by the compiler
> 
>     if (a + b < 0)    -> also can be optimized-out by the compiler
> 
>     x = a + b;
>     if (x < a)                -> this is ok (best method)
> 
>     x = a + b;
>     if (x < 0)                -> this is ok
> 
> 
>     This sort of check may already be made in various places (e.g. by UFS
>     and/or uio), since negative offsets are used to identify meta-data in
>     UFS.
> 
>                                       -Matt
>                                       Matthew Dillon 
>                                       <dil...@backplane.com>

my question, badly written, was why not let the underlaying fs (ufs, zfs, etc)
have the last word, instead of the nfsclient having to guess? Is there
a problem in sending back the error?

danny


_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to