All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hui Su <sh_def@163.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: hughd@google.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, lkp@intel.com
Subject: Re: [PATCH v2] mm/shmem.c: make shmem_mapping() inline
Date: Mon, 16 Nov 2020 00:19:49 +0800	[thread overview]
Message-ID: <20201115161949.GA249884@rlk> (raw)
In-Reply-To: <20201114105039.4d44e3036e22e10c9a70912c@linux-foundation.org>

On Sat, Nov 14, 2020 at 10:50:39AM -0800, Andrew Morton wrote:
> On Sat, 14 Nov 2020 13:51:34 +0800 Hui Su <sh_def@163.com> wrote:
> 
> > inline the shmem_mapping(), and use shmem_mapping()
> > instead of 'inode->i_mapping->a_ops == &shmem_aops'
> > in shmem_evict_inode().
> > 
> > ...
> >
> > --- a/mm/shmem.c
> > +++ b/mm/shmem.c
> > @@ -1152,7 +1152,7 @@ static void shmem_evict_inode(struct inode *inode)
> >  	struct shmem_inode_info *info = SHMEM_I(inode);
> >  	struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
> >  
> > -	if (inode->i_mapping->a_ops == &shmem_aops) {
> > +	if (shmem_mapping(inode->i_mapping)) {
> >  		shmem_unacct_size(info->flags, inode->i_size);
> >  		inode->i_size = 0;
> >  		shmem_truncate_range(inode, 0, (loff_t)-1);
> > @@ -2352,7 +2352,7 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
> >  	return inode;
> >  }
> >  
> > -bool shmem_mapping(struct address_space *mapping)
> > +inline bool shmem_mapping(struct address_space *mapping)
> >  {
> >  	return mapping->a_ops == &shmem_aops;
> >  }
> 
> huh.  I'd have expected the inlining in shmem_evict_inode() to not work
> because the compiler hasn't seen the definition yet.  But gcc has
> evidently become smarter about that.
> 
> But really, shmem_mapping() isn't worth an out-of-line call from any
> callsite - it would be best to make it inlined everywhere.
> 
> - make shmem_aops global
> - declare shmem_aops in shmem_fs.h
> - export shmem_aops to modules for drivers/dma-buf/udmabuf.c
> - include linux/fs.h in shmem_fs.h for address_space_operations (we already
>   include fs.h via swap.h, but we shouldn't depend on that)
> - make shmem_mapping() a static inline in shmem_fs.h.

Yeah, thanks.

i will resend a PATCH V3 later.



      parent reply	other threads:[~2020-11-15 16:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-14  5:51 [PATCH v2] mm/shmem.c: make shmem_mapping() inline Hui Su
2020-11-14 18:50 ` Andrew Morton
2020-11-14 19:11   ` Matthew Wilcox
2020-11-15 16:19   ` Hui Su [this message]

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=20201115161949.GA249884@rlk \
    --to=sh_def@163.com \
    --cc=akpm@linux-foundation.org \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.