Skip to content

Commit a58a6a5

Browse files
author
Kent Overstreet
committed
bcachefs: Switch darray to kvmalloc()
We sometimes use darrays for quite large buffers - the btree write buffer in particular needs large buffers, since it must be sized to hold all the write buffer keys outstanding in the journal. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
1 parent 73ab9e0 commit a58a6a5

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

fs/bcachefs/darray.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ int __bch2_darray_resize(darray_void *d, size_t element_size, size_t new_size, g
99
if (new_size > d->size) {
1010
new_size = roundup_pow_of_two(new_size);
1111

12-
void *data = krealloc_array(d->data, new_size, element_size, gfp);
12+
void *data = kvmalloc_array(new_size, element_size, gfp);
1313
if (!data)
1414
return -ENOMEM;
1515

16+
memcpy(data, d->data, d->size * element_size);
17+
kvfree(d->data);
1618
d->data = data;
1719
d->size = new_size;
1820
}

fs/bcachefs/darray.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ do { \
9292

9393
#define darray_exit(_d) \
9494
do { \
95-
kfree((_d)->data); \
95+
kvfree((_d)->data); \
9696
darray_init(_d); \
9797
} while (0)
9898

0 commit comments

Comments
 (0)