summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2018-04-18 20:39:41 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2018-04-18 20:39:41 (GMT)
commit150f5a9a89301558c1b83cd8f99f83995496c9a4 (patch)
tree64fddca0f6e26ec369c0964d87f8cad26f7704e9
parenta297cbcbb07633a7d774ecdf7f8dde141ced3446 (diff)
downloadhdf5-150f5a9a89301558c1b83cd8f99f83995496c9a4.zip
hdf5-150f5a9a89301558c1b83cd8f99f83995496c9a4.tar.gz
hdf5-150f5a9a89301558c1b83cd8f99f83995496c9a4.tar.bz2
Add 2 character prefix to oids to disambiguate chunks from objects or
chunks with lower rank in files whose filename ends with something that looks like an oid.
-rw-r--r--examples/Makefile.am4
-rw-r--r--src/H5VLrados.c14
2 files changed, 9 insertions, 9 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 18cafb6..323541f 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -57,9 +57,9 @@ INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c \
h5_reference.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c \
h5_ref2reg.c h5_shared_mesg.c ph5example.c \
h5_vol_external_log_native.c \
- h5_vds.c h5_vds-exc.c \
+ h5_vds.c h5_vds-exc.c \
h5_vds-exclim.c h5_vds-eiger.c h5_vds-simpleIO.c h5_vds-percival.c \
- h5_vds-percival-unlim.c h5_vds-percival-unlim-maxmin.c
+ h5_vds-percival-unlim.c h5_vds-percival-unlim-maxmin.c \
h5rados_file_create.c h5rados_file_open.c h5rados_group_create.c \
h5rados_group_open.c h5rados_dset_create.c \
h5rados_dset_open.c h5rados_dset_write.c h5rados_dset_read.c \
diff --git a/src/H5VLrados.c b/src/H5VLrados.c
index 0ce9957..124ed0d 100644
--- a/src/H5VLrados.c
+++ b/src/H5VLrados.c
@@ -343,13 +343,13 @@ H5VL_rados_oid_create_string(const H5VL_rados_file_t *file, uint64_t bin_oid,
FUNC_ENTER_NOAPI_NOINIT
/* Allocate space for oid */
- if(NULL == (tmp_oid = (char *)H5MM_malloc(file->file_name_len + 16 + 1)))
+ if(NULL == (tmp_oid = (char *)H5MM_malloc(2 + file->file_name_len + 16 + 1)))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, FAIL, "can't allocate RADOS object id")
/* Encode file name and binary oid into string oid */
- if(HDsnprintf(tmp_oid, file->file_name_len + 16 + 1, "%s%016llX",
+ if(HDsnprintf(tmp_oid, file->file_name_len + 16 + 1, "ob%s%016llX",
file->file_name, (long long unsigned)bin_oid)
- != (int)file->file_name_len + 16)
+ != 2 + (int)file->file_name_len + 16)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't encode string object id")
/* Return oid string value */
@@ -378,15 +378,15 @@ H5VL_rados_oid_create_chunk(const H5VL_rados_file_t *file, uint64_t bin_oid,
FUNC_ENTER_NOAPI_NOINIT
/* Allocate space for oid */
- oid_len = file->file_name_len + 16 + ((size_t)rank * 16) + 1;
+ oid_len = 2 + file->file_name_len + 16 + ((size_t)rank * 16) + 1;
if(NULL == (tmp_oid = (char *)H5MM_malloc(oid_len)))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, FAIL, "can't allocate RADOS object id")
/* Encode file name and binary oid into string oid */
- if(HDsnprintf(tmp_oid, oid_len, "%s%016llX", file->file_name,
- (long long unsigned)bin_oid) != (int)file->file_name_len + 16)
+ if(HDsnprintf(tmp_oid, oid_len, "%02X%s%016llX", rank, file->file_name,
+ (long long unsigned)bin_oid) != 2 + (int)file->file_name_len + 16)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't encode string object id")
- oid_off = file->file_name_len + 16;
+ oid_off = 2 + file->file_name_len + 16;
/* Encode chunk location */
for(i = 0; i < rank; i++) {