diff options
Diffstat (limited to 'api/src/glfs-handleops.c')
-rw-r--r-- | api/src/glfs-handleops.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c index 69c542e5886..de0a6deb87f 100644 --- a/api/src/glfs-handleops.c +++ b/api/src/glfs-handleops.c @@ -2379,3 +2379,48 @@ pub_glfs_h_anonymous_write (struct glfs *fs, struct glfs_object *object, } GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_h_anonymous_write, 3.7.0); + +struct glfs_object* +pub_glfs_object_copy (struct glfs_object *src) +{ + struct glfs_object *object = NULL; + + GF_VALIDATE_OR_GOTO ("glfs_dup_object", src, out); + + object = GF_CALLOC (1, sizeof(struct glfs_object), + glfs_mt_glfs_object_t); + if (object == NULL) { + errno = ENOMEM; + gf_msg (THIS->name, GF_LOG_WARNING, errno, + API_MSG_CREATE_HANDLE_FAILED, + "glfs_dup_object for gfid-%s failed", + uuid_utoa (src->inode->gfid)); + return NULL; + } + + object->inode = inode_ref (src->inode); + gf_uuid_copy (object->gfid, src->inode->gfid); + +out: + return object; +} +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_object_copy, 3.11.0); + +struct glfs_object* +pub_glfs_xreaddirplus_get_object (struct glfs_xreaddirp_stat *xstat) +{ + GF_VALIDATE_OR_GOTO ("glfs_xreaddirplus_get_object", xstat, out); + + if (!(xstat->flags_handled & GFAPI_XREADDIRP_HANDLE)) + gf_msg (THIS->name, GF_LOG_ERROR, errno, + LG_MSG_INVALID_ARG, + "GFAPI_XREADDIRP_HANDLE is not set. Flags" + "handled for xstat(%p) are (%x)", + xstat, xstat->flags_handled); + + return xstat->object; + +out: + return NULL; +} +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_xreaddirplus_get_object, 3.11.0); |