diff options
author | Tim Chase <[email protected]> | 2016-04-24 18:29:03 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-04-26 11:20:14 -0700 |
commit | 3bf657b90c792ff4539a75d3b66593de556580c0 (patch) | |
tree | 8af6779d0a4d7a434d0a4269dcf9d48c54111133 | |
parent | cdd39dd2457ac57622339669db0536a580374bd3 (diff) |
Use vmem_free() in dfl_free() and add dfl_alloc()
This change was lost, somehow, in e5f9a9a. Since the arrays can be
rather large, they need to be allocated with vmem_zalloc() via dfl_alloc()
and freed with vmem_free() via dfl_free().
The new dfl_alloc() function should be used to allocate object of type
dkioc_free_list_t in order that they're allocated from vmem.
Signed-off-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tim Chase <[email protected]>
Signed-off-by: Nikolay Borisov <[email protected]>
Closes #543
-rw-r--r-- | include/sys/dkioc_free_util.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/include/sys/dkioc_free_util.h b/include/sys/dkioc_free_util.h index a424d4232..bea5a5bbc 100644 --- a/include/sys/dkioc_free_util.h +++ b/include/sys/dkioc_free_util.h @@ -48,7 +48,11 @@ typedef struct dkioc_free_list_s { } dkioc_free_list_t; static inline void dfl_free(dkioc_free_list_t *dfl) { - kmem_free(dfl, DFL_SZ(dfl->dfl_num_exts)); + vmem_free(dfl, DFL_SZ(dfl->dfl_num_exts)); +} + +static inline dkioc_free_list_t *dfl_alloc(uint64_t dfl_num_exts, int flags) { + return vmem_zalloc(DFL_SZ(dfl_num_exts), flags); } #endif /* _SPL_DKIOC_UTIL_H */ |