Whamcloud - gitweb
LU-14301 llite: return EOPNOTSUPP if fallocate is not supported 48/41148/3
authorJohn L. Hammond <jhammond@whamcloud.com>
Wed, 6 Jan 2021 19:48:35 +0000 (13:48 -0600)
committerOleg Drokin <green@whamcloud.com>
Tue, 12 Jan 2021 07:57:41 +0000 (07:57 +0000)
In ll_fallocate() if the server returns the NFSv3 specific error code
ENOTSUPP then replace it with EOPNOTSUPP to avoid confusing
applications.

Signed-off-by: John L. Hammond <jhammond@whamcloud.com>
Change-Id: I85952be27808704112a6902684900cd938d576ac
Reviewed-on: https://review.whamcloud.com/41148
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Wang Shilong <wshilong@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/llite/file.c

index 2da3896..2e78b2d 100644 (file)
@@ -5083,6 +5083,14 @@ long ll_fallocate(struct file *filp, int mode, loff_t offset, loff_t len)
        ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_FALLOCATE, 1);
 
        rc = cl_falloc(inode, mode, offset, len);
+       /*
+        * ENOTSUPP (524) is an NFSv3 specific error code erroneously
+        * used by Lustre in several places. Retuning it here would
+        * confuse applications that explicity test for EOPNOTSUPP
+        * (95) and fall back to ftruncate().
+        */
+       if (rc == -ENOTSUPP)
+               rc = -EOPNOTSUPP;
 
        RETURN(rc);
 }