From ccb1207c0e538919522773ab7ae043175e520e85 Mon Sep 17 00:00:00 2001 From: Mikhail Pershin Date: Tue, 4 Jul 2023 22:13:58 +0300 Subject: [PATCH] EX-7786 test: get size before fallback to generic 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 Change-Id: Ieb8c90e66fb19675ba41f0147c0d9cdaf29ea20a Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/51564 Tested-by: jenkins Tested-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/llite/file.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 8006b8f..62a71e2 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -4826,12 +4826,16 @@ static loff_t ll_file_seek(struct file *file, loff_t offset, int origin) 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); -- 1.8.3.1