From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Chandan Babu R <chandan.babu@oracle.com>, linux-xfs@vger.kernel.org
Subject: Re: [PATCH 5/5] xfs: embedd struct xfbtree into the owning structure
Date: Thu, 4 Jan 2024 11:28:22 -0800 [thread overview]
Message-ID: <20240104192822.GI361584@frogsfrogsfrogs> (raw)
In-Reply-To: <20240104072200.GB361584@frogsfrogsfrogs>
On Wed, Jan 03, 2024 at 11:22:00PM -0800, Darrick J. Wong wrote:
> On Thu, Jan 04, 2024 at 08:17:35AM +0100, Christoph Hellwig wrote:
> > On Wed, Jan 03, 2024 at 11:14:54PM -0800, Darrick J. Wong wrote:
> > > IIRC setting up the shrinker in xfs_alloc_buftarg_common takes some
> > > shrinker lock somewhere, and lockdep complained about a potential
> > > deadlock between the locks that scrub takes if I don't create the xfile
> > > buftarg in the scrub _setup routines. That's why it's not created
> > > internally to the xfbtree.
> > >
> > > I agree that it makes much more sense only to create those things when
> > > they're actually needed, but ... hm. Maybe we don't need the xfile
> > > buftarg to be hooked up to the shrinkers, seeing as it's ephemeral
> > > anyway? That would save a lot of fuss and ...
> >
> > Yes, once we move to a model where the buffer always points to
> > the shmem page, and we remove the buffer lru for them as we already
> > have the page LRU there is no point in having a shrinker at all.
>
> Ok. I'll move the shrinker stuff into the real buftarg creation
> function. This seems to have become a lot simpler now that the shrinker
> is a pointer instead of embedded in the buftarg.
Though looking at buftarg allocation and my old notes from a couple of
years ago -- a second reason for allocating the buftarg during scrub
setup was that the list_lru_init call allocates an array that's
O(nodes_nr) and percpu_counter_init allocates an array that's
O(maxcpus). At the time I decided that it was better to put those large
contiguous memory allocations in the ->setup routine where we don't have
any vfs/xfs locks held, can run direct reclaim, and haven't done any xfs
work yet.
So I'd like to leave the buftarg attached to struct xfs_scrub, though
I'll still get rid of the shrinker for xfile buftargs.
--D
> > > > naming and moving it out of scrub/ would make sense as the concept
> > > > isn't really scrub/repair specific. But if we want to stick with
> > > > it I'd prefer to not also have _mem-based naming.
> > >
> > > Yes, lets move it to libxfs/xfbtree.[ch].
> >
> > What does the xf in the various scrubx/xf* thinks stand for, btw?
> > Why not libxfs/xfs_btree_mem.[ch]?
>
> "xfile btree".
>
> --D
>
next prev parent reply other threads:[~2024-01-04 19:28 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-03 20:38 RFC: in-memory btree simplifications Christoph Hellwig
2024-01-03 20:38 ` [PATCH 1/5] xfs: remove the in-memory btree header block Christoph Hellwig
2024-01-04 1:24 ` Darrick J. Wong
2024-01-04 6:27 ` Christoph Hellwig
2024-01-04 17:25 ` Darrick J. Wong
2024-01-03 20:38 ` [PATCH 2/5] xfs: remove struct xfboff_bitmap Christoph Hellwig
2024-01-03 20:38 ` [PATCH 3/5] xfs: remove bc_ino.flags Christoph Hellwig
2024-01-04 1:10 ` Darrick J. Wong
2024-01-03 20:38 ` [PATCH 4/5] xfs: factor out a xfs_btree_owner helper Christoph Hellwig
2024-01-04 1:14 ` Darrick J. Wong
2024-01-04 6:28 ` Christoph Hellwig
2024-01-03 20:38 ` [PATCH 5/5] xfs: embedd struct xfbtree into the owning structure Christoph Hellwig
2024-01-04 1:21 ` Darrick J. Wong
2024-01-04 6:32 ` Christoph Hellwig
2024-01-04 7:14 ` Darrick J. Wong
2024-01-04 7:17 ` Christoph Hellwig
2024-01-04 7:22 ` Darrick J. Wong
2024-01-04 19:28 ` Darrick J. Wong [this message]
2024-01-05 4:27 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240104192822.GI361584@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox