summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
authorXavier Hernandez <xhernandez@datalab.es>2017-01-10 11:21:06 +0100
committerAtin Mukherjee <amukherj@redhat.com>2017-01-24 23:50:39 -0500
commitc2ff6cfb35edbc3ec42e43272f816bd22874e332 (patch)
tree6cb8f0be243edfb5cf881dc0604b838b3cd1d958 /cli
parent34bcf017e28b856f68e137ca4bb5bdf5291b23f5 (diff)
cli: keep 'gluster volume status detail' consistent
The output of the command 'gluster volume status <volname> detail' is not consistent between operating systems. On linux hosts it shows the file system type, the device name, mount options and inode size of each brick. However the same command executed on a FreeBSD host doesn't show all this information, even for bricks stored on a linux. Additionally, for hosts other than linux, this information is shown as 'N/A' many times. This has been fixed to show as much information as it can be retrieved from the operating system. The file contrib/mount/mntent.c has been mostly rewriten because it contained many errors that caused mount information to not be retrieved on some operating systems. > Change-Id: Icb6e19e8af6ec82255e7792ad71914ef679fc316 > BUG: 1411334 > Signed-off-by: Xavier Hernandez <xhernandez@datalab.es> > Reviewed-on: http://review.gluster.org/16371 > Smoke: Gluster Build System <jenkins@build.gluster.org> > NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: Atin Mukherjee <amukherj@redhat.com> > Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Change-Id: I1976e4765df9204aea6ca923a6d2b2bed06ed3b9 BUG: 1415131 Signed-off-by: Xavier Hernandez <xhernandez@datalab.es> Reviewed-on: https://review.gluster.org/16441 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Diffstat (limited to 'cli')
-rw-r--r--cli/src/cli-cmd-volume.c6
-rw-r--r--cli/src/cli-xml-output.c8
-rw-r--r--cli/src/cli.h2
3 files changed, 2 insertions, 14 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index dc5c6ea5a92..1c015d3cde2 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -2584,13 +2584,11 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
if (!status->total)
goto out;
-#ifdef GF_LINUX_HOST_OS
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.device", i);
ret = dict_get_str (dict, key, &(status->device));
if (ret)
status->device = NULL;
-#endif
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.block_size", i);
@@ -2600,7 +2598,6 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
status->block_size = 0;
}
-#ifdef GF_LINUX_HOST_OS
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.mnt_options", i);
ret = dict_get_str (dict, key, &(status->mount_options));
@@ -2620,7 +2617,6 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
ret = dict_get_str (dict, key, &(status->inode_size));
if (ret)
status->inode_size = NULL;
-#endif /* GF_LINUX_HOST_OS */
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.total_inodes", i);
@@ -2658,7 +2654,6 @@ cli_print_detailed_status (cli_volume_status_t *status)
cli_out ("%-20s : %-20c", "Online", (status->online) ? 'Y' : 'N');
cli_out ("%-20s : %-20s", "Pid", status->pid_str);
-#ifdef GF_LINUX_HOST_OS
if (status->fs_name)
cli_out ("%-20s : %-20s", "File System", status->fs_name);
else
@@ -2682,7 +2677,6 @@ cli_print_detailed_status (cli_volume_status_t *status)
} else {
cli_out ("%-20s : %-20s", "Inode Size", "N/A");
}
-#endif
if (status->free)
cli_out ("%-20s : %-20s", "Disk Space Free", status->free);
else
diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c
index af4f020bbbd..df9c5fc24b1 100644
--- a/cli/src/cli-xml-output.c
+++ b/cli/src/cli-xml-output.c
@@ -438,12 +438,6 @@ cli_xml_output_vol_status_detail (xmlTextWriterPtr writer, dict_t *dict,
(xmlChar *)"fsName",
"%s", fs_name);
- /* inode details are only available for ext 2/3/4 & xfs */
- if (!fs_name || !IS_EXT_FS(fs_name) || strcmp (fs_name, "xfs")) {
- ret = 0;
- goto out;
- }
-
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.inode_size", brick_index);
ret = dict_get_str (dict, key, &inode_size);
@@ -467,6 +461,8 @@ cli_xml_output_vol_status_detail (xmlTextWriterPtr writer, dict_t *dict,
ret = xmlTextWriterWriteFormatElement (writer,
(xmlChar *)"inodesFree",
"%"PRIu64, inodes_free);
+ else
+ ret = 0;
out:
gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret);
diff --git a/cli/src/cli.h b/cli/src/cli.h
index ba0d845381a..dad3ce4e3a8 100644
--- a/cli/src/cli.h
+++ b/cli/src/cli.h
@@ -169,12 +169,10 @@ struct cli_volume_status {
char *pid_str;
char *free;
char *total;
-#ifdef GF_LINUX_HOST_OS
char *fs_name;
char *mount_options;
char *device;
char *inode_size;
-#endif
};
struct snap_config_opt_vals_ {