[PVFS2-CVS] commit by walt in pvfs2-1/src/client/sysint: client-state-machine.c client-state-machine.h module.mk.in sys-get-eattr.sm sys-set-eattr.sm

CVS commit program cvs at parl.clemson.edu
Tue Jul 19 17:11:59 EDT 2005


Update of /projects/cvsroot/pvfs2-1/src/client/sysint
In directory parlweb:/tmp/cvs-serv2118/src/client/sysint

Modified Files:
      Tag: WALT2
	client-state-machine.c client-state-machine.h module.mk.in 
	sys-get-eattr.sm sys-set-eattr.sm 
Log Message:
cleanup for extended attribute stuff.  removed non-list server ops
in favor of list type and renamed list type.  cleaned up a few items in
request debug programs.


Index: client-state-machine.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/client/sysint/client-state-machine.c,v
diff -p -u -r1.69.10.2 -r1.69.10.3
--- client-state-machine.c	17 Jul 2005 22:56:57 -0000	1.69.10.2
+++ client-state-machine.c	19 Jul 2005 20:11:58 -0000	1.69.10.3
@@ -329,18 +329,10 @@ PVFS_error PINT_client_state_machine_pos
 	    sm_p->current_state =
                 (pvfs2_client_get_eattr_sm.state_machine + 1);
 	    break;
-	case PVFS_SYS_GETEATTR_LIST:
-	    sm_p->current_state =
-                (pvfs2_client_get_eattr_list_sm.state_machine + 1);
-	    break;
 	case PVFS_SYS_SETEATTR:
 	    sm_p->current_state =
                 (pvfs2_client_set_eattr_sm.state_machine + 1);
 	    break;
-	case PVFS_SYS_SETEATTR_LIST:
-	    sm_p->current_state =
-                (pvfs2_client_set_eattr_list_sm.state_machine + 1);
-	    break;
 	case PVFS_SYS_DELEATTR:
 	    sm_p->current_state =
                 (pvfs2_client_del_eattr_sm.state_machine + 1);
@@ -871,9 +863,7 @@ char *PINT_client_get_name_str(int op_ty
         { PVFS_MGMT_GET_DIRDATA_HANDLE,
           "PVFS_MGMT_GET_DIRDATA_HANDLE" },
         { PVFS_SYS_GETEATTR, "PVFS_SYS_GETEATTR" },
-        { PVFS_SYS_GETEATTR_LIST, "PVFS_SYS_GETEATTR_LIST" },
         { PVFS_SYS_SETEATTR, "PVFS_SYS_SETEATTR" },
-        { PVFS_SYS_SETEATTR_LIST, "PVFS_SYS_SETEATTR_LIST" },
         { PVFS_SYS_DELEATTR, "PVFS_SYS_DELEATTR" },
         { PVFS_SERVER_GET_CONFIG, "PVFS_SERVER_GET_CONFIG" },
         { PVFS_CLIENT_JOB_TIMER, "PVFS_CLIENT_JOB_TIMER" },

Index: client-state-machine.h
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/client/sysint/client-state-machine.h,v
diff -p -u -r1.140.10.2 -r1.140.10.3
--- client-state-machine.h	17 Jul 2005 22:56:57 -0000	1.140.10.2
+++ client-state-machine.h	19 Jul 2005 20:11:58 -0000	1.140.10.3
@@ -359,26 +359,14 @@ struct PINT_server_get_config_sm
 
 struct PINT_client_geteattr_sm
 {
-    PVFS_ds_keyval *key_p;
-    PVFS_sysresp_geteattr *resp_p;
-};
-
-struct PINT_client_geteattr_list_sm
-{
     int32_t nkey;
     PVFS_ds_keyval *key_array;
     PVFS_size *size_array;
-    PVFS_sysresp_geteattr_list *resp_p;
+    PVFS_sysresp_geteattr *resp_p;
 };
 
 struct PINT_client_seteattr_sm
 {
-    PVFS_ds_keyval *key_p;
-    PVFS_ds_keyval *val_p;
-};
-
-struct PINT_client_seteattr_list_sm
-{
     int32_t nkey;
     PVFS_ds_keyval *key_array;
     PVFS_ds_keyval *val_array;
@@ -485,9 +473,7 @@ typedef struct PINT_client_sm
         struct PINT_client_mgmt_get_dirdata_handle_sm mgmt_get_dirdata_handle;
 	struct PINT_server_get_config_sm get_config;
 	struct PINT_client_geteattr_sm geteattr;
-	struct PINT_client_geteattr_list_sm geteattr_list;
 	struct PINT_client_seteattr_sm seteattr;
-	struct PINT_client_seteattr_list_sm seteattr_list;
 	struct PINT_client_deleattr_sm deleattr;
     } u;
 } PINT_client_sm;
