Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp883928ybt; Wed, 8 Jul 2020 14:20:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxY2jNpyh/Rl75gdqn72x0jk1d6aD2eYYy0Dh4QDpHI3O8LFH238qM90gRJ6JKi8hlTuF3h X-Received: by 2002:a05:6402:1d14:: with SMTP id dg20mr32434453edb.23.1594243227292; Wed, 08 Jul 2020 14:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594243227; cv=none; d=google.com; s=arc-20160816; b=IPpAMkpFa0SC3+eusB7GR62HgX701TZKCDej49xZ8mOtsx5cnFamyz/OOXDlfyY16P eLlPalpqzCP8HnvOYCyD16X4mfj8hz8jkWrkXGm1WqyXbOPxQfhpT/V4AmdkeGGYzL8f nZfr3TQ6ucH/3oFBe6CDlUii9nersPnfKQV9bhOdsHgHOpkM3GL4b4nmHWJtCgwDdY2z j4bjrPqZHVWy+JuuztycpvzXFVDAnC3oDcqhEMj67f0ZZh66csPCHb6NYD+yGIP5XkrB 4NBllW8S5p65g1P8t4r190vfB3FCpOtYOthLWQH7Wdsrd4mv6JheXJBMkb0wLLzf8rc3 I57A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=51vNWCRAuvyVj4T78aZPAXtXEbrpNFZtWjAAwUHKNlg=; b=RxKyHfpfkjY+tY5MXNMOcCkvxQNbkLlJejqprAQ99K4efl65k7kaoZxoR1JRxHJ07a 4i9m8/TA7nXpVMub7vfifkSGVxRAeHt6hD8I27+7keH/o5Lb7thxpbrdfniQ/fGEfYpU LHglXP9ZAyVgsQ5Jm+Cf5FMK3VwLPJoOu2BNirraknJIKaJbzKEvVX+DsPByTesKFZbC 93fH5JvuJwGcagTuz6Ekr2nRSmQhOiIywtdNcKAAupK87sd4Tg75AnksulxppmTIXp9i NHHL0ozNTHNiLLeOp6MHzv/czuhm/bGPGsEnZbNfOhQXyGT4M+bTrJ7CsowDXRO4GM95 +YiA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ck29si649641edb.236.2020.07.08.14.19.54; Wed, 08 Jul 2020 14:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726223AbgGHVTp (ORCPT + 99 others); Wed, 8 Jul 2020 17:19:45 -0400 Received: from mx2.suse.de ([195.135.220.15]:35382 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725903AbgGHVTo (ORCPT ); Wed, 8 Jul 2020 17:19:44 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id D73E1AC91; Wed, 8 Jul 2020 21:19:43 +0000 (UTC) From: Goldwyn Rodrigues To: linux-btrfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, darrick.wong@oracle.com, hch@lst.de, cluster-devel@redhat.com, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org Subject: [PATCH 0/6 v11] btrfs direct-io using iomap Date: Wed, 8 Jul 2020 16:19:20 -0500 Message-Id: <20200708211926.7706-1-rgoldwyn@suse.de> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org This is an effort to use iomap for direct I/O in btrfs. This would change the call from __blockdev_direct_io() to iomap_dio_rw(). These are remanants of the series which was revoked due to page invalidation errors and adds patches in iomap for proper buffered fallback. The main objective is to lose the buffer head and use bio defined by iomap code, and to use more of generic-FS codebase. These patches are based and tested on vanilla. I have tested it against xfstests. The tree is available at https://github.com/goldwynr/linux/tree/btrfs-iomap-dio Changes since v1 - Incorporated back the efficiency change for inode locking - Review comments about coding style and git comments - Merge related patches into one - Direct read to go through btrfs_direct_IO() - Removal of no longer used function dio_end_io() Changes since v2 - aligning iomap offset/length to the position/length of I/O - Removed btrfs_dio_data - Removed BTRFS_INODE_READDIO_NEED_LOCK - Re-incorporating write efficiency changes caused lockdep_assert() in iomap to be triggered, remove that code. Changes since v3 - Fixed freeze on generic/095. Use iomap_end() to account for failed/incomplete dio instead of btrfs_dio_data Changes since v4 - moved lockdep_assert_held() to functions calling iomap_dio_rw() This may be called immidiately after calling inode lock and may feel not required, but it seems important. - Removed comments which are no longer required - Changed commit comments to make them more appropriate Changes since v5 - restore inode_dio_wait() in truncate - Removed lockdep_assert_held() near callers Changes since v6 - Fixed hangs due to underlying device failures - Removed the patch to wait while releasing pages Changes since v7 - Moved reservation into btrfs iomap begin()/end() for correct reservation cleanup in case of device error. - Merged patches switch to iomap, and adding btrfs_iomap_end() for easier bisection. The switch to iomap would fail in case of dio after buffered writes. Changes since v8 - Added a flag to iomap_dio_rw() to return zero for buffered fallback Changes since v9 - flag name changes for iomap_dio_rw() Changes since v10 - flag datatype changed to unsigned int fs/btrfs/Kconfig | 1 fs/btrfs/btrfs_inode.h | 18 -- fs/btrfs/ctree.h | 5 fs/btrfs/file.c | 116 ++++++++++++-- fs/btrfs/inode.c | 402 ++++++++++++++++++------------------------------- fs/direct-io.c | 19 -- fs/ext4/file.c | 11 + fs/gfs2/file.c | 14 + fs/iomap/direct-io.c | 11 + fs/xfs/xfs_file.c | 15 + fs/zonefs/super.c | 16 + include/linux/fs.h | 2 include/linux/iomap.h | 25 ++- 13 files changed, 335 insertions(+), 320 deletions(-) -- Goldwyn