Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp1762586iog; Thu, 16 Jun 2022 13:18:49 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t9WQFpbm19sjjsdTSil/Hb7LjcbywHnhG/pe8ftpcz7hbdAd1Si/C+Eo0MWcG9tbkzAUWu X-Received: by 2002:a63:2305:0:b0:408:85f6:5ef6 with SMTP id j5-20020a632305000000b0040885f65ef6mr6019620pgj.585.1655410729124; Thu, 16 Jun 2022 13:18:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655410729; cv=none; d=google.com; s=arc-20160816; b=TmiCbbuBw2Yt2WmWK66HTwa25d6ckk/XlovfNoXst9wgyaLPNLCrJtvT31iKfDD5X0 1GNgZFCMgDQz6K18kRqIydTWMe0j2AMAjhCUZhZ2u6AZItZIDYxlVOSWg3bt9aVtFjhd fWMRh15eBVYYnZZX+yu0V9QMzL9Ir9RII8SMK9JPSv81QL4CQLdZfpCbp/C6sjXQ08O+ c55oiXGClyTv0UimDJLRDaV5JPWhJRGtGiSwN0n8npMjI1vDzZZEk1UJLsRAXsQChPSm mQUhBk8eXBjbH956wdRPhyHBloypIdVs+50JS+8654UZNdZUXi5gDHubcRTv9fOsXp0N GksA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=YZbo0H/dA7rC2UEnryNIZTqD/0DUVPDwvXxQ//0oEsg=; b=KWb05fz0zlbKynQjyuVkWBxyEwjITnJbViVp8ago2n4/UxOUMV7l671JQjsUVRQ2kl lKw2M/LSs8gXTBw0qZA2E/imX6O3v8j5RpXhkb1zFtsBL/QrD3bKsx4MBAjqcvdo55Lu sJKt5gtf3FodV8NG7qQrlEeI8csnVx3b7udlKbEJxjtlF1R9PixNH21H8kNtwiolTRgA JKxGO4zuT+vnwb0ySEDpj8qv/q3hXwTiHoT0M99mFfztOOs29C2m/uK+nqKqlnLeN2qf r+MnMjS44tFd6s4HCwnsz27q/XkdA8JCsqyt84QRoP4O6C+4LbEsU+wiwdpnQANYBKPM QKRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FE409cqu; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u19-20020a63b553000000b0040014ae56a3si4071650pgo.417.2022.06.16.13.18.35; Thu, 16 Jun 2022 13:18:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FE409cqu; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378374AbiFPUST (ORCPT + 99 others); Thu, 16 Jun 2022 16:18:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378308AbiFPUSS (ORCPT ); Thu, 16 Jun 2022 16:18:18 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B678B34BBD; Thu, 16 Jun 2022 13:18:17 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 70E69B8241A; Thu, 16 Jun 2022 20:18:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3B59C34114; Thu, 16 Jun 2022 20:18:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655410695; bh=uHvrE+2KCGPR9N5AeXBgCBnYJvNxKl74BJyMaayUJlE=; h=From:To:Cc:Subject:Date:From; b=FE409cquZhNFTvUkhTz7aypxXcp8WVokxBhnOgrLH7rlE98ZDV8l1GdGcslnY0oFx ByeEMsNBaXb9VYG8LFVjl1S+79f5i0YjMkfvsUE9Wj3myE3PSK8zfRz0/EtowyYHBO iOw2iLltOMlau7xeqpRv3LdCm6DGDeTZUolKc2IzonnbO9+6YbZOwCNo8qGlEkRTWs hqpSWrzTz01/8v2Q3ZThHothFD/mn5Nhs+a+vL4u/yf4s+PM80d04AO9bKkU0tNZug OemXtvGjdbXjqfvdtyPIPCgcGjA799xlqEljsmrYSlYgC4GqLRYODBx4O/scdI2HT6 b92/3YjwKg2Ow== From: Eric Biggers To: linux-fsdevel@vger.kernel.org Cc: linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, linux-api@vger.kernel.org, linux-fscrypt@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Keith Busch Subject: [PATCH v3 0/8] make statx() return DIO alignment information Date: Thu, 16 Jun 2022 13:14:58 -0700 Message-Id: <20220616201506.124209-1-ebiggers@kernel.org> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,SUSPICIOUS_RECIPS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org This patchset makes the statx() system call return direct I/O (DIO) alignment information. This allows userspace to easily determine whether a file supports DIO, and if so with what alignment restrictions. Patch 1 adds the basic VFS support for STATX_DIOALIGN. Patch 2 wires it up for all block device files. The remaining patches wire it up for regular files on ext4 and f2fs. Support for regular files on other filesystems can be added later. I've also written a man-pages patch, which I'm sending separately. Note, f2fs has one corner case where DIO reads are allowed but not DIO writes. The proposed statx fields can't represent this. My proposal (patch 6) is to just eliminate this case, as it seems much too weird. But I'd appreciate any feedback on that part. This patchset applies to v5.19-rc2. Changed v2 => v3: - Dropped the stx_offset_align_optimal field, since its purpose wasn't clearly distinguished from the existing stx_blksize. - Renamed STATX_IOALIGN to STATX_DIOALIGN, to reflect the new focus on DIO only. - Similarly, renamed stx_{mem,offset}_align_dio to stx_dio_{mem,offset}_align, to reflect the new focus on DIO only. - Wired up STATX_DIOALIGN on block device files. Changed v1 => v2: - No changes. Eric Biggers (8): statx: add direct I/O alignment information vfs: support STATX_DIOALIGN on block devices fscrypt: change fscrypt_dio_supported() to prepare for STATX_DIOALIGN ext4: support STATX_DIOALIGN f2fs: move f2fs_force_buffered_io() into file.c f2fs: don't allow DIO reads but not DIO writes f2fs: simplify f2fs_force_buffered_io() f2fs: support STATX_DIOALIGN fs/crypto/inline_crypt.c | 48 ++++++++++++++++++++------------------- fs/ext4/ext4.h | 1 + fs/ext4/file.c | 10 ++++---- fs/ext4/inode.c | 29 +++++++++++++++++++++++ fs/f2fs/f2fs.h | 45 ------------------------------------ fs/f2fs/file.c | 45 +++++++++++++++++++++++++++++++++++- fs/stat.c | 37 ++++++++++++++++++++++++++++++ include/linux/fscrypt.h | 7 ++---- include/linux/stat.h | 2 ++ include/uapi/linux/stat.h | 4 +++- 10 files changed, 147 insertions(+), 81 deletions(-) -- 2.36.1 base-commit: b13baccc3850ca8b8cccbf8ed9912dbaa0fdf7f3