summaryrefslogtreecommitdiffstats
path: root/src/H5Fmount.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2005-11-15 02:55:39 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2005-11-15 02:55:39 (GMT)
commita1708eb023f2c8f8ac6c2c17bf1e598c8dff956e (patch)
tree34c87a3753b36c4c8d689d58bf456eaf261cd235 /src/H5Fmount.c
parentbea1e576c5ef5500678f7ce913d835341b625e8f (diff)
downloadhdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.zip
hdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.tar.gz
hdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.tar.bz2
[svn-r11712] Purpose:
New feature Description: Check in baseline for compact group revisions, which radically revises the source code for managing groups and object headers. WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! This initiates the "unstable" phase of the 1.7.x branch, leading up to the 1.8.0 release. Please test this code, but do _NOT_ keep files created with it - the format will change again before the release and you will not be able to read your old files!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! Solution: There's too many changes to really describe them all, but some of them include: - Stop abusing the H5G_entry_t structure and split it into two separate structures for non-symbol table node use within the library: H5O_loc_t for object locations in a file and H5G_name_t to store the path to an opened object. H5G_entry_t is now only used for storing symbol table entries on disk. - Retire H5G_namei() in favor of a more general mechanism for traversing group paths and issuing callbacks on objects located. This gets us out of the business of hacking H5G_namei() for new features, generally. - Revised H5O* routines to take a H5O_loc_t instead of H5G_entry_t - Lots more... Platforms tested: h5committested and maybe another dozen configurations.... :-)
Diffstat (limited to 'src/H5Fmount.c')
-rw-r--r--src/H5Fmount.c345
1 files changed, 128 insertions, 217 deletions
diff --git a/src/H5Fmount.c b/src/H5Fmount.c
index c876b15..ebb76fb 100644
--- a/src/H5Fmount.c
+++ b/src/H5Fmount.c
@@ -28,6 +28,10 @@
#include "H5MMprivate.h" /* Memory management */
/* PRIVATE PROTOTYPES */
+static herr_t H5F_mount(H5G_loc_t *loc, const char *name, H5F_t *child,
+ hid_t plist_id, hid_t dxpl_id);
+static herr_t H5F_unmount(H5G_loc_t *loc, const char *name, hid_t dxpl_id);
+static void H5F_mount_count_ids_recurse(H5F_t *f, unsigned *nopen_files, unsigned *nopen_objs);
/*--------------------------------------------------------------------------
@@ -62,8 +66,6 @@ H5F_init_mount_interface(void)
* Programmer: Quincey Koziol
* Saturday, July 2, 2005
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
herr_t
@@ -108,56 +110,54 @@ done:
* Programmer: Robb Matzke
* Tuesday, October 6, 1998
*
- * Modifications:
- *
- * Robb Matzke, 1998-10-14
- * The reference count for the mounted H5F_t is incremented.
- *
- * Pedro Vicente, <pvn@ncsa.uiuc.edu> 22 Aug 2002
- * Added `id to name' support.
- *
*-------------------------------------------------------------------------
*/
static herr_t
-H5F_mount(H5G_entry_t *loc, const char *name, H5F_t *child,
+H5F_mount(H5G_loc_t *loc, const char *name, H5F_t *child,
hid_t UNUSED plist_id, hid_t dxpl_id)
{
H5G_t *mount_point = NULL; /*mount point group */
- H5G_entry_t *mp_ent = NULL; /*mount point symbol table entry*/
H5F_t *ancestor = NULL; /*ancestor files */
H5F_t *parent = NULL; /*file containing mount point */
unsigned lt, rt, md; /*binary search indices */
int cmp; /*binary search comparison value*/
- H5G_entry_t *ent = NULL; /*temporary symbol table entry */
- H5G_entry_t mp_open_ent; /* entry of moint point to be opened */
+ H5G_loc_t mp_loc; /* entry of moint point to be opened */
+ H5G_name_t mp_path; /* Mount point group hier. path */
+ H5O_loc_t mp_oloc; /* Mount point object location */
+ H5O_loc_t *mnt_oloc; /* Mount point object location */
H5RS_str_t *name_r; /* Ref-counted version of name */
herr_t ret_value = SUCCEED; /*return value */
FUNC_ENTER_NOAPI_NOINIT(H5F_mount)
- assert(loc);
- assert(name && *name);
- assert(child);
- assert(TRUE==H5P_isa_class(plist_id,H5P_MOUNT));
+ HDassert(loc);
+ HDassert(name && *name);
+ HDassert(child);
+ HDassert(TRUE == H5P_isa_class(plist_id,H5P_MOUNT));
+
+ /* Set up dataset location to fill in */
+ mp_loc.oloc = &mp_oloc;
+ mp_loc.path = &mp_path;
+ H5G_loc_reset(&mp_loc);
/*
* Check that the child isn't mounted, that the mount point exists, that
* the parent & child files have the same file close degree, and
* that the mount wouldn't introduce a cycle in the mount tree.
*/
- if (child->mtab.parent)
+ if(child->mtab.parent)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "file is already mounted")
- if (H5G_find(loc, name, &mp_open_ent/*out*/, H5AC_dxpl_id) < 0)
+ if(H5G_loc_find(loc, name, &mp_loc/*out*/, dxpl_id) < 0)
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "group not found")
- if (NULL==(mount_point=H5G_open(&mp_open_ent, dxpl_id)))
+ if(NULL == (mount_point = H5G_open(&mp_loc, dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount point not found")
parent = H5G_fileof(mount_point);
- mp_ent = H5G_entof(mount_point);
- for (ancestor=parent; ancestor; ancestor=ancestor->mtab.parent) {
- if (ancestor==child)
+ mnt_oloc = H5G_oloc(mount_point);
+ for(ancestor = parent; ancestor; ancestor = ancestor->mtab.parent) {
+ if(ancestor == child)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount would introduce a cycle")
- }
+ } /* end for */
if(parent->shared->fc_degree != child->shared->fc_degree)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mounted file has different file close degree than parent")
@@ -168,62 +168,63 @@ H5F_mount(H5G_entry_t *loc, const char *name, H5F_t *child,
* `md' will be the index where the child should be inserted.
*/
lt = md = 0;
- rt=parent->mtab.nmounts;
+ rt = parent->mtab.nmounts;
cmp = -1;
- while (lt<rt && cmp) {
- md = (lt+rt)/2;
- ent = H5G_entof(parent->mtab.child[md].group);
- cmp = H5F_addr_cmp(mp_ent->header, ent->header);
- if (cmp<0) {
+ while(lt < rt && cmp) {
+ H5O_loc_t *oloc; /*temporary symbol table entry */
+
+ md = (lt + rt) / 2;
+ oloc = H5G_oloc(parent->mtab.child[md].group);
+ cmp = H5F_addr_cmp(mnt_oloc->addr, oloc->addr);
+ if(cmp < 0)
rt = md;
- } else if (cmp>0) {
- lt = md+1;
- }
- }
- if (cmp>0)
+ else if(cmp > 0)
+ lt = md + 1;
+ } /* end while */
+ if(cmp > 0)
md++;
- if (!cmp)
+ if(!cmp)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount point is already in use")
/* Make room in the table */
- if (parent->mtab.nmounts>=parent->mtab.nalloc) {
+ if(parent->mtab.nmounts>=parent->mtab.nalloc) {
unsigned n = MAX(16, 2*parent->mtab.nalloc);
H5F_mount_t *x = H5MM_realloc(parent->mtab.child,
- n*sizeof(parent->mtab.child[0]));
+ n * sizeof(parent->mtab.child[0]));
if (!x)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for mount table")
parent->mtab.child = x;
parent->mtab.nalloc = n;
- }
+ } /* end if */
/* Insert into table */
- HDmemmove(parent->mtab.child+md+1, parent->mtab.child+md,
- (parent->mtab.nmounts-md)*sizeof(parent->mtab.child[0]));
+ HDmemmove(parent->mtab.child + md + 1, parent->mtab.child + md,
+ (parent->mtab.nmounts-md) * sizeof(parent->mtab.child[0]));
parent->mtab.nmounts++;
parent->mtab.child[md].group = mount_point;
parent->mtab.child[md].file = child;
child->mtab.parent = parent;
/* Set the group's mountpoint flag */
- if(H5G_mount(parent->mtab.child[md].group)<0)
+ if(H5G_mount(parent->mtab.child[md].group) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "unable to set group mounted flag")
/* Search the open IDs and replace names for mount operation */
/* We pass H5G_UNKNOWN as object type; search all IDs */
- name_r=H5RS_wrap(name);
- assert(name_r);
- if (H5G_replace_name( H5G_UNKNOWN, loc, name_r, NULL, NULL, NULL, OP_MOUNT )<0)
+ name_r = H5RS_wrap(name);
+ HDassert(name_r);
+ if(H5G_name_replace(H5G_UNKNOWN, loc, name_r, NULL, NULL, NULL, OP_MOUNT) < 0)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "unable to replace name")
- if(H5RS_decr(name_r)<0)
+ if(H5RS_decr(name_r) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to decrement name string")
done:
- if (ret_value<0 && mount_point)
- if(H5G_close(mount_point)<0)
+ if(ret_value < 0 && mount_point)
+ if(H5G_close(mount_point) < 0)
HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "unable to close mounted group")
FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5F_mount() */
/*-------------------------------------------------------------------------
@@ -242,50 +243,46 @@ done:
* Programmer: Robb Matzke
* Tuesday, October 6, 1998
*
- * Modifications:
- *
- * Robb Matzke, 1998-10-14
- * The ref count for the child is decremented by calling H5F_close().
- *
- * Pedro Vicente, <pvn@ncsa.uiuc.edu> 22 Aug 2002
- * Added `id to name' support.
- *
*-------------------------------------------------------------------------
*/
static herr_t
-H5F_unmount(H5G_entry_t *loc, const char *name, hid_t dxpl_id)
+H5F_unmount(H5G_loc_t *loc, const char *name, hid_t dxpl_id)
{
- H5G_t *mounted = NULL; /*mount point group */
H5G_t *child_group = NULL; /* Child's group in parent mtab */
H5F_t *child_file = NULL; /* Child's file in parent mtab */
- H5G_entry_t *mnt_ent = NULL; /*mounted symbol table entry */
H5F_t *child = NULL; /*mounted file */
H5F_t *parent = NULL; /*file where mounted */
- H5G_entry_t *ent = NULL; /*temporary symbol table entry */
- H5G_entry_t mnt_open_ent; /* entry used to open mount point*/
+ H5O_loc_t *mnt_oloc; /* symbol table entry for root of mounted file */
+ H5G_name_t mp_path; /* Mount point group hier. path */
+ H5O_loc_t mp_oloc; /* Mount point object location */
+ H5G_loc_t mp_loc; /* entry used to open mount point*/
+ hbool_t mp_loc_setup = FALSE; /* Whether mount point location is set up */
int child_idx; /* Index of child in parent's mtab */
herr_t ret_value = SUCCEED; /*return value */
FUNC_ENTER_NOAPI_NOINIT(H5F_unmount)
- assert(loc);
- assert(name && *name);
+ HDassert(loc);
+ HDassert(name && *name);
+
+ /* Set up mount point location to fill in */
+ mp_loc.oloc = &mp_oloc;
+ mp_loc.path = &mp_path;
+ H5G_loc_reset(&mp_loc);
/*
* Get the mount point, or more precisely the root of the mounted file.
* If we get the root group and the file has a parent in the mount tree,
* then we must have found the mount point.
*/
- if (H5G_find(loc, name, &mnt_open_ent/*out*/, H5AC_dxpl_id) < 0)
+ if(H5G_loc_find(loc, name, &mp_loc/*out*/, dxpl_id) < 0)
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "group not found")
- if (NULL==(mounted=H5G_open(&mnt_open_ent, dxpl_id)))
- HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount point not found")
- child = H5G_fileof(mounted);
- mnt_ent = H5G_entof(mounted);
- ent = H5G_entof(child->shared->root_grp);
+ mp_loc_setup = TRUE;
+ child = mp_loc.oloc->file;
+ mnt_oloc = H5G_oloc(child->shared->root_grp);
child_idx = -1;
- if (child->mtab.parent && H5F_addr_eq(mnt_ent->header, ent->header)) {
+ if(child->mtab.parent && H5F_addr_eq(mp_oloc.addr, mnt_oloc->addr)) {
unsigned u; /*counters */
/*
@@ -293,15 +290,15 @@ H5F_unmount(H5G_entry_t *loc, const char *name, hid_t dxpl_id)
* lookup in the parent's mount table to find the correct entry.
*/
parent = child->mtab.parent;
- for (u=0; u<parent->mtab.nmounts; u++) {
- if (parent->mtab.child[u].file==child) {
+ for(u = 0; u < parent->mtab.nmounts; u++) {
+ if(parent->mtab.child[u].file == child) {
/* Found the correct index */
child_idx = u;
break;
- }
- }
+ } /* end if */
+ } /* end for */
} else {
- unsigned lt, rt, md=0; /*binary search indices */
+ unsigned lt, rt, md = 0; /*binary search indices */
int cmp; /*binary search comparison value*/
/*
@@ -312,130 +309,58 @@ H5F_unmount(H5G_entry_t *loc, const char *name, hid_t dxpl_id)
lt = 0;
rt = parent->mtab.nmounts;
cmp = -1;
- while (lt<rt && cmp) {
- md = (lt+rt)/2;
- ent = H5G_entof(parent->mtab.child[md].group);
- cmp = H5F_addr_cmp(mnt_ent->header, ent->header);
- if (cmp<0) {
+ while(lt < rt && cmp) {
+ md = (lt + rt) / 2;
+ mnt_oloc = H5G_oloc(parent->mtab.child[md].group);
+ cmp = H5F_addr_cmp(mp_oloc.addr, mnt_oloc->addr);
+ if (cmp<0)
rt = md;
- } else {
- lt = md+1;
- }
- }
- if (cmp)
+ else
+ lt = md + 1;
+ } /* end while */
+ if(cmp)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "not a mount point")
- /* Found the correct index */
+ /* Found the correct index, set the info about the child */
child_idx = md;
- mnt_ent = ent;
- }
-
+ H5G_loc_free(&mp_loc);
+ mp_loc_setup = FALSE;
+ mp_loc.oloc = mnt_oloc;
+ mp_loc.path = H5G_nameof(parent->mtab.child[md].group);
+ } /* end else */
HDassert(child_idx >= 0);
/* Search the open IDs replace names to reflect unmount operation */
- if (H5G_replace_name(H5G_UNKNOWN, mnt_ent, mnt_ent->user_path_r, NULL, NULL, NULL, OP_UNMOUNT )<0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to replace name ")
+ if(H5G_name_replace(H5G_UNKNOWN, &mp_loc, mp_loc.path->user_path_r, NULL, NULL, NULL, OP_UNMOUNT) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to replace name")
/* Save the information about the child from the mount table */
child_group = parent->mtab.child[child_idx].group;
child_file = parent->mtab.child[child_idx].file;
/* Eliminate the mount point from the table */
- HDmemmove(parent->mtab.child+child_idx, parent->mtab.child+child_idx+1,
- (parent->mtab.nmounts-child_idx)*sizeof(parent->mtab.child[0]));
+ HDmemmove(parent->mtab.child + child_idx, parent->mtab.child + child_idx + 1,
+ (parent->mtab.nmounts-child_idx) * sizeof(parent->mtab.child[0]));
parent->mtab.nmounts -= 1;
/* Unmount the child file from the parent file */
- if(H5G_unmount(child_group)<0)
+ if(H5G_unmount(child_group) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "unable to reset group mounted flag")
- if(H5G_close(child_group)<0)
+ if(H5G_close(child_group) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "unable to close unmounted group")
/* Detach child file from parent & see if it should close */
child_file->mtab.parent = NULL;
- if(H5F_try_close(child_file)<0)
+ if(H5F_try_close(child_file) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close unmounted file")
done:
- if (mounted)
- if(H5G_close(mounted)<0 && ret_value>=0)
- HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEOBJ, FAIL, "can't close group")
+ /* Free the mount point location's information, if it's been set up */
+ if(mp_loc_setup)
+ H5G_loc_free(&mp_loc);
FUNC_LEAVE_NOAPI(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5F_mountpoint
- *
- * Purpose: If ENT is a mount point then copy the entry for the root
- * group of the mounted file into ENT.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Tuesday, October 6, 1998
- *
- * Modifications:
- *
- * Pedro Vicente, <pvn@ncsa.uiuc.edu> 22 Aug 2002
- * Added `id to name' support.
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5F_mountpoint(H5G_entry_t *find/*in,out*/)
-{
- H5F_t *parent = find->file;
- unsigned lt, rt, md=0;
- int cmp;
- H5G_entry_t *ent = NULL;
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5F_mountpoint, FAIL)
-
- assert(find);
-
- /*
- * The loop is necessary because we might have file1 mounted at the root
- * of file2, which is mounted somewhere in file3.
- */
- do {
- /*
- * Use a binary search to find the potential mount point in the mount
- * table for the parent
- */
- lt = 0;
- rt = parent->mtab.nmounts;
- cmp = -1;
- while (lt<rt && cmp) {
- md = (lt+rt)/2;
- ent = H5G_entof(parent->mtab.child[md].group);
- cmp = H5F_addr_cmp(find->header, ent->header);
- if (cmp<0) {
- rt = md;
- } else {
- lt = md+1;
- }
- }
-
- /* Copy root info over to ENT */
- if (0==cmp) {
- /* Get the entry for the root group in the child's file */
- ent = H5G_entof(parent->mtab.child[md].file->shared->root_grp);
-
- /* Don't lose the user path of the group when we copy the root group's entry */
- if(H5G_ent_copy(find,ent,H5G_COPY_LIMITED)<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTCOPY, FAIL, "unable to copy group entry")
-
- /* Switch to child's file */
- parent = ent->file;
- }
- } while (!cmp);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5F_unmount() */
/*-------------------------------------------------------------------------
@@ -444,30 +369,27 @@ done:
* Purpose: Check if a file has mounted files within it.
*
* Return: Success: TRUE/FALSE
- * Failure: Negative
+ * Failure: (can't happen)
*
* Programmer: Quincey Koziol
* Thursday, January 2, 2002
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
-htri_t
+hbool_t
H5F_has_mount(const H5F_t *file)
{
- htri_t ret_value; /* Return value */
+ hbool_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5F_has_mount, FAIL)
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_has_mount)
- assert(file);
+ HDassert(file);
- if(file->mtab.nmounts>0)
- ret_value=TRUE;
+ if(file->mtab.nmounts > 0)
+ ret_value = TRUE;
else
- ret_value=FALSE;
+ ret_value = FALSE;
-done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_has_mount() */
@@ -478,30 +400,27 @@ done:
* Purpose: Check if a file is mounted within another file.
*
* Return: Success: TRUE/FALSE
- * Failure: Negative
+ * Failure: (can't happen)
*
* Programmer: Quincey Koziol
* Thursday, January 2, 2002
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
-htri_t
+hbool_t
H5F_is_mount(const H5F_t *file)
{
- htri_t ret_value; /* Return value */
+ hbool_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5F_is_mount, FAIL)
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_is_mount)
- assert(file);
+ HDassert(file);
- if(file->mtab.parent!=NULL)
- ret_value=TRUE;
+ if(file->mtab.parent != NULL)
+ ret_value = TRUE;
else
- ret_value=FALSE;
+ ret_value = FALSE;
-done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_is_mount() */
@@ -517,26 +436,24 @@ done:
* Programmer: Robb Matzke
* Tuesday, October 6, 1998
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
herr_t
H5Fmount(hid_t loc_id, const char *name, hid_t child_id, hid_t plist_id)
{
- H5G_entry_t *loc = NULL;
- H5F_t *child = NULL;
+ H5G_loc_t loc;
+ H5F_t *child = NULL;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_API(H5Fmount, FAIL)
H5TRACE4("e","isii",loc_id,name,child_id,plist_id);
/* Check arguments */
- if (NULL==(loc=H5G_loc(loc_id)))
+ if(H5G_loc(loc_id, &loc) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a location")
- if (!name || !*name)
+ if(!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name")
- if (NULL==(child=H5I_object_verify(child_id,H5I_FILE)))
+ if(NULL == (child = H5I_object_verify(child_id,H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file")
if(H5P_DEFAULT == plist_id)
plist_id = H5P_MOUNT_DEFAULT;
@@ -545,12 +462,12 @@ H5Fmount(hid_t loc_id, const char *name, hid_t child_id, hid_t plist_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not property list")
/* Do the mount */
- if (H5F_mount(loc, name, child, plist_id, H5AC_dxpl_id)<0)
+ if(H5F_mount(&loc, name, child, plist_id, H5AC_dxpl_id) < 0)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "unable to mount file")
done:
FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Fmount() */
/*-------------------------------------------------------------------------
@@ -570,32 +487,30 @@ done:
* Programmer: Robb Matzke
* Tuesday, October 6, 1998
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
herr_t
H5Funmount(hid_t loc_id, const char *name)
{
- H5G_entry_t *loc = NULL;
+ H5G_loc_t loc;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_API(H5Funmount, FAIL)
H5TRACE2("e","is",loc_id,name);
/* Check args */
- if (NULL==(loc=H5G_loc(loc_id)))
+ if(H5G_loc(loc_id, &loc) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a location")
- if (!name || !*name)
+ if(!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name")
/* Unmount */
- if (H5F_unmount(loc, name, H5AC_dxpl_id)<0)
+ if (H5F_unmount(&loc, name, H5AC_dxpl_id) < 0)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "unable to unmount file")
done:
FUNC_LEAVE_API(ret_value)
-}
+} /* end H5Funmount() */
/*-------------------------------------------------------------------------
@@ -609,8 +524,6 @@ done:
* Programmer: Quincey Koziol
* Tuesday, July 19, 2005
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
static void
@@ -658,8 +571,6 @@ H5F_mount_count_ids_recurse(H5F_t *f, unsigned *nopen_files, unsigned *nopen_obj
* Programmer: Quincey Koziol
* Tues, July 19, 2005
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
herr_t