mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 03:37:45 +03:00
Revert special case code from pre-hashtable nvlist era
Before a hash table was added on top of the nvlist code, there were cases where the nvlist allocation was changed from fnvlist_alloc() to nvlist_alloc() to avoid expensive NV_UNIQUE_NAME checks. Now this is no longer necessary. These changes should be reverted to be consistent with other code. There are some cases where this change will also reduce the number of iterations. Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Mark Maybee <mark.maybee@delphix.com> Closes #11464
This commit is contained in:
@@ -2322,18 +2322,7 @@ void
|
||||
get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv)
|
||||
{
|
||||
nvlist_t *propval = fnvlist_alloc();
|
||||
nvlist_t *val;
|
||||
|
||||
/*
|
||||
* We use nvlist_alloc() instead of fnvlist_alloc() because the
|
||||
* latter would allocate the list with NV_UNIQUE_NAME flag.
|
||||
* As a result, every time a clone name is appended to the list
|
||||
* it would be (linearly) searched for a duplicate name.
|
||||
* We already know that all clone names must be unique and we
|
||||
* want avoid the quadratic complexity of double-checking that
|
||||
* because we can have a large number of clones.
|
||||
*/
|
||||
VERIFY0(nvlist_alloc(&val, 0, KM_SLEEP));
|
||||
nvlist_t *val = fnvlist_alloc();
|
||||
|
||||
if (get_clones_stat_impl(ds, val) == 0) {
|
||||
fnvlist_add_nvlist(propval, ZPROP_VALUE, val);
|
||||
|
||||
Reference in New Issue
Block a user