1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-24 13:57:43 +03:00

shadow_copy2: introduce "shadow:mountpoint" option

Possiblity to explicitly set the share's mount point.
This is useful mainly for debugging and testing purposes.

Signed-off-by: Michael Adam <obnox@samba.org>

Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Michael Adam 2013-05-31 16:36:33 +02:00 committed by Andrew Bartlett
parent ed751b9ee4
commit 2d5a3af4bc

View File

@ -1583,6 +1583,7 @@ static int shadow_copy2_connect(struct vfs_handle_struct *handle,
const char *gmt_format; const char *gmt_format;
const char *sort_order; const char *sort_order;
const char *basedir; const char *basedir;
const char *mount_point;
DEBUG(10, (__location__ ": cnum[%u], connectpath[%s]\n", DEBUG(10, (__location__ ": cnum[%u], connectpath[%s]\n",
(unsigned)handle->conn->cnum, (unsigned)handle->conn->cnum,
@ -1649,11 +1650,43 @@ static int shadow_copy2_connect(struct vfs_handle_struct *handle,
return -1; return -1;
} }
config->mount_point = shadow_copy2_find_mount_point(config, handle); mount_point = lp_parm_const_string(SNUM(handle->conn),
if (config->mount_point == NULL) { "shadow", "mountpoint", NULL);
DEBUG(0, (__location__ ": shadow_copy2_find_mount_point " if (mount_point != NULL) {
"failed: %s\n", strerror(errno))); if (mount_point[0] != '/') {
return -1; DEBUG(1, (__location__ " Warning: 'mountpoint' is "
"relative ('%s'), but it has to be an "
"absolute path. Ignoring provided value.\n",
mount_point));
mount_point = NULL;
} else {
char *p;
p = strstr(handle->conn->connectpath, mount_point);
if (p != handle->conn->connectpath) {
DEBUG(1, ("Warning: mount_point (%s) is not a "
"subdirectory of the share root "
"(%s). Ignoring provided value.\n",
mount_point,
handle->conn->connectpath));
mount_point = NULL;
}
}
}
if (mount_point != NULL) {
config->mount_point = talloc_strdup(config, mount_point);
if (config->mount_point == NULL) {
DEBUG(0, (__location__ " talloc_strdup() failed\n"));
return -1;
}
} else {
config->mount_point = shadow_copy2_find_mount_point(config,
handle);
if (config->mount_point == NULL) {
DEBUG(0, (__location__ ": shadow_copy2_find_mount_point"
" failed: %s\n", strerror(errno)));
return -1;
}
} }
basedir = lp_parm_const_string(SNUM(handle->conn), basedir = lp_parm_const_string(SNUM(handle->conn),