From: Jan Kara <jack@suse.cz> To: ira.weiny@intel.com Cc: linux-kernel@vger.kernel.org, Alexander Viro <viro@zeniv.linux.org.uk>, "Darrick J. Wong" <darrick.wong@oracle.com>, Dan Williams <dan.j.williams@intel.com>, Dave Chinner <david@fromorbit.com>, Christoph Hellwig <hch@lst.de>, "Theodore Y. Ts'o" <tytso@mit.edu>, Jan Kara <jack@suse.cz>, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [RFC PATCH V2 08/12] fs/xfs: Add lock/unlock mode to xfs Date: Thu, 16 Jan 2020 10:24:46 +0100 Message-ID: <20200116092446.GA8446@quack2.suse.cz> (raw) In-Reply-To: <20200110192942.25021-9-ira.weiny@intel.com> On Fri 10-01-20 11:29:38, ira.weiny@intel.com wrote: > From: Ira Weiny <ira.weiny@intel.com> > > XFS requires regular files to be locked while changing to/from DAX mode. > > Define a new DAX lock type and implement the [un]lock_mode() inode > operation callbacks. > > We define a new XFS_DAX_* lock type to carry the lock through the > transaction because we don't want to use IOLOCK as that would cause > performance issues with locking of the inode itself. > > Signed-off-by: Ira Weiny <ira.weiny@intel.com> ... > diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h > index 492e53992fa9..693ca66bd89b 100644 > --- a/fs/xfs/xfs_inode.h > +++ b/fs/xfs/xfs_inode.h > @@ -67,6 +67,9 @@ typedef struct xfs_inode { > spinlock_t i_ioend_lock; > struct work_struct i_ioend_work; > struct list_head i_ioend_list; > + > + /* protect changing the mode to/from DAX */ > + struct percpu_rw_semaphore i_dax_sem; > } xfs_inode_t; This adds overhead of ~32k per inode for typical distro kernel. That's not going to fly. That's why ext4 has similar kind of lock in the superblock shared by all inodes. For read side it does not matter because that's per-cpu and shared lock. For write side we don't care as changing inode access mode should be rare. Honza -- Jan Kara <jack@suse.com> SUSE Labs, CR
next prev parent reply index Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-10 19:29 [RFC PATCH V2 00/12] Enable per-file/directory DAX operations V2 ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 01/12] fs/stat: Define DAX statx attribute ira.weiny 2020-01-15 11:37 ` Jan Kara 2020-01-15 17:38 ` Darrick J. Wong 2020-01-15 19:45 ` Ira Weiny 2020-01-15 20:10 ` Dan Williams 2020-01-15 22:38 ` Ira Weiny 2020-01-16 5:39 ` Darrick J. Wong 2020-01-16 6:05 ` Dan Williams 2020-01-16 6:18 ` Darrick J. Wong 2020-01-16 6:25 ` Dan Williams 2020-01-18 9:11 ` Dave Chinner 2020-01-16 17:55 ` Ira Weiny 2020-01-16 18:04 ` Darrick J. Wong 2020-01-16 18:52 ` Ira Weiny 2020-01-16 22:19 ` Darrick J. Wong 2020-01-17 11:58 ` Jan Kara 2020-01-10 19:29 ` [RFC PATCH V2 02/12] fs/xfs: Isolate the physical DAX flag from effective ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 03/12] fs/xfs: Separate functionality of xfs_inode_supports_dax() ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 04/12] fs/xfs: Clean up DAX support check ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 05/12] fs: remove unneeded IS_DAX() check ira.weiny 2020-01-16 9:38 ` Jan Kara 2020-01-16 18:47 ` Ira Weiny 2020-01-10 19:29 ` [RFC PATCH V2 06/12] fs/xfs: Check if the inode supports DAX under lock ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 07/12] fs: Add locking for a dynamic inode 'mode' ira.weiny 2020-01-13 22:12 ` Darrick J. Wong 2020-01-14 0:20 ` Ira Weiny 2020-01-14 1:03 ` Darrick J. Wong 2020-01-15 19:08 ` Ira Weiny 2020-01-16 5:40 ` Darrick J. Wong 2020-01-16 18:54 ` Ira Weiny 2020-01-10 19:29 ` [RFC PATCH V2 08/12] fs/xfs: Add lock/unlock mode to xfs ira.weiny 2020-01-13 22:19 ` Darrick J. Wong 2020-01-14 0:35 ` Ira Weiny 2020-01-15 0:57 ` Ira Weiny 2020-01-15 23:52 ` Ira Weiny 2020-01-16 9:24 ` Jan Kara [this message] 2020-01-16 19:12 ` Ira Weiny 2020-01-10 19:29 ` [RFC PATCH V2 09/12] fs: Prevent mode change if file is mmap'ed ira.weiny 2020-01-13 22:22 ` Darrick J. Wong 2020-01-14 0:46 ` Ira Weiny 2020-01-14 1:30 ` Darrick J. Wong 2020-01-14 17:53 ` Ira Weiny 2020-01-15 11:34 ` Jan Kara 2020-01-15 18:24 ` Ira Weiny 2020-01-15 10:21 ` David Laight 2020-01-15 17:53 ` Ira Weiny 2020-01-10 19:29 ` [RFC PATCH V2 10/12] fs/xfs: Fix truncate up ira.weiny 2020-01-13 22:27 ` Darrick J. Wong 2020-01-14 0:40 ` Ira Weiny 2020-01-14 1:14 ` Darrick J. Wong 2020-01-14 19:00 ` Ira Weiny 2020-01-14 19:39 ` Ira Weiny 2020-01-10 19:29 ` [RFC PATCH V2 11/12] fs/xfs: Clean up locking in dax invalidate ira.weiny 2020-01-10 19:29 ` [RFC PATCH V2 12/12] fs/xfs: Allow toggle of effective DAX flag ira.weiny
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=20200116092446.GA8446@quack2.suse.cz \ --to=jack@suse.cz \ --cc=dan.j.williams@intel.com \ --cc=darrick.wong@oracle.com \ --cc=david@fromorbit.com \ --cc=hch@lst.de \ --cc=ira.weiny@intel.com \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-xfs@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: link
Linux-XFS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-xfs/0 linux-xfs/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-xfs linux-xfs/ https://lore.kernel.org/linux-xfs \ linux-xfs@vger.kernel.org public-inbox-index linux-xfs Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-xfs AGPL code for this site: git clone https://public-inbox.org/public-inbox.git