On Mon, May 05, 2025 at 10:36:54PM -0700, Darrick J. Wong wrote: > I think STATX_* (i.e. not STATX_ATTR_*) flags have two purposes: 1) to > declare that specific fields in struct statx actually have meaning, most > notably in scenarios where zeroes are valid field contents; and 2) if > filling out the field is expensive, userspace can elect not to have it > filled by leaving the bit unset. I don't know how userspace is supposed > to figure out which fields are expensive.
Yes. > (I'm confused about the whole premise of /this/ patch -- it's a "fast > zeroing" fallocate flag that causes the *device* to unmap, so that the > filesystem can preallocate and avoid unwritten extent conversions? Yes. > What happens if the block device is thinp and it runs out of space? > That seems antithetical to fallocate...) While the origin posix_fallocate was about space preallocatіon, these days fallocate seems to be more about extent layout and/or fast zeroing. I'm not a huge fan of either this or the hardware atomics as they force a FTL layer world view which is quite ingrained but also rather stupid, but some folks really want to go down there full throttle, so..