From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 14 Jan 2016 15:25:53 +0000 From: Al Viro To: Tomeu Vizoso Cc: "linux-kernel@vger.kernel.org" , Linus Torvalds , Neil Brown , linux-fsdevel@vger.kernel.org Subject: Re: [PATCH v2 06/11] don't put symlink bodies in pagecache into highmem Message-ID: <20160114152553.GW17997@ZenIV.linux.org.uk> References: <20151209053209.GV20997@ZenIV.linux.org.uk> <1449639295-20512-6-git-send-email-viro@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-ID: On Thu, Jan 14, 2016 at 02:22:51PM +0100, Tomeu Vizoso wrote: > On 9 December 2015 at 06:34, Al Viro wrote: > > From: Al Viro > > > > kmap() in page_follow_link_light() needed to go - allowing to hold > > an arbitrary number of kmaps for long is a great way to deadlocking > > the system. > > > > new helper (inode_nohighmem(inode)) needs to be used for pagecache > > symlinks inodes; done for all in-tree cases. page_follow_link_light() > > instrumented to yell about anything missed. > > Hi, starting with with this change, I get this oops when installing > packages into a rootfs in NFS: Lovely... So you somehow getting a highmem page out page = read_cache_page(&inode->i_data, 0, (filler_t *)nfs_symlink_filler, inode); if (IS_ERR(page)) return ERR_CAST(page); and that - after inode_nohighmem(inode); (otherwise you wouldn't get nfs_symlink_inode_operations on that inode). 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?