diff options
Diffstat (limited to 'api/src')
-rw-r--r-- | api/src/gfapi.aliases | 2 | ||||
-rw-r--r-- | api/src/gfapi.map | 7 | ||||
-rw-r--r-- | api/src/glfs.c | 24 | ||||
-rw-r--r-- | api/src/glfs.h | 8 |
4 files changed, 40 insertions, 1 deletions
diff --git a/api/src/gfapi.aliases b/api/src/gfapi.aliases index 6c0a6413098..2ab7d443eb5 100644 --- a/api/src/gfapi.aliases +++ b/api/src/gfapi.aliases @@ -125,6 +125,8 @@ _pub_glfs_h_removexattrs _glfs_h_removexattrs$GFAPI_3.5.1 _pub_glfs_get_volfile _glfs_get_volfile$GFAPI_3.6.0 _pub_glfs_h_access _glfs_h_access$GFAPI_3.6.0 +_pub_glfs_ipc _glfs_ipc$GFAPI_3.7.0 + _priv_glfs_free_from_ctx _glfs_free_from_ctx$GFAPI_PRIVATE_3.7.0 _priv_glfs_new_from_ctx _glfs_new_from_ctx$GFAPI_PRIVATE_3.7.0 _priv_glfs_resolve _glfs_resolve$GFAPI_PRIVATE_3.7.0 diff --git a/api/src/gfapi.map b/api/src/gfapi.map index a29f392dc53..39202e1883f 100644 --- a/api/src/gfapi.map +++ b/api/src/gfapi.map @@ -145,10 +145,15 @@ GFAPI_3.6.0 { glfs_h_access; } GFAPI_3.5.1; +GFAPI_3.7.0 { + global: + glfs_ipc; +} GFAPI_3.6.0; + GFAPI_PRIVATE_3.7.0 { global: glfs_free_from_ctx; glfs_new_from_ctx; glfs_resolve; -} GFAPI_3.6.0; +} GFAPI_3.7.0; diff --git a/api/src/glfs.c b/api/src/glfs.c index 421374d9731..f23481bbb4c 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -1067,3 +1067,27 @@ pub_glfs_get_volfile (struct glfs *fs, void *buf, size_t len) GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_get_volfile, 3.6.0); +int +pub_glfs_ipc (struct glfs *fs, int opcode) +{ + xlator_t *subvol = NULL; + int ret; + + __glfs_entry_fs (fs); + + subvol = glfs_active_subvol (fs); + if (!subvol) { + ret = -1; + errno = EIO; + goto out; + } + + ret = syncop_ipc (subvol, opcode, NULL, NULL); + DECODE_SYNCOP_ERR (ret); + +out: + glfs_subvol_done (fs, subvol); + return ret; +} + +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_ipc, 3.7.0); diff --git a/api/src/glfs.h b/api/src/glfs.h index 3ef822ed3f1..9ee772741e6 100644 --- a/api/src/glfs.h +++ b/api/src/glfs.h @@ -760,6 +760,14 @@ int glfs_posix_lock (glfs_fd_t *fd, int cmd, struct flock *flock) __THROW glfs_fd_t *glfs_dup (glfs_fd_t *fd) __THROW GFAPI_PUBLIC(glfs_dup, 3.4.0); +/* + * No xdata support for now. Nobody needs this call at all yet except for the + * test script, and that doesn't need xdata. Adding dict_t support and a new + * header-file requirement doesn't seem worth it until the need is greater. + */ +int glfs_ipc (glfs_fd_t *fd, int cmd) __THROW + GFAPI_PUBLIC(glfs_ipc, 3.7.0); + __END_DECLS #endif /* !_GLFS_H */ |