diff mbox series

Permit COMMIT operations to return NFS4_OK

Message ID 164400374422.1026143.17746475126462213720.stgit@morisot.1015granger.net (mailing list archive)
State New, archived
Headers show
Series Permit COMMIT operations to return NFS4_OK | expand

Commit Message

Chuck Lever Feb. 4, 2022, 7:42 p.m. UTC
RFC 7530 permits COMMIT to return NFS4ERR_INVAL, but RFC 5661 and
later do not. Allow INVAL as a legacy behavior, but test for OK
also.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 nfs4.0/servertests/st_commit.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Frank Filz Feb. 4, 2022, 9:02 p.m. UTC | #1
> RFC 7530 permits COMMIT to return NFS4ERR_INVAL, but RFC 5661 and later do
> not. Allow INVAL as a legacy behavior, but test for OK also.

Do we have a 4.1 test to verify 4.1 and later doesn't return INVAL?

Frank

> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>  nfs4.0/servertests/st_commit.py |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
> index 12a0dffa061f..4ef87e69c5d7 100644
> --- a/nfs4.0/servertests/st_commit.py
> +++ b/nfs4.0/servertests/st_commit.py
> @@ -160,4 +160,4 @@ def testCommitOverflow(t, env):
>      res = c.write_file(fh, _text, 0, stateid, how=UNSTABLE4)
>      check(res, msg="WRITE with how=UNSTABLE4")
>      res = c.commit_file(fh, 0xfffffffffffffff0, 64)
> -    check(res, NFS4ERR_INVAL, "COMMIT with offset + count overflow")
> +    check(res, [NFS4_OK, NFS4ERR_INVAL], "COMMIT with offset + count
> + overflow")
Chuck Lever Feb. 4, 2022, 9:06 p.m. UTC | #2
> On Feb 4, 2022, at 4:02 PM, Frank Filz <ffilzlnx@mindspring.com> wrote:
> 
>> RFC 7530 permits COMMIT to return NFS4ERR_INVAL, but RFC 5661 and later do
>> not. Allow INVAL as a legacy behavior, but test for OK also.
> 
> Do we have a 4.1 test to verify 4.1 and later doesn't return INVAL?

No v4.1-related test that I'm aware of.

Note that RFC 1813 also restricts the use of NFS3ERR_INVAL with COMMIT.
We therefore believe that RFC 7530 mistakenly permits the use of
NFS4ERR_INVAL with COMMIT. Because the specs are not consistent in this
area, we chose to allow either result in CMT4.


> Frank
> 
>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>> ---
>> nfs4.0/servertests/st_commit.py |    2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
>> index 12a0dffa061f..4ef87e69c5d7 100644
>> --- a/nfs4.0/servertests/st_commit.py
>> +++ b/nfs4.0/servertests/st_commit.py
>> @@ -160,4 +160,4 @@ def testCommitOverflow(t, env):
>>     res = c.write_file(fh, _text, 0, stateid, how=UNSTABLE4)
>>     check(res, msg="WRITE with how=UNSTABLE4")
>>     res = c.commit_file(fh, 0xfffffffffffffff0, 64)
>> -    check(res, NFS4ERR_INVAL, "COMMIT with offset + count overflow")
>> +    check(res, [NFS4_OK, NFS4ERR_INVAL], "COMMIT with offset + count
>> + overflow")
> 
> 

--
Chuck Lever
J. Bruce Fields Feb. 4, 2022, 9:11 p.m. UTC | #3
On Fri, Feb 04, 2022 at 02:42:24PM -0500, Chuck Lever wrote:
> RFC 7530 permits COMMIT to return NFS4ERR_INVAL, but RFC 5661 and
> later do not. Allow INVAL as a legacy behavior, but test for OK
> also.

Applied, thanks.

--b.
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>  nfs4.0/servertests/st_commit.py |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
> index 12a0dffa061f..4ef87e69c5d7 100644
> --- a/nfs4.0/servertests/st_commit.py
> +++ b/nfs4.0/servertests/st_commit.py
> @@ -160,4 +160,4 @@ def testCommitOverflow(t, env):
>      res = c.write_file(fh, _text, 0, stateid, how=UNSTABLE4)
>      check(res, msg="WRITE with how=UNSTABLE4")
>      res = c.commit_file(fh, 0xfffffffffffffff0, 64)
> -    check(res, NFS4ERR_INVAL, "COMMIT with offset + count overflow")
> +    check(res, [NFS4_OK, NFS4ERR_INVAL], "COMMIT with offset + count overflow")
>
diff mbox series

Patch

diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
index 12a0dffa061f..4ef87e69c5d7 100644
--- a/nfs4.0/servertests/st_commit.py
+++ b/nfs4.0/servertests/st_commit.py
@@ -160,4 +160,4 @@  def testCommitOverflow(t, env):
     res = c.write_file(fh, _text, 0, stateid, how=UNSTABLE4)
     check(res, msg="WRITE with how=UNSTABLE4")
     res = c.commit_file(fh, 0xfffffffffffffff0, 64)
-    check(res, NFS4ERR_INVAL, "COMMIT with offset + count overflow")
+    check(res, [NFS4_OK, NFS4ERR_INVAL], "COMMIT with offset + count overflow")