hammer2 - hammer2 stat adjustments
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 1 Aug 2014 00:14:20 +0000 (17:14 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 1 Aug 2014 00:14:20 +0000 (17:14 -0700)
* Report inodes as a count rather than as 'bytes'.

sbin/hammer2/cmd_stat.c
sbin/hammer2/hammer2.h
sbin/hammer2/subs.c

index 455e379..ab42f12 100644 (file)
@@ -75,13 +75,13 @@ cmd_stat(int ac, const char **av)
                printf("%-*.*s ", w, w, av[i]);
                printf("%3d ", ino.ip_data.ncopies);
                printf("%9s ", sizetostr(ino.ip_data.data_count));
-               printf("%9s ", sizetostr(ino.ip_data.inode_count));
+               printf("%9s ", counttostr(ino.ip_data.inode_count));
                printf("%p ", ino.kdata);
                printf("comp=%s ", compmodestr(ino.ip_data.comp_algo));
                if (ino.ip_data.data_quota || ino.ip_data.inode_quota) {
                        printf(" quota ");
                        printf("%12s", sizetostr(ino.ip_data.data_quota));
-                       printf("/%-12s", sizetostr(ino.ip_data.inode_quota));
+                       printf("/%-12s", counttostr(ino.ip_data.inode_quota));
                }
                printf("\n");
        }
index ebdef0a..524438b 100644 (file)
@@ -150,6 +150,7 @@ const char *hammer2_uuid_to_str(uuid_t *uuid, char **strp);
 const char *hammer2_iptype_to_str(uint8_t type);
 const char *hammer2_pfstype_to_str(uint8_t type);
 const char *sizetostr(hammer2_off_t size);
+const char *counttostr(hammer2_off_t size);
 hammer2_key_t dirhash(const unsigned char *name, size_t len);
 
 uint32_t hammer2_icrc32(const void *buf, size_t size);
index 431e3ca..2713f41 100644 (file)
@@ -243,6 +243,30 @@ sizetostr(hammer2_off_t size)
        return(buf);
 }
 
+const char *
+counttostr(hammer2_off_t size)
+{
+       static char buf[32];
+
+       if (size < 1024 / 2) {
+               snprintf(buf, sizeof(buf), "%jd",
+                        (intmax_t)size);
+       } else if (size < 1024 * 1024 / 2) {
+               snprintf(buf, sizeof(buf), "%jd",
+                        (intmax_t)size);
+       } else if (size < 1024 * 1024 * 1024LL / 2) {
+               snprintf(buf, sizeof(buf), "%6.2fM",
+                        (double)size / (1024 * 1024));
+       } else if (size < 1024 * 1024 * 1024LL * 1024LL / 2) {
+               snprintf(buf, sizeof(buf), "%6.2fG",
+                        (double)(size / (1024 * 1024 * 1024LL)));
+       } else {
+               snprintf(buf, sizeof(buf), "%6.2fT",
+                        (double)(size / (1024 * 1024 * 1024LL * 1024LL)));
+       }
+       return(buf);
+}
+
 #if 0
 /*
  * Allocation wrappers give us shims for possible future use