From patchwork Wed May 23 14:43:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10421561 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4C8E160545 for ; Wed, 23 May 2018 14:45:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3DE7226E82 for ; Wed, 23 May 2018 14:45:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 32782287B4; Wed, 23 May 2018 14:45:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C617828113 for ; Wed, 23 May 2018 14:45:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 341A76B0271; Wed, 23 May 2018 10:44:46 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 27D886B0272; Wed, 23 May 2018 10:44:46 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0ABED6B0273; Wed, 23 May 2018 10:44:46 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg0-f72.google.com (mail-pg0-f72.google.com [74.125.83.72]) by kanga.kvack.org (Postfix) with ESMTP id B6EA76B0272 for ; Wed, 23 May 2018 10:44:45 -0400 (EDT) Received: by mail-pg0-f72.google.com with SMTP id e1-v6so1349637pgv.4 for ; Wed, 23 May 2018 07:44:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references; bh=8hCOfuEYebQnPhH6eIUDGEIXucw+R67odXI/f65Ivk8=; b=CyYPDfguPV3YtoTuu4x7ArZcasBLNJe9CWTdxnqJjT6lI2ywpiZVBCZRXSoMnEw8tC wdoEGD+4o9AELtph3/Sus4gxTA1mv/vzd154hu/kC325cTpq0eK5VyM+z0q8xiG3k7XH 0UKstausWA+vH/QdlMhWgRcwUoU1WLymBGJzihkTLZycmRBsut3vcmR8HoLC6shG5hAA 6HHGoBMXlYx3wIJjzqWv85nau7PuJFqKAhW9/5dDGyi2AjT1ZkjgNE4qKaAga5Beb1o3 pyX9cOhhARhGpm+aFQ62QvfF6Mydksi1J6ATyANGDZxZMnv1k0Ghlvnw1QVmwjq/KEK1 Ur+A== X-Gm-Message-State: ALKqPwc4NXZTgFbuVEUpN90BXf8zfa8jtddInxqvv5hbwVLTcgMF1udY xMgit9wqKQvrnkpx0v66MYiVyYcMINY52xu9EAK5oNyVLtgUvYohkF806IJxK19g1+jabHWSv6n ZaI6jlmryPprQnlLj0NY5AKyaTKq7JwPcfyTc52TEF2mB9ZBNn8JSn+5NeMP9Zrk= X-Received: by 2002:a62:11dc:: with SMTP id 89-v6mr3237627pfr.18.1527086685432; Wed, 23 May 2018 07:44:45 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpzooSDYaMS1b/r0WKrHPVvSk/Hf0JaRI+KcfevUTWzPOJZRQxwGAtY2NN+8bQzHH0RgDJf X-Received: by 2002:a62:11dc:: with SMTP id 89-v6mr3237595pfr.18.1527086684734; Wed, 23 May 2018 07:44:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527086684; cv=none; d=google.com; s=arc-20160816; b=Ya/xi3VVBNvSA2Kz7UjcKJ/f7hZxLHlrBPBZWtLoEjPoAfBkDY+h4l9DVeLRNOVwnn OrN0OxxMkjlVWxWlOVEVHAvOlJvsNTH6XoRpYTyg8pfka16rCQ1Xwn4UzMQswCac+0kh JuM9ogJrqIzvuMIrSy82TtWXCYiWjyrbDqBiGpuT3yNG/MGSfHuM3ywemuCn990U+aWF cPaOLtLpLLEo/n8woeAJ+E+DV3eoczVronqSy4paIngXJ6Pah6urdhfXtW4o1NaSEa1I vLdha8UHgLb4rAyKqpZNV0NoXdnAr6bpQ5MX5aMTP067npsRBvOhRnP6wP1SIN9V524l tdVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=8hCOfuEYebQnPhH6eIUDGEIXucw+R67odXI/f65Ivk8=; b=MCZ12d8T2Snw2G+pG54tYC/4zjHHnYTxg7DgWekF7UUQeTX+gFCGlIaAR10XWdwdI/ gAOdkE76CZwUw7QzL3DkoqEqEgc1csMGT3G+4hZKEtLBiAUIXVzpZ4UIBQAkRLEWNTAr gbye/hvghPnwpDqRc/yGajZpqCNKHnUeKSwI+9PHmGpFWzkxGVOOETfUc1nZzsNXCCQl PeTyiKH1NhnwSonDg4qpmILQ1k3DiOc7Qt/ZrythXqYL+H7IEwGQO2l4uwcp8zWGbm8w hD7FaBlPQUpp2zbsXMgZwnBk9r0Pl5f6Rt6CohekpJXQHxk7mqFYpqOX/4tbXmCxsERv oyTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=gYZjUOYZ; spf=pass (google.com: best guess record for domain of batv+df5a2477ff0fa86e9985+5386+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+df5a2477ff0fa86e9985+5386+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id o3-v6si4153650pgn.199.2018.05.23.07.44.44 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 May 2018 07:44:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+df5a2477ff0fa86e9985+5386+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=gYZjUOYZ; spf=pass (google.com: best guess record for domain of batv+df5a2477ff0fa86e9985+5386+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+df5a2477ff0fa86e9985+5386+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=References:In-Reply-To:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=8hCOfuEYebQnPhH6eIUDGEIXucw+R67odXI/f65Ivk8=; b=gYZjUOYZ7Sz9Ssj03zUohhs/D tgy55X4GzQBUfO/c4pZ/iBqetfpcXgZIsdutAmCv8Uq27KFpqEz205enpNHGEAnAaphucUcPVDb4O HukSess+Q6bKJG2DIn3wrKDIVxLexohCvsBXF2dRtnxyQQr6wKgruxIpJDoKUXx1S+wqsOTbXVN+1 LQ9VL6yjt5HQRN4h8Np5qfbuai0EX5NbVxZKzzOwgpoKunY80Dtkrc4rZVMQFlS6sF7TmTW/utwwQ uR9k0e3mhFWqsBNs/yEWV7G7SaMvCpa1yrydqsVldMk+v9qqvh1JaE2xoeMnhIPAx48CORIO056wC sV9bNJFjA==; Received: from 089144199016.atnat0008.highway.a1.net ([89.144.199.16] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1fLV0N-0000Ng-BE; Wed, 23 May 2018 14:44:43 +0000 From: Christoph Hellwig To: linux-xfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 14/34] iomap: add an iomap-based bmap implementation Date: Wed, 23 May 2018 16:43:37 +0200 Message-Id: <20180523144357.18985-15-hch@lst.de> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180523144357.18985-1-hch@lst.de> References: <20180523144357.18985-1-hch@lst.de> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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: X-Virus-Scanned: ClamAV using ClamSMTP This adds a simple iomap-based implementation of the legacy ->bmap interface. Note that we can't easily add checks for rt or reflink files, so these will have to remain in the callers. This interface just needs to die.. Signed-off-by: Christoph Hellwig Reviewed-by: Darrick J. Wong --- fs/iomap.c | 34 ++++++++++++++++++++++++++++++++++ include/linux/iomap.h | 3 +++ 2 files changed, 37 insertions(+) diff --git a/fs/iomap.c b/fs/iomap.c index f928df4ab9a9..fa278ed338ce 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -1411,3 +1411,37 @@ int iomap_swapfile_activate(struct swap_info_struct *sis, } EXPORT_SYMBOL_GPL(iomap_swapfile_activate); #endif /* CONFIG_SWAP */ + +static loff_t +iomap_bmap_actor(struct inode *inode, loff_t pos, loff_t length, + void *data, struct iomap *iomap) +{ + sector_t *bno = data, addr; + + if (iomap->type == IOMAP_MAPPED) { + addr = (pos - iomap->offset + iomap->addr) >> inode->i_blkbits; + if (addr > INT_MAX) + WARN(1, "would truncate bmap result\n"); + else + *bno = addr; + } + return 0; +} + +/* legacy ->bmap interface. 0 is the error return (!) */ +sector_t +iomap_bmap(struct address_space *mapping, sector_t bno, + const struct iomap_ops *ops) +{ + struct inode *inode = mapping->host; + loff_t pos = bno >> inode->i_blkbits; + unsigned blocksize = i_blocksize(inode); + + if (filemap_write_and_wait(mapping)) + return 0; + + bno = 0; + iomap_apply(inode, pos, blocksize, 0, ops, &bno, iomap_bmap_actor); + return bno; +} +EXPORT_SYMBOL_GPL(iomap_bmap); diff --git a/include/linux/iomap.h b/include/linux/iomap.h index 819e0cd2a950..a044a824da85 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -4,6 +4,7 @@ #include +struct address_space; struct fiemap_extent_info; struct inode; struct iov_iter; @@ -100,6 +101,8 @@ loff_t iomap_seek_hole(struct inode *inode, loff_t offset, const struct iomap_ops *ops); loff_t iomap_seek_data(struct inode *inode, loff_t offset, const struct iomap_ops *ops); +sector_t iomap_bmap(struct address_space *mapping, sector_t bno, + const struct iomap_ops *ops); /* * Flags for direct I/O ->end_io: