Re: [PATCH 3/3] nfsd4: implement secinfo_no_name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




J. Bruce Fields åé:
> On Thu, Jan 06, 2011 at 11:54:02AM +0800, Mi Jinlong wrote:
>>
>> J. Bruce Fields åé:
>>> On Wed, Jan 05, 2011 at 10:37:13AM -0500, J. Bruce Fields wrote:
>>>> On Wed, Jan 05, 2011 at 10:15:11AM -0500, Fred Isaman wrote:
>>>>> On Tue, Jan 4, 2011 at 8:05 PM, J. Bruce Fields <bfields@xxxxxxxxxxxx> wrote:
>>>>>> On Thu, Dec 30, 2010 at 12:13:27PM +0800, Mi Jinlong wrote:
>>>>>>> J. Bruce Fields:
>>>>>>>> On Mon, Dec 27, 2010 at 02:29:57PM +0800, Mi Jinlong wrote:
>>>>>>>>> When testing this patch, oops appears.
>>>>>>>>>
>>>>>>>>> We should implement a nfsd4_encode_secinfo_no_name() instead using
>>>>>>>>> nfsd4_encode_secinfo().
>>>>>>>>>
>>>>>>>>> With the following patch, kernel will run correctly.
>>>>>>>> Whoops, yes, you're correct.  I've applied your patch.  Thanks!
>>>>>>>>
>>>>>>>> (What are you using for testing?)
>>>>>>> Hi Bruce:
>>>>>>>
>>>>>>>   I test it by the pynfs41 at your tree, and add some simple
>>>>>>>   test case as following.
>>>>>>>
>>>>>>>   I have a question about the op.secinfo_no_name(), should it take
>>>>>>>   a argument?
>>>>>>>   Right now, maybe it always request with NFS4_SECINFO_STYLE4_CURRENT_FH,
>>>>>>>   or I can't find how to set the argument.
>>>>> There was a bug in how the op.secinfo_no_name() function was auto
>>>>> constructed.  I've pushed a fix to
>>>>> my tree at git://linux-nfs.org/~iisaman/newpynfs.git.
>>>> Thanks, Fred.  I've pulled that into my repository too.
>>> But then these secinfo_no_name tests don't work ("TypeError:
>>> data.opsecinfo_no_name == None"); Mi Jinlong, would you mind looking
>>> into that?
>>   After Fred's patch, we should rebuild the test site at pynfs41 dir 
>>   with "python setup.py build".
>>
>>   And update test case, call op.secinfo_no_name() with 0 as following.
> 
> Thanks!
> 
> Could I ask for a few changes?:
> 	- The second half of testSupported2 should go into a separate
> 	  test in a separate st_secinfo file.  (It will be a very small
> 	  file for now!  But we can port some of the 4.0 tests to it
> 	  some day.)
> 	- That test should create a file in the same way that e.g. the
> 	  st_open tests do instead of assuming a file named "/tree"
> 	  exists.

  Is the following one OK?

thanks,
Mi Jinlong

>From 480d5d5272dd6d3c7bd15adafd62a4a9d2431db2 Mon Sep 17 00:00:00 2001
From: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx>
Date: Sun, 2 Jan 2011 17:59:20 +0800
Subject: [PATCH] CLNT: Add some simple secinfo_no_name and secinfo tests

Add two simple secinfo_no_name tests as Bruce said:
  - send PUTROOTFH+SECINFO_NO_NAME, check that you get back a
    legal result.
  - send PUTROOTFH+SECINFO+GETFH, and/or
    PUTROOTFH+SECINFO_NO_NAME+GETFH, check that the GETFH returns
    NOFILEHANDLE.

also add two simple secinfo tests case.

Signed-off-by: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx>
---
 nfs4.1/server41tests/__init__.py           |    2 +
 nfs4.1/server41tests/st_secinfo.py         |   57 ++++++++++++++++++++++++++++
 nfs4.1/server41tests/st_secinfo_no_name.py |   35 +++++++++++++++++
 3 files changed, 94 insertions(+), 0 deletions(-)
 create mode 100644 nfs4.1/server41tests/st_secinfo.py
 create mode 100644 nfs4.1/server41tests/st_secinfo_no_name.py

