summaryrefslogtreecommitdiffstats
path: root/api/src
diff options
context:
space:
mode:
Diffstat (limited to 'api/src')
-rw-r--r--api/src/gfapi.aliases2
-rw-r--r--api/src/gfapi.map7
-rw-r--r--api/src/glfs.c24
-rw-r--r--api/src/glfs.h8
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 */