On Thu, May 26, 2022 at 6:21 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Wed, May 25, 2022 at 11:26:37AM +0300, Vasily Averin wrote: > > Commit 7b785645e8f1 ("mm: fix page cache convergence regression") > > added support of new XA_FLAGS_ACCOUNT flag into all Xarray allocation > > functions. Later commit 8fc75643c5e1 ("XArray: add xas_split") > > introduced xas_split_alloc() but missed about XA_FLAGS_ACCOUNT > > processing. > > Thanks, Vasily. > > Johannes, Shakeel, is this right? I don't fully understand the accounting > stuff. > If called from __filemap_add_folio() then this is correct. However from split_huge_page_to_list(), we can not use the memcg from current as that codepath is called from reclaim which can be triggered by processes of other memcgs. > > Signed-off-by: Vasily Averin <vvs@xxxxxxxxxx> > > --- > > lib/xarray.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/lib/xarray.c b/lib/xarray.c > > index 54e646e8e6ee..5f5b42e6f842 100644 > > --- a/lib/xarray.c > > +++ b/lib/xarray.c > > @@ -1013,6 +1013,8 @@ void xas_split_alloc(struct xa_state *xas, void *entry, unsigned int order, > > if (xas->xa_shift + XA_CHUNK_SHIFT > order) > > return; > > > > + if (xas->xa->xa_flags & XA_FLAGS_ACCOUNT) > > + gfp |= __GFP_ACCOUNT; > > do { > > unsigned int i; > > void *sibling = NULL; > > -- > > 2.31.1 > >