[PVFS2-CVS]
commit by neill in pvfs2/src/client/sysint: client-state-machine.h
sys-create.sm sys-mkdir.sm sys-setattr.sm sys-symlink.sm
CVS commit program
cvs at parl.clemson.edu
Fri May 21 15:52:07 EDT 2004
Update of /projects/cvsroot/pvfs2/src/client/sysint
In directory parlweb:/tmp/cvs-serv16386/src/client/sysint
Modified Files:
client-state-machine.h sys-create.sm sys-mkdir.sm
sys-setattr.sm sys-symlink.sm
Log Message:
- for non-blocking the passed in sys_attr structures need to be copied
to avoid stack corruption/bunk values (similar to credential problem;
there are probably more instances just like this, and they'll be fixed
as they come)
Index: client-state-machine.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/client-state-machine.h,v
diff -p -u -r1.112 -r1.113
--- client-state-machine.h 21 May 2004 17:22:37 -0000 1.112
+++ client-state-machine.h 21 May 2004 18:52:06 -0000 1.113
@@ -97,7 +97,8 @@ typedef struct PINT_client_sm_msgpair_st
* This is used for extra receives, such as acknowledgements from
* servers at the end of write operations.
*/
-typedef struct PINT_client_sm_recv_state_s {
+typedef struct PINT_client_sm_recv_state_s
+{
int max_resp_sz;
void *encoded_resp_p;
job_id_t recv_id;
@@ -106,17 +107,18 @@ typedef struct PINT_client_sm_recv_state
} PINT_client_sm_recv_state;
/* PINT_client_remove_sm */
-struct PINT_client_remove_sm {
- char *object_name; /* input parameter */
- int stored_error_code;
- int retry_count;
+struct PINT_client_remove_sm
+{
+ char *object_name; /* input parameter */
+ int stored_error_code;
+ int retry_count;
};
/* PINT_client_create_sm */
struct PINT_client_create_sm {
char *object_name; /* input parameter */
PVFS_sysresp_create *create_resp; /* in/out parameter*/
- PVFS_sys_attr *sys_attr; /* input parameter */
+ PVFS_sys_attr sys_attr; /* input parameter */
int num_data_files;
PVFS_BMI_addr_t *data_server_addrs;
PVFS_handle_extent_array *io_handle_extent_array;
@@ -131,7 +133,7 @@ struct PINT_client_create_sm {
struct PINT_client_mkdir_sm {
char *object_name; /* input parameter */
PVFS_sysresp_mkdir *mkdir_resp; /* in/out parameter */
- PVFS_sys_attr *sys_attr; /* input parameter */
+ PVFS_sys_attr sys_attr; /* input parameter */
PVFS_handle metafile_handle;
int stored_error_code;
int retry_count;
@@ -143,7 +145,7 @@ struct PINT_client_symlink_sm {
char *link_name; /* input parameter */
char *link_target; /* input parameter */
PVFS_sysresp_symlink *sym_resp; /* in/out parameter*/
- PVFS_sys_attr *sys_attr; /* input parameter */
+ PVFS_sys_attr sys_attr; /* input parameter */
PVFS_handle symlink_handle;
int stored_error_code;
int retry_count;
@@ -162,9 +164,10 @@ struct PINT_client_getattr_sm {
};
/* PINT_client_setattr_sm */
-struct PINT_client_setattr_sm {
- PVFS_object_ref refn; /* input parameter */
- PVFS_sys_attr *sys_attr; /* input parameter */
+struct PINT_client_setattr_sm
+{
+ PVFS_object_ref refn; /* input parameter */
+ PVFS_sys_attr sys_attr; /* input parameter */
};
/* PINT_client_io_sm
Index: sys-create.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/sys-create.sm,v
diff -p -u -r1.43 -r1.44
--- sys-create.sm 21 May 2004 17:22:38 -0000 1.43
+++ sys-create.sm 21 May 2004 18:52:06 -0000 1.44
@@ -265,7 +265,7 @@ int PVFS_isys_create(
sm_p->u.create.object_name = object_name;
sm_p->parent_ref = parent_ref;
sm_p->u.create.create_resp = resp;
- sm_p->u.create.sys_attr = &attr;
+ PVFS_util_copy_sys_attr(&sm_p->u.create.sys_attr, &attr);
sm_p->u.create.stored_error_code = 0;
sm_p->u.create.retry_count = 0;
@@ -685,25 +685,19 @@ static int create_setattr_setup_msgpair(
msg_p = &sm_p->msgpair;
memset(msg_p, 0, sizeof(PINT_client_sm_msgpair_state));
-
sm_p->msgarray = msg_p;
sm_p->msgarray_count = 1;
- /*
- if (sm_p->u.create.dist == NULL)
- {
- sm_p->u.create.dist = PVFS_Dist_create("simple_stripe");
- assert(sm_p->u.create.dist);
- }
- */
-
+ gossip_err("SETATTR WILL SET UID=%d, GID=%d\n",
+ sm_p->cred_p->uid, sm_p->cred_p->gid);
+
PINT_SERVREQ_SETATTR_FILL(
msg_p->req,
*sm_p->cred_p,
sm_p->parent_ref.fs_id,
sm_p->u.create.metafile_handle,
PVFS_TYPE_METAFILE,
- *sm_p->u.create.sys_attr,
+ sm_p->u.create.sys_attr,
(PVFS_ATTR_COMMON_TYPE | PVFS_ATTR_META_ALL));
/* fill in meta file specific attributes */
@@ -729,9 +723,10 @@ static int create_setattr_setup_msgpair(
js_p->error_code = ret;
}
- if (sm_p->msgarray != &(sm_p->msgpair))
+ if (sm_p->msgarray && (sm_p->msgarray != &(sm_p->msgpair)))
{
- free(sm_p->msgarray);
+ free(sm_p->msgarray);
+ sm_p->msgarray = NULL;
}
return 1;
}
@@ -923,6 +918,8 @@ static int create_cleanup(PINT_client_sm
job_status_s *js_p)
{
PVFS_object_ref metafile_ref;
+
+ PVFS_util_release_sys_attr(&sm_p->u.create.sys_attr);
gossip_debug(GOSSIP_CLIENT_DEBUG, "create state: cleanup\n");
Index: sys-mkdir.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/sys-mkdir.sm,v
diff -p -u -r1.23 -r1.24
--- sys-mkdir.sm 21 May 2004 17:22:38 -0000 1.23
+++ sys-mkdir.sm 21 May 2004 18:52:06 -0000 1.24
@@ -194,7 +194,7 @@ int PVFS_isys_mkdir(
PINT_init_sysint_credentials(sm_p->cred_p, credentials);
sm_p->u.mkdir.object_name = object_name;
sm_p->parent_ref = parent_ref;
- sm_p->u.mkdir.sys_attr = &attr;
+ PVFS_util_copy_sys_attr(&sm_p->u.mkdir.sys_attr, &attr);
sm_p->u.mkdir.mkdir_resp = resp;
sm_p->u.mkdir.stored_error_code = 0;
@@ -357,7 +357,7 @@ static int mkdir_msg_setup_msgpair(PINT_
*sm_p->cred_p,
sm_p->parent_ref.fs_id,
meta_handle_extent_array,
- *sm_p->u.mkdir.sys_attr,
+ sm_p->u.mkdir.sys_attr,
PVFS_ATTR_SYS_ALL_NOSIZE);
/* fill in msgpair structure components */
@@ -491,6 +491,8 @@ static int mkdir_cleanup(PINT_client_sm
job_status_s *js_p)
{
gossip_debug(GOSSIP_CLIENT_DEBUG, "mkdir state: cleanup\n");
+
+ PVFS_util_release_sys_attr(&sm_p->u.mkdir.sys_attr);
sm_p->error_code = (sm_p->u.mkdir.stored_error_code ?
sm_p->u.mkdir.stored_error_code :
Index: sys-setattr.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/sys-setattr.sm,v
diff -p -u -r1.16 -r1.17
--- sys-setattr.sm 21 May 2004 17:22:38 -0000 1.16
+++ sys-setattr.sm 21 May 2004 18:52:07 -0000 1.17
@@ -131,7 +131,7 @@ int PVFS_isys_setattr(
PINT_init_sysint_credentials(sm_p->cred_p, credentials);
sm_p->object_ref = ref;
sm_p->u.setattr.refn = ref;
- sm_p->u.setattr.sys_attr = &attr;
+ PVFS_util_copy_sys_attr(&sm_p->u.setattr.sys_attr, &attr);
gossip_debug(GOSSIP_CLIENT_DEBUG, "Doing setattr on handle %Lu "
"on fs %d\n", Lu(ref.handle),
@@ -232,7 +232,7 @@ static int setattr_msg_setup_msgpair(PIN
sm_p->u.setattr.refn.fs_id,
sm_p->u.setattr.refn.handle,
attr->objtype,
- *sm_p->u.setattr.sys_attr,
+ sm_p->u.setattr.sys_attr,
PVFS_ATTR_COMMON_TYPE);
if (attr->objtype == PVFS_TYPE_METAFILE)
@@ -290,6 +290,8 @@ static int setattr_cleanup(PINT_client_s
job_status_s *js_p)
{
gossip_debug(GOSSIP_CLIENT_DEBUG, "setattr state: cleanup\n");
+
+ PVFS_util_release_sys_attr(&sm_p->u.setattr.sys_attr);
sm_p->error_code = js_p->error_code;
Index: sys-symlink.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/client/sysint/sys-symlink.sm,v
diff -p -u -r1.28 -r1.29
--- sys-symlink.sm 21 May 2004 17:22:38 -0000 1.28
+++ sys-symlink.sm 21 May 2004 18:52:07 -0000 1.29
@@ -227,7 +227,7 @@ int PVFS_isys_symlink(
sm_p->u.sym.link_target = target;
sm_p->parent_ref = parent_ref;
sm_p->u.sym.sym_resp = resp;
- sm_p->u.sym.sys_attr = &attr;
+ PVFS_util_copy_sys_attr(&sm_p->u.sym.sys_attr, &attr);
sm_p->u.sym.stored_error_code = 0;
sm_p->u.sym.retry_count = 0;
@@ -519,7 +519,7 @@ static int symlink_setattr_setup_msgpair
sm_p->parent_ref.fs_id,
sm_p->u.sym.symlink_handle,
PVFS_TYPE_SYMLINK,
- *sm_p->u.sym.sys_attr,
+ sm_p->u.sym.sys_attr,
(PVFS_ATTR_COMMON_TYPE | PVFS_ATTR_SYMLNK_ALL));
/* fill in symlink specific attributes */
@@ -612,6 +612,8 @@ static int symlink_cleanup(PINT_client_s
PVFS_object_ref symlink_ref;
gossip_debug(GOSSIP_CLIENT_DEBUG, "symlink state: cleanup\n");
+
+ PVFS_util_release_sys_attr(&sm_p->u.sym.sys_attr);
sm_p->error_code = (sm_p->u.sym.stored_error_code ?
sm_p->u.sym.stored_error_code :
More information about the PVFS2-CVS
mailing list