Linux XFS filesystem development
 help / color / mirror / Atom feed
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
> 

  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