[Pvfs2-cvs] commit by shuangy in pvfs2/src/client/sysint: sys-readdir.sm

CVS commit program cvs at parl.clemson.edu
Thu Sep 23 19:13:15 EDT 2010


Update of /projects/cvsroot/pvfs2/src/client/sysint
In directory parlweb1:/tmp/cvs-serv22531/src/client/sysint

Modified Files:
      Tag: Orange-Elaine-Distr-Dir-Branch
	sys-readdir.sm 
Log Message:
make readdirplus work.


Index: sys-readdir.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/sys-readdir.sm,v
diff -p -u -r1.54.36.6 -r1.54.36.7
--- sys-readdir.sm	23 Sep 2010 21:21:15 -0000	1.54.36.6
+++ sys-readdir.sm	23 Sep 2010 23:13:15 -0000	1.54.36.7
@@ -115,7 +115,6 @@ PVFS_error PVFS_isys_readdir(
     PVFS_error ret = -PVFS_EINVAL;
     PINT_smcb *smcb = NULL;
     PINT_client_sm *sm_p = NULL;
-    int dirdata_index = 0;
 
     gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_isys_readdir entered\n");
 
@@ -160,29 +159,9 @@ PVFS_error PVFS_isys_readdir(
 
     sm_p->readdir.pos_token = sm_p->u.readdir.pos_token = token;
     sm_p->readdir.dirent_limit = sm_p->u.readdir.dirent_limit = pvfs_dirent_incount;
-    *(sm_p->readdir.dirent_outcount) = 0;
-
-    if(token != PVFS_READDIR_START) /* get dirdata_index from rcache */
-    {
-        ret = PINT_rcache_get_cached_index(&ref, token, &dirdata_index);
-        if(ret < 0)
-        {
-            gossip_err("invalid readdir cache content!! \n");
-            return ret;
-        }
-        gossip_debug(GOSSIP_READDIR_DEBUG, 
-                "*** get cached index from rcache, "
-                "[handle %llu, token %llu, dirdata_index %d]\n",
-                llu(ref.handle),
-                llu(token),
-                dirdata_index);
-    }
-
-    sm_p->readdir.dirdata_index = sm_p->u.readdir.dirdata_index = dirdata_index;
 
     gossip_debug(GOSSIP_READDIR_DEBUG, "Doing readdir on handle "
-                 "%llu on fs %d, dirdata #%d\n", llu(ref.handle), 
-                 ref.fs_id, dirdata_index);
+                 "%llu on fs %d\n", llu(ref.handle), ref.fs_id);
 
     return PINT_client_state_machine_post(
         smcb,  op_id, user_ptr);
@@ -235,7 +214,37 @@ static PINT_sm_action readdir_init(
         struct PINT_smcb *smcb, job_status_s *js_p)
 {
     struct PINT_client_sm *sm_p = PINT_sm_frame(smcb, PINT_FRAME_CURRENT);
+    int dirdata_index = 0;
+    int ret = -1;
+
     gossip_debug(GOSSIP_CLIENT_DEBUG, "readdir state: init\n");
+
+    *(sm_p->readdir.dirent_outcount) = 0;
+
+    if(sm_p->readdir.pos_token != PVFS_READDIR_START) /* get dirdata_index from rcache */
+    {
+        ret = PINT_rcache_get_cached_index(&sm_p->object_ref, 
+                sm_p->readdir.pos_token, &dirdata_index);
+        if(ret < 0)
+        {
+            gossip_err("invalid readdir cache content!! \n");
+            return ret;
+        }
+        gossip_debug(GOSSIP_READDIR_DEBUG, 
+                "*** get cached index from rcache, "
+                "[handle %llu, token %llu, dirdata_index %d]\n",
+                llu(sm_p->object_ref.handle),
+                llu(sm_p->readdir.pos_token),
+                dirdata_index);
+    }
+    else
+    {
+        gossip_debug(GOSSIP_READDIR_DEBUG, 
+                "*** token=PVFS_READDIR_START, use dirdata_index=0\n");
+
+    }
+
+    sm_p->readdir.dirdata_index = sm_p->u.readdir.dirdata_index = dirdata_index;
 
     PINT_SM_GETATTR_STATE_FILL(
         sm_p->getattr,



More information about the Pvfs2-cvs mailing list