From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965372AbcAZMzE (ORCPT ); Tue, 26 Jan 2016 07:55:04 -0500 Received: from mga02.intel.com ([134.134.136.20]:48359 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964860AbcAZMzA convert rfc822-to-8bit (ORCPT ); Tue, 26 Jan 2016 07:55:00 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,350,1449561600"; d="scan'208";a="901360510" Date: Tue, 26 Jan 2016 07:54:56 -0500 From: Matthew Wilcox To: "Williams, Dan J" Cc: "kirill@shutemov.name" , "jack@suse.cz" , "syzkaller@googlegroups.com" , "linux-kernel@vger.kernel.org" , "kirill.shutemov@linux.intel.com" , "linux-mm@kvack.org" , "dave.hansen@linux.intel.com" , "kcc@google.com" , "vbabka@suse.cz" , "viro@zeniv.linux.org.uk" , "dvyukov@google.com" , "akpm@linux-foundation.org" , "gthelen@google.com" , "linux-fsdevel@vger.kernel.org" , "mhocko@suse.com" , "jack@suse.com" , "glider@google.com" , "sasha.levin@oracle.com" , "Wilcox, Matthew R" , "j-nomura@ce.jp.nec.com" Subject: Re: mm: WARNING in __delete_from_page_cache Message-ID: <20160126125456.GK2948@linux.intel.com> References: <20160124230422.GA8439@node.shutemov.name> <20160125122206.GA24938@quack.suse.cz> <1453779754.32645.3.camel@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1453779754.32645.3.camel@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 26, 2016 at 03:42:34AM +0000, Williams, Dan J wrote: > @@ -2907,7 +2912,12 @@ extern void replace_mount_options(struct super_block *sb, char *options); >   >  static inline bool io_is_direct(struct file *filp) >  { > - return (filp->f_flags & O_DIRECT) || IS_DAX(file_inode(filp)); I think this should just be a one-liner: - return (filp->f_flags & O_DIRECT) || IS_DAX(file_inode(filp)); + return (filp->f_flags & O_DIRECT) || IS_DAX(filp->f_mapping->host); This does the right thing for block device inodes and filesystem inodes. (see the opening stanzas of __dax_fault for an example).