On 05/25/2011 03:45 PM, Andreas Dilger wrote:Most of the filesystem-specific ->llseek() methods don't do any errorSo maybe we make SEEK_DATA/SEEK_HOLE only work on regular files and not
checking on "origin" because this is handled at the sys_llseek() level,
and hasn't changed in many years.
I assume this patch is also dependent upon the "remove default_llseek()"
patch, so that the implementation of SEEK_DATA and SEEK_HOLE can be done
in only generic_file_llseek()?
Finally, while looking through the various ->llseek() methods I notice
that many filesystems return "i_size" for SEEK_END, which clearly does
not make sense for filesystems like ext3/ext4 htree, btrfs, etc that
use hash keys instead of byte offsets for doing directory traversal.
The comment at generic_file_llseek() is that it is intended for use by
regular files.
Should the ext4_llseek() code be changed to return 0x7ffffffff for the
SEEK_END value? That makes more sense compared to values returned for
SEEK_CUR so that an application can compare the current "offset" with
the final value for a progress bar.
directories? Sunil what does solaris do? Thanks,