hammer.8 - Avoid core dumping when running dedup
authorIlya Dryomov <idryomov@gmail.com>
Wed, 24 Nov 2010 20:54:08 +0000 (22:54 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 24 Nov 2010 21:05:20 +0000 (23:05 +0200)
Avoid dumping core when a user runs dedup or dedup-simulate on a
meta-data only PFS (PFS which does not contain bulk data, just
softlinks, directory entries, etc).  Instead print out a 0.00 dedup
ratio.

Reported-by: Sascha Wildner <saw@online.de>
sbin/hammer/cmd_dedup.c
sbin/hammer/hammer.8

index b539ba4..dd616e1 100644 (file)
@@ -214,7 +214,8 @@ hammer_cmd_dedup_simulate(char **av, int ac)
        }
 
        printf("Simulated dedup ratio = %.2f\n",
-           (double)dedup_ref_size / dedup_alloc_size);
+           (dedup_alloc_size != 0) ?
+               (double)dedup_ref_size / dedup_alloc_size : 0);
 }
 
 /*
@@ -283,11 +284,11 @@ hammer_cmd_dedup(char **av, int ac)
        }
        assert(RB_EMPTY(&dedup_tree));
 
-       assert(dedup_alloc_size != 0);
        humanize_unsigned(buf, sizeof(buf), dedup_ref_size, "B", 1024);
        printf("Dedup ratio = %.2f\n"
               "    %8s referenced\n",
-              (double)dedup_ref_size / dedup_alloc_size,
+              ((dedup_alloc_size != 0) ?
+                       (double)dedup_ref_size / dedup_alloc_size : 0),
               buf
        );
        humanize_unsigned(buf, sizeof(buf), dedup_alloc_size, "B", 1024);
index 76964f2..808571d 100644 (file)
@@ -897,6 +897,14 @@ dedup space savings.  Remember that this is an estimated number, in
 practice real dedup ratio will be slightly smaller because of
 .Nm HAMMER
 bigblock underflows, B-Tree locking issues and other factors.
+.Pp
+Note that deduplication currently works only on bulk data so if you
+try to run
+.Cm dedup-simulate
+or
+.Cm dedup
+commands on a PFS that contains metadata only (directory entries,
+softlinks) you will get a 0.00 dedup ratio.
 .\" ==== reblock* ====
 .It Cm reblock Ar filesystem Op Ar fill_percentage
 .It Cm reblock-btree Ar filesystem Op Ar fill_percentage