diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-02-26 12:43:20 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-02-26 12:43:20 +0000 |
commit | e5af3bd1c99c58d9dd19baec10e1b5e8f064858d (patch) | |
tree | e4674045e090ab283ea4b0877c9b58f9ac7bee64 /usr/src/uts/common/fs/zfs/zap_micro.c | |
parent | 1b1bcfc89ac08be2fc9fd5df44b98ec44e4d909b (diff) | |
parent | 52abb70e073c2a88808c0d66fd810ba8c5080572 (diff) | |
download | illumos-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.c | 31 |
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 |