From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH 10/10] gfs2: replace sd_aspace with sd_inode
Date: Wed, 28 Jul 2021 09:57:01 +0100 [thread overview]
Message-ID: <d2f338843211059e4f35996c4771fdbfa80aab65.camel@redhat.com> (raw)
In-Reply-To: <CAHc6FU6NNG3M8ewuehy50G4PVJ7v_aWgoUpZfNitJSzU1ajzdA@mail.gmail.com>
Hi,
On Wed, 2021-07-28 at 08:50 +0200, Andreas Gruenbacher wrote:
> On Tue, Jul 13, 2021 at 9:34 PM Bob Peterson <rpeterso@redhat.com>
> wrote:
> > On 7/13/21 1:26 PM, Steven Whitehouse wrote:
> >
> > Hi,
> >
> > On Tue, 2021-07-13 at 13:09 -0500, Bob Peterson wrote:
> >
> > Before this patch, gfs2 kept its own address space for rgrps, but
> > this
> > caused a lockdep problem because vfs assumes a 1:1 relationship
> > between
> > address spaces and their inode. One problematic area is this:
> >
> > I don't think that is the case. The reason that the address space
> > is a
> > separate structure in the first place is to allow them to exist
> > without
> > an inode. Maybe that has changed, but we should see why that is, in
> > that case rather than just making this change immediately.
> >
> > I can't see any reason why if we have to have an inode here that it
> > needs to be hashed... what would need to look it up via the hashes?
> >
> > Steve.
> >
> > Hi,
> >
> > The actual use case, which is easily demonstrated with lockdep, is
> > given
> > in the patch text shortly after where you placed your comment. This
> > goes
> > back to this discussion from April 2018:
> >
> > https://listman.redhat.com/archives/cluster-devel/2018-April/msg00017.html
> >
> > in which Jan Kara pointed out that:
> >
> > "The problem is we really do expect mapping->host->i_mapping ==
> > mapping as
> > we pass mapping and inode interchangeably in the mm code. The
> > address_space
> > and inodes are separate structures because you can have many inodes
> > pointing to one address space (block devices). However it is not
> > allowed
> > for several address_spaces to point to one inode!"
>
> This is fundamentally at adds with how we manage inodes: we have
> inode->i_mapping which is the logical address space of the inode, and
> we have gfs2_glock2aspace(GFS2_I(inode)->i_gl) which is the metadata
> address space of the inode. The most important function of the
> metadata address space is to remove the inode's metadata from memory
> by truncating the metadata address space (inode_go_inval). We need
> that when moving an inode to another node. I don't have the faintest
> idea how we could otherwise achieve that in a somewhat efficient way.
>
> Thanks,
> Andreas
>
In addition, I'm fairly sure also that we were told to use this
solution (i.e. a separate address space) back in the day because it was
expected that they didn't have a 1:1 relationship with inodes. I don't
think we'd have used that solution otherwise. I've not had enough time
to go digging back in my email to check, but it might be worth looking
to see when we introduced the use of the second address space (removing
a whole additional inode structure) and any discussions around that
change,
Steve.
next prev parent reply other threads:[~2021-07-28 8:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-13 18:09 [Cluster-devel] [GFS2 PATCH 00/10] gfs2: misc. patch collection Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 01/10] gfs2: Fix glock recursion in freeze_go_xmote_bh Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 02/10] gfs2: Eliminate go_xmote_bh in favor of go_lock Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 03/10] gfs2: be more verbose replaying invalid rgrp blocks Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 04/10] gfs2: trivial clean up of gfs2_ail_error Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 05/10] gfs2: tiny cleanup in gfs2_log_reserve Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 06/10] gfs2: init system threads before freeze lock Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 07/10] gfs2: Don't release and reacquire local statfs bh Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 08/10] gfs2: New log flush watchdog Bob Peterson
2021-07-13 18:41 ` Steven Whitehouse
2021-07-13 20:03 ` Bob Peterson
2021-07-14 8:53 ` Steven Whitehouse
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 09/10] gfs2: fix deadlock in gfs2_ail1_empty withdraw Bob Peterson
2021-07-13 18:09 ` [Cluster-devel] [GFS2 PATCH 10/10] gfs2: replace sd_aspace with sd_inode Bob Peterson
2021-07-13 18:26 ` Steven Whitehouse
2021-07-13 19:34 ` Bob Peterson
2021-07-28 6:50 ` Andreas Gruenbacher
2021-07-28 8:57 ` Steven Whitehouse [this message]
2021-07-28 13:16 ` Jan Kara
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=d2f338843211059e4f35996c4771fdbfa80aab65.camel@redhat.com \
--to=swhiteho@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).