If ll_file_seek() falls back to generic_file_llseek_size()
then make sure inode size is reliable
Test-Parameters: testlist=sanity env=ONLY=460f,ONLY_REPEAT=4 clientdistro=el9.1
Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: Ieb8c90e66fb19675ba41f0147c0d9cdaf29ea20a
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/51564
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
CL_FSYNC_LOCAL, 0);
retval = ll_lseek(file, offset, origin);
- if (retval >= 0)
+ if (retval >= 0) {
retval = vfs_setpos(file, retval, maxbytes);
- else if (retval == -EOPNOTSUPP)
+ } else if (retval == -EOPNOTSUPP) {
+ retval = ll_glimpse_size(inode);
+ if (retval)
+ RETURN(retval);
retval = generic_file_llseek_size(file, offset,
origin, maxbytes,
i_size_read(inode));
+ }
} else {
retval = generic_file_llseek_size(file, offset, origin,
maxbytes, eof);