From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9A7FC7EE29 for ; Tue, 23 May 2023 22:27:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2FCAD900003; Tue, 23 May 2023 18:27:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28535900002; Tue, 23 May 2023 18:27:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1019E900003; Tue, 23 May 2023 18:27:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id EF333900002 for ; Tue, 23 May 2023 18:27:20 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C85781A0794 for ; Tue, 23 May 2023 22:27:20 +0000 (UTC) X-FDA: 80822957040.25.4DDB8ED Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by imf06.hostedemail.com (Postfix) with ESMTP id DF7DA180017 for ; Tue, 23 May 2023 22:27:18 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=fromorbit-com.20221208.gappssmtp.com header.s=20221208 header.b=myd4lDfv; spf=pass (imf06.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=david@fromorbit.com; dmarc=pass (policy=quarantine) header.from=fromorbit.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684880839; a=rsa-sha256; cv=none; b=4z5Fgva7GIqSQwZRsSQoBb/x4ZpjqPIWGN6O2a1KLgeDLtaxgA1ypooX5qfncslBat/zox O1iAPhN0TBm4lS2KRbA/N7kZe9OHMNXvKQzVXK7J9Yhd0eTjcmls1lb44KbTl7OwfmuVRu AQtLz/f4JbWcj5RAhDKkSyP1o+SKJQQ= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=fromorbit-com.20221208.gappssmtp.com header.s=20221208 header.b=myd4lDfv; spf=pass (imf06.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=david@fromorbit.com; dmarc=pass (policy=quarantine) header.from=fromorbit.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684880839; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=o+Mu9QUDJUPxCQ+nxaGfODHItInO1Mx21+1cY8P0+ko=; b=6aMwaPcmXRyn7bADR/EKOyGd+NCzDdr4OCMAxqvwHzw4xKrhe3piKVmpiGdxLq2w8xeSZB bJK5dONBRgCQaa1zD+cVhHa/uA67UnKxGFeqry82FYxThdRr4/+mjt+qV8PIk6weYf01kK 18ShFAz1mL/pTMKYhZ3NJR+JV+XVcSs= Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-64d44b198baso55271b3a.0 for ; Tue, 23 May 2023 15:27:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fromorbit-com.20221208.gappssmtp.com; s=20221208; t=1684880837; x=1687472837; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=o+Mu9QUDJUPxCQ+nxaGfODHItInO1Mx21+1cY8P0+ko=; b=myd4lDfvuaaTHVDxIZueGM+k5E70olrh5Bi4kawJ2EqxlzdG3jx2hNsJKzBv1ExQrZ aZIqungadEPCy/hk+arz6SCHAhumLQ2exHtv9ezxiuWyl92MWzYKy8HK8quRSz97EAMo 8HDOmtAd6fKra/CsSjrI/dK+pfZCIsI+1uCq1qHYsi0xHo3WYArXZwYWudExTIr6Fj27 3dDJ033Vg+M4TLAaJI5DgBCEbpaEmjNrP7x2LDAEYwxTkMPe/qI246iat844prVielH/ N1rZ8XOfFOa41MmZaZKsz9PVPHf7hGTl1NypGa83NrTRXoIwS26AGhLJnHwQKKez3ITY DvPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684880837; x=1687472837; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o+Mu9QUDJUPxCQ+nxaGfODHItInO1Mx21+1cY8P0+ko=; b=dJoo1WTZ1ZMKCELOyGsQx+DHvj9wMypkkk8WbsanF/p1Pm6w/rD0G1/bWKYwwAp0gr 7zQGii5gGGr6ZjRmTGMPab+KN7xbLlFeGWm+2oHFRGhWoBVJNq9c5oUztc0YVS/ea3A2 hzSKAqkLuGE/siCMUbA2Gh89OyIwaAlYkfJOJHdxRymy/W5DqLbSvEMWZtyBJBIk319m ZLXEMmzFcN94ZKiAxZqSvj3yblzzINqaAAkXsSnMgnlsleF5llek1MmLIuAm2AXW2NCM wfZrJWk11r08IXo40EA02cfK3eK+aIgm8k4nnmFj9COabLukg7zck6yrB3LGKr0ZeRHv O/7g== X-Gm-Message-State: AC+VfDznOfZVJPgRqSClbEWdWxLDOP7vJkazwvPz4zfj411daOPo1cdp McXHTQLPU7ildRNw3N7csL2ZDg== X-Google-Smtp-Source: ACHHUZ5+wDLkzWl5hqADeJv/K/pEdU5ftVoYvaXjN5yUsSSnEKzwjNvqAoa0WrZdkbq9aiPARCtcUw== X-Received: by 2002:a05:6a20:3c8d:b0:10c:d5dd:c223 with SMTP id b13-20020a056a203c8d00b0010cd5ddc223mr1532145pzj.15.1684880837655; Tue, 23 May 2023 15:27:17 -0700 (PDT) Received: from dread.disaster.area (pa49-179-0-188.pa.nsw.optusnet.com.au. [49.179.0.188]) by smtp.gmail.com with ESMTPSA id d11-20020a63fd0b000000b005308b255502sm6443395pgh.68.2023.05.23.15.27.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 May 2023 15:27:16 -0700 (PDT) Received: from dave by dread.disaster.area with local (Exim 4.96) (envelope-from ) id 1q1aTJ-0036Bu-2Z; Wed, 24 May 2023 08:27:13 +1000 Date: Wed, 24 May 2023 08:27:13 +1000 From: Dave Chinner To: Hannes Reinecke Cc: Christoph Hellwig , Jens Axboe , Miklos Szeredi , "Darrick J. Wong" , Andrew Morton , David Howells , Matthew Wilcox , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, ceph-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-xfs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 16/17] block: use iomap for writes to block devices Message-ID: References: <20230424054926.26927-1-hch@lst.de> <20230424054926.26927-17-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: DF7DA180017 X-Stat-Signature: 13n5unakzuf5epwqg6e1axbxjmho9hsc X-Rspam-User: X-HE-Tag: 1684880838-455501 X-HE-Meta: U2FsdGVkX1/UXUMLHs29jXNz3Bfy5ZJaUT8x3dCNzkchrTaHKxvz60S6tbc8OkprvtLec8VsKMfF11SKTlv/uSsyVgPdJZnAtUdLeuf6PR39Ccuq8vDfuxLTe1LBIckjPt7heLDe95HOTZ/HYydzs5ij2gBv59QXx3Cr23RrRxkOr7vDPCxfZ6IE0ERypcbcYIyyfbpyM2jQ/wBklvqxc7NPYuN6kIgKBImeDc8Zi+0Q1zrHzpEzLhHFv/MNL36NQq/WanYBCytaQ//UPp7ShMcDL/mpJRyMNHGXsLeRMQKo8IjONzRbe5JjGn7B5E8QWWhDgKS4wCHlJvNk3Gb6bSouZgbu1ow9YdHCIaH6L9kEGPcLmLFII2Zabeu8hxExVZAlD1zNPGyXN0sd5rJYj21BLmGdyV8Vbx0kAaito4AUZ45YM9w06pa71K073gRvcgSqYbBAlwiTcOSc9OgEu0q/lH55p2sT2IePosTeFXvKBygywJQ+n4QYymByQaWbwXesbAe6Rg21eHt3DbemGU7XsIzfqkh5Zz5VEKpBvBkW06uF8j351Mds9uHfk7kN1tsobRJzxcHimmCd9r735xdUge1GXP0SGsAJKCdRPSZC5dUKhbeFuZ+fZKzcGUZJGSOfYmOVBT7cVWDJtzcis80qyD2n8tGEeIpMGjtFY0jPfjkwsgBOIFMIvcdtbKSsi/0kvCwoFkLMrrUFoilEc4TKq4v3Bpb1kx6oLAJoNXaw8LDhvBPmnXNOqqrXYRIEEbVFiGokyjT+a+QhONxRrw0tEciE64N8iQM759o1/0m4IgZDql7eJnncaOlShAPo33boAk1v2WZsPw6XWXujCnT57tpohH23F8dPv4YKF8lRg1OhISl/QGMr+jPVS1KAqb/cz0SOvPXs2hezwa3YRoAYEQL7VNEB6ADgoNAiC1AnTLjvGxYf00VD145mFon4t+ZGZo+Rhjuq0WN7nzf 8fyq1FEt VWKgMGrbLwE89QxtAnGpF75sKILraoGZeauFNy2XZwcSn9X1abnajrVjycytkXXSpUyhTB49jb9BIB4XqlKy8FKWCh7ii56TUTIRofs8a0vnUVsOm5LGdU5jWhXnq88BZoz7u0KyoYaJKmN8lw3n7sgKrk29YUrirUGbDLuMXZEl6gkjuMcIIy/rvRMu1W2nLeosI2QeGBq150ssiNYIMU+qiKT7IKeR3UAxfpNBBQLnLBLhs055reWgZbZd88Rm7grLi/GuS7eszVkGSmB5x9FmHizFEU6HOVi6oGDqpjWiavGd2jqZh0O59Z+DQBup18WmmSEhmn0AbPf7k6kGi/wQzAMT2BzbUqbpzaqbtAfZxDM0LaIW++tWOLYBYcU3TZvB8hgYWOiYIf2QHtEjnxxR8PXN4ky67j7Ud1LhHhfpbaCuG7rvinOmxRoziHH+AkWRaeHs0DeUn6XrhOVdnlo1p1P7gA1ONs1mIRjJTPjoQ2rQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, May 19, 2023 at 04:22:01PM +0200, Hannes Reinecke wrote: > On 4/24/23 07:49, Christoph Hellwig wrote: > > Use iomap in buffer_head compat mode to write to block devices. > > > > Signed-off-by: Christoph Hellwig > > --- > > block/Kconfig | 1 + > > block/fops.c | 33 +++++++++++++++++++++++++++++---- > > 2 files changed, 30 insertions(+), 4 deletions(-) > > > > diff --git a/block/Kconfig b/block/Kconfig > > index 941b2dca70db73..672b08f0096ab4 100644 > > --- a/block/Kconfig > > +++ b/block/Kconfig > > @@ -5,6 +5,7 @@ > > menuconfig BLOCK > > bool "Enable the block layer" if EXPERT > > default y > > + select IOMAP > > select SBITMAP > > help > > Provide block layer support for the kernel. > > diff --git a/block/fops.c b/block/fops.c > > index 318247832a7bcf..7910636f8df33b 100644 > > --- a/block/fops.c > > +++ b/block/fops.c > > @@ -15,6 +15,7 @@ > > #include > > #include > > #include > > +#include > > #include > > #include "blk.h" > > @@ -386,6 +387,27 @@ static ssize_t blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter) > > return __blkdev_direct_IO(iocb, iter, bio_max_segs(nr_pages)); > > } > > +static int blkdev_iomap_begin(struct inode *inode, loff_t offset, loff_t length, > > + unsigned int flags, struct iomap *iomap, struct iomap *srcmap) > > +{ > > + struct block_device *bdev = I_BDEV(inode); > > + loff_t isize = i_size_read(inode); > > + > > + iomap->bdev = bdev; > > + iomap->offset = ALIGN_DOWN(offset, bdev_logical_block_size(bdev)); > > + if (WARN_ON_ONCE(iomap->offset >= isize)) > > + return -EIO; > > I'm hitting this during booting: > [ 5.016324] > [ 5.030256] iomap_iter+0x11a/0x350 > [ 5.030264] iomap_readahead+0x1eb/0x2c0 > [ 5.030272] read_pages+0x5d/0x220 > [ 5.030279] page_cache_ra_unbounded+0x131/0x180 > [ 5.030284] filemap_get_pages+0xff/0x5a0 Why is filemap_get_pages() using unbounded readahead? Surely readahead should be limited to reading within EOF.... > [ 5.030292] filemap_read+0xca/0x320 > [ 5.030296] ? aa_file_perm+0x126/0x500 > [ 5.040216] ? touch_atime+0xc8/0x150 > [ 5.040224] blkdev_read_iter+0xb0/0x150 > [ 5.040228] vfs_read+0x226/0x2d0 > [ 5.040234] ksys_read+0xa5/0xe0 > [ 5.040238] do_syscall_64+0x5b/0x80 > > Maybe we should consider this patch: > > diff --git a/block/fops.c b/block/fops.c > index 524b8a828aad..d202fb663f25 100644 > --- a/block/fops.c > +++ b/block/fops.c > @@ -386,10 +386,13 @@ static int blkdev_iomap_begin(struct inode *inode, > loff_t offset, loff_t length, > > iomap->bdev = bdev; > iomap->offset = ALIGN_DOWN(offset, bdev_logical_block_size(bdev)); > - if (WARN_ON_ONCE(iomap->offset >= isize)) > - return -EIO; > - iomap->type = IOMAP_MAPPED; > - iomap->addr = iomap->offset; > + if (WARN_ON_ONCE(iomap->offset >= isize)) { > + iomap->type = IOMAP_HOLE; > + iomap->addr = IOMAP_NULL_ADDR; > + } else { > + iomap->type = IOMAP_MAPPED; > + iomap->addr = iomap->offset; > + } I think Christoph's code is correct. IMO, any attempt to read beyond the end of the device should throw out a warning and return an error, not silently return zeros. If readahead is trying to read beyond the end of the device, then it really seems to me like the problem here is readahead, not the iomap code detecting the OOB read request.... Cheers, Dave. -- Dave Chinner david@fromorbit.com