diff options
author | Jason King <jason.king@joyent.com> | 2020-03-31 20:06:41 +0000 |
---|---|---|
committer | Jason King <jason.king@joyent.com> | 2020-04-09 18:44:26 +0000 |
commit | 61da12bcf29b924ca4fbfca6a75614f8f4c2e8ad (patch) | |
tree | dc844f175421d22a513b8298b18f5fd5b1be64e0 | |
parent | b7ce222709d1de90478d1467e264eef0ec53e875 (diff) | |
download | illumos-joyent-61da12bcf29b924ca4fbfca6a75614f8f4c2e8ad.tar.gz |
More bugfixes
-rw-r--r-- | usr/src/uts/common/os/dkioc_free_util.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/usr/src/uts/common/os/dkioc_free_util.c b/usr/src/uts/common/os/dkioc_free_util.c index 1378eed2bf..f4da8538bf 100644 --- a/usr/src/uts/common/os/dkioc_free_util.c +++ b/usr/src/uts/common/os/dkioc_free_util.c @@ -193,12 +193,12 @@ dfl_iter(const dkioc_free_list_t *dfl, const dkioc_free_align_t *dfa, /* * If a limit on the total number of blocks is given, it must be * greater than the offset alignment. E.g. if the block size is 512 - * bytes, the offset alignment is 4096 (8 blocks), the device must + * bytes and the offset alignment is 4096 (8 blocks), the device must * allow extent sizes at least 8 blocks long (otherwise it is not * possible to free the entire device). */ if (dfa->dfa_max_blocks > 0 && - (dfa->dfa_max_blocks >> bshift) < dfa->dfa_align) + (dfa->dfa_max_blocks << bshift) < dfa->dfa_align) return (SET_ERROR(EINVAL)); /* @@ -230,12 +230,11 @@ dfl_iter(const dkioc_free_list_t *dfl, const dkioc_free_align_t *dfa, if (n_exts == 0) return (0); - n_exts = earg.ea_ext_cnt; exts = kmem_zalloc(n_exts * sizeof (*exts), kmflag); if (exts == NULL) return (SET_ERROR(ENOMEM)); - earg.ea_ext_cnt = n_exts; + earg.ea_ext_cnt = 0; earg.ea_fn = func; earg.ea_arg = arg; earg.ea_exts = exts; @@ -318,7 +317,8 @@ process_exts(const dkioc_free_list_ext_t *ext, ext_iter_flags_t flags, args->ea_ext_cnt = 0; } - args->ea_exts[args->ea_ext_cnt++] = *ext; + if (ext != NULL) + args->ea_exts[args->ea_ext_cnt++] = *ext; return (0); } @@ -427,7 +427,7 @@ ext_iter(const dkioc_free_list_t *dfl, const dkioc_free_align_t *dfa, length -= blk_ext.dfle_length; start += blk_ext.dfle_length; - flags &= ~(EIF_FIRST); + flags = EIF_NONE; } } |