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