X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fnvpair%2Fnvpair_alloc_spl.c;h=be6e8f0a592a606048f1662a7f9c581225a1bba5;hb=81eaf151071eadbb3fba74d74324a0921c5fdb5f;hp=63d57a19ab2bbbf9597ed6d280522764367d3a67;hpb=df4474f92d0b1b8d54e1914fdd56be2b75f1ff5e;p=zfs.git diff --git a/module/nvpair/nvpair_alloc_spl.c b/module/nvpair/nvpair_alloc_spl.c index 63d57a1..be6e8f0 100644 --- a/module/nvpair/nvpair_alloc_spl.c +++ b/module/nvpair/nvpair_alloc_spl.c @@ -34,6 +34,12 @@ nv_alloc_sleep_spl(nv_alloc_t *nva, size_t size) } static void * +nv_alloc_pushpage_spl(nv_alloc_t *nva, size_t size) +{ + return (kmem_alloc(size, KM_PUSHPAGE | KM_NODEBUG)); +} + +static void * nv_alloc_nosleep_spl(nv_alloc_t *nva, size_t size) { return (kmem_alloc(size, KM_NOSLEEP)); @@ -53,6 +59,14 @@ const nv_alloc_ops_t spl_sleep_ops_def = { NULL /* nv_ao_reset() */ }; +const nv_alloc_ops_t spl_pushpage_ops_def = { + NULL, /* nv_ao_init() */ + NULL, /* nv_ao_fini() */ + nv_alloc_pushpage_spl, /* nv_ao_alloc() */ + nv_free_spl, /* nv_ao_free() */ + NULL /* nv_ao_reset() */ +}; + const nv_alloc_ops_t spl_nosleep_ops_def = { NULL, /* nv_ao_init() */ NULL, /* nv_ao_fini() */ @@ -66,10 +80,16 @@ nv_alloc_t nv_alloc_sleep_def = { NULL }; +nv_alloc_t nv_alloc_pushpage_def = { + &spl_pushpage_ops_def, + NULL +}; + nv_alloc_t nv_alloc_nosleep_def = { &spl_nosleep_ops_def, NULL }; nv_alloc_t *nv_alloc_sleep = &nv_alloc_sleep_def; +nv_alloc_t *nv_alloc_pushpage = &nv_alloc_pushpage_def; nv_alloc_t *nv_alloc_nosleep = &nv_alloc_nosleep_def;