Date: Wed, 23 Feb 2011 15:04:47 -0800 From: Garrett Cooper <yanegomi@gmail.com> To: John Baldwin <jhb@FreeBSD.org> Cc: freebsd-hackers@freebsd.org, Alexander Best <arundel@freebsd.org>, Garrett Cooper <gcooper@freebsd.org> Subject: Re: seeking into /dev/{null,zero} Message-ID: <3A287E45-A369-4C7A-BA8E-A205679AC0BC@gmail.com> In-Reply-To: <201102221251.33717.jhb@freebsd.org> References: <20110222141112.GA98964@freebsd.org> <AC6674AB7BC78549BB231821ABF7A9AE970EA06474@EMBX01-WF.jnpr.net> <AANLkTimwOVub6XxZqgCmHPnLbekJrEbYQBzxUr%2BUrcR5@mail.gmail.com> <201102221251.33717.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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) >>=20 >> On Tue, Feb 22, 2011 at 8:31 AM, Andrew Duane <aduane@juniper.net> = wrote: >>> I thought seeking past EOF was valid; writing something creates a = file=20 > with a hole in it. I always assumed that was standard semantics. >>=20 >> That's with SET_HOLE/SET_DATA though, correct? If so, outside of >> that functionality I would assume relatively standard POSIX = semantics. >=20 > Err, no, you can always seek past EOF and then call write(2) to extend = a file=20 > (it does an implicit ftruncate(2)). SEEK_HOLE and SEEK_DATA are = different,=20 > they are just used to discover sparse regions within a file. >=20 > =46rom the manpage: >=20 > 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. Thanks! -Garrett=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A287E45-A369-4C7A-BA8E-A205679AC0BC>