On Wed Feb 23 11, Garrett Cooper wrote:
> On Feb 22, 2011, at 9:51 AM, John Baldwin wrote:
> 
> > On Tuesday, February 22, 2011 11:46:05 am Garrett Cooper wrote:
> >> (Please bottom post)
> >> 
> >> On Tue, Feb 22, 2011 at 8:31 AM, Andrew Duane <adu...@juniper.net> wrote:
> >>> I thought seeking past EOF was valid; writing something creates a file 
> > with a hole in it. I always assumed that was standard semantics.
> >> 
> >>    That's with SET_HOLE/SET_DATA though, correct? If so, outside of
> >> that functionality I would assume relatively standard POSIX semantics.
> > 
> > Err, no, you can always seek past EOF and then call write(2) to extend a 
> > file 
> > (it does an implicit ftruncate(2)).  SEEK_HOLE and SEEK_DATA are different, 
> > they are just used to discover sparse regions within a file.
> > 
> > From the manpage:
> > 
> >     The lseek() system call allows the file offset to be set beyond the end
> >     of the existing end-of-file of the file.  If data is later written at
> >     this point, subsequent reads of the data in the gap return bytes of 
> > zeros
> >     (until data is actually written into the gap).
> 
>       You're correct. Linux (Fedora 13) isn't POSIX compliant (this is from 
> the official POSIX text):
> 
> The lseek ( ) function shall allow the file offset to be set beyond the end 
> of the existing data in the file. If data is later written at this point, 
> subsequent reads of data in the gap shall return bytes with the value 0 until 
> data is actually written into the gap.

so except for reading from /dev/zero freebsd also isn't posix compliant, right?

will this patch fix writing to /dev/{zero,null}?

diff --git a/sys/dev/null/null.c b/sys/dev/null/null.c
index 3005c19..aa9fa87 100644
--- a/sys/dev/null/null.c
+++ b/sys/dev/null/null.c
@@ -71,6 +71,7 @@ static void *zbuf;
 static int
 null_write(struct cdev *dev __unused, struct uio *uio, int flags __unused)
 {
+       uio->uio_offset += uio->uio_resid;
        uio->uio_resid = 0;
 
        return (0);

cheers.
alex

> 
> Thanks!
> -Garrett
-- 
a13x
_______________________________________________
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