summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/zap_micro.c
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2019-02-26 12:43:20 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-02-26 12:43:20 +0000
commite5af3bd1c99c58d9dd19baec10e1b5e8f064858d (patch)
treee4674045e090ab283ea4b0877c9b58f9ac7bee64 /usr/src/uts/common/fs/zfs/zap_micro.c
parent1b1bcfc89ac08be2fc9fd5df44b98ec44e4d909b (diff)
parent52abb70e073c2a88808c0d66fd810ba8c5080572 (diff)
downloadillumos-joyent-e5af3bd1c99c58d9dd19baec10e1b5e8f064858d.tar.gz
[illumos-gate merge]
commit 52abb70e073c2a88808c0d66fd810ba8c5080572 9691 fat zap should prefetch when iterating commit 8648b7db4afb6cc9a8e5b55e38e99c8c64b74e86 10435 dld: NULL pointer errors commit c4b91d4b4753f33280a63b16f5116d23427088b1 10444 linenoise: this statement may fall through commit 584814c74382743e01cc62cc8764cfde61718c46 10443 loader: move panic.c to libstand commit c11cea93a9321bd25667986dc65a86b56de2ac04 10441 hxge: NULL pointer errors commit 1f14a912903a53cb5b4ed3f75e9e4d2be8ded1ba 10440 ipd: NULL pointer errors commit 2520aea3664a4259338aefa2aa4a4945654615c6 10439 ecpp: NULL pointer errors commit 55aeed12a7fb74469f7ea0fbb3d2329d4c8c96ae 10438 fd: NULL pointer errors commit 5c63ad82aeee3300425b5803b5324fd102047957 10437 dca: NULL pointer errors commit 8d3c0bf06dddf77026f7ea064cfccfae818b5b0f 10434 dump: NULL pointer errors commit a3f59f6e87a609ee4950ebfcf34be0cca305e58b 10433 bpf: NULL pointer errors commit 093aa5c8de00cc7b99cc4a2cfaeb7d95115847b7 10432 devinfo: NULL pointer errors commit a897f299fb4fe4ed74ba062d6b8984404d1b94bc 10431 conskbd: NULL pointer errors commit b63d0986fbd0638ed6abf1248f1a297c5d9a4f91 10151 mv_xattrs() checks for a NULL array name commit 5085a9e0a8c766d5e9b74954833264533f617614 10369 sysent: cast between incompatible function types commit ebc6491a5a66ba44ff1a3fa2a627e67d665604f0 10163 ufs_fsck: bitwise comparison always evaluates to false
Diffstat (limited to 'usr/src/uts/common/fs/zfs/zap_micro.c')
-rw-r--r--usr/src/uts/common/fs/zfs/zap_micro.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/usr/src/uts/common/fs/zfs/zap_micro.c b/usr/src/uts/common/fs/zfs/zap_micro.c
index d093fe1e73..bb5da13ba1 100644
--- a/usr/src/uts/common/fs/zfs/zap_micro.c
+++ b/usr/src/uts/common/fs/zfs/zap_micro.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2017 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2018 by Delphix. All rights reserved.
* Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
* Copyright (c) 2014 Integros [integros.com]
* Copyright 2017 Nexenta Systems, Inc.
@@ -1386,9 +1386,9 @@ zap_remove_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
* Routines for iterating over the attributes.
*/
-void
-zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *os, uint64_t zapobj,
- uint64_t serialized)
+static void
+zap_cursor_init_impl(zap_cursor_t *zc, objset_t *os, uint64_t zapobj,
+ uint64_t serialized, boolean_t prefetch)
{
zc->zc_objset = os;
zc->zc_zap = NULL;
@@ -1397,12 +1397,33 @@ zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *os, uint64_t zapobj,
zc->zc_serialized = serialized;
zc->zc_hash = 0;
zc->zc_cd = 0;
+ zc->zc_prefetch = prefetch;
+}
+void
+zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *os, uint64_t zapobj,
+ uint64_t serialized)
+{
+ zap_cursor_init_impl(zc, os, zapobj, serialized, B_TRUE);
}
+/*
+ * Initialize a cursor at the beginning of the ZAP object. The entire
+ * ZAP object will be prefetched.
+ */
void
zap_cursor_init(zap_cursor_t *zc, objset_t *os, uint64_t zapobj)
{
- zap_cursor_init_serialized(zc, os, zapobj, 0);
+ zap_cursor_init_impl(zc, os, zapobj, 0, B_TRUE);
+}
+
+/*
+ * Initialize a cursor at the beginning, but request that we not prefetch
+ * the entire ZAP object.
+ */
+void
+zap_cursor_init_noprefetch(zap_cursor_t *zc, objset_t *os, uint64_t zapobj)
+{
+ zap_cursor_init_impl(zc, os, zapobj, 0, B_FALSE);
}
void