* [pynfs python3 2/7] st_flex: Use NFS4_MAXFILELEN in layout calls
2020-12-19 18:29 [pynfs python3 0/7] Python3 patches for st_flex.py Tom Haynes
2020-12-19 18:29 ` [pynfs python3 1/7] CB_LAYOUTRECALL: Make string a byte array Tom Haynes
@ 2020-12-19 18:29 ` Tom Haynes
2020-12-19 18:29 ` [pynfs python3 3/7] st_flex: Provide an empty ff_layoutreturn4 by default for LAYOUTRETURN Tom Haynes
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Tom Haynes @ 2020-12-19 18:29 UTC (permalink / raw)
To: Bruce Fields; +Cc: Linux NFS Mailing list
From: Tom Haynes <loghyr@excfb.com>
Signed-off-by: Tom Haynes <loghyr@excfb.com>
---
nfs4.1/server41tests/st_flex.py | 50 ++++++++++++++++-----------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
index d70b216..8150054 100644
--- a/nfs4.1/server41tests/st_flex.py
+++ b/nfs4.1/server41tests/st_flex.py
@@ -5,7 +5,7 @@ import nfs_ops
op = nfs_ops.NFS4ops()
from .environment import check, fail, create_file, close_file, open_create_file_op
from xdrdef.nfs4_pack import NFS4Packer as FlexPacker, \
- NFS4Unpacker as FlexUnpacker
+ NFS4Unpacker as FlexUnpacker
from nfs4lib import FancyNFS4Packer, get_nfstime
current_stateid = stateid4(1, '\0' * 12)
@@ -69,11 +69,11 @@ def testFlexGetLayout(t, env):
open_stateid = res.resarray[-2].stateid
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_READ,
- 0, 0xffffffffffffffff, 4196, open_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 4196, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
# Parse opaque
- for layout in res.resarray[-1].logr_layout:
+ for layout in res.resarray[-1].logr_layout:
if layout.loc_type == LAYOUT4_FLEX_FILES:
p = FlexUnpacker(layout.loc_body)
opaque = p.unpack_ff_layout4()
@@ -98,7 +98,7 @@ def testFlexLayoutReturnFile(t, env):
open_stateid = res.resarray[-2].stateid
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_READ,
- 0, 0xffffffffffffffff, 4196, open_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 4196, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
# Return layout
@@ -106,7 +106,7 @@ def testFlexLayoutReturnFile(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, layout_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN, layout_stateid, "")))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -132,7 +132,7 @@ def testFlexLayoutOldSeqid(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, open_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -144,7 +144,7 @@ def testFlexLayoutOldSeqid(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid2 = res.resarray[-1].logr_stateid
@@ -156,7 +156,7 @@ def testFlexLayoutOldSeqid(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid3 = res.resarray[-1].logr_stateid
@@ -167,7 +167,7 @@ def testFlexLayoutOldSeqid(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
res = sess.compound(ops)
check(res, NFS4ERR_OLD_STATEID, "LAYOUTRETURN with an old stateid")
res = close_file(sess, fh, stateid=open_stateid)
@@ -192,8 +192,8 @@ def testFlexLayoutStress(t, env):
for i in range(1000):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
- LAYOUTIOMODE4_READ if i%2 else LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ LAYOUTIOMODE4_READ if i%2 else LAYOUTIOMODE4_RW,
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -203,7 +203,7 @@ def testFlexLayoutStress(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -227,7 +227,7 @@ def testFlexGetDevInfo(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -251,7 +251,7 @@ def testFlexGetDevInfo(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -275,7 +275,7 @@ def testFlexLayoutTestAccess(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, open_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -295,7 +295,7 @@ def testFlexLayoutTestAccess(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_READ,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -342,7 +342,7 @@ def testFlexLayoutStatsSmall(t, env):
open_op = open_create_file_op(sess, env.testname(t) + str(i), open_create=OPEN4_CREATE)
res = sess.compound( open_op +
[op.layoutget(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 4196, current_stateid, 0xffff)])
+ 0, NFS4_MAXFILELEN, 4196, current_stateid, 0xffff)])
check(res, NFS4_OK)
lo_stateid = res.resarray[-1].logr_stateid
fh = res.resarray[-2].object
@@ -395,7 +395,7 @@ def testFlexLayoutStatsSmall(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, lo_stateid, p.get_buffer()))),
+ layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, p.get_buffer()))),
op.close(0, open_stateid)]
res = sess.compound(ops)
check(res)
@@ -415,7 +415,7 @@ def _LayoutStats(t, env, stats):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_RW,
- 0, 0xffffffffffffffff, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
lo_stateid = res.resarray[-1].logr_stateid
@@ -455,7 +455,7 @@ def _LayoutStats(t, env, stats):
# Did not capture these in the gathered traces
offset = 0
- file_length = 0xffffffffffffffff
+ file_length = NFS4_MAXFILELEN
rd_io.ii_count = 0
rd_io.ii_bytes = 0
wr_io.ii_count = 0
@@ -492,7 +492,7 @@ def _LayoutStats(t, env, stats):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, 0xffffffffffffffff, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -602,7 +602,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
# Get layout
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES, layout_iomode,
- 0, NFS4_UINT64_MAX, 4196, open_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 4196, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res, allowed_errors)
if nfsstat4[res.status] is not 'NFS4_OK':
@@ -614,7 +614,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_UINT64_MAX,
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
layout_stateid, "")))]
else: # Return layout with error
# Get device id
@@ -625,7 +625,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
deviceid = layout.ffl_mirrors[0].ffm_data_servers[0].ffds_deviceid
deverr = device_error4(deviceid, layout_error, layout_error_op)
- ffioerr = ff_ioerr4(0, NFS4_UINT64_MAX, layout_stateid, [deverr])
+ ffioerr = ff_ioerr4(0, NFS4_MAXFILELEN, layout_stateid, [deverr])
fflr = ff_layoutreturn4([ffioerr], [])
p = FlexPacker()
@@ -634,7 +634,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_UINT64_MAX,
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
layout_stateid,
p.get_buffer())))]
--
2.26.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [pynfs python3 3/7] st_flex: Provide an empty ff_layoutreturn4 by default for LAYOUTRETURN
2020-12-19 18:29 [pynfs python3 0/7] Python3 patches for st_flex.py Tom Haynes
2020-12-19 18:29 ` [pynfs python3 1/7] CB_LAYOUTRECALL: Make string a byte array Tom Haynes
2020-12-19 18:29 ` [pynfs python3 2/7] st_flex: Use NFS4_MAXFILELEN in layout calls Tom Haynes
@ 2020-12-19 18:29 ` Tom Haynes
2020-12-19 18:29 ` [pynfs python3 4/7] st_flex: Use range instead of xrange for python3 Tom Haynes
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Tom Haynes @ 2020-12-19 18:29 UTC (permalink / raw)
To: Bruce Fields; +Cc: Linux NFS Mailing list
From: Tom Haynes <loghyr@excfb.com>
Signed-off-by: Tom Haynes <loghyr@excfb.com>
---
nfs4.1/server41tests/st_flex.py | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
index 8150054..7036271 100644
--- a/nfs4.1/server41tests/st_flex.py
+++ b/nfs4.1/server41tests/st_flex.py
@@ -10,6 +10,11 @@ from nfs4lib import FancyNFS4Packer, get_nfstime
current_stateid = stateid4(1, '\0' * 12)
+empty_fflr = ff_layoutreturn4([], [])
+
+empty_p = FlexPacker()
+empty_p.pack_ff_layoutreturn4(empty_fflr)
+
def check_seqid(stateid, seqid):
if stateid.seqid != seqid:
fail("Expected stateid.seqid==%i, got %i" % (seqid, stateid.seqid))
@@ -103,10 +108,12 @@ def testFlexLayoutReturnFile(t, env):
check(res)
# Return layout
layout_stateid = res.resarray[-1].logr_stateid
+
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, layout_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ layout_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -167,7 +174,8 @@ def testFlexLayoutOldSeqid(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res, NFS4ERR_OLD_STATEID, "LAYOUTRETURN with an old stateid")
res = close_file(sess, fh, stateid=open_stateid)
@@ -203,7 +211,8 @@ def testFlexLayoutStress(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -251,7 +260,8 @@ def testFlexGetDevInfo(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -395,7 +405,8 @@ def testFlexLayoutStatsSmall(t, env):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, p.get_buffer()))),
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, p.get_buffer()))),
op.close(0, open_stateid)]
res = sess.compound(ops)
check(res)
@@ -492,7 +503,8 @@ def _LayoutStats(t, env, stats):
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
- layoutreturn_file4(0, NFS4_MAXFILELEN, lo_stateid, "")))]
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -615,7 +627,7 @@ def layoutget_return(sess, fh, open_stateid, allowed_errors=NFS4_OK,
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
layoutreturn_file4(0, NFS4_MAXFILELEN,
- layout_stateid, "")))]
+ layout_stateid, empty_p.get_buffer())))]
else: # Return layout with error
# Get device id
locb = res.resarray[-1].logr_layout[0].lo_content.loc_body
--
2.26.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [pynfs python3 6/7] st_flex: Return the layout before closing the file
2020-12-19 18:29 [pynfs python3 0/7] Python3 patches for st_flex.py Tom Haynes
` (4 preceding siblings ...)
2020-12-19 18:29 ` [pynfs python3 5/7] st_flex: Test is now redundant Tom Haynes
@ 2020-12-19 18:29 ` Tom Haynes
2020-12-20 15:56 ` Mkrtchyan, Tigran
2020-12-19 18:29 ` [pynfs python3 7/7] st_flex: testFlexLayoutStatsSmall needed loving to pass python3 Tom Haynes
2020-12-21 20:00 ` [pynfs python3 0/7] Python3 patches for st_flex.py J. Bruce Fields
7 siblings, 1 reply; 10+ messages in thread
From: Tom Haynes @ 2020-12-19 18:29 UTC (permalink / raw)
To: Bruce Fields; +Cc: Linux NFS Mailing list
From: Tom Haynes <loghyr@excfb.com>
Signed-off-by: Tom Haynes <loghyr@excfb.com>
---
nfs4.1/server41tests/st_flex.py | 40 +++++++++++++++++++++++++++------
1 file changed, 33 insertions(+), 7 deletions(-)
diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
index 3aae441..2b1820c 100644
--- a/nfs4.1/server41tests/st_flex.py
+++ b/nfs4.1/server41tests/st_flex.py
@@ -56,6 +56,15 @@ def testStateid1(t, env):
# the server increments by one the value of the "seqid" in each
# subsequent LAYOUTGET and LAYOUTRETURN response,
check_seqid(lo_stateid, i + 2)
+
+ ops = [op.putfh(fh),
+ op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
+ layoutreturn4(LAYOUTRETURN4_FILE,
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid, empty_p.get_buffer())))]
+ res = sess.compound(ops)
+ check(res)
+
res = close_file(sess, fh, stateid=open_stateid)
check(res)
@@ -79,13 +88,13 @@ def testFlexLayoutReturnFile(t, env):
res = sess.compound(ops)
check(res)
# Return layout
- layout_stateid = res.resarray[-1].logr_stateid
+ lo_stateid = res.resarray[-1].logr_stateid
ops = [op.putfh(fh),
op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
layoutreturn4(LAYOUTRETURN4_FILE,
layoutreturn_file4(0, NFS4_MAXFILELEN,
- layout_stateid, empty_p.get_buffer())))]
+ lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res)
res = close_file(sess, fh, stateid=open_stateid)
@@ -150,6 +159,15 @@ def testFlexLayoutOldSeqid(t, env):
lo_stateid, empty_p.get_buffer())))]
res = sess.compound(ops)
check(res, NFS4ERR_OLD_STATEID, "LAYOUTRETURN with an old stateid")
+
+ ops = [op.putfh(fh),
+ op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
+ layoutreturn4(LAYOUTRETURN4_FILE,
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid3, empty_p.get_buffer())))]
+ res = sess.compound(ops)
+ check(res)
+
res = close_file(sess, fh, stateid=open_stateid)
check(res)
@@ -260,8 +278,8 @@ def testFlexLayoutTestAccess(t, env):
0, NFS4_MAXFILELEN, 8192, open_stateid, 0xffff)]
res = sess.compound(ops)
check(res)
- lo_stateid = res.resarray[-1].logr_stateid
- check_seqid(lo_stateid, 1)
+ lo_stateid1 = res.resarray[-1].logr_stateid
+ check_seqid(lo_stateid1, 1)
layout = res.resarray[-1].logr_layout[-1]
p = FlexUnpacker(layout.loc_body)
@@ -277,11 +295,11 @@ def testFlexLayoutTestAccess(t, env):
ops = [op.putfh(fh),
op.layoutget(False, LAYOUT4_FLEX_FILES,
LAYOUTIOMODE4_READ,
- 0, NFS4_MAXFILELEN, 8192, lo_stateid, 0xffff)]
+ 0, NFS4_MAXFILELEN, 8192, lo_stateid1, 0xffff)]
res = sess.compound(ops)
check(res)
- lo_stateid = res.resarray[-1].logr_stateid
- check_seqid(lo_stateid, 2)
+ lo_stateid2 = res.resarray[-1].logr_stateid
+ check_seqid(lo_stateid2, 2)
layout = res.resarray[-1].logr_layout[-1]
p = FlexUnpacker(layout.loc_body)
@@ -300,6 +318,14 @@ def testFlexLayoutTestAccess(t, env):
if gid_rw != gid_rd:
fail("Expected gid_rd == %s, got %s" % (gid_rd, gid_rw))
+ ops = [op.putfh(fh),
+ op.layoutreturn(False, LAYOUT4_FLEX_FILES, LAYOUTIOMODE4_ANY,
+ layoutreturn4(LAYOUTRETURN4_FILE,
+ layoutreturn_file4(0, NFS4_MAXFILELEN,
+ lo_stateid2, empty_p.get_buffer())))]
+ res = sess.compound(ops)
+ check(res)
+
res = close_file(sess, fh, stateid=open_stateid)
check(res)
--
2.26.2
^ permalink raw reply related [flat|nested] 10+ messages in thread