diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handshake.c | 7 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-snapshot.c | 204 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.c | 33 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.h | 1 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 118 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 8 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 1 |
7 files changed, 250 insertions, 122 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c index 7d582d443f4..da3a01c99f8 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handshake.c +++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c @@ -349,7 +349,6 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, glusterd_snap_op_t *snap_opinfo) { char *device = NULL; - char fstype[NAME_MAX] = ""; glusterd_conf_t *priv = NULL; glusterd_snap_t *snap = NULL; glusterd_volinfo_t *snap_vol = NULL; @@ -435,12 +434,10 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, /* Update the backend file-system type of snap brick in * snap volinfo. */ - ret = glusterd_update_fstype (snap_opinfo->brick_path, brickinfo, - fstype, sizeof(fstype)); + ret = glusterd_update_mntopts (snap_opinfo->brick_path, brickinfo); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to update " - "file-system type for %s brick", - brickinfo->path); + "mount options for %s brick", brickinfo->path); /* We should not fail snapshot operation if we fail to get * the file-system type */ } diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c index bde9aeb3fe3..a86795e224e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c @@ -995,6 +995,17 @@ glusterd_snapshot_restore_prevalidate (dict_t *dict, char **op_errstr, "Failed to set %s", key); goto out; } + + snprintf (key, sizeof (key), + "snap%d.brick%d.mnt_opts", + volcount, brick_count); + ret = dict_set_str (rsp_dict, key, + brickinfo->mnt_opts); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set %s", key); + goto out; + } } snprintf (key, sizeof (key), "snap%d.brick_count", volcount); @@ -1311,6 +1322,7 @@ glusterd_snap_create_pre_val_use_rsp_dict (dict_t *dst, dict_t *src) char *snap_brick_dir = NULL; char *snap_device = NULL; char key[PATH_MAX] = ""; + char *value = ""; char snapbrckcnt[PATH_MAX] = ""; char snapbrckord[PATH_MAX] = ""; int ret = -1; @@ -1379,6 +1391,44 @@ glusterd_snap_create_pre_val_use_rsp_dict (dict_t *dst, dict_t *src) } snprintf (key, sizeof(key) - 1, + "vol%"PRId64".fstype%"PRId64, i+1, j); + ret = dict_get_str (src, key, &value); + if (ret) { + gf_log (this->name, GF_LOG_WARNING, + "Unable to fetch %s", key); + continue; + } + + snprintf (key, sizeof(key) - 1, + "vol%"PRId64".fstype%"PRId64, i+1, + brick_order); + ret = dict_set_dynstr_with_alloc (dst, key, value); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set %s", key); + goto out; + } + + snprintf (key, sizeof(key) - 1, + "vol%"PRId64".mnt_opts%"PRId64, i+1, j); + ret = dict_get_str (src, key, &value); + if (ret) { + gf_log (this->name, GF_LOG_WARNING, + "Unable to fetch %s", key); + continue; + } + + snprintf (key, sizeof(key) - 1, + "vol%"PRId64".mnt_opts%"PRId64, i+1, + brick_order); + ret = dict_set_dynstr_with_alloc (dst, key, value); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set %s", key); + goto out; + } + + snprintf (key, sizeof(key) - 1, "vol%"PRId64".brick_snapdevice%"PRId64, i+1, j); ret = dict_get_ptr (src, key, @@ -1527,6 +1577,21 @@ glusterd_snap_restore_use_rsp_dict (dict_t *dst, dict_t *src) "Failed to set %s", key); goto out; } + + snprintf (key, sizeof (key), + "snap%d.brick%d.mnt_opts", i, j); + ret = dict_get_str (src, key, &strvalue); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to get %s", key); + goto out; + } + ret = dict_set_dynstr_with_alloc (dst, key, strvalue); + if (ret) { + gf_log (this->name, GF_LOG_DEBUG, + "Failed to set %s", key); + goto out; + } } } @@ -1918,6 +1983,34 @@ glusterd_snapshot_create_prevalidate (dict_t *dict, char **op_errstr, } device = NULL; + ret = glusterd_update_mntopts (brickinfo->path, + brickinfo); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to " + "update mount options for %s brick", + brickinfo->path); + } + + snprintf (key, sizeof(key), "vol%"PRId64".fstype%" + PRId64, i, brick_count); + ret = dict_set_dynstr_with_alloc (rsp_dict, key, + brickinfo->fstype); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set %s", key); + goto out; + } + + snprintf (key, sizeof(key), "vol%"PRId64".mnt_opts%" + PRId64, i, brick_count); + ret = dict_set_dynstr_with_alloc (rsp_dict, key, + brickinfo->mnt_opts); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set %s", key); + goto out; + } + snprintf (key, sizeof(key), "vol%"PRId64".brickdir%"PRId64, i, brick_count); ret = dict_set_dynstr_with_alloc (rsp_dict, key, @@ -3868,9 +3961,7 @@ glusterd_snap_brick_create (glusterd_volinfo_t *snap_volinfo, MS_MGC_VAL, "nouuid"); But for now, mounting using runner apis. */ - ret = glusterd_mount_lvm_snapshot (brickinfo->device_path, - snap_brick_mount_path, - brickinfo->fstype); + ret = glusterd_mount_lvm_snapshot (brickinfo, snap_brick_mount_path); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to mount lvm snapshot."); @@ -3910,74 +4001,6 @@ out: return ret; } -/* This function will update the backend file-system - * type in origin and snap brickinfo. This will be later - * used to perform file-system specific operation during - * LVM snapshot. - * - * @param orig_brickinfo brickinfo of origin volume - * @param snap_brickinfo brickinfo of snap volume - * - * @return 0 on success and -1 on failure - */ -int -glusterd_update_fstype (char *orig_brick_path, - glusterd_brickinfo_t *snap_brickinfo, - char *fstype, size_t fslen) -{ - int32_t ret = -1; - char *mnt_pt = NULL; - char buff [PATH_MAX] = ""; - char msg [PATH_MAX] = ""; - char *cmd = NULL; - struct mntent *entry = NULL; - struct mntent save_entry = {0,}; - runner_t runner = {0,}; - xlator_t *this = NULL; - - this = THIS; - GF_ASSERT (this); - GF_ASSERT (orig_brick_path); - GF_ASSERT (snap_brickinfo); - GF_ASSERT (fstype); - - /* If the file-system type is not set then set the file-system type - * in origin brickinfo */ - if (0 == fstype [0]) { - ret = glusterd_get_brick_root (orig_brick_path, &mnt_pt); - if (ret) { - gf_log (this->name, GF_LOG_ERROR, "getting the root " - "of the brick (%s) failed ", - orig_brick_path); - goto out; - } - - entry = glusterd_get_mnt_entry_info (mnt_pt, buff, - sizeof (buff), &save_entry); - if (!entry) { - gf_log (this->name, GF_LOG_ERROR, "getting the mount " - "entry for the brick (%s) failed", - orig_brick_path); - ret = -1; - goto out; - } - - /* Update the origin brickinfo with the backend file-system - * type */ - snprintf (fstype, fslen, "%s", - entry->mnt_type); - } - - /* Update the file-system type for snap brickinfo */ - snprintf (snap_brickinfo->fstype, sizeof (snap_brickinfo->fstype), - "%s", fstype); - - ret = 0; -out: - GF_FREE (mnt_pt); - return ret; -} - static int32_t glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict, glusterd_volinfo_t *snap_vol, @@ -3985,6 +4008,7 @@ glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict, int64_t volcount, int32_t brick_count) { char key[PATH_MAX] = ""; + char *value = NULL; char *snap_brick_dir = NULL; char snap_brick_path[PATH_MAX] = ""; char *snap_device = NULL; @@ -4017,22 +4041,28 @@ glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict, goto out; } - /* Update fstype for the local bricks only */ - if (!uuid_compare (original_brickinfo->uuid, MY_UUID)) { - /* Update the backend file-system type of snap brick in - * snap volinfo. */ - ret = glusterd_update_fstype - (original_brickinfo->path, - snap_brickinfo, - original_brickinfo->fstype, - sizeof(original_brickinfo->fstype)); - if (ret) { - gf_log (this->name, GF_LOG_ERROR, "Failed to update " - "file-system type for %s brick", - snap_brickinfo->path); - /* We should not fail snapshot operation if we fail to - * get the file-system type */ - } + snprintf (key, sizeof(key) - 1, "vol%"PRId64".fstype%d", volcount, + brick_count); + ret = dict_get_str (dict, key, &value); + if (!ret) { + /* Update the fstype in original brickinfo as well */ + strcpy (original_brickinfo->fstype, value); + strcpy (snap_brickinfo->fstype, value); + } else { + if (is_origin_glusterd (dict) == _gf_true) + add_missed_snap = _gf_true; + } + + snprintf (key, sizeof(key) - 1, "vol%"PRId64".mnt_opts%d", volcount, + brick_count); + ret = dict_get_str (dict, key, &value); + if (!ret) { + /* Update the mnt_opts in original brickinfo as well */ + strcpy (original_brickinfo->mnt_opts, value); + strcpy (snap_brickinfo->mnt_opts, value); + } else { + if (is_origin_glusterd (dict) == _gf_true) + add_missed_snap = _gf_true; } snprintf (key, sizeof(key) - 1, "vol%"PRId64".brickdir%d", volcount, diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c index 3f241bbe53a..b2ff8c2e00e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.c +++ b/xlators/mgmt/glusterd/src/glusterd-store.c @@ -336,6 +336,17 @@ gd_store_brick_snap_details_write (int fd, glusterd_brickinfo_t *brickinfo) } } + if (strlen (brickinfo->mnt_opts) > 0) { + snprintf (value, sizeof (value), "%s", brickinfo->mnt_opts); + ret = gf_store_save_value (fd, + GLUSTERD_STORE_KEY_BRICK_MNTOPTS, value); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to save " + "brick mnt opts of brick %s", brickinfo->path); + goto out; + } + } + memset (value, 0, sizeof (value)); snprintf (value, sizeof(value), "%d", brickinfo->snap_status); ret = gf_store_save_value (fd, GLUSTERD_STORE_KEY_BRICK_SNAP_STATUS, @@ -2318,6 +2329,10 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo) strlen (GLUSTERD_STORE_KEY_BRICK_FSTYPE))) { strncpy (brickinfo->fstype, value, sizeof (brickinfo->fstype)); + } else if (!strncmp (key, GLUSTERD_STORE_KEY_BRICK_MNTOPTS, + strlen (GLUSTERD_STORE_KEY_BRICK_MNTOPTS))) { + strncpy (brickinfo->mnt_opts, value, + sizeof (brickinfo->mnt_opts)); } else if (!strncmp (key, GLUSTERD_STORE_KEY_BRICK_VGNAME, strlen (GLUSTERD_STORE_KEY_BRICK_VGNAME))) { @@ -3143,8 +3158,8 @@ out: * at the brick_mount_path */ int32_t -glusterd_mount_brick_paths (char *brick_mount_path, char *device_path, - const char *fstype) +glusterd_mount_brick_paths (char *brick_mount_path, + glusterd_brickinfo_t *brickinfo) { int32_t ret = -1; runner_t runner = {0, }; @@ -3157,7 +3172,7 @@ glusterd_mount_brick_paths (char *brick_mount_path, char *device_path, this = THIS; GF_ASSERT (this); GF_ASSERT (brick_mount_path); - GF_ASSERT (device_path); + GF_ASSERT (brickinfo); priv = this->private; GF_ASSERT (priv); @@ -3179,21 +3194,20 @@ glusterd_mount_brick_paths (char *brick_mount_path, char *device_path, */ /* Activate the snapshot */ runinit (&runner); - runner_add_args (&runner, "lvchange", "-ay", device_path, + runner_add_args (&runner, "lvchange", "-ay", brickinfo->device_path, NULL); ret = runner_run (&runner); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to activate %s. Error: %s", - device_path, strerror(errno)); + brickinfo->device_path, strerror(errno)); goto out; } else gf_log (this->name, GF_LOG_DEBUG, - "Activating %s successful", device_path); + "Activating %s successful", brickinfo->device_path); /* Mount the snapshot */ - ret = glusterd_mount_lvm_snapshot (device_path, brick_mount_path, - fstype); + ret = glusterd_mount_lvm_snapshot (brickinfo, brick_mount_path); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to mount lvm snapshot."); @@ -3266,8 +3280,7 @@ glusterd_recreate_vol_brick_mounts (xlator_t *this, /* Check if brick_mount_path is already mounted. * If not, mount the device_path at the brick_mount_path */ - ret = glusterd_mount_brick_paths (brick_mount_path, - brickinfo->device_path, brickinfo->fstype); + ret = glusterd_mount_brick_paths (brick_mount_path, brickinfo); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to mount brick_mount_path"); diff --git a/xlators/mgmt/glusterd/src/glusterd-store.h b/xlators/mgmt/glusterd/src/glusterd-store.h index fb7de7b1b10..a17800076e0 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.h +++ b/xlators/mgmt/glusterd/src/glusterd-store.h @@ -85,6 +85,7 @@ typedef enum glusterd_store_ver_ac_{ #define GLUSTERD_STORE_KEY_BRICK_MOUNT_DIR "mount_dir" #define GLUSTERD_STORE_KEY_BRICK_SNAP_STATUS "snap-status" #define GLUSTERD_STORE_KEY_BRICK_FSTYPE "fs-type" +#define GLUSTERD_STORE_KEY_BRICK_MNTOPTS "mnt-opts" #define GLUSTERD_STORE_KEY_BRICK_ID "brick-id" #define GLUSTERD_STORE_KEY_PEER_UUID "uuid" diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 14d98c544aa..ee3759e91d4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -595,6 +595,7 @@ glusterd_brickinfo_dup (glusterd_brickinfo_t *brickinfo, strcpy (dup_brickinfo->path, brickinfo->path); strcpy (dup_brickinfo->device_path, brickinfo->device_path); strcpy (dup_brickinfo->fstype, brickinfo->fstype); + strcpy (dup_brickinfo->mnt_opts, brickinfo->mnt_opts); ret = gf_canonicalize_path (dup_brickinfo->path); if (ret) { gf_log (THIS->name, GF_LOG_ERROR, "Failed to canonicalize " @@ -700,6 +701,13 @@ glusterd_snap_volinfo_restore (dict_t *dict, dict_t *rsp_dict, strncpy (new_brickinfo->fstype, value, sizeof(new_brickinfo->fstype)); + snprintf (key, sizeof (key), "snap%d.brick%d.mnt_opts", + volcount, brick_count); + ret = dict_get_str (dict, key, &value); + if (!ret) + strncpy (new_brickinfo->mnt_opts, value, + sizeof(new_brickinfo->mnt_opts)); + /* If the brick is not of this peer, or snapshot is missed * * for the brick do not replace the xattr for it */ if ((!uuid_compare (brickinfo->uuid, MY_UUID)) && @@ -2304,6 +2312,15 @@ gd_add_brick_snap_details_to_dict (dict_t *dict, char *prefix, goto out; } + snprintf (key, sizeof (key), "%s.mnt_opts", prefix); + ret = dict_set_str (dict, key, brickinfo->mnt_opts); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set mnt_opts for %s:%s", + brickinfo->hostname, brickinfo->path); + goto out; + } + memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s.mount_dir", prefix); ret = dict_set_str (dict, key, brickinfo->mount_dir); @@ -3657,6 +3674,7 @@ gd_import_new_brick_snap_details (dict_t *dict, char *prefix, char key[512] = {0,}; char *snap_device = NULL; char *fs_type = NULL; + char *mnt_opts = NULL; char *mount_dir = NULL; this = THIS; @@ -3697,6 +3715,14 @@ gd_import_new_brick_snap_details (dict_t *dict, char *prefix, } strcpy (brickinfo->fstype, fs_type); + snprintf (key, sizeof (key), "%s.mnt_opts", prefix); + ret = dict_get_str (dict, key, &mnt_opts); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "%s missing in payload", key); + goto out; + } + strcpy (brickinfo->mnt_opts, mnt_opts); + memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s.mount_dir", prefix); ret = dict_get_str (dict, key, &mount_dir); @@ -11901,34 +11927,44 @@ glusterd_compare_volume_name(struct list_head *list1, struct list_head *list2) } int32_t -glusterd_mount_lvm_snapshot (char *device_path, char *brick_mount_path, - const char *fstype) +glusterd_mount_lvm_snapshot (glusterd_brickinfo_t *brickinfo, + char *brick_mount_path) { - char msg[NAME_MAX] = ""; - int32_t ret = -1; - runner_t runner = {0, }; - xlator_t *this = NULL; + char msg[NAME_MAX] = ""; + char mnt_opts[1024] = ""; + int32_t ret = -1; + runner_t runner = {0, }; + xlator_t *this = NULL; this = THIS; GF_ASSERT (this); GF_ASSERT (brick_mount_path); - GF_ASSERT (device_path); + GF_ASSERT (brickinfo); runinit (&runner); snprintf (msg, sizeof (msg), "mount %s %s", - device_path, brick_mount_path); + brickinfo->device_path, brick_mount_path); + + strcpy (mnt_opts, brickinfo->mnt_opts); /* XFS file-system does not allow to mount file-system with duplicate * UUID. File-system UUID of snapshot and its origin volume is same. * Therefore to mount such a snapshot in XFS we need to pass nouuid * option */ - if (!strcmp (fstype, "xfs")) { - runner_add_args (&runner, "mount", "-o", "nouuid", - device_path, brick_mount_path, NULL); + if (!strcmp (brickinfo->fstype, "xfs")) { + if ( strlen (mnt_opts) > 0 ) + strcat (mnt_opts, ","); + strcat (mnt_opts, "nouuid"); + } + + + if ( strlen (mnt_opts) > 0 ) { + runner_add_args (&runner, "mount", "-o", mnt_opts, + brickinfo->device_path, brick_mount_path, NULL); } else { - runner_add_args (&runner, "mount", device_path, + runner_add_args (&runner, "mount", brickinfo->device_path, brick_mount_path, NULL); } @@ -11936,12 +11972,12 @@ glusterd_mount_lvm_snapshot (char *device_path, char *brick_mount_path, ret = runner_run (&runner); if (ret) { gf_log (this->name, GF_LOG_ERROR, "mounting the snapshot " - "logical device %s failed (error: %s)", device_path, - strerror (errno)); + "logical device %s failed (error: %s)", + brickinfo->device_path, strerror (errno)); goto out; } else gf_log (this->name, GF_LOG_DEBUG, "mounting the snapshot " - "logical device %s successful", device_path); + "logical device %s successful", brickinfo->device_path); out: gf_log (this->name, GF_LOG_TRACE, "Returning with %d", ret); @@ -13398,3 +13434,55 @@ gd_get_snap_conf_values_if_present (dict_t *dict, uint64_t *sys_hard_limit, GLUSTERD_STORE_KEY_SNAP_MAX_SOFT_LIMIT); } } + +/* This function will update the backend file-system + * type and the mount options in origin and snap brickinfo. + * This will be later used to perform file-system specific operation + * during LVM snapshot. + * + * @param brick_path brickpath for which fstype to be found + * @param brickinfo brickinfo of snap/origin volume + * @return 0 on success and -1 on failure + */ +int +glusterd_update_mntopts (char *brick_path, glusterd_brickinfo_t *brickinfo) +{ + int32_t ret = -1; + char *mnt_pt = NULL; + char buff [PATH_MAX] = ""; + char msg [PATH_MAX] = ""; + char *cmd = NULL; + struct mntent *entry = NULL; + struct mntent save_entry = {0,}; + runner_t runner = {0,}; + xlator_t *this = NULL; + + this = THIS; + GF_ASSERT (this); + GF_ASSERT (brick_path); + GF_ASSERT (brickinfo); + + ret = glusterd_get_brick_root (brick_path, &mnt_pt); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "getting the root " + "of the brick (%s) failed ", brick_path); + goto out; + } + + entry = glusterd_get_mnt_entry_info (mnt_pt, buff, sizeof (buff), + &save_entry); + if (!entry) { + gf_log (this->name, GF_LOG_ERROR, "getting the mount entry for " + "the brick (%s) failed", brick_path); + ret = -1; + goto out; + } + + strcpy (brickinfo->fstype, entry->mnt_type); + strcpy (brickinfo->mnt_opts, entry->mnt_opts); + + ret = 0; +out: + GF_FREE (mnt_pt); + return ret; +} diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index 2486e54833f..6fe7aef92a9 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -724,8 +724,8 @@ gd_restore_snap_volume (dict_t *dict, dict_t *rsp_dict, int32_t volcount); int32_t -glusterd_mount_lvm_snapshot (char *device_path, char *brick_mount_path, - const char *fstype); +glusterd_mount_lvm_snapshot (glusterd_brickinfo_t *brickinfo, + char *brick_mount_path); int32_t glusterd_umount (const char *path); @@ -889,9 +889,7 @@ int glusterd_snapshot_get_volnames_uuids (dict_t *dict, char *volname, gf_getsnap_name_uuid_rsp *snap_info_rsp); int -glusterd_update_fstype (char *orig_brick_path, - glusterd_brickinfo_t *snap_brickinfo, - char *fstype, size_t fslen); +glusterd_update_mntopts (char *brick_path, glusterd_brickinfo_t *brickinfo); int glusterd_update_fs_label (glusterd_brickinfo_t *brickinfo); diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index ec036f8cf06..f7b4f012e03 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -193,6 +193,7 @@ struct glusterd_brickinfo { char mount_dir[PATH_MAX]; char brick_id[1024];/*Client xlator name, AFR changelog name*/ char fstype [NAME_MAX]; /* Brick file-system type */ + char mnt_opts [1024]; /* Brick mount options */ struct list_head brick_list; uuid_t uuid; int port; |