From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Wilcox Subject: Re: [PATCH v2 2/5] ext4: call dax_get_unmapped_area() for DAX pmd mappings Date: Wed, 13 Apr 2016 14:22:49 -0400 Message-ID: <20160413182249.GB3120@linux.intel.com> References: <1460493572-31667-1-git-send-email-toshi.kani@hpe.com> <20160413030156.GN2781@linux.intel.com> <1460560116.24985.55.camel@hpe.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: akpm@linux-foundation.org, dan.j.williams@intel.com, linux-nvdimm@lists.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Theodore Ts'o , Andreas Dilger , Jan Kara , Ross Zwisler , linux-ext4@vger.kernel.org To: Toshi Kani Return-path: Content-Disposition: inline In-Reply-To: <1460560116.24985.55.camel@hpe.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-ext4.vger.kernel.org On Wed, Apr 13, 2016 at 09:08:36AM -0600, Toshi Kani wrote: > > Could you do something like: > >=20 > > =A0#ifdef CONFIG_FS_DAX > > =A0struct page *read_dax_sector(struct block_device *bdev, sector_t= n); > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned lo= ng > > addr, > > +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0unsigned long len, un= signed long pgoff, unsigned long > > flags); > > =A0#else > > =A0static inline struct page *read_dax_sector(struct block_device *= bdev, > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0sector_t n) > > =A0{ > > =A0=A0=A0=A0=A0=A0=A0=A0=A0return ERR_PTR(-ENXIO); > > =A0} > > +#define dax_get_unmapped_area NULL > > =A0#endif > >=20 > > in patch 1/5.=A0=A0Then there's no need for the ifdefs in each file= system. >=20 > I thought about it, but I do not think we can use an inline function = to an > entry point. That's not an inline function. It's just NULL. So after the preproces= sor is done with it, it just looks like: .get_unmapped_area =3D NULL, and it won't be called by get_unmapped_area(). From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ml01.01.org (Postfix) with ESMTP id B440B1A1FBE for ; Wed, 13 Apr 2016 11:22:57 -0700 (PDT) Date: Wed, 13 Apr 2016 14:22:49 -0400 From: Matthew Wilcox Subject: Re: [PATCH v2 2/5] ext4: call dax_get_unmapped_area() for DAX pmd mappings Message-ID: <20160413182249.GB3120@linux.intel.com> References: <1460493572-31667-1-git-send-email-toshi.kani@hpe.com> <20160413030156.GN2781@linux.intel.com> <1460560116.24985.55.camel@hpe.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1460560116.24985.55.camel@hpe.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Toshi Kani Cc: Theodore Ts'o , linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org, Andreas Dilger , linux-fsdevel@vger.kernel.org, Jan Kara , akpm@linux-foundation.org, linux-ext4@vger.kernel.org List-ID: On Wed, Apr 13, 2016 at 09:08:36AM -0600, Toshi Kani wrote: > > Could you do something like: > > = > > =A0#ifdef CONFIG_FS_DAX > > =A0struct page *read_dax_sector(struct block_device *bdev, sector_t n); > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > > addr, > > +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0unsigned long len, unsign= ed long pgoff, unsigned long > > flags); > > =A0#else > > =A0static inline struct page *read_dax_sector(struct block_device *bdev, > > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0sector_t n) > > =A0{ > > =A0=A0=A0=A0=A0=A0=A0=A0=A0return ERR_PTR(-ENXIO); > > =A0} > > +#define dax_get_unmapped_area NULL > > =A0#endif > > = > > in patch 1/5.=A0=A0Then there's no need for the ifdefs in each filesyst= em. > = > I thought about it, but I do not think we can use an inline function to an > entry point. That's not an inline function. It's just NULL. So after the preprocessor is done with it, it just looks like: .get_unmapped_area =3D NULL, and it won't be called by get_unmapped_area(). _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com ([192.55.52.88]:51361 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755169AbcDMSW7 convert rfc822-to-8bit (ORCPT ); Wed, 13 Apr 2016 14:22:59 -0400 Date: Wed, 13 Apr 2016 14:22:49 -0400 From: Matthew Wilcox To: Toshi Kani Cc: akpm@linux-foundation.org, dan.j.williams@intel.com, linux-nvdimm@lists.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Theodore Ts'o , Andreas Dilger , Jan Kara , Ross Zwisler , linux-ext4@vger.kernel.org Subject: Re: [PATCH v2 2/5] ext4: call dax_get_unmapped_area() for DAX pmd mappings Message-ID: <20160413182249.GB3120@linux.intel.com> References: <1460493572-31667-1-git-send-email-toshi.kani@hpe.com> <20160413030156.GN2781@linux.intel.com> <1460560116.24985.55.camel@hpe.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1460560116.24985.55.camel@hpe.com> Content-Transfer-Encoding: 8BIT Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Apr 13, 2016 at 09:08:36AM -0600, Toshi Kani wrote: > > Could you do something like: > > > > �#ifdef CONFIG_FS_DAX > > �struct page *read_dax_sector(struct block_device *bdev, sector_t n); > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > > addr, > > +���������������unsigned long len, unsigned long pgoff, unsigned long > > flags); > > �#else > > �static inline struct page *read_dax_sector(struct block_device *bdev, > > �����������������sector_t n) > > �{ > > ���������return ERR_PTR(-ENXIO); > > �} > > +#define dax_get_unmapped_area NULL > > �#endif > > > > in patch 1/5.��Then there's no need for the ifdefs in each filesystem. > > I thought about it, but I do not think we can use an inline function to an > entry point. That's not an inline function. It's just NULL. So after the preprocessor is done with it, it just looks like: .get_unmapped_area = NULL, and it won't be called by get_unmapped_area(). From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755193AbcDMSXB (ORCPT ); Wed, 13 Apr 2016 14:23:01 -0400 Received: from mga01.intel.com ([192.55.52.88]:51361 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755169AbcDMSW7 convert rfc822-to-8bit (ORCPT ); Wed, 13 Apr 2016 14:22:59 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,480,1455004800"; d="scan'208";a="954298107" Date: Wed, 13 Apr 2016 14:22:49 -0400 From: Matthew Wilcox To: Toshi Kani Cc: akpm@linux-foundation.org, dan.j.williams@intel.com, linux-nvdimm@ml01.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, "Theodore Ts'o" , Andreas Dilger , Jan Kara , Ross Zwisler , linux-ext4@vger.kernel.org Subject: Re: [PATCH v2 2/5] ext4: call dax_get_unmapped_area() for DAX pmd mappings Message-ID: <20160413182249.GB3120@linux.intel.com> References: <1460493572-31667-1-git-send-email-toshi.kani@hpe.com> <20160413030156.GN2781@linux.intel.com> <1460560116.24985.55.camel@hpe.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1460560116.24985.55.camel@hpe.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 Wed, Apr 13, 2016 at 09:08:36AM -0600, Toshi Kani wrote: > > Could you do something like: > > > >  #ifdef CONFIG_FS_DAX > >  struct page *read_dax_sector(struct block_device *bdev, sector_t n); > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > > addr, > > +               unsigned long len, unsigned long pgoff, unsigned long > > flags); > >  #else > >  static inline struct page *read_dax_sector(struct block_device *bdev, > >                  sector_t n) > >  { > >          return ERR_PTR(-ENXIO); > >  } > > +#define dax_get_unmapped_area NULL > >  #endif > > > > in patch 1/5.  Then there's no need for the ifdefs in each filesystem. > > I thought about it, but I do not think we can use an inline function to an > entry point. That's not an inline function. It's just NULL. So after the preprocessor is done with it, it just looks like: .get_unmapped_area = NULL, and it won't be called by get_unmapped_area().