@@ -570,10 +556,8 @@ enum
     PVFS_SYS_LOOKUP                = 11,
     PVFS_SYS_RENAME                = 12,
     PVFS_SYS_GETEATTR              = 13,
-    PVFS_SYS_GETEATTR_LIST         = 14,
-    PVFS_SYS_SETEATTR              = 15,
-    PVFS_SYS_SETEATTR_LIST         = 16,
-    PVFS_SYS_DELEATTR              = 17,
+    PVFS_SYS_SETEATTR              = 14,
+    PVFS_SYS_DELEATTR              = 15,
     PVFS_MGMT_SETPARAM_LIST        = 70,
     PVFS_MGMT_NOOP                 = 71,
     PVFS_MGMT_STATFS_LIST          = 72,
@@ -688,9 +672,7 @@ extern struct PINT_state_machine_s pvfs2
 extern struct PINT_state_machine_s pvfs2_client_mgmt_create_dirent_sm;
 extern struct PINT_state_machine_s pvfs2_client_mgmt_get_dirdata_handle_sm;
 extern struct PINT_state_machine_s pvfs2_client_get_eattr_sm;
-extern struct PINT_state_machine_s pvfs2_client_get_eattr_list_sm;
 extern struct PINT_state_machine_s pvfs2_client_set_eattr_sm;
-extern struct PINT_state_machine_s pvfs2_client_set_eattr_list_sm;
 extern struct PINT_state_machine_s pvfs2_client_del_eattr_sm;
 
 

Index: module.mk.in
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/client/sysint/module.mk.in,v
diff -p -u -r1.75.12.2 -r1.75.12.3
--- module.mk.in	17 Jul 2005 22:56:57 -0000	1.75.12.2
+++ module.mk.in	19 Jul 2005 20:11:58 -0000	1.75.12.3
@@ -22,9 +22,7 @@ CLIENT_SMCGEN := \
 	$(DIR)/sys-getattr.c \
 	$(DIR)/sys-setattr.c \
 	$(DIR)/sys-get-eattr.c \
-	$(DIR)/sys-get-eattr-list.c \
 	$(DIR)/sys-set-eattr.c \
-	$(DIR)/sys-set-eattr-list.c \
 	$(DIR)/sys-del-eattr.c \
    $(DIR)/sys-lookup.c \
 	$(DIR)/sys-truncate.c \

Index: sys-get-eattr.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/client/sysint/sys-get-eattr.sm,v
diff -p -u -r1.1 -r1.1.2.1
--- sys-get-eattr.sm	16 Jun 2005 23:44:49 -0000	1.1
+++ sys-get-eattr.sm	19 Jul 2005 20:11:58 -0000	1.1.2.1
@@ -26,8 +26,6 @@ static int get_eattr_setup_msgpair(
     PINT_client_sm *sm_p, job_status_s *js_p);
 static int get_eattr_cleanup(
     PINT_client_sm *sm_p, job_status_s *js_p);
-static int get_eattr_cleanup(
-    PINT_client_sm *sm_p, job_status_s *js_p);
 static int get_eattr_comp_fn(
     void *v_p, struct PVFS_server_resp *resp_p, int i);
 
