X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fnvpair%2Fnvpair.c;h=36f4e4dc108f3bd205961ad2f4cd17da502fe7f3;hb=81eaf151071eadbb3fba74d74324a0921c5fdb5f;hp=5c6898446793d5d429b76d592e5a2ce78e827c88;hpb=df4474f92d0b1b8d54e1914fdd56be2b75f1ff5e;p=zfs.git diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c index 5c68984..36f4e4d 100644 --- a/module/nvpair/nvpair.c +++ b/module/nvpair/nvpair.c @@ -269,12 +269,25 @@ nvlist_nvflag(nvlist_t *nvl) int nvlist_alloc(nvlist_t **nvlp, uint_t nvflag, int kmflag) { + nv_alloc_t *nva = nv_alloc_nosleep; + #if defined(_KERNEL) && !defined(_BOOT) - return (nvlist_xalloc(nvlp, nvflag, - (kmflag == KM_SLEEP ? nv_alloc_sleep : nv_alloc_nosleep))); -#else - return (nvlist_xalloc(nvlp, nvflag, nv_alloc_nosleep)); + switch (kmflag) { + case KM_SLEEP: + nva = nv_alloc_sleep; + break; + case KM_PUSHPAGE: + nva = nv_alloc_pushpage; + break; + case KM_NOSLEEP: + nva = nv_alloc_nosleep; + break; + default: + return (EINVAL); + } #endif + + return (nvlist_xalloc(nvlp, nvflag, nva)); } int