On Thu, May 29, 2008 at 11:33:09AM -0400, jim owens wrote: > Christoph Hellwig wrote: >> >> What use is there geeting the extent count for a range? I'd rather >> do it only per-file like the xfs ioctl. > > I'll answer that from practical experience. Our api equivalents: > > __u64 fm_start; /* logical offset (inclusive) at > * which to start mapping (in) */ > __u64 fm_length; /* logical length of mapping which > * userspace cares about (in) */ > __u32 fm_extent_count; /* size of fm_extents array (in) */ > __u32 fm_mapped_extents; /* number of extents that were > * mapped (out) */ > > ... note it has no flags field and no separate ioctl_extent_count. > > "fm_extent_count" is > IN == max_extents to return. > OUT == number of extents remaining in-range after fm_mapped_extents > > Pass in fm_extent_count==0 and you get OUT number of extent entries > within your fm_start + fm_length range. Which you can use to set > your malloc size because the FS can have massive extent counts :( See, that's a very natural API. I'd be much happier with that - "extent_count == 0" is consistent with no extent structures passed in. It also fits with many other API that do it the same way (eg, snprintf). Joel -- "I don't know anything about music. In my line you don't have to." - Elvis Presley Joel Becker Principal Software Developer Oracle E-mail: joel.becker@xxxxxxxxxx Phone: (650) 506-8127 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html