diff --git a/nfs4.1/nfs4client.py b/nfs4.1/nfs4client.py
index 9ffe310..62ccc3a 100644
--- a/nfs4.1/nfs4client.py
+++ b/nfs4.1/nfs4client.py
@@ -297,6 +297,15 @@ class NFS4Client(rpc.Client, rpc.Server):
         s.compound([op4.reclaim_complete(FALSE)])
         return s
 
+    def new_pnfs_client_session(self, name, flags=EXCHGID4_FLAG_USE_PNFS_MDS, sec=None):
+        # Make sure E_ID returns MDS capabilities
+        c = self.new_client(name, flags=flags)
+        if not c.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
+            fail("Server can not be used as pnfs metadata server")
+        s = c.create_session(sec=sec)
+        s.compound([op4.reclaim_complete(FALSE)])
+        return s
+
     def create_tag(self):
         current_stack = inspect.stack()
         stackid = 0
diff --git a/nfs4.1/server41tests/st_block.py b/nfs4.1/server41tests/st_block.py
index a8c43dc..bf968f9 100644
--- a/nfs4.1/server41tests/st_block.py
+++ b/nfs4.1/server41tests/st_block.py
@@ -15,8 +15,7 @@ def testStateid1(t, env):
     FLAGS: block
     CODE: BLOCK1
     """
-    sess = env.c1.new_client_session(env.testname(t),
-                                        flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Create the file
     res = create_file(sess, env.testname(t))
     check(res)
@@ -57,8 +56,7 @@ def testStateid2(t, env):
     FLAGS: block
     CODE: BLOCK2
     """
-    c1 = env.c1.new_client_session(env.testname(t),
-                                    flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Create the file
     res = create_file(sess, env.testname(t))
     check(res)
@@ -117,8 +115,7 @@ def testEmptyCommit(t, env):
     FLAGS: block
     CODE: BLOCK3
     """
-    c1 = env.c1.new_client_session(env.testname(t),
-                                    flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Create the file
     res = create_file(sess, env.testname(t))
     check(res)
@@ -179,8 +176,7 @@ def testSplitCommit(t, env):
     FLAGS: block
     CODE: BLOCK4
     """
-    sess = env.c1.new_client_session(env.testname(t),
-                                        flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Create the file
     res = create_file(sess, env.testname(t))
     check(res)
diff --git a/nfs4.1/server41tests/st_current_stateid.py b/nfs4.1/server41tests/st_current_stateid.py
index 98fc76f..aa1f689 100644
--- a/nfs4.1/server41tests/st_current_stateid.py
+++ b/nfs4.1/server41tests/st_current_stateid.py
@@ -125,8 +125,7 @@ def testOpenLayoutGet(t, env):
     FLAGS: currentstateid pnfs
     CODE: CSID7
     """
-    sess = env.c1.new_client_session(env.testname(t),
-                                        flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
 
     open_op = open_create_file_op(sess, env.testname(t), open_create=OPEN4_CREATE)
     res = sess.compound( open_op + 
@@ -142,8 +141,7 @@ def testOpenSetattr(t, env):
     CODE: CSID8
     """
     size = 8
-    sess = env.c1.new_client_session(env.testname(t),
-                                        flags=EXCHGID4_FLAG_USE_PNFS_MDS)
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
 
     open_op = open_create_file_op(sess, env.testname(t), open_create=OPEN4_CREATE)
     res = sess.compound( open_op +
diff --git a/nfs4.1/server41tests/st_debug.py b/nfs4.1/server41tests/st_debug.py
index efef6b5..233ca54 100644
--- a/nfs4.1/server41tests/st_debug.py
+++ b/nfs4.1/server41tests/st_debug.py
@@ -94,11 +94,7 @@ def testLayout(t, env):
     FLAGS: layout all
     CODE: LAYOUT1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
@@ -126,11 +122,7 @@ def testGetDevList(t, env):
     FLAGS: layout all
     CODE: LAYOUT2
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
diff --git a/nfs4.1/server41tests/st_getdevicelist.py b/nfs4.1/server41tests/st_getdevicelist.py
index 2765be8..b181020 100644
--- a/nfs4.1/server41tests/st_getdevicelist.py
+++ b/nfs4.1/server41tests/st_getdevicelist.py
@@ -14,11 +14,7 @@ def testGetDevList(t, env):
     FLAGS: pnfs
     CODE: GETDLIST1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server did not set EXCHGID4_FLAG_USE_PNFS_MDS")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
@@ -41,11 +37,7 @@ def testGetDevInfo(t, env):
     DEPEND: GETDLIST1
     CODE: GETDINFO1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server did not set EXCHGID4_FLAG_USE_PNFS_MDS")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
@@ -77,11 +69,7 @@ def testGetDevInfo(t, env):
 ##     FLAGS: pnfs
 ##     CODE: GETLAYOUT1
 ##     """
-##     # Make sure E_ID returns MDS capabilities
-##     c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-##     if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-##         fail("Server can not be used as pnfs metadata server")
-##     sess = c1.create_session()
+##     sess = env.c1.new_pnfs_client_session(env.testname(t))
 ##     # Test that fs handles block layouts
 ##     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
 ##     res = sess.compound(ops)
@@ -109,11 +97,7 @@ def testGetLayout(t, env):
     FLAGS: pnfs
     CODE: GETLAYOUT1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
@@ -150,11 +134,7 @@ def testEMCGetLayout(t, env):
     FLAGS: 
     CODE: GETLAYOUT100
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES)]
     res = sess.compound(ops)
@@ -192,11 +172,7 @@ def testLayoutReturnFile(t, env):
     DEPEND: GETLAYOUT1
     CODE: LAYOUTRET1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Create the file
     res = create_file(sess, env.testname(t))
     check(res)
@@ -225,11 +201,7 @@ def testLayoutReturnFsid(t, env):
     DEPEND: GETLAYOUT1
     CODE: LAYOUTRET2
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     print sess.c.homedir
     # Create the file
     res = create_file(sess, env.testname(t))
@@ -257,11 +229,7 @@ def testLayoutReturnAll(t, env):
     DEPEND: GETLAYOUT1
     CODE: LAYOUTRET3
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     print sess.c.homedir
     # Create the file
     res = create_file(sess, env.testname(t))
@@ -287,11 +255,7 @@ def testLayoutCommit(t, env):
     FLAGS: pnfs
     CODE: LAYOUTCOMMIT1
     """
-    # Make sure E_ID returns MDS capabilities
-    c1 = env.c1.new_client(env.testname(t), flags=EXCHGID4_FLAG_USE_PNFS_MDS)
-    if not c1.flags & EXCHGID4_FLAG_USE_PNFS_MDS:
-        fail("Server can not be used as pnfs metadata server")
-    sess = c1.create_session()
+    sess = env.c1.new_pnfs_client_session(env.testname(t))
     # Test that fs handles block layouts
     ops = use_obj(env.opts.path) + [op.getattr(1<<FATTR4_FS_LAYOUT_TYPES |
                                                1<<FATTR4_LAYOUT_BLKSIZE)]
