From: Goldwyn Rodrigues <rgoldwyn@suse.de> To: linux-fsdevel@vger.kernel.org Cc: linux-btrfs@vger.kernel.org, david@fromorbit.com, hch@lst.de, johannes.thumshirn@wdc.com, dsterba@suse.com, darrick.wong@oracle.com, josef@toxicpanda.com Subject: [PATCH 0/14 v3] BTRFS DIO inode locking/D_SYNC fix Date: Thu, 24 Sep 2020 11:39:07 -0500 Message-ID: <20200924163922.2547-1-rgoldwyn@suse.de> (raw) This series attempts to arrange inode locking and unlocking to be more aligned to ext4 and xfs handling of things, and makes it simpler in logic. The main goal is to have shared inode lock for direct reads and direct writes within EOF to make sure we do not race with truncate. I have merged two series here: (1) Using inode_lock_shared for <EOF DIO writes (2) Fix O_DSYNC | O_DIRECT Both require inode locking to be pushed closer to I/O calls and thought was relevant. (2) requires changes in iomap code. Tested xfstests on btrfs, ext4 and xfs Git: https://github.com/goldwynr/linux/tree/btrfs-inode-lock Changes since v1: - Changed fix for deadlock due to O_DSYNC (iomap patches added) - btrfs_inode_lock() shifted to inode.c - Reinstated lockdep_assert_held() in iomap_dio_rw() Changes since v2: - Review comments incorporated: - comments got BTRFS_SUPER_FLAG_ERROR deleted - Function comments for btrfs_inode_lock()/unlock() - Unsetting current->backing_dev_info - Corrected ret from __iomap_dio_rw() - Removed unused err in btrfs_file_write_iter() -- Goldwyn
next reply index Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-24 16:39 Goldwyn Rodrigues [this message] 2020-09-24 16:39 ` [PATCH 01/14] fs: remove dio_end_io() Goldwyn Rodrigues 2020-09-29 12:16 ` David Sterba 2020-09-24 16:39 ` [PATCH 02/14] btrfs: remove BTRFS_INODE_READDIO_NEED_LOCK Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 03/14] iomap: Allow filesystem to call iomap_dio_complete without i_rwsem Goldwyn Rodrigues 2020-09-26 1:49 ` Darrick J. Wong 2020-09-24 16:39 ` [PATCH 04/14] iomap: Call inode_dio_end() before generic_write_sync() Goldwyn Rodrigues 2020-09-26 1:51 ` Darrick J. Wong 2020-09-28 15:04 ` David Sterba 2020-09-28 16:12 ` Darrick J. Wong 2020-09-24 16:39 ` [PATCH 05/14] btrfs: split btrfs_direct_IO to read and write Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 06/14] btrfs: Move pos increment and pagecache extension to btrfs_buffered_write() Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 07/14] btrfs: Move FS error state bit early during write Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 08/14] btrfs: Introduce btrfs_write_check() Goldwyn Rodrigues 2020-10-09 14:21 ` Josef Bacik 2020-09-24 16:39 ` [PATCH 09/14] btrfs: Introduce btrfs_inode_lock()/unlock() Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 10/14] btrfs: Push inode locking and unlocking into buffered/direct write Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 11/14] btrfs: Use inode_lock_shared() for direct writes within EOF Goldwyn Rodrigues 2020-10-09 14:25 ` Josef Bacik 2020-09-24 16:39 ` [PATCH 12/14] btrfs: Remove dio_sem Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 13/14] btrfs: Call iomap_dio_complete() without inode_lock Goldwyn Rodrigues 2020-09-24 16:39 ` [PATCH 14/14] btrfs: Revert 09745ff88d93 ("btrfs: dio iomap DSYNC workaround") Goldwyn Rodrigues
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=20200924163922.2547-1-rgoldwyn@suse.de \ --to=rgoldwyn@suse.de \ --cc=darrick.wong@oracle.com \ --cc=david@fromorbit.com \ --cc=dsterba@suse.com \ --cc=hch@lst.de \ --cc=johannes.thumshirn@wdc.com \ --cc=josef@toxicpanda.com \ --cc=linux-btrfs@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ /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-BTRFS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-btrfs/0 linux-btrfs/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-btrfs linux-btrfs/ https://lore.kernel.org/linux-btrfs \ linux-btrfs@vger.kernel.org public-inbox-index linux-btrfs Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-btrfs AGPL code for this site: git clone https://public-inbox.org/public-inbox.git