From d902ae6a427387d6aef4b3c9e6f1247653e0c914 Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Wed, 24 May 2023 14:06:36 -0700 Subject: [PATCH 1/2] gpfswrap: Add wrapper for gpfs_register_cifs_export BUG: https://bugzilla.samba.org/show_bug.cgi?id=15381 Signed-off-by: Christof Schmitt Reviewed-by: Stefan Metzmacher (cherry picked from commit 34b9c54ff2f089dbffe65bdc69f3024b5d3efd5c) --- lib/util/gpfswrap.c | 12 ++++++++++++ lib/util/gpfswrap.h | 1 + 2 files changed, 13 insertions(+) diff --git a/lib/util/gpfswrap.c b/lib/util/gpfswrap.c index d05358e141e..2f15bf452cf 100644 --- a/lib/util/gpfswrap.c +++ b/lib/util/gpfswrap.c @@ -28,6 +28,7 @@ static int (*gpfs_putacl_fn)(const char *pathname, int flags, void *acl); static int (*gpfs_get_realfilename_path_fn)(const char *pathname, char *filenamep, int *len); +static int (*gpfs_register_cifs_export_fn)(void); static int (*gpfs_set_winattrs_path_fn)(const char *pathname, int flags, struct gpfs_winattr *attrs); @@ -71,6 +72,7 @@ int gpfswrap_init(void) gpfs_fgetacl_fn = dlsym(l, "gpfs_getacl_fd"); gpfs_putacl_fn = dlsym(l, "gpfs_putacl"); gpfs_get_realfilename_path_fn = dlsym(l, "gpfs_get_realfilename_path"); + gpfs_register_cifs_export_fn = dlsym(l, "gpfs_register_cifs_export"); gpfs_set_winattrs_path_fn = dlsym(l, "gpfs_set_winattrs_path"); gpfs_set_winattrs_fn = dlsym(l, "gpfs_set_winattrs"); gpfs_get_winattrs_fn = dlsym(l, "gpfs_get_winattrs"); @@ -141,6 +143,16 @@ int gpfswrap_get_realfilename_path(const char *pathname, return gpfs_get_realfilename_path_fn(pathname, filenamep, len); } +int gpfswrap_register_cifs_export(void) +{ + if (gpfs_register_cifs_export_fn == NULL) { + errno = ENOSYS; + return -1; + } + + return gpfs_register_cifs_export_fn(); +} + int gpfswrap_set_winattrs_path(const char *pathname, int flags, struct gpfs_winattr *attrs) diff --git a/lib/util/gpfswrap.h b/lib/util/gpfswrap.h index 1e74496c060..e387a56446b 100644 --- a/lib/util/gpfswrap.h +++ b/lib/util/gpfswrap.h @@ -34,6 +34,7 @@ int gpfswrap_putacl(const char *pathname, int flags, void *acl); int gpfswrap_get_realfilename_path(const char *pathname, char *filenamep, int *len); +int gpfswrap_register_cifs_export(void); int gpfswrap_set_winattrs_path(const char *pathname, int flags, struct gpfs_winattr *attrs); -- 2.39.3 From 733fd6e7525d48350aa63ea2e6d0461f2eca145a Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Wed, 31 May 2023 11:13:51 -0700 Subject: [PATCH 2/2] vfs_gpfs: Register smbd process with GPFS Issue API call to tell the file system that this is a Samba process. This fixed the GPFS handling of Samba since the rename of smbd processes in commit 5955dc1e4fd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15381 Signed-off-by: Christof Schmitt Reviewed-by: Stefan Metzmacher (cherry picked from commit 3b72136f6782d9704a197ab7b17201df6ff4d60d) --- source3/modules/vfs_gpfs.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c index 969e7744fce..93748eab54c 100644 --- a/source3/modules/vfs_gpfs.c +++ b/source3/modules/vfs_gpfs.c @@ -2043,6 +2043,12 @@ static int vfs_gpfs_connect(struct vfs_handle_struct *handle, gpfswrap_lib_init(0); + ret = gpfswrap_register_cifs_export(); + if (ret < 0) { + DBG_ERR("Failed to register with GPFS: %s\n", strerror(errno)); + return ret; + } + config = talloc_zero(handle->conn, struct gpfs_config_data); if (!config) { DEBUG(0, ("talloc_zero() failed\n")); -- 2.39.3