From patchwork Mon Jan 29 07:52:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Thumshirn X-Patchwork-Id: 193311 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2087:b0:106:209c:c626 with SMTP id gs7csp417794dyb; Sun, 28 Jan 2024 23:57:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IGTu5iIL+CaxeLJjo6H6kNi2966bS/KqThklAyGEZZODsBseUNdFh+0qPtF7J9muosw4qxR X-Received: by 2002:a05:6358:92a:b0:178:60ed:8dc3 with SMTP id r42-20020a056358092a00b0017860ed8dc3mr4584448rwi.44.1706515044673; Sun, 28 Jan 2024 23:57:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706515044; cv=pass; d=google.com; s=arc-20160816; b=KqcXAXWGKZYVnVnn6cx76tQHgS+qDe6yV1sXCD00E0HzJIRPWiBH1n4w8C9xoebvGq im3D2T3P1q9K+wc8CdXb0LqBAyIUJhSKd8cSR7D1hbMnmGygFDLFicEcSzp/Bv3XTkST wNF27GfIpG4YlVvdlSxiiGQHxlGtyy/F2Tfok6/JGLR4OeJmEvb3ZsVkhNEu6NbrAYXR 8X5g/3pZWo2QYzpvxIBXURvPtJ8dNrK8rlDr1sQIQPs+hszXt9Rk6ZafCIocpA/f6FMJ Ojjg0y4HBxBQws1wisK3C2oRa1OPY+L5p8tbtciTrGqiAgEvCUCEO9yP5KbhR2IXLj29 uO9w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:wdcironportexception:ironport-sdr:ironport-sdr :dkim-signature; bh=2i0P4UtDfM2GvJlRWNENr44DBD4bzBaFXfbBxw+clIM=; fh=vtx/9SjU+G6yTbfUE/Jg3PhHwMv090uaPA+oNrmxeyw=; b=WoG283FFYQnPGhD46nw6VBnIZj43kyXMIMk1jB9nEhzCtyLHWh42JaCCFHGMHpqMpC Fp1q9x560QhxXEAeOiBf+yBSaiZQQ27WAUPbrwk8qnT/2UJLvSXV52bAQD7e1gh0lo6M SFeRzAPDgr7bxn+pooZQ1+Ojyu//lEjjwt2nv32HTDzpDK+tRgfOe4JF+10xgvYRd+FP fTbymHiUVYivSCjjKvW6QUoOebrN7HrSzoeBGoTw7C0TJxjGS+14hlf2wI1gE2NO1vd9 F1QPVASdjhWZlD7MmmrmdqaNpkJDRnqoR3kwui5FZHguo5TvWXmPdbaYw0WGL3Aux+FR cPEQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@wdc.com header.s=dkim.wdc.com header.b=pvN2WRbK; arc=pass (i=1 spf=pass spfdomain=wdc.com dkim=pass dkdomain=wdc.com dmarc=pass fromdomain=wdc.com); spf=pass (google.com: domain of linux-kernel+bounces-42306-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-42306-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=wdc.com Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id k4-20020aa79984000000b006daa39df411si5323542pfh.371.2024.01.28.23.57.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Jan 2024 23:57:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-42306-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@wdc.com header.s=dkim.wdc.com header.b=pvN2WRbK; arc=pass (i=1 spf=pass spfdomain=wdc.com dkim=pass dkdomain=wdc.com dmarc=pass fromdomain=wdc.com); spf=pass (google.com: domain of linux-kernel+bounces-42306-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-42306-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=wdc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 6CA6AB23A0F for ; Mon, 29 Jan 2024 07:55:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6D34F56443; Mon, 29 Jan 2024 07:52:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="pvN2WRbK" Received: from esa1.hgst.iphmx.com (esa1.hgst.iphmx.com [68.232.141.245]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B90954BC3; Mon, 29 Jan 2024 07:52:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=68.232.141.245 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706514762; cv=none; b=W+Zuk9RWMGLOxnp0/DzGZ3QjC7ZC5d5PYzjl9E1q3yVi8PSoEWgBNKMg/oLAiTRF1gyHZDaNxfiREbbpO2MgPQpb1V/3DLgWrh9dm+l7CnMsV5tIBV2xW8FzKrLdoh62fNq3wCAB5V3cfMTwnHWXUWQWuqkOfBMWIRpfwtxc+ok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706514762; c=relaxed/simple; bh=MadywNv3PPpA8atuGcDj3Vd17mnoG/ezGAm6iZoKSro=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JIv24Gqb4W1VMatesonIZVvCKV/auOtEVjKLi79MG+6SWViEmPBlbnpWpFEy9Byl2OkiFDBVF896ew8h4HZw7yXQ/7CNIkVy9DHTG54pAfQzB3SdNjlaC2Gg6FQ7WDd6NCJiO3DORPg/yyk9MftP+tP8sVkWeiGXUbnty5MLvtg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=pvN2WRbK; arc=none smtp.client-ip=68.232.141.245 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1706514760; x=1738050760; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=MadywNv3PPpA8atuGcDj3Vd17mnoG/ezGAm6iZoKSro=; b=pvN2WRbKHNhB15SmEjHFylzgujHyFX0lARH7aY/+M6QhTA+Xl+lFHcJU UUiwg2vgMeCOBua1d/ge8jNnrOxfi7SlqDsy8V1aAPrIsRUTD5zA6V6NC 1c1f+fIDjyXWTSV24zGjx+ttViUIA8umAxQPXFOuMLLy0o5iD5NcNrbgs u0+30JUJR6aKc3viitoNb+8GfcXksu2NAofheeC6zE+TlB7i+4fMtjeDM S5HqIF4UztYy/VfnHV8trlg5Jh5eszFzxLB+N2b2ZwPp7R8Dl0qiZ/mkn mTfao1baixYTiZSR5ZaznPskO5m5HHU8hQgfJlsZD9WQ0eg0eOFxnahQq g==; X-CSE-ConnectionGUID: J0iNeovJQYOzGon8D3lXJw== X-CSE-MsgGUID: kNhbk3AORuiKAb5uD98vTQ== X-IronPort-AV: E=Sophos;i="6.05,226,1701100800"; d="scan'208";a="8194628" Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 29 Jan 2024 15:52:38 +0800 IronPort-SDR: fIjA6P+wESPoDUMBrFGKfyml4vprlxBAZX8F387wLtdba9CTi38ZtnflzcH8ORRPkBV13MGDSV bFM1/DQsa6Uw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Jan 2024 22:56:52 -0800 IronPort-SDR: 9X6fCMZ2Q3gGbImvABSD5k2FtiP214fiKf0lX56GIYBTXUsza2W5J3za/bbxO9ZHWgU7y+8nju e4Sor8JQRJuw== WDCIronportException: Internal Received: from unknown (HELO redsun91.ssa.fujisawa.hgst.com) ([10.149.66.6]) by uls-op-cesaip02.wdc.com with ESMTP; 28 Jan 2024 23:52:34 -0800 From: Johannes Thumshirn Date: Sun, 28 Jan 2024 23:52:18 -0800 Subject: [PATCH v3 3/5] btrfs: zoned: call blkdev_zone_mgmt in nofs scope Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240128-zonefs_nofs-v3-3-ae3b7c8def61@wdc.com> References: <20240128-zonefs_nofs-v3-0-ae3b7c8def61@wdc.com> In-Reply-To: <20240128-zonefs_nofs-v3-0-ae3b7c8def61@wdc.com> To: Damien Le Moal , Naohiro Aota , Johannes Thumshirn , Alasdair Kergon , Mike Snitzer , Mikulas Patocka , dm-devel@lists.linux.dev, Chris Mason , Josef Bacik , David Sterba , Jaegeuk Kim , Chao Yu , Jens Axboe , Christoph Hellwig , Sagi Grimberg , Chaitanya Kulkarni Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, Johannes Thumshirn X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1706514743; l=3714; i=johannes.thumshirn@wdc.com; s=20230613; h=from:subject:message-id; bh=MadywNv3PPpA8atuGcDj3Vd17mnoG/ezGAm6iZoKSro=; b=QnWnw7K3i82/1BniPS77EmnyxXMdQ2VLLTQG/an5hGgkypuitggJgPDcB9V0n5l8NzfJ18PdQ D+rVevtYs3JCNFmsjc/Jr8jTF5J04zhZXL5dIjkuiiy/fv5UGecoxXX X-Developer-Key: i=johannes.thumshirn@wdc.com; a=ed25519; pk=TGmHKs78FdPi+QhrViEvjKIGwReUGCfa+3LEnGoR2KM= X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789410719280601407 X-GMAIL-MSGID: 1789410719280601407 Add a memalloc_nofs scope around all calls to blkdev_zone_mgmt(). This allows us to further get rid of the GFP_NOFS argument for blkdev_zone_mgmt(). Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal Reviewed-by: David Sterba --- fs/btrfs/zoned.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index 168af9d000d1..05640d61e435 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -824,11 +824,15 @@ static int sb_log_location(struct block_device *bdev, struct blk_zone *zones, reset = &zones[1]; if (reset && reset->cond != BLK_ZONE_COND_EMPTY) { + unsigned int nofs_flags; + ASSERT(sb_zone_is_full(reset)); + nofs_flags = memalloc_nofs_save(); ret = blkdev_zone_mgmt(bdev, REQ_OP_ZONE_RESET, reset->start, reset->len, - GFP_NOFS); + GFP_KERNEL); + memalloc_nofs_restore(nofs_flags); if (ret) return ret; @@ -974,11 +978,14 @@ int btrfs_advance_sb_log(struct btrfs_device *device, int mirror) * explicit ZONE_FINISH is not necessary. */ if (zone->wp != zone->start + zone->capacity) { + unsigned int nofs_flags; int ret; + nofs_flags = memalloc_nofs_save(); ret = blkdev_zone_mgmt(device->bdev, REQ_OP_ZONE_FINISH, zone->start, - zone->len, GFP_NOFS); + zone->len, GFP_KERNEL); + memalloc_nofs_restore(nofs_flags); if (ret) return ret; } @@ -996,11 +1003,13 @@ int btrfs_advance_sb_log(struct btrfs_device *device, int mirror) int btrfs_reset_sb_log_zones(struct block_device *bdev, int mirror) { + unsigned int nofs_flags; sector_t zone_sectors; sector_t nr_sectors; u8 zone_sectors_shift; u32 sb_zone; u32 nr_zones; + int ret; zone_sectors = bdev_zone_sectors(bdev); zone_sectors_shift = ilog2(zone_sectors); @@ -1011,9 +1020,13 @@ int btrfs_reset_sb_log_zones(struct block_device *bdev, int mirror) if (sb_zone + 1 >= nr_zones) return -ENOENT; - return blkdev_zone_mgmt(bdev, REQ_OP_ZONE_RESET, - zone_start_sector(sb_zone, bdev), - zone_sectors * BTRFS_NR_SB_LOG_ZONES, GFP_NOFS); + nofs_flags = memalloc_nofs_save(); + ret = blkdev_zone_mgmt(bdev, REQ_OP_ZONE_RESET, + zone_start_sector(sb_zone, bdev), + zone_sectors * BTRFS_NR_SB_LOG_ZONES, + GFP_KERNEL); + memalloc_nofs_restore(nofs_flags); + return ret; } /* @@ -1124,12 +1137,15 @@ static void btrfs_dev_clear_active_zone(struct btrfs_device *device, u64 pos) int btrfs_reset_device_zone(struct btrfs_device *device, u64 physical, u64 length, u64 *bytes) { + unsigned int nofs_flags; int ret; *bytes = 0; + nofs_flags = memalloc_nofs_save(); ret = blkdev_zone_mgmt(device->bdev, REQ_OP_ZONE_RESET, physical >> SECTOR_SHIFT, length >> SECTOR_SHIFT, - GFP_NOFS); + GFP_KERNEL); + memalloc_nofs_restore(nofs_flags); if (ret) return ret; @@ -2234,14 +2250,17 @@ static int do_zone_finish(struct btrfs_block_group *block_group, bool fully_writ struct btrfs_device *device = map->stripes[i].dev; const u64 physical = map->stripes[i].physical; struct btrfs_zoned_device_info *zinfo = device->zone_info; + unsigned int nofs_flags; if (zinfo->max_active_zones == 0) continue; + nofs_flags = memalloc_nofs_save(); ret = blkdev_zone_mgmt(device->bdev, REQ_OP_ZONE_FINISH, physical >> SECTOR_SHIFT, zinfo->zone_size >> SECTOR_SHIFT, - GFP_NOFS); + GFP_KERNEL); + memalloc_nofs_restore(nofs_flags); if (ret) return ret;