On Wed, Jun 24, 2009 at 10:58:49AM -0700, Marcelo Leal wrote:
> Hello Jonathan,
> You are saying that the SEEK_HOLE and SEEK_DATA are implemented on
> the "birth_txg" and not on the "fill_count"?
Um, no, I don't think so. I was just saying that for most people checking for
holes, they use "blk_birth" to check for them. Since all the fields are
zero, that's not always the case. For SEEK_*, it's actually based on the fill
value.
uts/common/fs/zfs/dnode.c:
static int
dnode_next_offset_level(dnode_t *dn, int flags, uint64_t *offset,
int lvl, uint64_t blkfill, uint64_t txg)
{
...
if (bp[i].blk_fill >= minfill &&
bp[i].blk_fill <= maxfill &&
(hole || bp[i].blk_birth > txg))
break;
...
Cheers,
- jonathan