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 EDA72C52D7C for ; Thu, 15 Aug 2024 14:33:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A1A96B0101; Thu, 15 Aug 2024 10:33:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 651E16B0111; Thu, 15 Aug 2024 10:33:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 519AB6B0110; Thu, 15 Aug 2024 10:33:40 -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 3194D6B0111 for ; Thu, 15 Aug 2024 10:33:40 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C7C1DA75B3 for ; Thu, 15 Aug 2024 14:33:39 +0000 (UTC) X-FDA: 82454723358.10.68DD28A Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) by imf10.hostedemail.com (Postfix) with ESMTP id 97A84C002C for ; Thu, 15 Aug 2024 14:33:37 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="1W/W/EBF"; spf=pass (imf10.hostedemail.com: domain of axboe@kernel.dk designates 209.85.166.47 as permitted sender) smtp.mailfrom=axboe@kernel.dk; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723732320; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6rICprDujQR2UM4HfjMuX0CO7+q7wHZGrKy7Agwu530=; b=sjI2f0+DN7tJ/lAC1K64WwFBEEwlfz9n4FWSvYWBGOscNVZaVn9sU4oHLe9PaFhdYIsIFM vZmE2gbRC9PzAW24yKdFOo6k0qChIcQ9mtKl5vcGHzVegaO8KnPua9OgXZHAG6qxZXb1bE e2rOnb7Gub1xuNtH4Lm5kFCTI/YiQIU= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="1W/W/EBF"; spf=pass (imf10.hostedemail.com: domain of axboe@kernel.dk designates 209.85.166.47 as permitted sender) smtp.mailfrom=axboe@kernel.dk; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723732320; a=rsa-sha256; cv=none; b=uz1hg484YPs/ms4eVfmQZNKL9CJCHTkF2L7+mMDgP5EwTiftLyk6fEfCy/D5kkiGbG0Ea6 jT2Tj1r74rJJjRDiMxFo2jfpdbqvxwC2o6pJWWRP2bVs9opMKnb3LGozQrDtqscm+MsOma HI/zEsPVh80BAsJbP87dp9Nr4uNpp58= Received: by mail-io1-f47.google.com with SMTP id ca18e2360f4ac-81f8d55c087so3891739f.2 for ; Thu, 15 Aug 2024 07:33:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1723732416; x=1724337216; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6rICprDujQR2UM4HfjMuX0CO7+q7wHZGrKy7Agwu530=; b=1W/W/EBF0NK+wMB5m+He1VWhTUgf3/TTwHbOEVo1zdRNT/mqENSgw7hZYRR5V+w4H/ fCecaxR5iblgQX6ouKuEiL/l0SvDE8W7utIeIbPG+mwWjBqQygAIvT+X98wo59UJElfY 0iPa3FAowF3muuMrKlFPLX0zp0acFWps8/qIKHdojJwqEGyXjTuDLXsI0RwMNPOl03ej aQkZCBDfEJ10Bp/E7CiA0Px2O4LR0VhWgC01MBcd0/KZpSMQXb8lyuUJKMY4oANmUdPQ Z8t8h0rkdkj+Ff6ZPSE3h1HSDn02rDAEGD/OETXI5fpljjvxZbRrbkI4Uk9XJ38VgPgW fz9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723732416; x=1724337216; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6rICprDujQR2UM4HfjMuX0CO7+q7wHZGrKy7Agwu530=; b=jAod40ZCCOy74yAlvdSBHY/5zoGbVylmjdYhlHNpQLtbxMSltkwyiMF74MnlbwPRc7 CbRFulqns4hnBK/2/PKUdiAjRBVBjxmJnJOaVcVW+PZaDNQcHnSsCbAozhEn2B1e6rLG kSgTp+1/1qzXSH4xIwhO7cHDRA+K5dx9LkURjSoxdKEuPIgspGex6yDlywexSvUAGgRH UhLYpjhRmYWvy2T7Twj9hsVOZZ36+h93yjmcDt7Fo01ned5snVlkFKpmcUHliqXlOPTV lJFoqwgaaG0kPPT/Z2QwL2Zn1qicUnOaTHjIjdE4co2Tu0FOGp4sV9ZmbkmnPhZQDDl0 1vEA== X-Forwarded-Encrypted: i=1; AJvYcCUDMA2U+kdtR2EOTYf9Vo3XJAeW+MzO7GBYd3bA4xObKhiV+HwfoY9rbg36jGYzUa2Tw25P50xDnzLbwmC7JmO+t+E= X-Gm-Message-State: AOJu0Yx+TZ2yTpNJ48zHLBlxGUF9PDGNVUSKqD8MTE40PoZRAjTpPOOk KjPSvWF5y1sGMSu77gcgCKHVFClwboFzFOlu4cyjMZsIgcKVmFWsk+qgf0UEHiw= X-Google-Smtp-Source: AGHT+IGvpiwXjlJpt5son2O8gjjV3rFX1h5+5bydBPLKRSpEg1HWIUur+IBQ2exWat+kjseYTgNOvQ== X-Received: by 2002:a6b:6305:0:b0:7f6:85d1:f81a with SMTP id ca18e2360f4ac-824e86c307dmr186663439f.2.1723732416308; Thu, 15 Aug 2024 07:33:36 -0700 (PDT) Received: from [192.168.1.116] ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id ca18e2360f4ac-824e98eda17sm52953239f.6.2024.08.15.07.33.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 15 Aug 2024 07:33:35 -0700 (PDT) Message-ID: Date: Thu, 15 Aug 2024 08:33:34 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 5/5] block: implement io_uring discard cmd To: Ming Lei , Pavel Begunkov Cc: io-uring@vger.kernel.org, Conrad Meyer , linux-block@vger.kernel.org, linux-mm@kvack.org References: <6ecd7ab3386f63f1656dc766c1b5b038ff5353c2.1723601134.git.asml.silence@gmail.com> Content-Language: en-US From: Jens Axboe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 97A84C002C X-Stat-Signature: jtxrjxgyg3dzeo4ms6wn396aoa8paoyw X-Rspam-User: X-HE-Tag: 1723732417-282478 X-HE-Meta: U2FsdGVkX1/6dPVN9u10LDgnV/ZG/hwyPASlT0Si9RBUem0FeNf1+eixsD2U0aPuYyfho9ivl5ggbvE0Pg0NbPoc4Y12PfZk/OJHBdDsL67g4pITH/sY2qVeXO6R8q4jJgLijGMRZwSYlRyGZxlMNZfnbNOycSYTa4jTFhyrzSNLxbE01p1G4WuGewLZB2TrbS51K0zqrHmKPHDVEyxqRJ2IKaLcLSdSwjOlsHYyVhgRMcsf+XaCeSmNQjrl1rW3KGtFFI8GwwxefDHuWdcftswt9IKOospp5KdjkTLqw1dJCJk3yvVc6QWpGjctkUpTWQBkPeKQ5CjQQ1HnG42EpHDusOowspIcNDsfEPLNO1IvlZH6zsreL79cw4gAdCN5zMDx+MWyOPolvGXi1O7oekKjFFAmusJQM3meSBdjSEVpVPgemcIYVAVMFRE2aVLcl0k7mHWiFeVpbA2tK67xG6blYsrJ2XrWAncJtKWLYkqKZGFWcqYleAOyDkDSFgXRe3hC/cZGPU9jeQ5ITVWTcHlY7ISgMM39qsWVJAicxnwHd2RD3NE6Zyg7v6h6OipDx1Ra30FL0oTfFbi9bfQn4Jl3vmIKkMt5cOldkOQiHLbXZCZwrEOAjYJDPAqdVvNI1wGInDb0SZa0WXoQOTH3crrIP4b2tMg9PPJP4rTs8YvDllkKLXDTP3JGaJm5GvnGt0YXNh2zi4aom7XFwUKDHY44Evg5RDy1ArJqIPaYoKzJtaAtGHhs6Q+8qJeOcPrCDQbiGxe3Zc00kY5hHtOBuku8vdagofWLBGownUdA/Jor5qcGa6ASEdPtFZcGugCoK4xg+CmFJ/ZvLd6jB0wntq3hbCxyzyi4n6AsTdNP1FXJOxv9NOf2bb8UYzF19xpgk/A+ro0hg/QBhzze+Sx69CVLn2DsnyTE7GpQp0csxSIkTTWINmqZlnsBIjVM/JZjh72fCDXhjeiEvckQGPe SDG1I7eV 5treX5DtB5tMGmhtV9Ztik/94yMRvEVkFBQrQ/9YIvme1WPgZWmo+utEk3T9722TCmXk+VHoLzYySvwL/nvn/sQPMop3DobR+sq9JaS+n21ZBa3ihSR2zvRl+fQ6pyeQp6hBjU7OieZPlKQIBd/FqYhuFUNw4zoqNCNpaM8t8Jpi/EK+KG2nNozlW9r0+puRJ6N1me8ezumBF1VbYZaIAfUqnUqWh+mSeHurSggrYCwh8PSqDj44fWAwjCq1BK8lW/uEQexbdklRkJGuWQo17Wlv39eZt+RHu7cqBfBUJ4trEV0oSKYWY8ZfEiF6bSkU1rHnwPGqaRZNWGPdGxgBdye8vE3DnnNhPstvqcm2rTvsQetbQ+BD9aSHBM5H/zD+p+6ETX/fdgc/T4PBIByew39AwCRPMWCH8gsz6iVuVVn1taR38Exqiw9mLwgR7VTcwsapsH2PcdWPSbEujOQ7jo/kpCX14Cx6ahBoYGL2XCOATUHpVEI5HUA7QoLZjMnJMJ4MudknN/mixdILkWPerCehlpw== 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: List-Subscribe: List-Unsubscribe: On 8/14/24 7:42 PM, Ming Lei wrote: > On Wed, Aug 14, 2024 at 6:46?PM Pavel Begunkov wrote: >> >> Add ->uring_cmd callback for block device files and use it to implement >> asynchronous discard. Normally, it first tries to execute the command >> from non-blocking context, which we limit to a single bio because >> otherwise one of sub-bios may need to wait for other bios, and we don't >> want to deal with partial IO. If non-blocking attempt fails, we'll retry >> it in a blocking context. >> >> Suggested-by: Conrad Meyer >> Signed-off-by: Pavel Begunkov >> --- >> block/blk.h | 1 + >> block/fops.c | 2 + >> block/ioctl.c | 94 +++++++++++++++++++++++++++++++++++++++++ >> include/uapi/linux/fs.h | 2 + >> 4 files changed, 99 insertions(+) >> >> diff --git a/block/blk.h b/block/blk.h >> index e180863f918b..5178c5ba6852 100644 >> --- a/block/blk.h >> +++ b/block/blk.h >> @@ -571,6 +571,7 @@ blk_mode_t file_to_blk_mode(struct file *file); >> int truncate_bdev_range(struct block_device *bdev, blk_mode_t mode, >> loff_t lstart, loff_t lend); >> long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg); >> +int blkdev_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags); >> long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg); >> >> extern const struct address_space_operations def_blk_aops; >> diff --git a/block/fops.c b/block/fops.c >> index 9825c1713a49..8154b10b5abf 100644 >> --- a/block/fops.c >> +++ b/block/fops.c >> @@ -17,6 +17,7 @@ >> #include >> #include >> #include >> +#include >> #include "blk.h" >> >> static inline struct inode *bdev_file_inode(struct file *file) >> @@ -873,6 +874,7 @@ const struct file_operations def_blk_fops = { >> .splice_read = filemap_splice_read, >> .splice_write = iter_file_splice_write, >> .fallocate = blkdev_fallocate, >> + .uring_cmd = blkdev_uring_cmd, > > Just be curious, we have IORING_OP_FALLOCATE already for sending > discard to block device, why is .uring_cmd added for this purpose? I think wiring up a bdev uring_cmd makes sense, because: 1) The existing FALLOCATE op is using vfs_fallocate, which is inherently sync and hence always punted to io-wq. 2) There will most certainly be other async ops that would be interesting to add, at which point we'd need it anyway. 3) It arguably makes more sense to have a direct discard op than use fallocate for this, if working on a raw bdev. And probably others... -- Jens Axboe