[PVFS2-CVS] commit by neill in pvfs2/src/server: flush.sm get-attr.sm io.sm

CVS commit program cvs at parl.clemson.edu
Fri Sep 17 18:15:44 EDT 2004


Update of /projects/cvsroot/pvfs2/src/server
In directory parlweb:/tmp/cvs-serv2993/src/server

Modified Files:
	flush.sm get-attr.sm io.sm 
Log Message:
- fixed trove error codes (yet another pass; this time things look
  sane)
- give trove flush and resize operations the ability to create the
  bstream they're working with if it doesn't exist instead of
  returning an error (easily triggerred on multiple servers if a small
  amount of data is written, followed by a sync -- bstreams that
  weren't yet created fail, causing the call to fail as a whole);
  pointed out by RobL
- fixed bug in (threaded) trove that did not properly reinitialize
  condition variables after the first finalize
- improvements to the storage space and collection removal code
  (rmspace)
- extensive trove cleanups and cruft removal
- check for error codes when doing server side getattr and reading
  metafile information; stop processing if an error is reached.
  pointed out by RobL
- invalidate attr cache on write_at calls (never used)
- changed pvfs2-showcoll coll_id prints from hex to decimal


Index: flush.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/server/flush.sm,v
diff -p -u -r1.14 -r1.15
--- flush.sm	16 Sep 2004 21:00:51 -0000	1.14
+++ flush.sm	17 Sep 2004 21:15:44 -0000	1.15
@@ -134,8 +134,8 @@ static int flush_check_type(PINT_server_
  */
 static int flush_keyval_flush(PINT_server_op *s_op, job_status_s *js_p)
 {
-    int ret = - 1;
-    job_id_t i;
+    int ret = -1;
+    job_id_t tmp_id;
 
     PINT_STATE_DEBUG("kflush");
 
@@ -149,7 +149,7 @@ static int flush_keyval_flush(PINT_serve
         s_op,
         0,
         js_p,
-        &i,
+        &tmp_id,
         server_job_context);
 
     return ret;

Index: get-attr.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/server/get-attr.sm,v
diff -p -u -r1.63 -r1.64
--- get-attr.sm	8 Sep 2004 18:51:30 -0000	1.63
+++ get-attr.sm	17 Sep 2004 21:15:44 -0000	1.64
@@ -99,7 +99,8 @@ nested machine pvfs2_get_attr_work_sm(
     state read_metafile_datafile_handles_if_required
     {
         run getattr_read_metafile_datafile_handles_if_required;
-        default => read_metafile_distribution_if_required;
+        success => read_metafile_distribution_if_required;
+        default => setup_resp;
     }
 
     state read_metafile_distribution_if_required
@@ -359,21 +360,13 @@ static int getattr_read_symlink_target(
 	return(1);
     }
 
-    s_op->val.buffer    = s_op->resp.u.getattr.attr.u.sym.target_path;
+    s_op->val.buffer = s_op->resp.u.getattr.attr.u.sym.target_path;
     s_op->val.buffer_sz = s_op->resp.u.getattr.attr.u.sym.target_path_len;
 
     ret = job_trove_keyval_read(
-        s_op->u.getattr.fs_id,
-        s_op->u.getattr.handle,
-        &(s_op->key),
-        &(s_op->val),
-        0,
-        NULL,
-        s_op,
-        0,
-        js_p,
-        &i,
-        server_job_context);
+        s_op->u.getattr.fs_id, s_op->u.getattr.handle,
+        &(s_op->key), &(s_op->val), 0, NULL, s_op, 0, js_p,
+        &i, server_job_context);
 
     return ret;
 }
@@ -382,8 +375,8 @@ static int getattr_read_symlink_target(
 static int getattr_read_metafile_datafile_handles_if_required(
     PINT_server_op *s_op, job_status_s* js_p)
 {
-    int dfile_count;
-    int ret;
+    int ret = -PVFS_EINVAL;
+    int dfile_count = 0;
     job_id_t i;
 
     PINT_STATE_DEBUG("read_metafile_datafile_handles_if_required");
@@ -411,28 +404,29 @@ static int getattr_read_metafile_datafil
     {
         gossip_err("The requested dfile count of %d is invalid; "
                    "aborting operation.\n", dfile_count);
-	gossip_err( "+ attrs read from dspace: (owner = %d, group = %d, "
-		     "perms = %o, type = %d\n   atime = %Ld, mtime = %Ld, "
-		     "ctime = %Ld |\n   dfile_count = %d | dist_size = %d)\n",
-		     s_op->resp.u.getattr.attr.owner,
-		     s_op->resp.u.getattr.attr.group, 
-		     s_op->resp.u.getattr.attr.perms,
-		     s_op->resp.u.getattr.attr.objtype, 
-		     Ld(s_op->resp.u.getattr.attr.atime),
-		     Ld(s_op->resp.u.getattr.attr.mtime), 
-		     Ld(s_op->resp.u.getattr.attr.ctime),
-		     (int)s_op->resp.u.getattr.attr.u.meta.dfile_count,
-		     (int)s_op->resp.u.getattr.attr.u.meta.dist_size);
+	gossip_err(
+            "+ attrs read from dspace: (owner = %d, group = %d, "
+            "perms = %o, type = %d\n   atime = %Ld, mtime = %Ld, "
+            "ctime = %Ld |\n   dfile_count = %d | dist_size = %d)\n",
+            s_op->resp.u.getattr.attr.owner,
+            s_op->resp.u.getattr.attr.group, 
+            s_op->resp.u.getattr.attr.perms,
+            s_op->resp.u.getattr.attr.objtype, 
+            Ld(s_op->resp.u.getattr.attr.atime),
+            Ld(s_op->resp.u.getattr.attr.mtime), 
+            Ld(s_op->resp.u.getattr.attr.ctime),
+            (int)s_op->resp.u.getattr.attr.u.meta.dfile_count,
+            (int)s_op->resp.u.getattr.attr.u.meta.dist_size);
+
 	gossip_err("handle: %Lu (%Lx), fsid: %d.\n",
-	    Lu(s_op->u.getattr.handle),
-	    Lu(s_op->u.getattr.handle),
+	    Lu(s_op->u.getattr.handle), Lu(s_op->u.getattr.handle),
 	    (int)s_op->u.getattr.fs_id);
 
 	js_p->error_code = -PVFS_EOVERFLOW;
 	return 1;
     }
 
-    s_op->key.buffer    = Trove_Common_Keys[METAFILE_HANDLES_KEY].key;
+    s_op->key.buffer = Trove_Common_Keys[METAFILE_HANDLES_KEY].key;
     s_op->key.buffer_sz = Trove_Common_Keys[METAFILE_HANDLES_KEY].size;
 
     /* add mask value to indicate the data file array is filled */
@@ -448,32 +442,21 @@ static int getattr_read_metafile_datafil
 	return 1;
     }
 
-    s_op->val.buffer    = s_op->resp.u.getattr.attr.u.meta.dfile_array;
+    s_op->val.buffer = s_op->resp.u.getattr.attr.u.meta.dfile_array;
     s_op->val.buffer_sz = (dfile_count * sizeof(PVFS_handle));
 
     gossip_debug(GOSSIP_GETATTR_DEBUG,
 		 "  reading %d datafile handles (coll_id = %d, "
                  "handle = %Lu, key = %s (%d), val_buf = %p (%d))\n",
-		 dfile_count,
-		 s_op->u.getattr.fs_id,
-		 Lu(s_op->u.getattr.handle),
-		 (char *) s_op->key.buffer,
-		 s_op->key.buffer_sz,
-		 s_op->val.buffer,
+		 dfile_count, s_op->u.getattr.fs_id,
+		 Lu(s_op->u.getattr.handle), (char *)s_op->key.buffer,
+		 s_op->key.buffer_sz, s_op->val.buffer,
 		 s_op->val.buffer_sz);
 
     ret = job_trove_keyval_read(
-        s_op->u.getattr.fs_id,
-        s_op->u.getattr.handle,
-        &s_op->key,
-        &s_op->val,
-        0,
-        NULL,
-        s_op,
-        0,
-        js_p,
-        &i,
-        server_job_context);
+        s_op->u.getattr.fs_id, s_op->u.getattr.handle,
+        &s_op->key, &s_op->val, 0, NULL, s_op, 0, js_p,
+        &i, server_job_context);
 
     return ret;
 }
@@ -481,7 +464,7 @@ static int getattr_read_metafile_datafil
 static int getattr_read_metafile_distribution_if_required(
     PINT_server_op *s_op, job_status_s* js_p)
 {
-    int ret;
+    int ret = -PVFS_EINVAL;
     job_id_t i;
 
     PINT_STATE_DEBUG("read_metafile_distribution_if_required");
@@ -498,7 +481,7 @@ static int getattr_read_metafile_distrib
         return 1;
     }
 
-    s_op->key.buffer    = Trove_Common_Keys[METAFILE_DIST_KEY].key;
+    s_op->key.buffer = Trove_Common_Keys[METAFILE_DIST_KEY].key;
     s_op->key.buffer_sz = Trove_Common_Keys[METAFILE_DIST_KEY].size;
 
     /*
@@ -511,6 +494,8 @@ static int getattr_read_metafile_distrib
         gossip_err("Cannot Read Dist!  Got an invalid dist size for "
                    "handle %Lu,%d\n",Lu(s_op->u.getattr.handle),
                    s_op->u.getattr.fs_id);
+        js_p->error_code = -PVFS_EINVAL;
+        return 1;
     }
     assert(s_op->resp.u.getattr.attr.u.meta.dist_size > 0);
 
@@ -519,7 +504,7 @@ static int getattr_read_metafile_distrib
 
     s_op->resp.u.getattr.attr.u.meta.dist =
 	malloc(s_op->resp.u.getattr.attr.u.meta.dist_size);
-    if(!s_op->resp.u.getattr.attr.u.meta.dist)
+    if (!s_op->resp.u.getattr.attr.u.meta.dist)
     {
         gossip_err("Cannot allocate dist of size %d\n",
                    s_op->resp.u.getattr.attr.u.meta.dist_size);
@@ -527,21 +512,13 @@ static int getattr_read_metafile_distrib
 	return 1;
     }
 
-    s_op->val.buffer    = s_op->resp.u.getattr.attr.u.meta.dist;
+    s_op->val.buffer = s_op->resp.u.getattr.attr.u.meta.dist;
     s_op->val.buffer_sz = s_op->resp.u.getattr.attr.u.meta.dist_size;
 
     ret = job_trove_keyval_read(
-        s_op->u.getattr.fs_id,
-        s_op->u.getattr.handle,
-        &(s_op->key),
-        &(s_op->val),
-        0,
-        NULL,
-        s_op,
-        0,
-        js_p,
-        &i,
-        server_job_context);
+        s_op->u.getattr.fs_id, s_op->u.getattr.handle,
+        &(s_op->key), &(s_op->val), 0, NULL,
+        s_op, 0, js_p, &i, server_job_context);
 
     return ret;
 }
@@ -553,7 +530,7 @@ static int getattr_setup_resp(PINT_serve
     PINT_STATE_DEBUG("setup_resp");
 
     resp_attr = &s_op->resp.u.getattr.attr;
-    
+
     gossip_debug(GOSSIP_GETATTR_DEBUG,
                  "- returning retrieved attrs: (owner = %d, group = %d, "
                  "perms = %o, type = %d\n  atime = %Ld, mtime = %Ld, "

Index: io.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/server/io.sm,v
diff -p -u -r1.52 -r1.53
--- io.sm	18 Aug 2004 14:23:21 -0000	1.52
+++ io.sm	17 Sep 2004 21:15:44 -0000	1.53
@@ -302,18 +302,18 @@ static int io_cleanup(PINT_server_op *s_
         PINT_flow_free(s_op->u.io.flow_d);
     }
 
-    /* let go of our encoded response buffer, 
-     * if we appear to have made one 
+    /* let go of our encoded response buffer, if we appear to have
+     * made one
      */
     if (s_op->encoded.total_size)
     {
         PINT_encode_release(&s_op->encoded, PINT_ENCODE_RESP);
     }
 
-    /* decrement reference count for this bmi address */
-    /* NOTE: this would happen in final_response nested state machine for
-     * most operations, but io.sm is the one state machine which does not
-     * use final_response
+    /* NOTE: this would happen in final_response nested state machine
+     * for most operations, but io.sm is the one state machine which
+     * does not use final_response -- decrement reference count for
+     * this bmi address
      */
     BMI_set_info(s_op->addr, BMI_DEC_ADDR_REF, NULL);
 



More information about the PVFS2-CVS mailing list