From nobody Mon Jun 8 05:25:27 2026 Received: from mail-dy1-f182.google.com (mail-dy1-f182.google.com [74.125.82.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34A8E207DF7 for ; Sat, 6 Jun 2026 01:19:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780708787; cv=none; b=adikertDoDe/P+WBeCTAw0P45PJxe5ThwcFq/HbSgyPDnbWyRzN1vmr3TlNFPRmZF3NydFTdSISAhYRcnian8emFKEHwrBAMNBD+976UhpE5IdrfzaiGEklx9UKlVyn01lbogy9mIAkx3nip68V7ieEi3HOaYw7g++9eTSZpNjI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780708787; c=relaxed/simple; bh=s0VNEbWMHBevMP4iF5w4dP6SFVXKuPzS0x1yeE9F1dM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=gGsdmJjeFtXRuFMIiEWfmp1TIMEvFU9ZUkXZ6e307IZoc8e2HECS6nxZqLiIPDzgPp5B7rmI8mU4T7LvFPY+ahrpOKL/yhZcxaotfeSJOAMeouKtgbl/Nfd7JlBwbp8RqSmBSfYXil6nGpe+jjcrSUM98xp8xmCLXArMCi0ANnI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cE6WWCQx; arc=none smtp.client-ip=74.125.82.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cE6WWCQx" Received: by mail-dy1-f182.google.com with SMTP id 5a478bee46e88-3078e0dcd67so600891eec.0 for ; Fri, 05 Jun 2026 18:19:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780708785; x=1781313585; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=QW4Dd9spS3sOLwWqAYJc0QlQ2KljtV0LTkk6fFDnlpY=; b=cE6WWCQx3s/UrAm0A19jV9BgYVJAvsc0noEZgruBvF5pTY3I34RGsBgxCWeMI2f1p/ Es4gPf/C0F/qTYfyiw5uuuYLtndVWcxNEfaesoA7d3Bc8If0KIweKIECCcEhIeIor9TE Mv45kStFFpgt9YPhfSLxaFPrXv53ACzpW1eMlHBFoL1qbCgWa5IlCbdOj8T+TSjEufte 9H2RHDWyMoIuYlzZeKbsKCGl4bDITRUOTpp4ll5v85Yu2M8ogud6ZOh0cIhEJFn3FrfG RufHCdo8ykt9Ph/Vulu8pPWna5piasPEm2qHkPDSYqhCEF4agsmmM8iM5bIiEhGBGH+3 rwsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780708785; x=1781313585; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QW4Dd9spS3sOLwWqAYJc0QlQ2KljtV0LTkk6fFDnlpY=; b=VYJJEng7SkW0AWXdtpmTxj/EoGf5lQQ+mMy5/llgqBXEi9zhwmL+qhAPTNvfNzv/xE QoInAlzI8PhXbruvIr1ZH+KArhWbqhecTzyML4WQ+4OCR/bZCl0WWQct90HkQlvt7SHJ Ke1in/iwEs0ihiQiCmLvSfN6KQ8JzDm9TBPcVGZSaPo0x0QBHCwNpu3U4Ai9XqilkYI2 pZFXs9Ua4qxB5mu5EJ9on3Dc2A60uHyHQXwDN9IVl2+X0Bs6e8mBXpD12493vlRCN5eL SgEuliID8l+uJ4zKH1xiuh6wqhR3S2uQ0RrwSqQYZmvQxJzKQ2drAUXUG5HaE5g/RlTa X3oA== X-Gm-Message-State: AOJu0Yw4q4savAsyaoHVhxHu6kmicelXxsDbbBKfd/olQiijnxDh26iw EhsggHWLKhbR2Y9jBYkmXhyHdxUdGSAkCDlUq0kDH5fT5zfjr3+uRyLoUtST7g== X-Gm-Gg: Acq92OFaKJz6KSf3Dih1bEaH+bVmjxm8j/FwqiEQ513+5q+lpRxeuh4CQS9Nh8i8x4y ZWp58ilMP7itwVfnx8dPhHzh6QZDdcM5dABrXTkY0vRGw6jz8YSqmN/qnh94vRKY/DKuyUkZLN2 P8TuJxuanaHQ+oZSWAuwbhqlF1vzH9dn+ggK3qC0iaqr8vjkFfFtfESFhVganANWwNBg1gZ1MQ9 gyqIQoqoa8VOmMAg+W5v1jCwYjFUYcdOH37JbETBmS5fPhvAnaJEQCc65l2bICTtx6YxurP2XYS xV47I7j0ZIhVzrfxNlX2FL/Fbec1B553p2LOmMOZr4ic18ttm9WVo0FoSK7Vm/jo6RThCwHx7Mm Mt0TH9NgV2rkXotEwM4RYXJV6+eBxOmHjrGtRXz5fcqMabMy1gNO/WVNOvtzUIA88oyAp33ouIT p1yx7bOp3vzG/SlHAIPhjWy4R5hLduARy1XB+WNTw6j74zO1uyag11feeIZvScyX/Hqvfzn/XE8 rdNZ/cDBFO2BzdLf/r/2vAo8iF9HBVUGyGIXY19b69yfB86UTdyM2PVH6HJeQ== X-Received: by 2002:a05:7300:cc0c:b0:2ce:25be:c8e8 with SMTP id 5a478bee46e88-3077b22a360mr3716634eec.17.1780708785241; Fri, 05 Jun 2026 18:19:45 -0700 (PDT) Received: from daehojeong-desktop.mtv.corp.google.com ([2a00:79e0:2e7c:8:36b0:9062:f19d:e1c8]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3074df3b234sm12383256eec.23.2026.06.05.18.19.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 18:19:44 -0700 (PDT) From: Daeho Jeong To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com Cc: Daeho Jeong Subject: [PATCH v2] f2fs_io: add dev_alias command for dynamic device aliasing management Date: Fri, 5 Jun 2026 18:19:42 -0700 Message-ID: <20260606011942.1206814-1-daeho43@gmail.com> X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Daeho Jeong This commit adds a new 'dev_alias' command to f2fs_io tool to support dynamic inclusion, exclusion and status querying of device alias ranges. Signed-off-by: Daeho Jeong --- v2: remove a f2fs specific flag from getflags. --- tools/f2fs_io/f2fs_io.c | 46 +++++++++++++++++++++++++++++++++++++++++ tools/f2fs_io/f2fs_io.h | 7 +++++++ 2 files changed, 53 insertions(+) diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c index c977f4d..3fa323b 100644 --- a/tools/f2fs_io/f2fs_io.c +++ b/tools/f2fs_io/f2fs_io.c @@ -2509,6 +2509,51 @@ static void do_test_lookup_perf(int argc, char **arg= v, const struct cmd_desc *cm exit(0); } =20 +#define dev_alias_desc "device alias control" +#define dev_alias_help \ +"f2fs_io dev_alias [include|exclude|status] [file]\n\n" \ +"include, exclude or status a range of device alias given the file\n" + +static void do_dev_alias(int argc, char **argv, const struct cmd_desc *cmd) +{ + int fd, ret; + + if (argc !=3D 3) { + fputs("Excess arguments\n\n", stderr); + fputs(cmd->cmd_help, stderr); + exit(1); + } + + fd =3D xopen(argv[2], O_RDWR, 0); + + if (!strcmp(argv[1], "exclude")) { + ret =3D ioctl(fd, F2FS_IOC_EXCLUDE_DEV_ALIAS); + if (ret < 0) + die_errno("F2FS_IOC_EXCLUDE_DEV_ALIAS failed"); + printf("%s device alias range of %s\n", argv[1], argv[2]); + } else if (!strcmp(argv[1], "include")) { + ret =3D ioctl(fd, F2FS_IOC_INCLUDE_DEV_ALIAS); + if (ret < 0) + die_errno("F2FS_IOC_INCLUDE_DEV_ALIAS failed"); + printf("%s device alias range of %s\n", argv[1], argv[2]); + } else if (!strcmp(argv[1], "status")) { + u32 status =3D 0; + + ret =3D ioctl(fd, F2FS_IOC_GET_DEV_ALIAS_STATUS, &status); + if (ret < 0) + die_errno("F2FS_IOC_GET_DEV_ALIAS_STATUS failed"); + + printf("device alias status of %s: %s\n", argv[2], + status =3D=3D F2FS_DEV_ALIAS_STATUS_EXCLUDED ? "excluded" : "included"); + } else { + fputs("Wrong request type\n\n", stderr); + fputs(cmd->cmd_help, stderr); + exit(1); + } + + exit(0); +} + #define freeze_desc "freeze filesystem" #define freeze_help "f2fs_io freeze [directory_path]\n\n" =20 @@ -2603,6 +2648,7 @@ const struct cmd_desc cmd_list[] =3D { CMD(get_advise), CMD(ioprio), CMD(ftruncate), + CMD(dev_alias), CMD(test_create_perf), CMD(test_lookup_perf), CMD(freeze), diff --git a/tools/f2fs_io/f2fs_io.h b/tools/f2fs_io/f2fs_io.h index b0d4099..57d96b7 100644 --- a/tools/f2fs_io/f2fs_io.h +++ b/tools/f2fs_io/f2fs_io.h @@ -96,6 +96,9 @@ typedef u32 __be32; #define F2FS_IOC_START_ATOMIC_REPLACE _IO(F2FS_IOCTL_MAGIC, 25) #define F2FS_IOC_GET_DEV_ALIAS_FILE _IOR(F2FS_IOCTL_MAGIC, 26, __u32) #define F2FS_IOC_IO_PRIO _IOW(F2FS_IOCTL_MAGIC, 27, __u32) +#define F2FS_IOC_EXCLUDE_DEV_ALIAS _IO(F2FS_IOCTL_MAGIC, 28) +#define F2FS_IOC_INCLUDE_DEV_ALIAS _IO(F2FS_IOCTL_MAGIC, 29) +#define F2FS_IOC_GET_DEV_ALIAS_STATUS _IOR(F2FS_IOCTL_MAGIC, 30, __u32) =20 #ifndef FSCRYPT_POLICY_V1 #define FSCRYPT_POLICY_V1 0 @@ -200,6 +203,10 @@ enum { F2FS_IOPRIO_WRITE =3D 1, /* high write priority */ }; =20 +/* for F2FS_IOC_GET_DEV_ALIAS_STATUS */ +#define F2FS_DEV_ALIAS_STATUS_INCLUDED 0 +#define F2FS_DEV_ALIAS_STATUS_EXCLUDED 1 + #ifndef FS_IMMUTABLE_FL #define FS_IMMUTABLE_FL 0x00000010 /* Immutable file */ #endif --=20 2.54.0.1032.g2f8565e1d1-goog