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 7B3CDEB64DD for ; Mon, 24 Jul 2023 20:06:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C94D88E0001; Mon, 24 Jul 2023 16:06:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C1E0E6B0074; Mon, 24 Jul 2023 16:06:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ABE458E0001; Mon, 24 Jul 2023 16:06:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 94F896B0071 for ; Mon, 24 Jul 2023 16:06:06 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 569B8160BB8 for ; Mon, 24 Jul 2023 20:06:06 +0000 (UTC) X-FDA: 81047586732.12.24549F3 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf12.hostedemail.com (Postfix) with ESMTP id 4DCF44000C for ; Mon, 24 Jul 2023 20:06:02 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=B2mdZ63Y; spf=none (imf12.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690229164; h=from:from:sender: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=2jND/zeI8uHtoArg4aO1euI9OYZphE1L7jOEyyzjSMo=; b=X9R5pjWXaTC9Mk8aoA0qGj2SPnEqDJebonXBrWGCrQTTZDVsf6iuIxfl4jCYdCqwEuBCfO CpRGUZ3+fj/UltvlJ/F6unWOxMotatMKU1FmUR4/gbMqDPduwngViAJSII/qfhu10JXVI8 f6vqo0O1li3RhsztQCBlEP5UBh9kL7M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690229164; a=rsa-sha256; cv=none; b=YRPe9vwNbsMN+oCSr3vDR5SJNxCA+wd/vLP1O7x9xfkpHUWkZxL+hDGTqszvSqm1lpA4wQ Jl2LbAcn7j1bVufPvCw+mVRMuk9b1zVlMCaal/3EXpgzHbwD7HwSOxqtCl6QvgNW6nSTuZ yNada/7OnXAhyosLS11FB08zkYwz3Dc= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=B2mdZ63Y; spf=none (imf12.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=2jND/zeI8uHtoArg4aO1euI9OYZphE1L7jOEyyzjSMo=; b=B2mdZ63Yq4tSlNC+K5cMn9zm0x L4fEjbhbhrY9zOztCGR22ejmPuFst2NWaADe/MCM2ck1T0P3OCapd4ms+ktd/2seV/PYWUwZJ/GSq wuxY1O+XOW2xesnA+0k/uOX2aZJtsuE2WBvWa3W9u6REGQLuryV9AKiGi3JUfOhiu/2n7Ogs48vsq EB80Oa5MgI/na4hIrtZEMP68sS50teUBgvjy3KOv7lSOkhcVoQjOW1j57TM8Uy5QjMtrrdJn611IV jTedHpc/aqUcqlYKJ+fa0a1CI/Ytfyyfoo4hm9U8kJ6sTuBK8DGR0lOVREwS0GErkkXmM2/PA02bA TsSgciWg==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.96 #2 (Red Hat Linux)) id 1qO1ob-005MFt-1k; Mon, 24 Jul 2023 20:05:57 +0000 Date: Mon, 24 Jul 2023 13:05:57 -0700 From: Luis Chamberlain To: Christoph Hellwig Cc: Jens Axboe , "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/6] block: open code __generic_file_write_iter for blkdev writes Message-ID: References: <20230720140452.63817-1-hch@lst.de> <20230720140452.63817-4-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230720140452.63817-4-hch@lst.de> X-Stat-Signature: has7z3xfc4hzonhdhpjayy637txuih16 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 4DCF44000C X-Rspam-User: X-HE-Tag: 1690229162-316447 X-HE-Meta: U2FsdGVkX18YIPi4ydKSAcpIEkMoWeOpa8z6Pe8RSBSAGN8sq38l7tKksWSii6IXS5DHqhgjHsn19iYFz6oqfQ8yZpZr+FhYYXNxf/h04g/RAdPr9itwdwKu9gjP0NOl0FMUbu9uZYKooEEQjFOQEpY5pSGbagpUWA7C5nzSuwPSI1euGcne3YqpMGpMUwrSsxJM9MzxHMT4NInCYrci029BCONVj/MFo1xD3FVYD0r9Rryqhrs0l1akcgwOVUvwDf/rVAcg2l2PqPxtdUXG6KOE/gr+CBnoid35MvdeLbj+E+68OAOb2Vwo05Ji+JLvd0L+xIc5RlCFqxVVegRi7brO7b+ZkMIWR+Xnug+mc0IR7odTZ5bnq/VjZN0P1xoeroyzxr/Mhlcgsg/31udkM19M2rfxFCcKDs10OnVWTAQG8RNAk8/vAz0kgWNBAmOAr6+osOWwF61MY2zyDyrYMrC4h1Ytb1uPocRUc9x/U2IX0BWUwEdL9A1bNWz9YW1exh1zyD/i1skfL4Bg/VmkAf3V2VKheSe+VbE0lLVwokg9N/hlvYd2p238q70qTcmGlBjawdHFGibTgyJIH+43FZVeWmPFVk4O/MT1MDVOvVSVPz7gREeOPyofTp8NQoWI3X0kJ6dT/+Cm6DcOUF7/P//FGDcEbdzQY27SWRvn5QnXqRImrc2tdTfFBAQFSPUC+gaZM3rjI2mCqZfTjpCVQf/6K3q5lp0RoCXGkD1nHueGTuRkeelyv8g9az5WfIDTSjzNG8xAMOs+mykWlZZKGFaBOwe5hUxrhbLbBJuwy3wzN+YZJF064bNE/Te2M7K48CviApaw76kbpCH7iiKeK+Qdh6LdUKj4HSTJznrI6Sgwyb0urZ/efcUHdTYaHVQtiaW8D/TAsPXAzlqb/w0CNM+4tioWFiPZ0jxSQOIW0yCumiYqjv+bM7mzV1NejTyu/UrT7500osXa6CTXUIO d/UE2mW2 vVLI6sEBT6Fgo2eRDIDTaktxJpzuB2vme5dZt2OW3taeiirrWqdd0jaDbqYFst0zfAn34Du9nqGGDOtXLKiS/6RK009IxJf26q+n2VFfMrlN7K+28uq7oe4bUH5mTYXeXVH9AeGOy8C4QFDkwSuMIuu5YOA9+GzATef/kwY0fGwcY0XOLQg/nGf4JcalmQVts3mYgOVmXhC01IZFhPYW5GkWaP9z/j5lT++uei8GgB6z/eGEBCvd/lTQFMrtw6cOmm1CtOT307Mo0tQyCCCOeZJaJm94EDwR+faU1Ky2+OS73U/rypsOrtvIBrKpJRGSqTpl1WDNqBikLP990AMR3tRcoeH7uF4arhB9Nk8dsnpfITEct43H/DadPnwAI4jURbABQBxrF69SqfmTeTqaHMU395mkb4SHtoffuhwh+ECeWfvBBKihqAj0wWR2NdOvIJYS9+2tkxm4C4wLdeEiPgYqGRZsfJpW7rOCR1CYB9kgqhVWQZgRxrecvxA== 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 Thu, Jul 20, 2023 at 04:04:49PM +0200, Christoph Hellwig wrote: > Open code __generic_file_write_iter to remove the indirect call into > ->direct_IO and to prepare using the iomap based write code. > > Signed-off-by: Christoph Hellwig > --- > block/fops.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/block/fops.c b/block/fops.c > index a286bf3325c5d8..eb599a173ef02d 100644 > --- a/block/fops.c > +++ b/block/fops.c > @@ -533,6 +533,29 @@ static int blkdev_release(struct inode *inode, struct file *filp) > return 0; > } > > +static ssize_t > +blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from) > +{ > + size_t count = iov_iter_count(from); > + ssize_t written; > + > + written = kiocb_invalidate_pages(iocb, count); > + if (written) { > + if (written == -EBUSY) > + return 0; > + return written; > + } > + > + written = blkdev_direct_IO(iocb, from); > + if (written > 0) { > + kiocb_invalidate_post_direct_write(iocb, count); > + iocb->ki_pos += written; > + } I noted in the last series how this could be negative and then crash: https://lkml.kernel.org/r/ZG6OTWckNlz+P+mo@bombadil.infradead.org This can be fixed as follows: diff --git a/block/fops.c b/block/fops.c index eb599a173ef0..936ed207b5dc 100644 --- a/block/fops.c +++ b/block/fops.c @@ -536,9 +536,13 @@ static int blkdev_release(struct inode *inode, struct file *filp) static ssize_t blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from) { + struct block_device *bdev = I_BDEV(iocb->ki_filp->f_mapping->host); size_t count = iov_iter_count(from); ssize_t written; + if (blkdev_dio_unaligned(bdev, iocb->ki_pos, from)) + return -EINVAL; + written = kiocb_invalidate_pages(iocb, count); if (written) { if (written == -EBUSY) With that: Reviewed-by: Luis Chamberlain Luis