summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd-volume.c
diff options
context:
space:
mode:
authorRajesh Amaravathi <rajesh@redhat.com>2012-01-31 17:04:37 +0530
committerVijay Bellur <vijay@gluster.com>2012-02-18 00:03:00 -0800
commitdf12073c4cc8340eb85b5d25c2da84fc21ec1f38 (patch)
treebea7be987249a13120faeefd61f92362a0ab61bc /cli/src/cli-cmd-volume.c
parentacb691f8908049e651fc12ff1cf01e9cf4ddde65 (diff)
cli/glusterd: volume status modification
* Method of getting mount details of brick has been changed from direct reading of /etc/mtab to using libc's <mntent.h>, providing a fairly portable version independent of different linux distributions. It is only supported on Linux though. * Wrong fs type (rootfs for /) in fedora-based distributions has been fixed. * Allows options (detail, mem, fd, et al) to "all" volumes. * Use of the fnmatch's GNU extension flag, FNM_LEADING_DIR is restricted to Linux hosts only. In case of non-Linux hosts, partial match functionality is absent. Change-Id: I102ce808c192ef635c2536a2167101be0aa0fc50 BUG: 786367 Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com> Reviewed-on: http://review.gluster.com/2705 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'cli/src/cli-cmd-volume.c')
-rw-r--r--cli/src/cli-cmd-volume.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index 41007cb7b2d..6bea948e968 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -1431,6 +1431,7 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
if (ret)
goto out;
+#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));
@@ -1442,19 +1443,23 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
ret = dict_get_str (dict, key, &(status->fs_name));
if (ret)
goto out;
+#endif
if (IS_EXT_FS(status->fs_name) ||
!strcmp (status->fs_name, "xfs")) {
+#ifdef GF_LINUX_HOST_OS
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.inode_size", i);
ret = dict_get_str (dict, key, &(status->inode_size));
if (ret)
status->inode_size = NULL;
+#endif
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.total_inodes", i);
- ret = dict_get_uint64 (dict, key, &(status->total_inodes));
+ ret = dict_get_uint64 (dict, key,
+ &(status->total_inodes));
if (ret)
goto out;
@@ -1463,9 +1468,10 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status)
ret = dict_get_uint64 (dict, key, &(status->free_inodes));
if (ret)
goto out;
-
} else {
+#ifdef GF_LINUX_HOST_OS
status->inode_size = NULL;
+#endif
status->total_inodes = 0;
status->free_inodes = 0;
}
@@ -1481,6 +1487,8 @@ cli_print_detailed_status (cli_volume_status_t *status)
cli_out ("%-20s : %-20d", "Port", status->port);
cli_out ("%-20s : %-20c", "Online", (status->online) ? 'Y' : 'N');
cli_out ("%-20s : %-20s", "Pid", status->pid_str);
+
+#ifdef GF_LINUX_HOST_OS
cli_out ("%-20s : %-20s", "File System", status->fs_name);
cli_out ("%-20s : %-20s", "Device", status->device);
@@ -1491,15 +1499,15 @@ cli_print_detailed_status (cli_volume_status_t *status)
cli_out ("%-20s : %-20s", "Mount Options", "N/A");
}
- cli_out ("%-20s : %-20s", "Disk Space Free", status->free);
- cli_out ("%-20s : %-20s", "Total Disk Space", status->total);
-
if (status->inode_size) {
cli_out ("%-20s : %-20s", "Inode Size",
status->inode_size);
} else {
cli_out ("%-20s : %-20s", "Inode Size", "N/A");
}
+#endif
+ cli_out ("%-20s : %-20s", "Disk Space Free", status->free);
+ cli_out ("%-20s : %-20s", "Total Disk Space", status->total);
if (status->total_inodes) {
cli_out ("%-20s : %-20ld", "Inode Count",
@@ -1821,10 +1829,10 @@ struct cli_cmd volume_cmds[] = {
cli_cmd_volume_top_cbk,
"volume top operations"},
- { "volume status [all|{<VOLNAME> [<BRICKNAME>] "
- "[misc-details|clients|mem|inode|fd|callpool]}]",
+ { "volume status [all | <VOLNAME> [<BRICK>]]"
+ " [detail|clients|mem|inode|fd|callpool]",
cli_cmd_volume_status_cbk,
- "display status of specified volume"},
+ "display status of all or specified volume(s)/brick"},
{ "volume heal <VOLNAME>",
cli_cmd_volume_heal_cbk,