[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