Skip to content

Commit

Permalink
no need for extra set attr function in create sm
Browse files Browse the repository at this point in the history
* osd dir sm sets the attr already
* create does not set attr_meta_dfiles flag
* remove does not check this flag
  • Loading branch information
cek10006 committed Sep 17, 2012
1 parent 4821471 commit 130724b
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 89 deletions.
2 changes: 1 addition & 1 deletion config.save
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ s,@ECHO_C@,,;t t
s,@ECHO_N@,-n,;t t
s,@ECHO_T@,,;t t
s,@LIBS@, -lcrypto -lssl -ldl,;t t
s,@PVFS2_VERSION@,2.8.6-orangefs-2012-09-15-003549,;t t
s,@PVFS2_VERSION@,2.8.6-orangefs-2012-09-17-172331,;t t
s,@PVFS2_VERSION_MAJOR@,2,;t t
s,@PVFS2_VERSION_MINOR@,8,;t t
s,@PVFS2_VERSION_SUB@,6,;t t
Expand Down
15 changes: 10 additions & 5 deletions src/client/sysint/remove.sm
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ static PINT_sm_action remove_getattr_analyze_results(
switch(attr->objtype)
{
case PVFS_TYPE_METAFILE:
assert(attr->mask & PVFS_ATTR_META_DFILES);
assert(attr->u.meta.dfile_count > 0);
//assert(attr->mask & PVFS_ATTR_META_DFILES);
//assert(attr->u.meta.dfile_count > 0);

gossip_debug(GOSSIP_CLIENT_DEBUG, "%s: must remove %d datafiles\n",
__func__, attr->u.meta.dfile_count);
Expand Down Expand Up @@ -238,8 +238,13 @@ static PINT_sm_action remove_datafile_remove_setup_msgpair(

if (is_osd) {
struct osd_command *command = &msg_p->osd_command;
ret = osd_command_set_remove(command, PVFS_OSD_DATA_PID,
attr->u.meta.dfile_array[0]);
if (attr->u.meta.dfile_array)
ret = osd_command_set_remove(command, PVFS_OSD_DATA_PID,
attr->u.meta.dfile_array[0]);
else
ret = osd_command_set_remove(command, PVFS_OSD_DATA_PID,
sm_p->object_ref.handle);

if (ret) {
osd_error_xerrno(ret, "%s: osd_command_set_remove failed",
__func__);
Expand All @@ -260,7 +265,7 @@ static PINT_sm_action remove_datafile_remove_setup_msgpair(
}

msg_p->fs_id = sm_p->object_ref.fs_id;
msg_p->handle = attr->u.meta.dfile_array[0];
msg_p->handle = (attr->u.meta.dfile_array ? attr->u.meta.dfile_array[0] : sm_p->object_ref.handle);
msg_p->retry_flag = PVFS_MSGPAIR_RETRY; /* TODO: Do we want retry? */
msg_p->comp_fn = NULL;

Expand Down
85 changes: 2 additions & 83 deletions src/client/sysint/sys-create.sm
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ static int create_crdirent_comp_fn(
void *v_p, struct PVFS_server_resp *resp_p, int index);
static int create_delete_handles_comp_fn(
void *v_p, struct PVFS_server_resp *resp_p, int index);
static int create_set_oid_comp_fn(
void *v_p, struct PVFS_server_resp *resp_p, int index);

/* misc helper functions */
static PINT_dist* get_default_distribution(PVFS_fs_id fs_id);
Expand All @@ -55,8 +53,7 @@ enum {
OSD_MSGPAIR = 2001,
OSD_CREATE_MSGPAIR = 2002,
OSD_MDFILE_MSGPAIR = 2003,
OSD_POST_CREATE = 2004,
OSD_OID_SET_MSGPAIR = 2005
OSD_POST_CREATE = 2004
};

%%
Expand Down Expand Up @@ -137,21 +134,6 @@ machine pvfs2_client_create_sm
}

state datafiles_xfer_osd_msgpair_array
{
jump pvfs2_osd_msgpairarray_sm;
OSD_OID_SET_MSGPAIR => create_set_oid_msgpair;
success => crdirent_setup_msgpair;
default => crdirent_failure;
}

state create_set_oid_msgpair
{
run create_set_oid_msgpair;
success => create_set_oid_xfer_msgpair;
default => cleanup;
}

state create_set_oid_xfer_msgpair
{
jump pvfs2_osd_msgpairarray_sm;
success => crdirent_setup_msgpair;
Expand Down Expand Up @@ -589,7 +571,6 @@ static int create_datafiles_comp_fn(void *v_p,
if (sm_p->u.create.datafile_handles[index])
oid = sm_p->u.create.datafile_handles[index];
else {
ret = OSD_OID_SET_MSGPAIR;
oid = get_ntohll(sm_p->msgarray_op.msgarray[index].osd_command.attr[6].val);
sm_p->u.create.datafile_handles[index] = oid;
}
Expand Down Expand Up @@ -750,68 +731,6 @@ static PINT_sm_action create_create_setup_msgpair(
return SM_ACTION_COMPLETE;
}

static PINT_sm_action create_set_oid_msgpair(
struct PINT_smcb *smcb, job_status_s *js_p)
{
struct PINT_client_sm *sm_p = PINT_sm_frame(smcb, PINT_FRAME_CURRENT);
int ret = -PVFS_EINVAL;
PINT_sm_msgpair_state *msg_p = NULL;

gossip_debug(GOSSIP_CLIENT_DEBUG, "create state: "
"set_oid_msgpair\n");

js_p->error_code = 0;

PINT_msgpair_init(&sm_p->msgarray_op);
msg_p = &sm_p->msgarray_op.msgpair;

struct osd_command *command = &sm_p->msgarray_op.msgarray[0].osd_command;

struct attribute_list attrs = {ATTR_SET, PVFS_USEROBJECT_ATTR_PG, 6, sm_p->u.create.datafile_handles, sizeof(PVFS_handle) * sm_p->u.create.num_data_files};

ret = osd_command_set_set_attributes(command, PVFS_OSD_DATA_PID, sm_p->u.create.datafile_handles[0]);
if (ret) {
osd_error_xerrno(ret, "%s: osd_command_set_set_attributes failed",
__func__);
js_p->error_code = ret;
return 1;
}

ret = osd_command_attr_build(command, &attrs, 1);
if (ret) {
osd_error_xerrno(ret, "%s: osd_command_attr_build failed",
__func__);
js_p->error_code = ret;
return 1;
}

msg_p->fs_id = sm_p->object_ref.fs_id;
msg_p->retry_flag = PVFS_MSGPAIR_NO_RETRY;
msg_p->comp_fn = create_set_oid_comp_fn;
msg_p->handle = sm_p->u.create.io_handle_extent_array[0].
extent_array[0].first;
msg_p->svr_addr = sm_p->u.create.data_server_addrs[0];

PINT_sm_push_frame(smcb, 0, &sm_p->msgarray_op);
return SM_ACTION_COMPLETE;
}

static int create_set_oid_comp_fn(void *v_p,
struct PVFS_server_resp *resp_p,
int index)
{
int status;
PINT_smcb *smcb = v_p;
PINT_client_sm *sm_p = PINT_sm_frame(smcb, PINT_MSGPAIR_PARENT_SM);

gossip_debug(GOSSIP_CLIENT_DEBUG, "create_set_oid_comp_fn\n");

osd_command_attr_free(&sm_p->msgarray_op.msgpair.osd_command);
status = osd_errno_from_status(sm_p->msgarray_op.msgpair.osd_command.status);

return status;
}

static PINT_sm_action create_datafiles_setup_msgpair_array(
struct PINT_smcb *smcb, job_status_s *js_p)
{
Expand Down Expand Up @@ -904,7 +823,7 @@ static PINT_sm_action create_datafiles_setup_msgpair_array(
PVFS_ATTR_COMMON_CTIME |
PVFS_ATTR_COMMON_MTIME |
PVFS_ATTR_META_DIST |
PVFS_ATTR_META_DFILES |
//PVFS_ATTR_META_DFILES |
PVFS_ATTR_COMMON_TYPE;

sm_p->u.create.attr.objtype = PVFS_TYPE_METAFILE;
Expand Down
2 changes: 2 additions & 0 deletions src/client/sysint/sys-getattr.sm
Original file line number Diff line number Diff line change
Expand Up @@ -789,8 +789,10 @@ static int getattr_object_getattr_comp_fn(
/* if we requested the datafile handles for the file, did
* the datafile array get populated?
*/
gossip_err("milan\n");
assert(attr->u.meta.dfile_array &&
(attr->u.meta.dfile_count > 0));
gossip_err("baros\n");

gossip_debug(GOSSIP_GETATTR_DEBUG,
"getattr_object_getattr_comp_fn: "
Expand Down
3 changes: 3 additions & 0 deletions src/client/sysint/sys-remove.sm
Original file line number Diff line number Diff line change
Expand Up @@ -375,14 +375,17 @@ static int remove_rmdirent_comp_fn(
struct PVFS_server_resp *resp_p,
int index)
{
gossip_err("remove_rmdirent_comp_fn\n");
int status;
PINT_smcb *smcb = v_p;
PINT_client_sm *sm_p = PINT_sm_frame(smcb, PINT_MSGPAIR_PARENT_SM);
PINT_sm_msgpair_state *msg_p = &sm_p->msgarray_op.msgpair;

if (server_is_osd(msg_p->svr_addr)) {
gossip_err("osd\n");
status = osd_errno_from_status(sm_p->msgarray_op.msgpair.osd_command.status);
} else {
gossip_err("not_osd\n");
assert(resp_p->op == PVFS_SERV_RMDIRENT);
status = resp_p->status;

Expand Down

0 comments on commit 130724b

Please sign in to comment.