2021-05-21 09:44:44

by Petr Vorel

[permalink] [raw]
Subject: [PATCH pynfs 1/2] st_flex: Fix comparison operator, compare int

It fixes Python 3 warning:
nfs4.1/server41tests/st_flex.py:618: SyntaxWarning: "is not" with a literal. Did you mean "!="?
if nfsstat4[res.status] is not 'NFS4_OK':

0bfa03c correctly changed NFS4_OK to string, as nfsstat4 dictionary
values are strings, but comparator was not changed.

But instead of just changing operator to '!=' also use res.status
directly thus we can compare with NFS4_OK (int variable) instead of
"NFS4_OK" (string literal => typos not detected).

Fixes: 0bfa03c ("st_flex: Fixup check for error in layoutget_return()")

Signed-off-by: Petr Vorel <[email protected]>
---
nfs4.1/server41tests/st_flex.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
index 169db69..766b213 100644
--- a/nfs4.1/server41tests/st_flex.py
+++ b/nfs4.1/server41tests/st_flex.py
@@ -615,7 +615,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
0, NFS4_MAXFILELEN, 4196, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res, allowed_errors)
- if nfsstat4[res.status] is not 'NFS4_OK':
+ if res.status != NFS4_OK:
return [res] # We can't return the layout without a stateid!
layout_stateid = res.resarray[-1].logr_stateid

--
2.31.1


2021-05-21 09:45:26

by Petr Vorel

[permalink] [raw]
Subject: [PATCH pynfs 2/2] 4.1 server: Compare with int variable instead of string

Similarly to previous commit prefer using int variables
(e.g. NFS4_OK) than string literals (e.g. "NFS4_OK"),
which don't detect typos.

This requires to change status parameter of show_op()
from string to int.

Signed-off-by: Petr Vorel <[email protected]>
---
nfs4.1/nfs4server.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/nfs4.1/nfs4server.py b/nfs4.1/nfs4server.py
index 6f7d10c..9422481 100755
--- a/nfs4.1/nfs4server.py
+++ b/nfs4.1/nfs4server.py
@@ -515,8 +515,8 @@ class SummaryOutput:

summary_line = " %s" % ', '.join(opnames)

- if status != "NFS4_OK" and status != "NFS3_OK":
- summary_line += " -> %s" % (status,)
+ if status != NFS4_OK and status != NFS3_OK:
+ summary_line += " -> %s" % nfsstat4[status]

print_summary_line = True
if summary_line != self._last or role != self._last_role:
@@ -850,7 +850,7 @@ class NFS4Server(rpc.Server):
log_41.info("Replying. Status %s (%d)" % (nfsstat4[status], status))
client_addr = '%s:%s' % cred.connection._s.getpeername()[:2]
self.summary.show_op('handle v4.1 %s' % client_addr,
- opnames, nfsstat4[status])
+ opnames, status)
return env

def delete_session(self, session, sessionid):
--
2.31.1

2021-05-21 20:26:15

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH pynfs 2/2] 4.1 server: Compare with int variable instead of string

Both applied, thanks.--b.

On Fri, May 21, 2021 at 07:46:33AM +0200, Petr Vorel wrote:
> Similarly to previous commit prefer using int variables
> (e.g. NFS4_OK) than string literals (e.g. "NFS4_OK"),
> which don't detect typos.
>
> This requires to change status parameter of show_op()
> from string to int.
>
> Signed-off-by: Petr Vorel <[email protected]>
> ---
> nfs4.1/nfs4server.py | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/nfs4.1/nfs4server.py b/nfs4.1/nfs4server.py
> index 6f7d10c..9422481 100755
> --- a/nfs4.1/nfs4server.py
> +++ b/nfs4.1/nfs4server.py
> @@ -515,8 +515,8 @@ class SummaryOutput:
>
> summary_line = " %s" % ', '.join(opnames)
>
> - if status != "NFS4_OK" and status != "NFS3_OK":
> - summary_line += " -> %s" % (status,)
> + if status != NFS4_OK and status != NFS3_OK:
> + summary_line += " -> %s" % nfsstat4[status]
>
> print_summary_line = True
> if summary_line != self._last or role != self._last_role:
> @@ -850,7 +850,7 @@ class NFS4Server(rpc.Server):
> log_41.info("Replying. Status %s (%d)" % (nfsstat4[status], status))
> client_addr = '%s:%s' % cred.connection._s.getpeername()[:2]
> self.summary.show_op('handle v4.1 %s' % client_addr,
> - opnames, nfsstat4[status])
> + opnames, status)
> return env
>
> def delete_session(self, session, sessionid):
> --
> 2.31.1
>