From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 7ECEA34A79D for ; Mon, 3 Aug 2026 16:29:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785774581; cv=none; b=HaDwnZTChZZq7v1FExE9/dcVSrcMv5BGvS4WlwVxMGMT5n3HwkjtrXpn8xM79V9/bY9l2orWOYf3j+asYH5tKQavkztq0pNISY8vQjiaWCXvEI3N8fx4bi8/jvqAqpSscLD9wVCAKULlQKuvd2+ZpMPHTtmfRmryzi9QOx3UvOk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785774581; c=relaxed/simple; bh=m+m5JUmgrkbwJ40AhGeByv/QMgnks2zaWmoNTJJ2lnE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=WFmmkcXgQce28Wdg4ECCCU8EOz/1AFryYBYMsbo9v4EilWvjUYrekcQAl8S8wF67lGiE3I0CaglfPMYH0rduy4jWxpHLS8d4eDZVXd7efY0+amVpWy8RCop+LA3DYa9e1I005OxTKRrsAw5wut1j96t1WdK6xek4YEymUQedqWo= 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=IQoveJlw; arc=none smtp.client-ip=209.85.216.42 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="IQoveJlw" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-38dfe7eb825so2696601a91.0 for ; Mon, 03 Aug 2026 09:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785774580; x=1786379380; 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:content-type; bh=Hu9icVjrHsBVioQppm2stSlUejm4enh11auG+1pjE+s=; b=IQoveJlwP72U/h/q75e3PHL1jIkNt+WXNbV8EmurY+2kSWE7K9D/SNj9phm0CXe98t pSdDzyG/R+fFhl/K1VEgA0DYndHTuvsyCXt2CB4X3MJDefR+GxSX1sUt2Du+3meyiexu gOlipcwzmjopaKbH1d1fuz+MmK1H5sxJ9SWGWSHS5fzeV5VV4xLds0XJGKXyvzupCk99 GrG4N+I225wMbvuoIHfn/2vs+zROSRCvFKxCwCzDYcWdabQw+okD4aZOJ+SQFbPP2AXL Q9JrnGVemCcgoaAfidw8Qm3b1i+Vwyqf8DGDbCt8hKEQFdvZxxMwJt085USSUOQAPKHl fEfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785774580; x=1786379380; 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:content-type; bh=Hu9icVjrHsBVioQppm2stSlUejm4enh11auG+1pjE+s=; b=UaiKbASC3BqPRoKITLU5YJyeE7tOKft5nQb69zcUb/kiIZnjOYIxh64Wt50IB3epZ3 OxnQJ3t4ndwkWRJLAzyvKagULw0wbM5H8mQkfAhvH6TBLQuqXU2huHFCmnRB2AvOkOuP jkM1QgRNJTZOpAIATwc7mXkNx2NqKJceSrkDHfXZ+NBYeynIu2zzAid7ZcIM/G8D/hZO y+ww7PSLTi8NT2WeQ24sFPdEkLJSHs4VOLvFBNDnr49gmnUx5O+k0FlIM2HBS7XCWyyT Wg4c30CGydi5e4dPIL6OAn1SUvNSRmeP7ifp/Ae3YRrwHdOqEBruFxhyWH24ifLxnFs1 wBhw== X-Gm-Message-State: AOJu0YwSGqJY+57pIsu79T0Z40SrH7i1y6dUiYF7eGar2cB+olrDwrlY vnuxM569PDu9lmtWbsgoIyOUUfOCshFPT0ul7e0oh284rB1XHQB7aESCG6mv4w== X-Gm-Gg: AR+sD13n8l8mTIJxxzyjw5+WVtwglhpHfiu3YZ44CKHRwkBB68VWYFXJ9UUqoBH8IQ9 wVRa5RPhOyiP3RxaoRRCA9qZ5Y2bK/GLa0qPHCsFVHKWNws27zyb2je1uJlS7TvRUN3FLTtJQCw Hg4tPmBVwW1FwkSWdDOLgWLB6vO+LZNKGQipmDv/CS9GTtB+gLLDaVlVx9JC72dggJx3hDRHc3Z iLrzaryhBJYo6LeMYE9KnsWc62QDFce4tFCi7HRK7Ukmd9d2gfkzL+D7ERCZLyDFsRgtnfYyhJq gKv8z7XaaUAkt/vXtEl1NRwUo8+Eyo0eD5AL/gNElT0BCfla9Rl637hNhIIXKGWJnJu3DE3flwp TGQJpStC2WSXB6k7gxesbnsKl2Anjd0C1zHOb5uxEvKxVkr6ZOsJznfVMHacxdbBY23xIlewpzr VO1mOiuHGSjY6EwRC5f4t8vbD7F0Q1clrBxU0PerAD/yFUvdLsaCJIF1vgQKdIiojg80AGSNvJB qNOWgKopDiwKLXmFd3LYaDRExbwBYyO0ja4Qq/ECAW+dB1gcLXsjg3r5OHM6RXdnDPPqb1NkzwP yilwCLtQOeZh X-Received: by 2002:a17:90b:3947:b0:38e:5b59:c2ff with SMTP id 98e67ed59e1d1-38fbc3f2522mr9145126a91.3.1785774579654; Mon, 03 Aug 2026 09:29:39 -0700 (PDT) Received: from daehojeong-desktop.mtv.corp.google.com ([2a00:79e0:2e7c:8:d709:21da:d427:ef7d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13fab4cb50dsm54574228c88.10.2026.08.03.09.29.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2026 09:29:38 -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 v3] f2fs_io: add dev_alias command for dynamic device aliasing management Date: Mon, 3 Aug 2026 09:29:35 -0700 Message-ID: <20260803162935.2056391-1-daeho43@gmail.com> X-Mailer: git-send-email 2.55.0.571.g244d577d93-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Daeho Jeong This commit adds a new 'dev_alias' command to f2fs_io tool to support dynamic release, reservation and status querying of device alias ranges. Signed-off-by: Daeho Jeong --- v3: renamed the interfaces for dev_alias. 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..1a219b8 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 **argv, const struct cmd_desc *cm exit(0); } +#define dev_alias_desc "device alias control" +#define dev_alias_help \ +"f2fs_io dev_alias [release|reserve|status] [file]\n\n" \ +"release, reserve 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 != 3) { + fputs("Excess arguments\n\n", stderr); + fputs(cmd->cmd_help, stderr); + exit(1); + } + + fd = xopen(argv[2], O_RDWR, 0); + + if (!strcmp(argv[1], "reserve")) { + ret = ioctl(fd, F2FS_IOC_RESERVE_DEV_ALIAS); + if (ret < 0) + die_errno("F2FS_IOC_RESERVE_DEV_ALIAS failed"); + printf("%s device alias range of %s\n", argv[1], argv[2]); + } else if (!strcmp(argv[1], "release")) { + ret = ioctl(fd, F2FS_IOC_RELEASE_DEV_ALIAS); + if (ret < 0) + die_errno("F2FS_IOC_RELEASE_DEV_ALIAS failed"); + printf("%s device alias range of %s\n", argv[1], argv[2]); + } else if (!strcmp(argv[1], "status")) { + u32 status = 0; + + ret = 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 == F2FS_DEV_ALIAS_STATUS_RESERVED ? "reserved" : "released"); + } 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" @@ -2603,6 +2648,7 @@ const struct cmd_desc cmd_list[] = { 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..41387f2 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_RESERVE_DEV_ALIAS _IO(F2FS_IOCTL_MAGIC, 28) +#define F2FS_IOC_RELEASE_DEV_ALIAS _IO(F2FS_IOCTL_MAGIC, 29) +#define F2FS_IOC_GET_DEV_ALIAS_STATUS _IOR(F2FS_IOCTL_MAGIC, 30, __u32) #ifndef FSCRYPT_POLICY_V1 #define FSCRYPT_POLICY_V1 0 @@ -200,6 +203,10 @@ enum { F2FS_IOPRIO_WRITE = 1, /* high write priority */ }; +/* for F2FS_IOC_GET_DEV_ALIAS_STATUS */ +#define F2FS_DEV_ALIAS_STATUS_RELEASED 0 +#define F2FS_DEV_ALIAS_STATUS_RESERVED 1 + #ifndef FS_IMMUTABLE_FL #define FS_IMMUTABLE_FL 0x00000010 /* Immutable file */ #endif -- 2.55.0.571.g244d577d93-goog