1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-01 04:58:35 +03:00

vfs_ceph_new: refactor error-case in cephmount_mount_fs

Align code-style of 'cephmount_mount_fs' with rest of the code: use
'goto' for bail-out upon error case (with proper cleanups). For the
common case of successful operation complete execution and return final
value. Added extra debug-logging for good-path case.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15703

Signed-off-by: Shachar Sharon <ssharon@redhat.com>
Reviewed-by: Anoop C S <anoopcs@samba.org>
Reviewed-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
Shachar Sharon 2024-09-04 14:55:50 +03:00 committed by Anoop C S
parent e4e3f05cd7
commit d9b872afee

View File

@ -266,24 +266,24 @@ static struct ceph_mount_info *cephmount_mount_fs(
(config->conf_file == NULL ? "default path" : config->conf_file)); (config->conf_file == NULL ? "default path" : config->conf_file));
ret = config->ceph_conf_read_file_fn(mnt, config->conf_file); ret = config->ceph_conf_read_file_fn(mnt, config->conf_file);
if (ret) { if (ret) {
goto err_cm_release; goto out;
} }
DBG_DEBUG("[CEPH] calling: ceph_conf_get\n"); DBG_DEBUG("[CEPH] calling: ceph_conf_get\n");
ret = config->ceph_conf_get_fn(mnt, "log file", buf, sizeof(buf)); ret = config->ceph_conf_get_fn(mnt, "log file", buf, sizeof(buf));
if (ret < 0) { if (ret < 0) {
goto err_cm_release; goto out;
} }
/* libcephfs disables POSIX ACL support by default, enable it... */ /* libcephfs disables POSIX ACL support by default, enable it... */
ret = config->ceph_conf_set_fn(mnt, "client_acl_type", "posix_acl"); ret = config->ceph_conf_set_fn(mnt, "client_acl_type", "posix_acl");
if (ret < 0) { if (ret < 0) {
goto err_cm_release; goto out;
} }
/* tell libcephfs to perform local permission checks */ /* tell libcephfs to perform local permission checks */
ret = config->ceph_conf_set_fn(mnt, "fuse_default_permissions", "false"); ret = config->ceph_conf_set_fn(mnt, "fuse_default_permissions", "false");
if (ret < 0) { if (ret < 0) {
goto err_cm_release; goto out;
} }
/* /*
* select a cephfs file system to use: * select a cephfs file system to use:
@ -293,26 +293,30 @@ static struct ceph_mount_info *cephmount_mount_fs(
if (config->fsname != NULL) { if (config->fsname != NULL) {
ret = config->ceph_select_filesystem_fn(mnt, config->fsname); ret = config->ceph_select_filesystem_fn(mnt, config->fsname);
if (ret < 0) { if (ret < 0) {
goto err_cm_release; goto out;
} }
} }
DBG_DEBUG("[CEPH] calling: ceph_mount\n"); DBG_DEBUG("[CEPH] calling: ceph_mount\n");
ret = config->ceph_mount_fn(mnt, NULL); ret = config->ceph_mount_fn(mnt, NULL);
if (ret >= 0) { if (ret < 0) {
goto cm_done; goto out;
} }
ret = 0;
err_cm_release: out:
if (ret != 0) {
config->ceph_release_fn(mnt); config->ceph_release_fn(mnt);
mnt = NULL; mnt = NULL;
DBG_DEBUG("[CEPH] Error mounting fs: %s\n", strerror(-ret)); DBG_ERR("[CEPH] mount failed: user_id='%s' fsname='%s' %s",
cm_done: (config->user_id != NULL) ? config->user_id : "",
/* (config->fsname != NULL) ? config->fsname : "",
* Handle the error correctly. Ceph returns -errno. strerror(-ret));
*/
if (ret) {
errno = -ret; errno = -ret;
} else {
DBG_DEBUG("[CEPH] mount done: user_id='%s' fsname='%s'",
(config->user_id != NULL) ? config->user_id : "",
(config->fsname != NULL) ? config->fsname : "");
} }
return mnt; return mnt;
} }