@@ -60,10 +58,11 @@ machine pvfs2_client_get_eattr_sm(
 
 %%
 
-PVFS_error PVFS_isys_geteattr(
+PVFS_error PVFS_isys_geteattr_list(
         PVFS_object_ref ref,
         PVFS_credentials *credentials,
-        PVFS_ds_keyval *key_p,
+        int32_t nkey,
+        PVFS_ds_keyval *key_array,
         PVFS_sysresp_geteattr *resp_p,
         PVFS_sys_op_id *op_id,
         void *user_ptr)
@@ -72,7 +71,7 @@ PVFS_error PVFS_isys_geteattr(
     PINT_client_sm *sm_p = NULL;
 
     gossip_debug(GOSSIP_CLIENT_DEBUG,
-                 "PINT_isys_get_eattr entered\n");
+                 "PINT_isys_geteattr entered\n");
 
     if ((ref.handle == PVFS_HANDLE_NULL) ||
        (ref.fs_id == PVFS_FS_ID_NULL) || (resp_p == NULL))
@@ -90,7 +89,8 @@ PVFS_error PVFS_isys_geteattr(
 
     PINT_init_msgarray_params(&sm_p->msgarray_params);
     PINT_init_sysint_credentials(sm_p->cred_p, credentials);
-    sm_p->u.geteattr.key_p = key_p;
+    sm_p->u.geteattr.nkey = nkey;
+    sm_p->u.geteattr.key_array = key_array;
     sm_p->u.geteattr.resp_p = resp_p;
     sm_p->error_code = 0;
     sm_p->object_ref = ref;
@@ -99,10 +99,11 @@ PVFS_error PVFS_isys_geteattr(
             sm_p, PVFS_SYS_GETEATTR, op_id, user_ptr);
 }
 
-PVFS_error PVFS_sys_geteattr(
+PVFS_error PVFS_sys_geteattr_list(
         PVFS_object_ref ref,
         PVFS_credentials *credentials,
-        PVFS_ds_keyval *key_p,
+        int32_t nkey,
+        PVFS_ds_keyval *key_array,
         PVFS_sysresp_geteattr *resp_p)
 {
     PVFS_error ret = -PVFS_EINVAL, error = 0;
@@ -110,8 +111,8 @@ PVFS_error PVFS_sys_geteattr(
 
     gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_sys_geteattr entered\n");
 
-    ret = PVFS_isys_geteattr(ref, credentials,
-            key_p, resp_p, &op_id, NULL);
+    ret = PVFS_isys_geteattr_list(ref, credentials,
+            nkey, key_array, resp_p, &op_id, NULL);
 
     if (ret)
     {
@@ -132,21 +133,45 @@ PVFS_error PVFS_sys_geteattr(
     return error;
 }
 
+PVFS_error PVFS_sys_geteattr(
+        PVFS_object_ref ref,
+        PVFS_credentials *credentials,
+        PVFS_ds_keyval *key_p,
+        PVFS_ds_keyval *val_p)
+{
+    PVFS_sysresp_geteattr resp_p;
+    resp_p.val_array = val_p;
+    return PVFS_sys_geteattr_list(ref, credentials, 1, key_p, &resp_p);
+}
+
 static int get_eattr_setup_msgpair(PINT_client_sm *sm_p,
                                            job_status_s *js_p)
 {
     int ret = -PVFS_EINVAL;
+    int i;
 
     gossip_debug(GOSSIP_CLIENT_DEBUG,
 		"get_eattr state: get_eattr_setup_msgpair\n");
 
+    /* this will be the array of value buffer sizes */
+    sm_p->u.geteattr.size_array =
+             (PVFS_size *)malloc(sm_p->u.geteattr.nkey *
+                                 sizeof (PVFS_size));
+
+    /* fill the array pulling out of the value array */
+    /* we don't want to send the unused fields in this array */
+    for (i = 0; i < sm_p->u.geteattr.nkey; i++)
+        sm_p->u.geteattr.size_array[i] =
+            sm_p->u.geteattr.resp_p->val_array[i].buffer_sz;
+
     PINT_SERVREQ_GETEATTR_FILL(
             sm_p->msgpair.req,
             (*sm_p->cred_p),
             sm_p->object_ref.fs_id,
             sm_p->object_ref.handle,
-            (*sm_p->u.geteattr.key_p),
-            sm_p->u.geteattr.resp_p->val.buffer_sz
+            sm_p->u.geteattr.nkey,
+            sm_p->u.geteattr.key_array,
+            sm_p->u.geteattr.size_array
             );
 
     sm_p->msgarray = &(sm_p->msgpair);
@@ -174,6 +199,8 @@ static int get_eattr_cleanup(PINT_client
 {
     gossip_debug(GOSSIP_CLIENT_DEBUG,
 		"get_eattr state: get_eattr_cleanup\n");
+    /* free the array malloc'd above */
+    free(sm_p->u.geteattr.size_array);
     sm_p->error_code  = js_p->error_code;
     sm_p->op_complete = 1;
 
@@ -206,27 +233,54 @@ static int get_eattr_comp_fn(
 
     if (sm_p->msgarray[i].op_status == 0)
     {
-        /* out the actual read_sz in its place */
-        sm_p->u.geteattr.resp_p->val.read_sz =
-                resp_p->u.geteattr.val.buffer_sz;
-        /* check for too big a return message */
-        if (sm_p->u.geteattr.resp_p->val.read_sz <=
-                sm_p->u.geteattr.resp_p->val.buffer_sz)
+        int k, mink;
+        mink = sm_p->u.geteattr.nkey;
+        if (resp_p->u.geteattr.nkey < mink)
+        {
+            mink = resp_p->u.geteattr.nkey;
+            gossip_err("Successful call returned fewer values than requested\n");
+        }
+        if (!resp_p->u.geteattr.val)
         {
-            memcpy(sm_p->u.geteattr.resp_p->val.buffer,
-                    resp_p->u.geteattr.val.buffer,
-                    sm_p->u.geteattr.resp_p->val.read_sz);
+            gossip_err("Successful call returned NULL value list\n");
+            return -1;
         }
-        else /* oops, error! returned too much data */
+        gossip_debug(GOSSIP_GETEATTR_DEBUG,"returned %d values\n",
+                sm_p->u.geteattr.nkey);
+        for (k = 0; k < sm_p->u.geteattr.nkey; k++)
         {
-            memset(sm_p->u.geteattr.resp_p->val.buffer,0,
-                    sm_p->u.geteattr.resp_p->val.buffer_sz);
-            ret = -PVFS_EMSGSIZE;
+            gossip_debug(GOSSIP_GETEATTR_DEBUG,"resp_read_sz = %d\n",
+                    resp_p->u.geteattr.val[k].read_sz);
+            gossip_debug(GOSSIP_GETEATTR_DEBUG,"resp_buff_sz = %d\n",
+                    resp_p->u.geteattr.val[k].buffer_sz);
+            gossip_debug(GOSSIP_GETEATTR_DEBUG,"sm_buff_sz = %d\n",
+                    sm_p->u.geteattr.resp_p->val_array[k].buffer_sz);
+            gossip_debug(GOSSIP_GETEATTR_DEBUG,"resp_buff_ = %s\n",
+                    (char *)resp_p->u.geteattr.val[k].buffer);
+            /* out the actual read_sz in its place */
+            sm_p->u.geteattr.resp_p->val_array[k].read_sz =
+                    resp_p->u.geteattr.val[k].buffer_sz;
+            /* check for too big a return message */
+            if (sm_p->u.geteattr.resp_p->val_array[k].read_sz <=
+                    sm_p->u.geteattr.resp_p->val_array[k].buffer_sz)
+            {
+                gossip_debug(GOSSIP_GETEATTR_DEBUG,"copying\n");
+                memcpy(sm_p->u.geteattr.resp_p->val_array[k].buffer,
+                        resp_p->u.geteattr.val[k].buffer,
+                        sm_p->u.geteattr.resp_p->val_array[k].read_sz);
+            }
+            else /* oops, error! returned too much data */
+            {
+                gossip_debug(GOSSIP_GETEATTR_DEBUG,"clearing on error\n");
+                memset(sm_p->u.geteattr.resp_p->val_array[k].buffer,0,
+                        sm_p->u.geteattr.resp_p->val_array[k].buffer_sz);
+                /* record an error, but keep going */
+                ret = -PVFS_EMSGSIZE;
+            }
         }
     }
     else
     {
-        /* server returned an error */
         ret = sm_p->msgarray[i].op_status;
     }
 

Index: sys-set-eattr.sm
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/client/sysint/sys-set-eattr.sm,v
diff -p -u -r1.1.2.1 -r1.1.2.2
--- sys-set-eattr.sm	17 Jul 2005 22:56:57 -0000	1.1.2.1
+++ sys-set-eattr.sm	19 Jul 2005 20:11:58 -0000	1.1.2.2
@@ -58,18 +58,20 @@ machine pvfs2_client_set_eattr_sm(
 
 %%
 
-PVFS_error PVFS_isys_seteattr(
+PVFS_error PVFS_isys_seteattr_list(
         PVFS_object_ref ref,
         PVFS_credentials *credentials,
-        PVFS_ds_keyval *key_p,
-        PVFS_ds_keyval *val_p,
+        int32_t nkey,
+        PVFS_ds_keyval *key_array,
+        PVFS_ds_keyval *val_array,
         PVFS_sys_op_id *op_id,
         void *user_ptr)
 {
     int ret = -PVFS_EINVAL;
     PINT_client_sm *sm_p = NULL;
 
-    gossip_debug(GOSSIP_CLIENT_DEBUG, "PINT_isys_set_eattr entered\n");
+    gossip_debug(GOSSIP_CLIENT_DEBUG,
+                 "PINT_isys_set_eattr entered\n");
 
     if ((ref.handle == PVFS_HANDLE_NULL) ||
        (ref.fs_id == PVFS_FS_ID_NULL))
@@ -87,8 +89,9 @@ PVFS_error PVFS_isys_seteattr(
 
     PINT_init_msgarray_params(&sm_p->msgarray_params);
     PINT_init_sysint_credentials(sm_p->cred_p, credentials);
-    sm_p->u.seteattr.key_p = key_p;
-    sm_p->u.seteattr.val_p = val_p;
+    sm_p->u.seteattr.nkey = nkey;
+    sm_p->u.seteattr.key_array = key_array;
+    sm_p->u.seteattr.val_array = val_array;
     sm_p->error_code = 0;
     sm_p->object_ref = ref;
 
@@ -96,19 +99,20 @@ PVFS_error PVFS_isys_seteattr(
             sm_p, PVFS_SYS_SETEATTR, op_id, user_ptr);
 }
 
-PVFS_error PVFS_sys_seteattr(
+PVFS_error PVFS_sys_seteattr_list(
         PVFS_object_ref ref,
         PVFS_credentials *credentials,
-        PVFS_ds_keyval *key_p,
-        PVFS_ds_keyval *val_p)
+        int32_t nkey,
+        PVFS_ds_keyval *key_array,
+        PVFS_ds_keyval *val_array)
 {
     PVFS_error ret = -PVFS_EINVAL, error = 0;
     PVFS_sys_op_id op_id;
 
     gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_sys_seteattr entered\n");
 
-    ret = PVFS_isys_seteattr(ref, credentials,
-            key_p, val_p, &op_id, NULL);
+    ret = PVFS_isys_seteattr_list(ref, credentials,
+            nkey, key_array, val_array, &op_id, NULL);
 
     if (ret)
     {
@@ -129,21 +133,32 @@ PVFS_error PVFS_sys_seteattr(
     return error;
 }
 
+PVFS_error PVFS_sys_seteattr(
+        PVFS_object_ref ref,
+        PVFS_credentials *credentials,
+        PVFS_ds_keyval *key_p,
+        PVFS_ds_keyval *val_p)
+{
+    return PVFS_sys_seteattr_list(ref, credentials, 1, key_p, val_p);
+}
+
+
 static int set_eattr_setup_msgpair(PINT_client_sm *sm_p,
                                            job_status_s *js_p)
 {
     int ret = -PVFS_EINVAL;
 
     gossip_debug(GOSSIP_CLIENT_DEBUG,
-		"set_eattr state: set_eattr_setup_msgpair\n");
+		"get_eattr state: set_eattr_setup_msgpair\n");
 
     PINT_SERVREQ_SETEATTR_FILL(
             sm_p->msgpair.req,
             (*sm_p->cred_p),
             sm_p->object_ref.fs_id,
             sm_p->object_ref.handle,
-            (*sm_p->u.seteattr.key_p),
-            (*sm_p->u.seteattr.val_p)
+            sm_p->u.seteattr.nkey,
+            sm_p->u.seteattr.key_array,
+            sm_p->u.seteattr.val_array
             );
 
     sm_p->msgarray = &(sm_p->msgpair);
@@ -170,7 +185,7 @@ static int set_eattr_cleanup(PINT_client
                                     job_status_s *js_p)
 {
     gossip_debug(GOSSIP_CLIENT_DEBUG,
-		"set_eattr state: set_eattr_cleanup\n");
+		"get_eattr state: set_eattr_cleanup\n");
     sm_p->error_code  = js_p->error_code;
     sm_p->op_complete = 1;
 
@@ -184,9 +199,10 @@ static int set_eattr_comp_fn(
 {
     int j = 0;
     int ret = 0;
-    gossip_debug(GOSSIP_CLIENT_DEBUG,
-		"set_eattr completion fn: set_eattr_comp_fn\n");
     PINT_client_sm *sm_p = (PINT_client_sm *)v_p;
+
+    gossip_debug(GOSSIP_CLIENT_DEBUG,
+		"get_eattr completion fn: set_eattr_comp_fn\n");
 
     /* only posted one msgpair */
     assert(i==0);



More information about the PVFS2-CVS mailing list