[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