On Tue, Jul 22, 2008 at 08:56:31AM -0600, Mark Shellenbaum wrote:
> Pawel Jakub Dawidek wrote:
> >On Tue, Jul 22, 2008 at 04:28:45PM +0200, Pawel Jakub Dawidek wrote:
> >>Hi.
> >>
> >>I just reproduced a problem I was chasing on FreeBSD also on
> >>OpenSolaris from around 2008.01.
> >>
> >>Simply doing something like this:
> >>
> >>    write 9k of random data into 'foo' file
> >>    truncate 'foo' file to 7k
> >>    truncate 'foo' file to 11k
> >>    read data between 7k-9k
> >>
> >>There should be all zeros between 7k-9k, but there is previous data.
> >>It worked fine on an older ZFS versions (I'm sure it works on version 6).
> >>
> >>Simple test program:
> >[...]
> >
> 
> Thanks for reporting this.
> 
> I've opened bug:
> 
> 6728399 ftruncate(2) broken on ZFS

I went a bit further trying to find out what's going on. This is the
change responsible for the problem: 20c04e18c58cfb135a135c0126c7d69f6078e1b5.

In the dnode_free_range() function you can find this condition:

        [...]
        } else if (off > blkid) {
                /* Freeing past end-of-data */
                goto out;
        [...]

Unfortunately blkid is uninitialized at this point, so it can't be
right. I tried to change it to 'blksz', but it panics further.

I hope this helps. This is one of the last issues that holds back
integration of the most recent ZFS into FreeBSD tree, so we would be
very grateful if you guys could look into this.

Thanks in advance!

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
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://mail.opensolaris.org/pipermail/zfs-code/attachments/20080816/6c85c5c5/attachment.bin>

Reply via email to