From: "Darrick J. Wong" <darrick.wong@oracle.com> To: Dan Williams <dan.j.williams@intel.com> Cc: linux-nvdimm@lists.01.org, Theodore Ts'o <tytso@mit.edu>, Andreas Dilger <adilger.kernel@dilger.ca>, Alexander Viro <viro@zeniv.linux.org.uk>, linux-xfs@vger.kernel.org, Matthew Wilcox <mawilcox@microsoft.com>, Ross Zwisler <ross.zwisler@linux.intel.com>, stable@vger.kernel.org, Jan Kara <jack@suse.cz>, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v6] dax: introduce IS_DEVDAX() and IS_FSDAX() Date: Fri, 2 Mar 2018 11:58:11 -0800 [thread overview] Message-ID: <20180302195811.GA18989@magnolia> (raw) In-Reply-To: <152001757529.22146.17936438768625217740.stgit@dwillia2-desk3.amr.corp.intel.com> On Fri, Mar 02, 2018 at 11:06:36AM -0800, Dan Williams wrote: > The current IS_DAX() helper that checks if a file is in DAX mode serves > two purposes. It is a control flow branch condition for DAX vs > non-DAX paths and it is a mechanism to perform dead code elimination. The > dead code elimination is required in the CONFIG_FS_DAX=n case since > there are symbols in fs/dax.c that will be elided. While the > dead code elimination can be addressed with nop stubs for the fs/dax.c > symbols that does not address the need for a DAX control flow helper > where fs/dax.c symbols are not involved. > > Moreover, the control flow changes, in some cases, need to be cognizant > of whether the DAX file is a typical file or a Device-DAX special file. > Introduce IS_DEVDAX() and IS_FSDAX() to simultaneously address the > file-type control flow and dead-code elimination use cases. IS_DAX() > will be deleted after all sites are converted to use the file-type > specific helper. > > Note, this change is also a pre-requisite for fixing the definition of > the S_DAX inode flag in the CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case. > The flag needs to be defined, non-zero, if either DAX facility is > enabled. > > Cc: "Theodore Ts'o" <tytso@mit.edu> > Cc: Andreas Dilger <adilger.kernel@dilger.ca> > Cc: Alexander Viro <viro@zeniv.linux.org.uk> > Cc: "Darrick J. Wong" <darrick.wong@oracle.com> > Cc: linux-xfs@vger.kernel.org > Cc: Matthew Wilcox <mawilcox@microsoft.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: <stable@vger.kernel.org> > Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") > Reported-by: Jan Kara <jack@suse.cz> > Reviewed-by: Jan Kara <jack@suse.cz> > Signed-off-by: Dan Williams <dan.j.williams@intel.com> > --- > Changes since v5: > * add comments to clarify the S_ISCHR() checks (Darrick) Looks ok, Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> --D > > include/linux/fs.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 79c413985305..751975b8b29b 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1909,6 +1909,30 @@ static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags > #define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \ > (inode)->i_rdev == WHITEOUT_DEV) > > +static inline bool IS_DEVDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_DEV_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + /* regular files with S_DAX are filesystem-dax instances */ > + if (!S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > +static inline bool IS_FSDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_FS_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + /* character devices with S_DAX are device-dax instances */ > + if (S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > static inline bool HAS_UNMAPPED_ID(struct inode *inode) > { > return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid); > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: "Darrick J. Wong" <darrick.wong@oracle.com> To: Dan Williams <dan.j.williams@intel.com> Cc: linux-nvdimm@lists.01.org, "Theodore Ts'o" <tytso@mit.edu>, Andreas Dilger <adilger.kernel@dilger.ca>, Alexander Viro <viro@zeniv.linux.org.uk>, linux-xfs@vger.kernel.org, Matthew Wilcox <mawilcox@microsoft.com>, Ross Zwisler <ross.zwisler@linux.intel.com>, stable@vger.kernel.org, Jan Kara <jack@suse.cz>, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v6] dax: introduce IS_DEVDAX() and IS_FSDAX() Date: Fri, 2 Mar 2018 11:58:11 -0800 [thread overview] Message-ID: <20180302195811.GA18989@magnolia> (raw) In-Reply-To: <152001757529.22146.17936438768625217740.stgit@dwillia2-desk3.amr.corp.intel.com> On Fri, Mar 02, 2018 at 11:06:36AM -0800, Dan Williams wrote: > The current IS_DAX() helper that checks if a file is in DAX mode serves > two purposes. It is a control flow branch condition for DAX vs > non-DAX paths and it is a mechanism to perform dead code elimination. The > dead code elimination is required in the CONFIG_FS_DAX=n case since > there are symbols in fs/dax.c that will be elided. While the > dead code elimination can be addressed with nop stubs for the fs/dax.c > symbols that does not address the need for a DAX control flow helper > where fs/dax.c symbols are not involved. > > Moreover, the control flow changes, in some cases, need to be cognizant > of whether the DAX file is a typical file or a Device-DAX special file. > Introduce IS_DEVDAX() and IS_FSDAX() to simultaneously address the > file-type control flow and dead-code elimination use cases. IS_DAX() > will be deleted after all sites are converted to use the file-type > specific helper. > > Note, this change is also a pre-requisite for fixing the definition of > the S_DAX inode flag in the CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case. > The flag needs to be defined, non-zero, if either DAX facility is > enabled. > > Cc: "Theodore Ts'o" <tytso@mit.edu> > Cc: Andreas Dilger <adilger.kernel@dilger.ca> > Cc: Alexander Viro <viro@zeniv.linux.org.uk> > Cc: "Darrick J. Wong" <darrick.wong@oracle.com> > Cc: linux-xfs@vger.kernel.org > Cc: Matthew Wilcox <mawilcox@microsoft.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: <stable@vger.kernel.org> > Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") > Reported-by: Jan Kara <jack@suse.cz> > Reviewed-by: Jan Kara <jack@suse.cz> > Signed-off-by: Dan Williams <dan.j.williams@intel.com> > --- > Changes since v5: > * add comments to clarify the S_ISCHR() checks (Darrick) Looks ok, Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> --D > > include/linux/fs.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 79c413985305..751975b8b29b 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1909,6 +1909,30 @@ static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags > #define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \ > (inode)->i_rdev == WHITEOUT_DEV) > > +static inline bool IS_DEVDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_DEV_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + /* regular files with S_DAX are filesystem-dax instances */ > + if (!S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > +static inline bool IS_FSDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_FS_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + /* character devices with S_DAX are device-dax instances */ > + if (S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > static inline bool HAS_UNMAPPED_ID(struct inode *inode) > { > return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid); > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-03-02 19:58 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-02 3:53 [PATCH v5 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` [PATCH v5 01/12] dax: fix vma_is_fsdax() helper Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 22:52 ` Christoph Hellwig 2018-03-02 22:52 ` Christoph Hellwig 2018-03-02 22:52 ` Christoph Hellwig 2018-03-02 3:53 ` [PATCH v5 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 17:45 ` Darrick J. Wong 2018-03-02 17:45 ` Darrick J. Wong 2018-03-02 18:37 ` Dan Williams 2018-03-02 18:37 ` Dan Williams 2018-03-02 18:37 ` Dan Williams 2018-03-02 19:06 ` [PATCH v6] " Dan Williams 2018-03-02 19:06 ` Dan Williams 2018-03-02 19:06 ` Dan Williams 2018-03-02 19:06 ` Dan Williams 2018-03-02 19:06 ` Dan Williams 2018-03-02 19:58 ` Darrick J. Wong [this message] 2018-03-02 19:58 ` Darrick J. Wong 2018-03-02 22:53 ` [PATCH v5 02/12] " Christoph Hellwig 2018-03-02 22:53 ` Christoph Hellwig 2018-03-02 22:53 ` Christoph Hellwig 2018-03-02 3:53 ` [PATCH v5 03/12] ext2, dax: finish implementing dax_sem helpers Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` [PATCH v5 04/12] ext2, dax: define ext2_dax_*() infrastructure in all cases Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:53 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 05/12] ext4, dax: define ext4_dax_*() " Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 06/12] ext2, dax: replace IS_DAX() with IS_FSDAX() Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 07/12] ext4, " Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 08/12] xfs, " Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 17:46 ` Darrick J. Wong 2018-03-02 17:46 ` Darrick J. Wong 2018-03-02 3:54 ` [PATCH v5 09/12] mm, dax: replace IS_DAX() with IS_DEVDAX() or IS_FSDAX() Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 22:54 ` Christoph Hellwig 2018-03-02 22:54 ` Christoph Hellwig 2018-03-02 3:54 ` [PATCH v5 10/12] fs, dax: kill IS_DAX() Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 11/12] dax: fix S_DAX definition Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` [PATCH v5 12/12] vfio: disable filesystem-dax page pinning Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 3:54 ` Dan Williams 2018-03-02 22:10 ` [PATCH v5 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Christoph Hellwig 2018-03-02 22:10 ` Christoph Hellwig 2018-03-02 22:10 ` Christoph Hellwig 2018-03-02 22:21 ` Dan Williams 2018-03-02 22:21 ` Dan Williams 2018-03-02 22:21 ` Dan Williams 2018-03-02 22:21 ` Dan Williams 2018-03-02 22:57 ` Christoph Hellwig 2018-03-02 22:57 ` Christoph Hellwig 2018-03-02 22:57 ` Christoph Hellwig 2018-03-02 22:57 ` Christoph Hellwig 2018-03-02 23:49 ` Dan Williams 2018-03-02 23:49 ` Dan Williams 2018-03-02 23:49 ` Dan Williams 2018-03-02 23:49 ` Dan Williams 2018-03-03 2:19 ` Dan Williams 2018-03-03 2:19 ` Dan Williams 2018-03-03 2:19 ` Dan Williams 2018-03-03 2:19 ` Dan Williams
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=20180302195811.GA18989@magnolia \ --to=darrick.wong@oracle.com \ --cc=adilger.kernel@dilger.ca \ --cc=dan.j.williams@intel.com \ --cc=jack@suse.cz \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-nvdimm@lists.01.org \ --cc=linux-xfs@vger.kernel.org \ --cc=mawilcox@microsoft.com \ --cc=ross.zwisler@linux.intel.com \ --cc=stable@vger.kernel.org \ --cc=tytso@mit.edu \ --cc=viro@zeniv.linux.org.uk \ /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: linkBe 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.