summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2019-02-19 04:17:54 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2019-02-19 04:17:54 (GMT)
commitfedf16540c21c722cb1e6b2017ed5ef1417face7 (patch)
tree6760e5003ff8adba57ab4ca9fca9c77b0fbb70f2
parentefb2f4932fc622e68b1d6e27435beb06da617638 (diff)
downloadhdf5-fedf16540c21c722cb1e6b2017ed5ef1417face7.zip
hdf5-fedf16540c21c722cb1e6b2017ed5ef1417face7.tar.gz
hdf5-fedf16540c21c722cb1e6b2017ed5ef1417face7.tar.bz2
Added a helper function to wrap rados_write_full().
-rw-r--r--src/H5VLrados.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/H5VLrados.c b/src/H5VLrados.c
index bfeb37d..4069d0b 100644
--- a/src/H5VLrados.c
+++ b/src/H5VLrados.c
@@ -348,6 +348,36 @@ rados_ioctx_t ioctx_g;
hbool_t ioctx_init_g = FALSE;
+/*-------------------------------------------------------------------------
+ * Function: H5VL_rados_write_full
+ *
+ * Purpose: Recreates rados_write_full(). We are trying to use all
+ * read_op calls and this lets us do that without duplicating
+ * all the RADOS calls.
+ *
+ * Return: Success: 0
+ * Failure: -11
+ *
+ * Programmer: Dana Robinson
+ * February, 2019
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5VL_rados_write_full(rados_ioctx_t io, const char *oid, const char *buf, size_t len)
+{
+ int ret;
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER_NOAPI_NOINIT
+
+ if((ret = rados_write_full(io, oid, buf, len)) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't write metadata to object: %s", strerror(-ret))
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5VL_rados_write_full() */
+
+
/* Create a RADOS string oid given the file name and binary oid */
static herr_t
H5VL_rados_oid_create_string(const H5VL_rados_file_t *file, uint64_t bin_oid,
@@ -1272,7 +1302,7 @@ H5VL_rados_write_max_oid(H5VL_rados_file_t *file)
UINT64ENCODE(p, file->max_oid)
- if((ret = rados_write_full(ioctx_g, file->glob_md_oid, (const char *)wbuf, (size_t)8)) < 0)
+ if((ret = H5VL_rados_write_full(ioctx_g, file->glob_md_oid, (const char *)wbuf, (size_t)8)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't write metadata to group: %s", strerror(-ret))
file->max_oid_dirty = FALSE;
} /* end if */
@@ -1822,7 +1852,7 @@ H5VL_rados_group_create_helper(H5VL_rados_file_t *file, hid_t gcpl_id,
HGOTO_ERROR(H5E_SYM, H5E_CANTENCODE, NULL, "can't serialize gcpl")
/* Write internal metadata to group */
- if((ret = rados_write_full(ioctx_g, grp->obj.oid, gcpl_buf, gcpl_size)) < 0)
+ if((ret = H5VL_rados_write_full(ioctx_g, grp->obj.oid, gcpl_buf, gcpl_size)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NULL, "can't write metadata to group: %s", strerror(-ret))
/* Mark max OID as dirty */
@@ -2700,7 +2730,7 @@ H5VL_rados_dataset_create(void *_item,
HGOTO_ERROR(H5E_DATASET, H5E_CANTENCODE, NULL, "can't serialize dcpl")
/* Write internal metadata to dataset */
- if((ret = rados_write_full(ioctx_g, dset->obj.oid, (const char *)md_buf, md_size)) < 0)
+ if((ret = H5VL_rados_write_full(ioctx_g, dset->obj.oid, (const char *)md_buf, md_size)) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL, "can't write metadata to dataset: %s", strerror(-ret))
/* Mark max OID as dirty */