[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