From 7b5b7111c9d9a2a65e4f4d0abf832a88e021c576 Mon Sep 17 00:00:00 2001 From: Xavier Hernandez Date: Tue, 10 Jan 2017 11:21:06 +0100 Subject: cli: keep 'gluster volume status detail' consistent The output of the command 'gluster volume status 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 Reviewed-on: http://review.gluster.org/16371 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Atin Mukherjee Reviewed-by: Kaleb KEITHLEY --- cli/src/cli-cmd-volume.c | 6 ------ cli/src/cli-xml-output.c | 8 ++------ cli/src/cli.h | 2 -- 3 files changed, 2 insertions(+), 14 deletions(-) (limited to 'cli') diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 5068d34c48c..dbf1e3e2326 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 3de7d064bec..d31f0e43607 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_ { -- cgit