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 <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Nikolay Borisov <kernel@kyup.com>
Closes #543
This commit is contained in:
Tim Chase 2016-04-24 18:29:03 -05:00 committed by Brian Behlendorf
parent cdd39dd245
commit 3bf657b90c
1 changed files with 5 additions and 1 deletions

View File

@ -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 */