All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Tomeu Vizoso <tomeu@tomeuvizoso.net>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Neil Brown <neilb@suse.com>,
	linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v2 06/11] don't put symlink bodies in pagecache into highmem
Date: Thu, 14 Jan 2016 16:23:34 +0000	[thread overview]
Message-ID: <20160114162333.GX17997@ZenIV.linux.org.uk> (raw)
In-Reply-To: <CAAObsKAFcuz_LJTVhm36J7s-mft4c8RgP6KetXcs_r_Mtmm+ig@mail.gmail.com>

On Thu, Jan 14, 2016 at 04:58:48PM +0100, Tomeu Vizoso wrote:
> > Could you add
> >         printk(KERN_ERR "i_data = %p, i_mapping = %p, flags: %lx\n",
> >                 &inode->i_data,
> >                 inode->i_mapping,
> >                 (unsigned long)inode->i_data.flags);
> > right before the return from nfs_get_link() and see what it prints?
> 
> Here it is:
> 
> [  170.136956] i_data = ed9c1b04, i_mapping = ed9c1b04, flags: 24200c0
> [  170.144567] i_data = ed9de784, i_mapping = ed9de784, flags: 24200c0
> [  170.151457] i_data = ed9dec84, i_mapping = ed9dec84, flags: 24200c0
> [  170.158358] i_data = ed9c3b84, i_mapping = ed9c3b84, flags: 24200c0
> [  170.165253] i_data = ed9d4204, i_mapping = ed9d4204, flags: 24200c0
> [  170.172131] i_data = ed9df184, i_mapping = ed9df184, flags: 24200c0
> [  170.188804] i_data = eddbce84, i_mapping = eddbce84, flags: 24200c0
> [  170.196158] i_data = ec904984, i_mapping = ec904984, flags: 24200c0
> [  170.205133] i_data = ec906784, i_mapping = ec906784, flags: 24200c0

Aha.  So ->i_data vs. ->i_mapping is irrelevant (as it ought to be here)
and inode_nohighmem() should've acted on the address_space we are hitting
here.  What do we have in flags...  ___GFP_IO | ___GFP_FS | ___GFP_HARDWALL |
___GFP_DIRECT_RECLAIM | ___GFP_KSWAPD_RECLAIM.  IOW, normal GFP_USER, no
__GFP_HIGHMEM in sight.

So either we have a highmem page somehow ending up in i_data before we
set the flags, or __page_cache_alloc() done by read_cache_page() returns
us a highmem page on GFP_USER | __GFP_COLD (or I'm misreading the things
completely)...

Could you slap
	printk(KERN_ERR "inode: %p, pages: %ld\n",
		inode, inode->i_data.nrpages);
before that read_cache_page() in nfs_get_link() and
	printk(KERN_ERR "page_address: %p\n", page_address(page));
right before the return?

  reply	other threads:[~2016-01-14 16:23 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-17 22:57 [PATCHSET] ->follow_link() without dropping from RCU mode Al Viro
2015-11-17 23:00 ` [PATCH 01/10] switch befs long symlinks to page_symlink_operations Al Viro
2015-11-17 23:00 ` [PATCH 02/10] logfs: don't duplicate page_symlink_inode_operations Al Viro
2015-11-17 23:00 ` [PATCH 03/10] udf: " Al Viro
2015-11-17 23:00 ` [PATCH 04/10] ufs: get rid of ->setattr() for symlinks Al Viro
2015-11-17 23:00 ` [PATCH 05/10] namei: page_getlink() and page_follow_link_light() are the same thing Al Viro
2015-11-17 23:00 ` [PATCH 06/10] [vfs] don't put symlink bodies in pagecache into highmem Al Viro
2015-11-19 23:02   ` Dave Chinner
2015-11-17 23:00 ` [PATCH 07/10] [vfs] replace ->follow_link() with new method that could stay in RCU mode Al Viro
2015-11-17 23:00 ` [PATCH 08/10] teach page_get_link() to work " Al Viro
2015-11-17 23:00 ` [PATCH 09/10] teach shmem_get_link() " Al Viro
2015-11-17 23:00 ` [PATCH 10/10] teach proc_self_get_link()/proc_thread_self_get_link() " Al Viro
2015-12-09  5:32 ` [PATCHSET v2] ->follow_link() without dropping from " Al Viro
2015-12-09  5:34   ` [PATCH v2 01/11] switch befs long symlinks to page_symlink_operations Al Viro
2015-12-09  5:34   ` [PATCH v2 02/11] logfs: don't duplicate page_symlink_inode_operations Al Viro
2015-12-09  5:34   ` [PATCH v2 03/11] udf: " Al Viro
2015-12-09  5:34   ` [PATCH v2 04/11] ufs: get rid of ->setattr() for symlinks Al Viro
2015-12-09  5:34   ` [PATCH v2 05/11] namei: page_getlink() and page_follow_link_light() are the same thing Al Viro
2015-12-09  5:34   ` [PATCH v2 06/11] don't put symlink bodies in pagecache into highmem Al Viro
2016-01-14 13:22     ` Tomeu Vizoso
2016-01-14 15:25       ` Al Viro
2016-01-14 15:58         ` Tomeu Vizoso
2016-01-14 16:23           ` Al Viro [this message]
2016-01-14 16:57             ` Tomeu Vizoso
2016-01-14 17:13               ` Al Viro
2016-01-14 19:15                 ` Tomeu Vizoso
2016-01-14 21:02                   ` Al Viro
2016-01-14 21:40                     ` Linus Torvalds
2016-01-14 22:25                       ` Al Viro
2016-01-14 23:33                         ` Al Viro
2016-01-14 23:58                         ` Linus Torvalds
2016-01-15  0:05                           ` Al Viro
2015-12-09  5:34   ` [PATCH v2 07/11] replace ->follow_link() with new method that could stay in RCU mode Al Viro
2015-12-09  5:34   ` [PATCH v2 08/11] teach page_get_link() to work " Al Viro
2015-12-09  5:34   ` [PATCH v2 09/11] teach shmem_get_link() " Al Viro
2015-12-09  5:34   ` [PATCH v2 10/11] teach proc_self_get_link()/proc_thread_self_get_link() " Al Viro
2015-12-09  5:34   ` [PATCH v2 11/11] teach nfs_get_link() " Al Viro
2015-12-09 17:24   ` [PATCHSET v2] ->follow_link() without dropping from " Linus Torvalds
2015-12-09 18:23     ` Al Viro
2015-12-10  0:10       ` Al Viro
2015-12-10  2:40         ` Al Viro
2015-12-11  1:54           ` Al Viro
2015-12-11  7:49             ` Rasmus Villemoes
2015-12-11 23:16               ` Al Viro
2015-12-12  2:00                 ` Al Viro
2015-12-13 18:43                   ` Rasmus Villemoes
2015-12-13  3:47             ` Al Viro
2015-12-09 21:57   ` NeilBrown

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=20160114162333.GX17997@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@suse.com \
    --cc=tomeu@tomeuvizoso.net \
    --cc=torvalds@linux-foundation.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 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.