diff --git a/nfs4.1/server41tests/__init__.py b/nfs4.1/server41tests/__init__.py
index 22cd664..3b4411a 100644
--- a/nfs4.1/server41tests/__init__.py
+++ b/nfs4.1/server41tests/__init__.py
@@ -2,6 +2,8 @@ __all__ = ["st_exchange_id.py", # draft 21
            "st_compound.py",
            "st_create_session.py",
            "st_destroy_session.py",
+           "st_secinfo_no_name.py",
+           "st_secinfo.py",
            "st_sequence.py",
 	   "st_trunking.py",
            "st_open.py",
diff --git a/nfs4.1/server41tests/st_secinfo.py b/nfs4.1/server41tests/st_secinfo.py
new file mode 100644
index 0000000..c0e5b71
--- /dev/null
+++ b/nfs4.1/server41tests/st_secinfo.py
@@ -0,0 +1,57 @@
+from st_create_session import create_session
+from nfs4_const import *
+from environment import check, fail, use_obj, bad_sessionid, create_file
+from nfs4_type import channel_attrs4
+import nfs4_ops as op
+import nfs4lib
+
+def testSupported(t, env):
+    """Do a simple SECINFO
+
+    FLAGS: all
+    CODE: SEC1
+    """
+    name = env.testname(t)
+    c = env.c1.new_client(env.testname(t))
+    sess = c.create_session()
+
+    # Create a tmpfile for testing
+    owner = "owner_%s" % name
+    path = sess.c.homedir + [name]
+    res = create_file(sess, owner, path, access=OPEN4_SHARE_ACCESS_WRITE)
+    check(res)
+
+    # Get the filehandle of the tmpfile's parent dir
+    res = sess.compound(use_obj(sess.c.homedir) + [op.getfh()])
+    check(res)
+    fh = res.resarray[-1].object
+
+    # Just do a simple SECINFO
+    res = sess.compound([op.putfh(fh), op.secinfo(name)])
+    check(res)
+
+def testSupported2(t, env):
+    """GETFH after do a SECINFO_NO_NAME or SECINFO
+       result in a NOFILEHANDLE error, See rfc 5661 section 2.6.3.1.1.8
+
+    FLAGS: all
+    CODE: SEC2
+    """
+    name = env.testname(t)
+    c = env.c1.new_client(env.testname(t))
+    sess = c.create_session()
+
+    # Create a tmpfile for testing
+    owner = "owner_%s" % name
+    path = sess.c.homedir + [name]
+    res = create_file(sess, owner, path, access=OPEN4_SHARE_ACCESS_WRITE)
+    check(res)
+
+    # Get the filehandle of the tmpfile's parent dir
+    res = sess.compound(use_obj(sess.c.homedir) + [op.getfh()])
+    check(res)
+    fh = res.resarray[-1].object
+
+    # GETFH after do a SECINFO should get error NFS4ERR_NOFILEHANDLE
+    res = sess.compound([op.putfh(fh), op.secinfo(name), op.getfh()])
+    check(res, NFS4ERR_NOFILEHANDLE)
diff --git a/nfs4.1/server41tests/st_secinfo_no_name.py b/nfs4.1/server41tests/st_secinfo_no_name.py
new file mode 100644
index 0000000..14bc410
--- /dev/null
+++ b/nfs4.1/server41tests/st_secinfo_no_name.py
@@ -0,0 +1,35 @@
+from st_create_session import create_session
+from nfs4_const import *
+from environment import check, fail, bad_sessionid, create_file
+from nfs4_type import channel_attrs4
+import nfs4_ops as op
+import nfs4lib
+
+def testSupported(t, env):
+    """Do a simple SECINFO_NO_NAME
+       send PUTROOTFH+SECINFO_NO_NAME, check is result legal
+
+    FLAGS: all
+    CODE: SECNN1
+    """
+    c = env.c1.new_client(env.testname(t))
+    sess = c.create_session()
+
+    # Do a simple SECINFO_NO_NAME
+    res = sess.compound([op.putrootfh(), op.secinfo_no_name(0)])
+    check(res)
+
+def testSupported2(t, env):
+    """GETFH after do a SECINFO_NO_NAME or SECINFO
+       result in a NOFILEHANDLE error, See rfc 5661 section 2.6.3.1.1.8
+
+    FLAGS: all
+    CODE: SECNN2
+    """
+    c = env.c1.new_client(env.testname(t))
+    sess = c.create_session()
+
+    # GETFH after do a SECINFO_NO_NAME should get error NFS4ERR_NOFILEHANDLE
+    res = sess.compound([op.putrootfh(), op.secinfo_no_name(0), op.getfh()])
+    print res
+    check(res, NFS4ERR_NOFILEHANDLE)
-- 
1.7.3.4



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux