#include "includes.h"
#include "smbd/smbd.h"
#include <stdio.h>
-#include "api/glfs.h"
+#include <glusterfs/api/glfs.h>
#include "lib/util/dlinklist.h"
#include "lib/util/tevent_unix.h"
#include "smbd/globals.h"
volume, strerror(errno)));
goto done;
}
+
+ /*
+ * The shadow_copy2 module will fail to export subdirectories
+ * of a gluster volume unless we specify the mount point,
+ * because the detection fails if the file system is not
+ * locally mounted:
+ * https://bugzilla.samba.org/show_bug.cgi?id=13091
+ */
+ lp_do_parameter(SNUM(handle->conn), "shadow:mountpoint", "/");
+
done:
if (ret < 0) {
if (fs)
glfs_seekdir((void *)dirp, 0);
}
-static void vfs_gluster_init_search_op(struct vfs_handle_struct *handle,
- DIR *dirp)
-{
- return;
-}
-
static int vfs_gluster_mkdir(struct vfs_handle_struct *handle,
const struct smb_filename *smb_fname,
mode_t mode)
}
ret = glfs_getcwd(handle->data, cwd, PATH_MAX - 1);
- if (ret == 0) {
- free(cwd);
+ if (ret == NULL) {
+ SAFE_FREE(cwd);
+ return NULL;
}
smb_fname = synthetic_smb_fname(ctx,
ret,
NULL,
NULL,
0);
- free(cwd);
+ SAFE_FREE(cwd);
return smb_fname;
}
.mkdir_fn = vfs_gluster_mkdir,
.rmdir_fn = vfs_gluster_rmdir,
.closedir_fn = vfs_gluster_closedir,
- .init_search_op_fn = vfs_gluster_init_search_op,
/* File Operations */
.realpath_fn = vfs_gluster_realpath,
.chflags_fn = vfs_gluster_chflags,
.file_id_create_fn = NULL,
- .copy_chunk_send_fn = NULL,
- .copy_chunk_recv_fn = NULL,
.streaminfo_fn = NULL,
.get_real_filename_fn = vfs_gluster_get_real_filename,
.connectpath_fn = vfs_gluster_connectpath,
.brl_lock_windows_fn = NULL,
.brl_unlock_windows_fn = NULL,
.brl_cancel_windows_fn = NULL,
- .strict_lock_fn = NULL,
- .strict_unlock_fn = NULL,
+ .strict_lock_check_fn = NULL,
.translate_name_fn = NULL,
.fsctl_fn = NULL,