From 72334e2209b8b506f00d5d851bfb5fdc3eb38cf4 Mon Sep 17 00:00:00 2001 From: Manikandan Selvaganesh Date: Wed, 25 Nov 2015 00:04:39 +0530 Subject: cli/quota: show used_space,(file,dir) count even when quota limit is not set Problem: As of now quota 'list/list-objects' will list the usage only if limit is set for every directory else it will fail with ENOATTR(If inode/inode-quota is already configured for the first time). Feature: With the patch we are enhancing this command to list the usage even if quota limit is not set but still the user has to configure inode/inode-quota for the first time. Example: Consider we have /client/dir and /client1(absolute path from mount point): Quota limit is set only on /client. when we try listing /client/dir or /client1, it shows "Limit not set". Fix: The patch fixes this by showing "used space" in case of list command and shows "file_count" & "dir_count" in case of list-objects command. This works fine with xml output as well. Change-Id: I68b08ec77a583b3c7f39fe4d6b15d3d77adb095a BUG: 1284752 Signed-off-by: Manikandan Selvaganesh Reviewed-on: http://review.gluster.org/12741 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Vijaikumar Mallikarjuna Reviewed-by: Kaushal M --- cli/src/cli-xml-output.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'cli/src/cli-xml-output.c') diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index 9fa13c8279b..0801d61eeea 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -6187,7 +6187,8 @@ out: int cli_quota_xml_output (cli_local_t *local, char *path, int64_t hl_str, char *sl_final, int64_t sl_num, int64_t used, - int64_t avail, char *sl, char *hl) + int64_t avail, char *sl, char *hl, + gf_boolean_t limit_set) { #if (HAVE_LIB_XML) int ret = -1; @@ -6202,16 +6203,19 @@ cli_quota_xml_output (cli_local_t *local, char *path, int64_t hl_str, ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"hard_limit", + !limit_set ? "N/A" : "%"PRIu64, hl_str); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"soft_limit_percent", + !limit_set ? "N/A" : "%s", sl_final); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"soft_limit_value", + !limit_set ? "N/A" : "%"PRIu64, sl_num); XML_RET_CHECK_AND_GOTO (ret, out); @@ -6222,16 +6226,19 @@ cli_quota_xml_output (cli_local_t *local, char *path, int64_t hl_str, ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"avail_space", + !limit_set ? "N/A" : "%"PRIu64, avail); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"sl_exceeded", + !limit_set ? "N/A" : "%s", sl); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"hl_exceeded", + !limit_set ? "N/A" : "%s", hl); XML_RET_CHECK_AND_GOTO (ret, out); @@ -6250,7 +6257,7 @@ int cli_quota_object_xml_output (cli_local_t *local, char *path, char *sl_str, int64_t sl_val, quota_limits_t *limits, quota_meta_t *used_space, int64_t avail, - char *sl, char *hl) + char *sl, char *hl, gf_boolean_t limit_set) { #if (HAVE_LIB_XML) int ret = -1; @@ -6265,16 +6272,19 @@ cli_quota_object_xml_output (cli_local_t *local, char *path, char *sl_str, ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"hard_limit", + !limit_set ? "N/A" : "%"PRIu64, limits->hl); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"soft_limit_percent", + !limit_set ? "N/A" : "%s", sl_str); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"soft_limit_value", + !limit_set ? "N/A" : "%"PRIu64, sl_val); XML_RET_CHECK_AND_GOTO (ret, out); @@ -6293,18 +6303,21 @@ cli_quota_object_xml_output (cli_local_t *local, char *path, char *sl_str, ret = xmlTextWriterWriteFormatElement (local->writer, - (xmlChar *)"available", "%"PRIu64, - avail); + (xmlChar *)"available", + !limit_set ? "N/A" : + "%"PRIu64, avail); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"sl_exceeded", + !limit_set ? "N/A" : "%s", sl); XML_RET_CHECK_AND_GOTO (ret, out); ret = xmlTextWriterWriteFormatElement (local->writer, (xmlChar *)"hl_exceeded", + !limit_set ? "N/A" : "%s", hl); XML_RET_CHECK_AND_GOTO (ret, out); -- cgit