[PVFS2-CVS] commit by neill in pvfs2/src/common/misc: pvfs2-util.c
CVS commit program
cvs at parl.clemson.edu
Mon Oct 11 13:37:01 EDT 2004
Update of /projects/cvsroot/pvfs2/src/common/misc
In directory parlweb:/tmp/cvs-serv15443/src/common/misc
Modified Files:
pvfs2-util.c
Log Message:
- moved static copy_mntent method to PVFS_util_copy_mntent method
- added error handling to PVFS_util_copy_mntent
- renamed PVFS_sys_free_mntent to PVFS_util_free_mntent
- fixed successful return value of PVFS_util_copy_sys_attr
- fixed initialize-dyn test program that broken due to mntent changes
- misc cleanups
Index: pvfs2-util.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/common/misc/pvfs2-util.c,v
diff -p -u -r1.70 -r1.71
--- pvfs2-util.c 11 Oct 2004 13:46:46 -0000 1.70
+++ pvfs2-util.c 11 Oct 2004 16:37:01 -0000 1.71
@@ -53,10 +53,6 @@ static int parse_encoding_string(
const char *cp,
enum PVFS_encoding_type *et);
-static int copy_mntent(
- struct PVFS_sys_mntent *dest_mntent,
- struct PVFS_sys_mntent *src_mntent);
-
void PVFS_util_gen_credentials(
PVFS_credentials *credentials)
{
@@ -106,30 +102,32 @@ void PVFS_util_release_credentials(
}
int PVFS_util_copy_sys_attr(
- PVFS_sys_attr *dest, PVFS_sys_attr *src)
+ PVFS_sys_attr *dest_attr, PVFS_sys_attr *src_attr)
{
int ret = -PVFS_EINVAL;
- if (src && dest)
+ if (src_attr && dest_attr)
{
- dest->owner = src->owner;
- dest->group = src->group;
- dest->perms = src->perms;
- dest->atime = src->atime;
- dest->mtime = src->mtime;
- dest->ctime = src->ctime;
- dest->dfile_count = src->dfile_count;
- dest->objtype = src->objtype;
- dest->mask = src->mask;
-
- if ((src->mask & PVFS_ATTR_COMMON_TYPE) &&
- (src->objtype == PVFS_TYPE_SYMLINK) && src->link_target)
+ dest_attr->owner = src_attr->owner;
+ dest_attr->group = src_attr->group;
+ dest_attr->perms = src_attr->perms;
+ dest_attr->atime = src_attr->atime;
+ dest_attr->mtime = src_attr->mtime;
+ dest_attr->ctime = src_attr->ctime;
+ dest_attr->dfile_count = src_attr->dfile_count;
+ dest_attr->objtype = src_attr->objtype;
+ dest_attr->mask = src_attr->mask;
+
+ if ((src_attr->mask & PVFS_ATTR_COMMON_TYPE) &&
+ (src_attr->objtype == PVFS_TYPE_SYMLINK) &&
+ src_attr->link_target)
{
- dest->link_target = strdup(src->link_target);
- if (!dest->link_target)
+ dest_attr->link_target = strdup(src_attr->link_target);
+ if (!dest_attr->link_target)
{
ret = -PVFS_ENOMEM;
}
+ ret = 0;
}
}
return ret;
@@ -586,8 +584,8 @@ int PVFS_util_add_dynamic_mntent(struct
{
current_mnt = &s_stat_tab_array[
PVFS2_DYNAMIC_TAB_INDEX].mntent_array[i];
- copy_mntent(&tmp_mnt_array[i], current_mnt);
- PVFS_sys_free_mntent(current_mnt);
+ PVFS_util_copy_mntent(&tmp_mnt_array[i], current_mnt);
+ PVFS_util_free_mntent(current_mnt);
}
/* finally, swap the mntent arrays */
@@ -603,7 +601,7 @@ int PVFS_util_add_dynamic_mntent(struct
current_mnt = &s_stat_tab_array[
PVFS2_DYNAMIC_TAB_INDEX].mntent_array[new_index];
- ret = copy_mntent(current_mnt, mntent);
+ ret = PVFS_util_copy_mntent(current_mnt, mntent);
s_stat_tab_array[PVFS2_DYNAMIC_TAB_INDEX].mntent_count++;
@@ -704,10 +702,11 @@ int PVFS_util_remove_internal_mntent(
if (current_mnt->fs_id == mntent->fs_id)
{
- PVFS_sys_free_mntent(current_mnt);
+ PVFS_util_free_mntent(current_mnt);
continue;
}
- copy_mntent(&tmp_mnt_array[new_count++], current_mnt);
+ PVFS_util_copy_mntent(
+ &tmp_mnt_array[new_count++], current_mnt);
}
/* finally, swap the mntent arrays */
@@ -724,7 +723,7 @@ int PVFS_util_remove_internal_mntent(
array here. since this is the case, we also free the
array since we know it's now empty.
*/
- PVFS_sys_free_mntent(
+ PVFS_util_free_mntent(
&s_stat_tab_array[found_index].mntent_array[0]);
free(s_stat_tab_array[found_index].mntent_array);
s_stat_tab_array[found_index].mntent_array = NULL;
@@ -1018,23 +1017,30 @@ static int parse_flowproto_string(
}
if (!strcmp(flow, "bmi_trove"))
+ {
*flowproto = FLOWPROTO_BMI_TROVE;
+ }
else if (!strcmp(flow, "dump_offsets"))
+ {
*flowproto = FLOWPROTO_DUMP_OFFSETS;
+ }
else if (!strcmp(flow, "bmi_cache"))
+ {
*flowproto = FLOWPROTO_BMI_CACHE;
+ }
else if (!strcmp(flow, "multiqueue"))
+ {
*flowproto = FLOWPROTO_MULTIQUEUE;
+ }
else
{
gossip_err("Error: unrecognized flowproto option: %s\n", flow);
return (-PVFS_EINVAL);
}
-
- return (0);
+ return 0;
}
-void PVFS_sys_free_mntent(
+void PVFS_util_free_mntent(
struct PVFS_sys_mntent *mntent)
{
if (mntent)
@@ -1071,49 +1077,104 @@ void PVFS_sys_free_mntent(
}
}
-static int copy_mntent(
+int PVFS_util_copy_mntent(
struct PVFS_sys_mntent *dest_mntent,
struct PVFS_sys_mntent *src_mntent)
{
- int ret = -PVFS_ENOMEM;
+ int ret = -PVFS_EINVAL, i = 0;
if (dest_mntent && src_mntent)
{
- int i;
-
memset(dest_mntent, 0, sizeof(struct PVFS_sys_mntent));
dest_mntent->num_pvfs_config_servers =
src_mntent->num_pvfs_config_servers;
+
dest_mntent->pvfs_config_servers =
malloc(dest_mntent->num_pvfs_config_servers *
- sizeof(*dest_mntent->pvfs_config_servers));
- assert(dest_mntent->pvfs_config_servers);
- for (i=0; i<dest_mntent->num_pvfs_config_servers; i++) {
+ sizeof(*dest_mntent->pvfs_config_servers));
+ if (!dest_mntent)
+ {
+ return -PVFS_ENOMEM;
+ }
+
+ for(i = 0; i < dest_mntent->num_pvfs_config_servers; i++)
+ {
dest_mntent->pvfs_config_servers[i] =
strdup(src_mntent->pvfs_config_servers[i]);
- assert(dest_mntent->pvfs_config_servers[i]);
+ if (!dest_mntent->pvfs_config_servers[i])
+ {
+ ret = -PVFS_ENOMEM;
+ goto error_exit;
+ }
}
dest_mntent->pvfs_fs_name = strdup(src_mntent->pvfs_fs_name);
- assert(dest_mntent->pvfs_fs_name);
+ if (!dest_mntent->pvfs_fs_name)
+ {
+ ret = -PVFS_ENOMEM;
+ goto error_exit;
+ }
if (src_mntent->mnt_dir)
{
dest_mntent->mnt_dir = strdup(src_mntent->mnt_dir);
- assert(dest_mntent->mnt_dir);
+ if (!dest_mntent->mnt_dir)
+ {
+ ret = -PVFS_ENOMEM;
+ goto error_exit;
+ }
}
+
if (src_mntent->mnt_opts)
{
dest_mntent->mnt_opts = strdup(src_mntent->mnt_opts);
- assert(dest_mntent->mnt_opts);
+ if (!dest_mntent->mnt_opts)
+ {
+ ret = -PVFS_ENOMEM;
+ goto error_exit;
+ }
}
+
dest_mntent->flowproto = src_mntent->flowproto;
dest_mntent->encoding = src_mntent->encoding;
dest_mntent->fs_id = src_mntent->fs_id;
+ }
+ return 0;
- /* TODO: memory allocation error handling */
- ret = 0;
+ error_exit:
+
+ for(i = 0; i < dest_mntent->num_pvfs_config_servers; i++)
+ {
+ if (dest_mntent->pvfs_config_servers[i])
+ {
+ free(dest_mntent->pvfs_config_servers[i]);
+ dest_mntent->pvfs_config_servers[i] = NULL;
+ }
+ }
+
+ if (dest_mntent->pvfs_config_servers)
+ {
+ free(dest_mntent->pvfs_config_servers);
+ dest_mntent->pvfs_config_servers = NULL;
+ }
+
+ if (dest_mntent->pvfs_fs_name)
+ {
+ free(dest_mntent->pvfs_fs_name);
+ dest_mntent->pvfs_fs_name = NULL;
+ }
+
+ if (dest_mntent->mnt_dir)
+ {
+ free(dest_mntent->mnt_dir);
+ dest_mntent->mnt_dir = NULL;
+ }
+
+ if (dest_mntent->mnt_opts)
+ {
+ free(dest_mntent->mnt_opts);
+ dest_mntent->mnt_opts = NULL;
}
return ret;
}
@@ -1196,7 +1257,7 @@ void PINT_release_pvfstab(void)
if (s_stat_tab_array[i].mntent_array[j].fs_id !=
PVFS_FS_ID_NULL)
{
- PVFS_sys_free_mntent(
+ PVFS_util_free_mntent(
&s_stat_tab_array[i].mntent_array[j]);
}
}
@@ -1211,7 +1272,7 @@ void PINT_release_pvfstab(void)
PVFS2_DYNAMIC_TAB_INDEX].mntent_array[j].fs_id !=
PVFS_FS_ID_NULL)
{
- PVFS_sys_free_mntent(
+ PVFS_util_free_mntent(
&s_stat_tab_array[
PVFS2_DYNAMIC_TAB_INDEX].mntent_array[j]);
}
More information about the PVFS2-CVS
mailing list