Add -p switch to "zpool get"
[zfs.git] / module / zfs / ddt_zap.c
index 280bff3..65b14ab 100644 (file)
@@ -62,7 +62,7 @@ ddt_zap_lookup(objset_t *os, uint64_t object, ddt_entry_t *dde)
        uint64_t one, csize;
        int error;
 
-       cbuf = kmem_alloc(sizeof (dde->dde_phys) + 1, KM_SLEEP);
+       cbuf = kmem_alloc(sizeof (dde->dde_phys) + 1, KM_PUSHPAGE);
 
        error = zap_length_uint64(os, object, (uint64_t *)&dde->dde_key,
            DDT_KEY_WORDS, &one, &csize);
@@ -70,7 +70,7 @@ ddt_zap_lookup(objset_t *os, uint64_t object, ddt_entry_t *dde)
                goto out;
 
        ASSERT(one == 1);
-       ASSERT(csize <= sizeof (cbuf));
+       ASSERT(csize <= (sizeof (dde->dde_phys) + 1));
 
        error = zap_lookup_uint64(os, object, (uint64_t *)&dde->dde_key,
            DDT_KEY_WORDS, 1, csize, cbuf);
@@ -138,14 +138,10 @@ ddt_zap_walk(objset_t *os, uint64_t object, ddt_entry_t *dde, uint64_t *walk)
        return (error);
 }
 
-static uint64_t
-ddt_zap_count(objset_t *os, uint64_t object)
+static int
+ddt_zap_count(objset_t *os, uint64_t object, uint64_t *count)
 {
-       uint64_t count = 0;
-
-       VERIFY(zap_count(os, object, &count) == 0);
-
-       return (count);
+       return zap_count(os, object, count);
 }
 
 const ddt_ops_t ddt_zap_ops = {