Hi all,
Today's linux-next merge of the bcachefs tree got a conflict in:
fs/bcachefs/darray.c
between commit:
97b75b7e275a ("mm/slub: allow to set node and align in k[v]realloc")
from the mm-unstable tree and commit:
808708fe9da0 ("bcachefs: darray_make_room_rcu()")
from the bcachefs tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
--
Cheers,
Stephen Rothwell
diff --cc fs/bcachefs/darray.c
index 928e83a1ce42,6940037bd19e..000000000000
--- a/fs/bcachefs/darray.c
+++ b/fs/bcachefs/darray.c
@@@ -20,10 -22,11 +22,11 @@@ int __bch2_darray_resize_noprof(darray_
if (unlikely(check_mul_overflow(new_size, element_size, &bytes)))
return -ENOMEM;
- void *data = likely(bytes < INT_MAX)
+ void *old = d->data;
+ void *new = likely(bytes < INT_MAX)
- ? kvmalloc_noprof(bytes, gfp)
+ ? kvmalloc_node_align_noprof(bytes, 1, gfp, NUMA_NO_NODE)
: vmalloc_noprof(bytes);
- if (!data)
+ if (!new)
return -ENOMEM;
if (d->size)
On Tue, 19 Aug 2025 11:12:28 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote: > Hi all, > > Today's linux-next merge of the bcachefs tree got a conflict in: > > fs/bcachefs/darray.c > > between commit: > > 97b75b7e275a ("mm/slub: allow to set node and align in k[v]realloc") > > from the mm-unstable tree and commit: > > 808708fe9da0 ("bcachefs: darray_make_room_rcu()") > > from the bcachefs tree. > > ... > > --- a/fs/bcachefs/darray.c > +++ b/fs/bcachefs/darray.c > @@@ -20,10 -22,11 +22,11 @@@ int __bch2_darray_resize_noprof(darray_ > if (unlikely(check_mul_overflow(new_size, element_size, &bytes))) > return -ENOMEM; > > - void *data = likely(bytes < INT_MAX) > + void *old = d->data; > + void *new = likely(bytes < INT_MAX) > - ? kvmalloc_noprof(bytes, gfp) > + ? kvmalloc_node_align_noprof(bytes, 1, gfp, NUMA_NO_NODE) > : vmalloc_noprof(bytes); > - if (!data) > + if (!new) > return -ENOMEM; uh, OK, I guess a 2GB allocation is reasonable on a 16TB machine. But why does bcachefs find it necessary to bypass allocation profiling?
On Mon, Aug 18, 2025 at 07:29:41PM -0700, Andrew Morton wrote: > On Tue, 19 Aug 2025 11:12:28 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote: > > > Hi all, > > > > Today's linux-next merge of the bcachefs tree got a conflict in: > > > > fs/bcachefs/darray.c > > > > between commit: > > > > 97b75b7e275a ("mm/slub: allow to set node and align in k[v]realloc") > > > > from the mm-unstable tree and commit: > > > > 808708fe9da0 ("bcachefs: darray_make_room_rcu()") > > > > from the bcachefs tree. > > > > ... > > > > --- a/fs/bcachefs/darray.c > > +++ b/fs/bcachefs/darray.c > > @@@ -20,10 -22,11 +22,11 @@@ int __bch2_darray_resize_noprof(darray_ > > if (unlikely(check_mul_overflow(new_size, element_size, &bytes))) > > return -ENOMEM; > > > > - void *data = likely(bytes < INT_MAX) > > + void *old = d->data; > > + void *new = likely(bytes < INT_MAX) > > - ? kvmalloc_noprof(bytes, gfp) > > + ? kvmalloc_node_align_noprof(bytes, 1, gfp, NUMA_NO_NODE) > > : vmalloc_noprof(bytes); > > - if (!data) > > + if (!new) > > return -ENOMEM; > > uh, OK, I guess a 2GB allocation is reasonable on a 16TB machine. yeah, already had that argument with Linus :) journals get big these days... > But why does bcachefs find it necessary to bypass allocation profiling? Not bypassing, darray is a generic container that's used all over the place, I have it wrapped so that allocations are tagged to the proper callsite. Been doing that with various random containers, makes it dead easy to chase down leaks and I don't have to ask users to compile custom kernels.
© 2016 - 2025 Red Hat, Inc.