From nobody Sun Feb 8 00:48:21 2026 Received: from mail-ej1-f97.google.com (mail-ej1-f97.google.com [209.85.218.97]) (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 9871F240604 for ; Fri, 12 Dec 2025 05:17:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516628; cv=none; b=KFBAa/0zGm+s4AtcMpGrwu65SRSf/0j4/mDMPdLgMG5/kBln/VU/eG726TAUbTfhV7TCURDUaN/OS/WWbPDGe+B+CUMH/0d9KLNuOdOcD3RwapcyVA4+odVThdEwjd7aiZqquSz2rUwSk3oqe6qG5mykhuJkMVZ2glC2k3TsQIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516628; c=relaxed/simple; bh=Nv/iP0PPlu7PYFQwI+jBPI8ffRylYj1zxIf1qEKb0tE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JyJ+5p+N73OTjBmglVZaRP358G6cz3mV/nlGaZBILPOGQB9WqgdWbgwtZhCuYsCnyctD/CdDgilCNkxonN/waOHy+C5m7CU430m+/Oxoq5/fbsgd3H+DRk7UYfOboD5Syu0awY2l08C/oOWDHQmS8Q9vg/D4Cj2UvBfI5iNycNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=MWCugvxG; arc=none smtp.client-ip=209.85.218.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="MWCugvxG" Received: by mail-ej1-f97.google.com with SMTP id a640c23a62f3a-b7355774747so13234766b.2 for ; Thu, 11 Dec 2025 21:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516624; x=1766121424; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ro8OsZF3uJAug4OtKve3tUbRbgxB29DrKAw1agkxt6A=; b=MWCugvxGJ5bcaQvBBCe1EmAUmVNkByLHzjxtweQxeEFnrCecaqahJ9CiRCBIIkuydN MxQHmXwdCOjCuq+uJxdAAtmiPpFWVKJoVYfz3vNCopWvy/E1rEn3UI2F44zdkRQUey3J nZ9YcqhYf5OGls7PC0umB4f9+5BpUb2+HYSUdUdLoZZvMmM47qkm5bq+1Z+uprJKrJfi 1WQHbrNS0cEqie8Sr7+T4xAPt/Roa6MpZdMDM5NlvpNO7fJkMR5LhUmeGkkAHeuTqJ0X jJkAtUum3tKjyG0jD6S8rcBAWZtMMLUjtopMRrYF89udxUR1cHf1bNxNLwvOGy0bFBRm 3t8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516624; x=1766121424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ro8OsZF3uJAug4OtKve3tUbRbgxB29DrKAw1agkxt6A=; b=Bg2bnLfi+zBx6pC4N+963HgFujFNjBEIqqG57zDXfNZDT/nym4fn4oWGbYRFWwkOZZ SINR6X99b/9z81PUCP8lygbddD4dnmWWAw/E/Vo9cAK6g5pCYH4HG1dpsh5ynwrBnw1k T8FF/bF0IYqtNi5nUj6Hz9rB9/pj8USnWJBKZAy8lKaHgnCF1nf6QZG68sYnhYiiAnKJ xG5714yDfJ+2YS2GHyeYrph1LkyBbEL7fO4kI54/DQaaUrfoL7W5L/6KuITMWAhQF2k0 fzqPhurS9Mz0pXL3FPRNp17njpkbo4+LCWKxRZI+58AqQS5MNluSJDLYt1MC1vblVerM yPxg== X-Forwarded-Encrypted: i=1; AJvYcCVGbRVCnIrtpxKVU8XC/LZkWVh3EtUqEMv5QAXiEPAQrlKqdJdjgYOfTmQzgAqke0aJ6svwxlU2zCqlO5I=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4A2sDbOtbc38Bj9ZXXqeK4bJ0lXSoEoP2Rn69aWE/Ctw4wGH1 fD17cEU3MsQhKea16PJ1IuaAw8oLRJBWIQ/EDy26vC6fulv/IBnpoE8ZfvY0Huq0g54Jo3gDxLx eH3+z05hgN9Q57jhQgnU25gdGgOwgbqGcfQDH X-Gm-Gg: AY/fxX4vf5VdI/Wq/s3d/3qtCCkXrfH376qvX0iaT9FfW7/iLCmE0DWma9tlYlmCvWg SzKPPv6dmp8eC3zrJOqY39eOLthEDCpqlrkH2foIZZ6vnKf0WP+AG/++lvhcNkGFXEJeLSCyDH9 yDv2ExaO2T4t8zdSmRVVybeLK5Oqx1TNq7r9IXlYFV/HVq3NAziiXEoKmy7jj10hzeME11Dtuh6 CxstO5kQDjaosiSyL+kkXc7bzUiDcUdSmaSfzV0vquGJadezzo6ES5gII9lF/f4PPGKOJdXveE8 F1USfuhCKadr6LB3GrnShasNMKPVkxfRk4PZnUYmZ+GJ7hUe7lmwB8EiXmfLQaWS38MnKORHjgC lbMo2BN+Ro1Dm88g7iTsyOX7YtmyF/MfYgic50nJE0w== X-Google-Smtp-Source: AGHT+IEawf1to/V+/+Qx4OvUJswtkr88PbpqURl0CG0xqAJjTju6BHqC8DK8KJbweq/Q9sRitTwQT4JGUkml X-Received: by 2002:a17:907:60d0:b0:b76:c498:d410 with SMTP id a640c23a62f3a-b7d23aa5780mr34437166b.8.1765516623927; Thu, 11 Dec 2025 21:17:03 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.129]) by smtp-relay.gmail.com with ESMTPS id a640c23a62f3a-b7cfa609a26sm86779066b.86.2025.12.11.21.17.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:03 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 9E989340B96; Thu, 11 Dec 2025 22:17:02 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 9B464E41A2E; Thu, 11 Dec 2025 22:17:02 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 1/8] selftests: ublk: correct last_rw map type in seq_io.bt Date: Thu, 11 Dec 2025 22:16:51 -0700 Message-ID: <20251212051658.1618543-2-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" The last_rw map is initialized with a value of 0 but later assigned the value args.sector + args.nr_sector, which has type sector_t =3D u64. bpftrace complains about the type mismatch between int64 and uint64: trace/seq_io.bt:18:3-59: ERROR: Type mismatch for @last_rw: trying to assig= n value of type 'uint64' when map already contains a value of type 'int64' @last_rw[$dev, str($2)] =3D (args.sector + args.nr_sector); Cast the initial value to uint64 so bpftrace will load the program. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/trace/seq_io.bt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/ublk/trace/seq_io.bt b/tools/testing/s= elftests/ublk/trace/seq_io.bt index 272ac54c9d5f..507a3ca05abf 100644 --- a/tools/testing/selftests/ublk/trace/seq_io.bt +++ b/tools/testing/selftests/ublk/trace/seq_io.bt @@ -2,11 +2,11 @@ $1: dev_t $2: RWBS $3: strlen($2) */ BEGIN { - @last_rw[$1, str($2)] =3D 0; + @last_rw[$1, str($2)] =3D (uint64)0; } tracepoint:block:block_rq_complete { $dev =3D $1; if ((int64)args.dev =3D=3D $1 && !strncmp(args.rwbs, str($2), $3)) { --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-lf1-f98.google.com (mail-lf1-f98.google.com [209.85.167.98]) (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 C0FB126ED39 for ; Fri, 12 Dec 2025 05:17:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516629; cv=none; b=TChA5EwqpdeuOGZZa1NbftpUq6vs6iYp+hyE9JGzTdX3xWmwUcxxJ1MLU8yy0KHfaOL/d5tzlRM6xYBwNLxatUTn+qi4SBMIfimaYpF+4pYm5fYgppvCjvZiuuXItQayu7qIPoJUBEM83ph0tSbq0tDsgj22GJsJOwajh1y3/sc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516629; c=relaxed/simple; bh=hMDvcWZRxsHgEupNzfRaoWl4qKW471diyO0Q/xWeRr8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kjoJzgvKCdPrQRMPx8/4DLndEOpqdYRZPNp5iJm4dL+9y89GcJG7AfHSOMeeqMEXSWHy02EuaBFkVDDTk8AFSM1MtOtdwyID2I7noQ1W5FlAB1necrtDZys57LgbTdt0cJ/mVPFsGNWaUEEi0lC+CuLTLo/qokIowLv9bzyjs2g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=HBy1DLVT; arc=none smtp.client-ip=209.85.167.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="HBy1DLVT" Received: by mail-lf1-f98.google.com with SMTP id 2adb3069b0e04-594285eed50so37154e87.0 for ; Thu, 11 Dec 2025 21:17:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516624; x=1766121424; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5vaZfyTagTLiPkyNwQyOOZqa8fNIA0b68wD31umuEqc=; b=HBy1DLVTGAnUtGwUUqE/Pq5Hgx8CrAe48oFI6xO/E6M+7IyApCXkCa6S0D06PMLPQn P14k7ZsFZHIaqYusE9SBV7ILaGyaWTzFI6I5IY1s0f9js3Qz++kmkZuWHQ6eRmUKya93 UR6BObUNbXMd3KcQi6MBAcsOzdpkPyEwnzArm9ACBYLwqCjvTSn/j9cB+MSpSuov3+8T zTE0tv8YO5PhBzuK329wlMJnAiL74Adhw+C60W11NlOd3I+7Fp0wk74iDibgchEZLPoM e9ssqexsiLF++poBefY0h2JrVgvmxx50dqIq+1aagn0DsMDqM4o3rzzCAa4rlqAZkpEH ZrjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516624; x=1766121424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5vaZfyTagTLiPkyNwQyOOZqa8fNIA0b68wD31umuEqc=; b=m2W+/JyTOvD4nrZixAIVuNMUAwfJK1dCuO8dORpufQ9yvkmE7tkegauFK15Oooy1ut d96BEb1dVU4S1KO+1uKHvhHZ8+WL31u8pYC7iHMzd8vy+bT4khHvfbwYZjraz23a0cO+ 4T/PNZ2+GqoOgdVUR1Cdig9J+P1pQj+iTGDsMm/jB4M3CyyVYEeo/2mnWFz3adpMIKmp mO0rZRfTAg1Uu3objQkelebBEJGyxLeefTT0aMpt8rLeHlwz3pZSzyXkOq5gFQ1Cvu+3 1PGtsz6Iq7rahav5DLNoTNab5rKH0aaOOBy5+/OTWYeqK492xGPNcd5KEjUQMqpApIMT HIGg== X-Forwarded-Encrypted: i=1; AJvYcCX8EHC6xgu2pafRK5PWlkolxGgX5UBn2996Xlxs2QtnkUcI1pVme/V2I4dKFRIhF/HaD0lZEMVVRNLEAuc=@vger.kernel.org X-Gm-Message-State: AOJu0YyNKMSOaeef+XYxkb2cTtEw2EWKEMPhs1CcWPXkruGMHFTHS8zE CJ4r0zyz9Tu0ssYxAQWLugHXKQX9szm4qp8jBWPCZHuR2yDL5h5uXjqAl2Z2oJ4owQhPGzkuW9o 30d7WMUPgvLZ5rt3nGcVZ09chvISiISqFYdZL X-Gm-Gg: AY/fxX6IoY7Frc4n28LVDxMqfPYZOqWDBbetSS0Mytv+rf/SKRFFAk+qBP4MSLf8maH ADpBudNaO1yVz+FVVmIqrPuXegf4FWslKR9ILQIjqXTw5r5Bar3ts7DHjWPJHFLkIo1qPKpAj3o 70wWrnFo97lDPHNoip411kNmnT3aSCpRlDLAIlLcwsJdY0nrbOISmQjIPCw7rUAeU84xNySod+W 3hPqftoyKkOVeOcKsj+JSWkiHxGqkylY5Xl7TD1RgFKvAuUZT6V6uO6G/QtQMg7cc472mn6cqK2 2a1bCJI4PgU1mr3nZo0x0ZXRcBwmTuBkIcicoEeVv4DtkaXl0zHGow6R/HYDOzSTcCVSbhRyIeS 3aQwYPUkhJR+8e0YlMzsRcvftNZS82FvdbGixgNJfmg== X-Google-Smtp-Source: AGHT+IGtF7eyo8lXcOR8WUkH9+guQzHvCZGlU7C+InJFwFhMRt+x3f30HEC/DWoVBssc+TB5k2rM71vsdf3i X-Received: by 2002:a05:6512:10d1:b0:594:2a33:ac17 with SMTP id 2adb3069b0e04-598faa21734mr115979e87.2.1765516624456; Thu, 11 Dec 2025 21:17:04 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([208.88.159.128]) by smtp-relay.gmail.com with ESMTPS id 2adb3069b0e04-598f2f72a24sm939705e87.40.2025.12.11.21.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:04 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id D2A56341DDC; Thu, 11 Dec 2025 22:17:02 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id CE18BE41A2E; Thu, 11 Dec 2025 22:17:02 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 2/8] selftests: ublk: remove unused ios map in seq_io.bt Date: Thu, 11 Dec 2025 22:16:52 -0700 Message-ID: <20251212051658.1618543-3-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" The ios map populated by seq_io.bt is never read, so remove it. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/trace/seq_io.bt | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/testing/selftests/ublk/trace/seq_io.bt b/tools/testing/s= elftests/ublk/trace/seq_io.bt index 507a3ca05abf..b2f60a92b118 100644 --- a/tools/testing/selftests/ublk/trace/seq_io.bt +++ b/tools/testing/selftests/ublk/trace/seq_io.bt @@ -15,11 +15,10 @@ tracepoint:block:block_rq_complete printf("io_out_of_order: exp %llu actual %llu\n", args.sector, $last); } @last_rw[$dev, str($2)] =3D (args.sector + args.nr_sector); } - @ios =3D count(); } =20 END { clear(@last_rw); } --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-wr1-f100.google.com (mail-wr1-f100.google.com [209.85.221.100]) (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 44DFF256C6D for ; Fri, 12 Dec 2025 05:17:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516628; cv=none; b=i5zWGcEhqP+nt0vNR0VG/y3O1E8R2slYU728SUpW8EIK9AWAXsSi9L0X6f8Z7zyf8v4njdS7P6qsldCtqTlTFvxOjZ6f/edsLCTUKLA26BAXVL92rqBCxqPyfqrA8YiseSjh98H3kIYuPotKVr6aIhtEel9KQKIE5Woz5lHRvRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516628; c=relaxed/simple; bh=+cVia0YqFLhrPDWq9CwKaca7IitMDAWFURSGq1uOQdI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M1s88OsGoOZ5v0++rkpPtbFuaoP2rKyy14LCk9xS1VZnkKsYpx8Wqx48PbSysOZbyHJHy2trGDzV5N3cL+yYXQXVPmusnsfEX2QeAKNTUIlAJLlV0NyYRWpUFBkxcV8ACLREDpDNGiQqeS26zuqQISKjJf3iJySYI2P3FYM7WE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=CwSu8H6W; arc=none smtp.client-ip=209.85.221.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="CwSu8H6W" Received: by mail-wr1-f100.google.com with SMTP id ffacd0b85a97d-42b54f690b0so101045f8f.2 for ; Thu, 11 Dec 2025 21:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516624; x=1766121424; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2NOEIyKTQ4B6JXoSeSWaOQfr++6G02m3bohInlhRqug=; b=CwSu8H6WECXlxH/eipz4CicJylAmlR6N5ErJ8XPGJeVaVm0YqUWl7zLjsoyvys5fL1 YVJ/E4Acdjgs3cnwQ0/A+2BejXN+btpaxuDUqAhkeHAjtQe8QVKcCL9zynEodguRP8Do 6QEftACVLQXTNtYP/yrcugIGAfluUCLyM02wJztnTyN99BuZCktCc/Grx1aSX6YjLfol d/cmYuq1el+WVa5Vmf/Ccd+O84NykXQX76vQff2M613HR1ER7P/Zz/w/uP1SEl8J8LsZ 9mmrb5Fx7oFCHwY8cin+iVMioZpzDJxXsAzzeEyQqVtNRJqs3+VTGVhNGE9tC4xrd2WJ 7uCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516624; x=1766121424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2NOEIyKTQ4B6JXoSeSWaOQfr++6G02m3bohInlhRqug=; b=N+JP/Sw7N5hq5Xtg4iTXPaCOTEGnQl5OKpURO6EVfaxGFB2Q4vl4n6AS3wunoMl87A h3UelsV7M8nkgOqMQJfEz4at/VT+HkE0ck1LSYXCS+Ziy1WWC2gIx5C5x7EDL3mLgxs1 Yol7ok+PdBToLYlI8IcjJcHn2famPeH0+PbtJCV8OMD2pDi/DYxNQpRghg8seTSwF+tO NkyCwcF0UHN5Ge39Mp2ITj5AenfPHXjiytMu/4GYn1JT3SphuMDXdO7/vEZwy5cMf5Hw zIY4ZAwldBKNTXEstmOHyQIGBqdgW3rPDWeA3lV2DF/VTN1s9ZtSDnv50ZHSb4kjbLaZ V7iA== X-Forwarded-Encrypted: i=1; AJvYcCXaUG6/IbvFqUF32U5nDWM4l5wYyIWVMs2iRe4o5yLToUqxWGwyv1joT4Nha0MCUcfrSmmKTNZXxEA9W1I=@vger.kernel.org X-Gm-Message-State: AOJu0YzniWhDwiY0ZrkVCA/NtvS9Vi3M/Bz/R6fZ4LRiTj7ZFgYi35xN 8Aq+LEqh7VYbDqriSJgEX1V3fDrmCNX0cV3jeV3OSSQyJLJnzkxrAh5dnZ9M/A+YYvqYKILunf/ /zJtXmHU1Ex1srI+RomGvf01xIKPkaPivrs/U4Ah/M/P9Bte/KQbB X-Gm-Gg: AY/fxX4PpgJKOs9lNnRs4yK325ImPS4CJUmYkHflkJZVj3gkqnI0g0rhA+F7hJ8SY0A K5wM7Rg7utt54VJqx/XqUjB85qTrqnpRo5us0gcehOwUh9pUaksYx3+Xvbt3DLrAOHoJ86f4XEF I/px58UVzFH47o4X4KsGHC7Y/t2DBmULNVrirXQMkxv+MQzXh3tfjde3FpIvCn7YGZSEcFSJQLr OyN53C5uv1I6QProikbCk3apt+dMsY0AtBYoOg3MHsdgr6tjYFaWF15huWBGZhx3CfIUAgA51j2 TackrYyRbvU+TBkKU5QeCIjYHwKmeTUwAixVh1yOEMo7lHPBhKnKeBXB5ESpEhVuRWInO1MXwsW P1E7wcamRnlm60QJSujxQoUtnwLU= X-Google-Smtp-Source: AGHT+IG6s15ui2sqTjw1W3bSmPEo9ziYpeqrPKSLos4YiY34MH8bAphIvC8pdlnNW0DmClOs2FdPwqh6bDJq X-Received: by 2002:a05:6000:2909:b0:42b:3e20:f1b1 with SMTP id ffacd0b85a97d-42fb44b3c72mr468875f8f.2.1765516624422; Thu, 11 Dec 2025 21:17:04 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id ffacd0b85a97d-42fa8b88b18sm631354f8f.22.2025.12.11.21.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:04 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 120D2342042; Thu, 11 Dec 2025 22:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 0E7BEE41A2E; Thu, 11 Dec 2025 22:17:03 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 3/8] selftests: ublk: fix fio arguments in run_io_and_recover() Date: Thu, 11 Dec 2025 22:16:53 -0700 Message-ID: <20251212051658.1618543-4-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" run_io_and_recover() invokes fio with --size=3D"${size}", but the variable size doesn't exist. Thus, the argument expands to --size=3D, which causes fio to exit immediately with an error without issuing any I/O. Pass the value for size as the first argument to the function. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/test_common.sh | 5 +++-- tools/testing/selftests/ublk/test_generic_04.sh | 2 +- tools/testing/selftests/ublk/test_generic_05.sh | 2 +- tools/testing/selftests/ublk/test_generic_11.sh | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/ublk/test_common.sh b/tools/testing/se= lftests/ublk/test_common.sh index 8a4dbd09feb0..6f1c042de40e 100755 --- a/tools/testing/selftests/ublk/test_common.sh +++ b/tools/testing/selftests/ublk/test_common.sh @@ -331,15 +331,16 @@ run_io_and_kill_daemon() fi } =20 run_io_and_recover() { - local action=3D$1 + local size=3D$1 + local action=3D$2 local state local dev_id =20 - shift 1 + shift 2 dev_id=3D$(_add_ublk_dev "$@") _check_add_dev "$TID" $? =20 fio --name=3Djob1 --filename=3D/dev/ublkb"${dev_id}" --ioengine=3Dlibaio \ --rw=3Drandread --iodepth=3D256 --size=3D"${size}" --numjobs=3D4 \ diff --git a/tools/testing/selftests/ublk/test_generic_04.sh b/tools/testin= g/selftests/ublk/test_generic_04.sh index 8b533217d4a1..baf5b156193d 100755 --- a/tools/testing/selftests/ublk/test_generic_04.sh +++ b/tools/testing/selftests/ublk/test_generic_04.sh @@ -6,11 +6,11 @@ TID=3D"generic_04" ERR_CODE=3D0 =20 ublk_run_recover_test() { - run_io_and_recover "kill_daemon" "$@" + run_io_and_recover 256M "kill_daemon" "$@" ERR_CODE=3D$? if [ ${ERR_CODE} -ne 0 ]; then echo "$TID failure: $*" _show_result $TID $ERR_CODE fi diff --git a/tools/testing/selftests/ublk/test_generic_05.sh b/tools/testin= g/selftests/ublk/test_generic_05.sh index 398e9e2b58e1..7b5083afc02a 100755 --- a/tools/testing/selftests/ublk/test_generic_05.sh +++ b/tools/testing/selftests/ublk/test_generic_05.sh @@ -6,11 +6,11 @@ TID=3D"generic_05" ERR_CODE=3D0 =20 ublk_run_recover_test() { - run_io_and_recover "kill_daemon" "$@" + run_io_and_recover 256M "kill_daemon" "$@" ERR_CODE=3D$? if [ ${ERR_CODE} -ne 0 ]; then echo "$TID failure: $*" _show_result $TID $ERR_CODE fi diff --git a/tools/testing/selftests/ublk/test_generic_11.sh b/tools/testin= g/selftests/ublk/test_generic_11.sh index a00357a5ec6b..d1f973c8c645 100755 --- a/tools/testing/selftests/ublk/test_generic_11.sh +++ b/tools/testing/selftests/ublk/test_generic_11.sh @@ -6,11 +6,11 @@ TID=3D"generic_11" ERR_CODE=3D0 =20 ublk_run_quiesce_recover() { - run_io_and_recover "quiesce_dev" "$@" + run_io_and_recover 256M "quiesce_dev" "$@" ERR_CODE=3D$? if [ ${ERR_CODE} -ne 0 ]; then echo "$TID failure: $*" _show_result $TID $ERR_CODE fi --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-lf1-f97.google.com (mail-lf1-f97.google.com [209.85.167.97]) (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 06B83274FC2 for ; Fri, 12 Dec 2025 05:17:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516629; cv=none; b=sYd7QDz7FGpqbn22tkRPx/eKxIp9jDaynzv5ytIaPGHjX9b8UGzV+X9/9ZxE5dUXCE78uhOJIHL8wTzWEVv6ct9lpZ5acawLVRBLAku6pg/zgGtzGeuVltvm1eV6SkWQdktnOvwltCo9yx41ybOevgH+KWrNYXg2Use9K7bhBqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516629; c=relaxed/simple; bh=FKbZngLfGMe4F0ejdKJ0fZ6ILmuYiVZnIW21hOqoFMc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z0cg3eyXNAbPQ3MpqbzJ+e7B27EyprVaCwUp8+qsf9cWQpT4tYVUMcRQkf6nBRfIrOjhTztt0xN7lP17dn+rLCF3tRqJ7u0nCHn0fh5jaKSnrH29V6gWkL3Ymb4S7gdKQLMSlKeu+7ZKV8ib4HZizX5Jmmo93yKYuv0urhDmhvo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=Jk4PtFN3; arc=none smtp.client-ip=209.85.167.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="Jk4PtFN3" Received: by mail-lf1-f97.google.com with SMTP id 2adb3069b0e04-598ed017e4cso62323e87.0 for ; Thu, 11 Dec 2025 21:17:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516625; x=1766121425; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lYMmhxte6MTatk0mD4pdp1WR7i9P7+V+tQDFdQu1wO4=; b=Jk4PtFN3GvnPuzWi8qP9AoU2rQyqhyOyf906j1oe4pSifzdFm76c7ffZXWw3W+uaQM O4QzqFJNuh1177inOF9opDLSkNQ1xkDzeizPRuC2fZ4R52CnDADOR4XKIJmIMzE39v18 hLLtCa56f1uqGUL77SAxYl64Wo8yCgzmONh5mLZNMI5Zelqc+Oo7rPmDIt+KD9hm0LZb PuZkjzUp7sA/PKaLKDyGARS1g3xkdKPqmalVf+8DCkEDj1H+/dEq6l1NVmOhKwFgmvkC 1LBzxdSPnCmWFmEO9QjxCTwihchuZ8u8pQCKY1AGNFXlLpRwFLO3ekGioKr16hPyXx7r EXIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516625; x=1766121425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=lYMmhxte6MTatk0mD4pdp1WR7i9P7+V+tQDFdQu1wO4=; b=QP1JdtWZoEhqQf1nzTfOPcS1/FnD5ZhTpsNpdM4aIuNv8W2zRTLoBfz4sFyQdzYj/6 wkGTHLMPC2Le0Mmr7GZwzsVeQgmdHebTi0OZUpEDsZGNxglzuVYb/XyTOTb3UIdAr3j+ l23PMD1SZ7gRgUnciWZCDDTjta2DlU+/2d4YxQk1nPl51U4RKNh6S2daGi2NOlfguM03 1Uo95/B3GFIKw+rFy5n4FPtAj4om3k2eofoV0BPnQTiS5lv4oNZnE5a67nVdRKdBBLHR 483S8RNk3AzFlA/ZRL3U65j7R47dvQUcv0vUzkoQGdFTSNMKPVhBhVMcprZfplpzMR/a Gz5w== X-Forwarded-Encrypted: i=1; AJvYcCU0WAhmrKGUUcdLw2ApzfWeTIk0lBQ4UV4QbIYzLhpt5h/9WmdyG6cx3qjD2yWol4kgFMRzKa+BI4iSgrI=@vger.kernel.org X-Gm-Message-State: AOJu0YxLpBUD1wAWWV5yniP5T+2k6hgnPO3YJ2rmzOv30I0BaFVgo0YO hdAFgVC7vY+25D40WjYP7BvcbLD271nrjsw2UBh+2JsVKPrB/WU9MVbzU/uFX4w0H8E80l6EFLC Gc1dQHyAfVpyYj+gLIMWl6QGiOQeRljPrfvPn8MgUPvIA/YKyb6No X-Gm-Gg: AY/fxX7yuzdt6+FSgvxST8xiEu+nzbWLElhyDo83ur1ZsfHUvf4i7nnEcmLRH5MPYQ/ e7YcGufcQtfn591KjfGcvOKWZzrltCATMDskOO38yjtEiNTPmO2xmXIP35i5bAqg2Ityvf5aUul XiiL15sUd6zFjBzMaoqkcQZX8f6PH+lF9sLP+yJm2Zkx4mapvuBO0FDNU46wrLvmgBqPqK2J7dW T/5ziyPapyTEPXkcpWlXVyDBF89l7q5N49Hepkp2lrFRQnHUf4OtCMTf6/RKCo5+qGM05mM17mz 9k+refQ6A3+EWgEKu+MrDV2ey7kvUGu+ZurrTiILqQMPpHiqVX5Bugd3Fi20V2/19DmOMpc/xsN +baZHd+X85Hu6j4lJlWHucZ+eVyU= X-Google-Smtp-Source: AGHT+IHED7+rpkRtlBxZO9p+36KWOh4E+ddumxvqZJI9AqcJZ3H9gbQi4l8+a8BmFg25VzAg2XnOgm+Pi/q+ X-Received: by 2002:ac2:4c49:0:b0:594:3a08:162f with SMTP id 2adb3069b0e04-598faa018e2mr135201e87.1.1765516624931; Thu, 11 Dec 2025 21:17:04 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 2adb3069b0e04-598f81d098asm529311e87.24.2025.12.11.21.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:04 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 445CC3420A1; Thu, 11 Dec 2025 22:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 41BE3E41A2E; Thu, 11 Dec 2025 22:17:03 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 4/8] selftests: ublk: use auto_zc for PER_IO_DAEMON tests in stress_04 Date: Thu, 11 Dec 2025 22:16:54 -0700 Message-ID: <20251212051658.1618543-5-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" stress_04 is described as "run IO and kill ublk server(zero copy)" but the --per_io_tasks tests cases don't use zero copy. Plus, one of the test cases is duplicated. Add --auto_zc to these test cases and --auto_zc_fallback to one of the duplicated ones. This matches the test cases in stress_03. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/test_stress_04.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/ublk/test_stress_04.sh b/tools/testing= /selftests/ublk/test_stress_04.sh index 3f901db4d09d..965befcee830 100755 --- a/tools/testing/selftests/ublk/test_stress_04.sh +++ b/tools/testing/selftests/ublk/test_stress_04.sh @@ -38,14 +38,14 @@ if _have_feature "AUTO_BUF_REG"; then ublk_io_and_kill_daemon 256M -t stripe -q 4 --auto_zc --no_ublk_fixed_fd = "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & ublk_io_and_kill_daemon 8G -t null -q 4 -z --auto_zc --auto_zc_fallback & fi =20 if _have_feature "PER_IO_DAEMON"; then - ublk_io_and_kill_daemon 8G -t null -q 4 --nthreads 8 --per_io_tasks & - ublk_io_and_kill_daemon 256M -t loop -q 4 --nthreads 8 --per_io_tasks "${= UBLK_BACKFILES[0]}" & - ublk_io_and_kill_daemon 256M -t stripe -q 4 --nthreads 8 --per_io_tasks "= ${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & - ublk_io_and_kill_daemon 8G -t null -q 4 --nthreads 8 --per_io_tasks & + ublk_io_and_kill_daemon 8G -t null -q 4 --auto_zc --nthreads 8 --per_io_t= asks & + ublk_io_and_kill_daemon 256M -t loop -q 4 --auto_zc --nthreads 8 --per_io= _tasks "${UBLK_BACKFILES[0]}" & + ublk_io_and_kill_daemon 256M -t stripe -q 4 --auto_zc --nthreads 8 --per_= io_tasks "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & + ublk_io_and_kill_daemon 8G -t null -q 4 --auto_zc --auto_zc_fallback --nt= hreads 8 --per_io_tasks & fi wait =20 _cleanup_test "stress" _show_result $TID $ERR_CODE --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-ej1-f99.google.com (mail-ej1-f99.google.com [209.85.218.99]) (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 5B3E92D8364 for ; Fri, 12 Dec 2025 05:17:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516630; cv=none; b=Bh+33CrzIAmSTZ+6n5tkFQ56IZl0gecV6YoLFLDweKJgsYXr38wix1Gfe9D8JjkNDuc0uaIXXw54TaZtIjff4T04bxRRKkUdtP7vdy60x1wB1d8Dy+1Ve07WLYzuxH64g1avIEXdQT/j1HBupOgcIIzD+UgfzFP22jnrxfM1Uks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516630; c=relaxed/simple; bh=vSXwqIJgqlSVc1smP8I+ivy5i3pkVVt8KiqpRNZZ4mg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o8l7YZ6BGBqCURnakVPx+eEWc/rDlkcL/dilqTV/MtoP7wTI3W3JjnfMgZB8eLPDOQtu5fBMQ/BsWn9j3TSayI+klmW5w5n6gk8oJcukbapKtKrpLNXcMN780Li0tOqN6d9e68WqxM63rDLUDpyAoql8qih02U5tjv6sNptHbtA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=QDNh8Nsi; arc=none smtp.client-ip=209.85.218.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="QDNh8Nsi" Received: by mail-ej1-f99.google.com with SMTP id a640c23a62f3a-b7355774747so13235266b.2 for ; Thu, 11 Dec 2025 21:17:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516625; x=1766121425; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A+3L8femEvpIo66E++G/m45qvGvJwQnFca+SKH5jlbs=; b=QDNh8NsiV09emj53y/qMmPh2CYmVLzOcri1nWHaAvwbBdR3hr0xrwRMtKLHuK8Ia9H 0PVtHc+dDCbBY1Uah91yC8ASEMLTnXOd4GlzBjM5BpbvLkjfhA30p2TcDlBEY3/fcvg/ 65zD8751W8zMQmWD0qLVBldxcOex7fKBufAN8VaifcpQgw4dbDyWQINJUmLOPpW/ACWT JEkk6Bkk3uHR8VPb+Y67kJK9vEPntAWnpLn20fagBUGjzzeWv3NE3uCQ/wOzpEKSGfi8 /ZYCVZkJSA9b8g+wvcvoLO9Cj1L7EatEESLIrXfNH0bLUTHT6hpGoNI0Wy4yvK+eAsq1 QeRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516625; x=1766121425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=A+3L8femEvpIo66E++G/m45qvGvJwQnFca+SKH5jlbs=; b=u7joqD8mUyvyLZXFoUWEOEx1e1VQI8JjDbV6BQhfEWVte7jgXM+xE40Ar3Q6L2jD7U jlSpobWye1/XUW2Yk6RJiHZMAaPaq4/VNVxlonmVSC35r9KwSiSgJpmpTV+fRWWv4Ex9 1lwIBpMta4dQYWC34pMxtyzUN5xAgy8W3F5Vl1hzJwLtT06w6DT7JYg69dHsyCA+CjTm iwHZllPHFDZ+zkCtPVop15PLNmamYG5MtrwBXsVSQQfgdQEaw0Z2xCek69T8DFfOCrVm AYLVgp6rD/R7IhP0dOce0COebm/DVOqMf8ZlXDbsVOUNtP77zTSTvMnmWkUsgU7U6xu0 dA1A== X-Forwarded-Encrypted: i=1; AJvYcCWcJlp2C9dKxrf+GH/QKDQ0KBCQ1whlTqLzWNkfenRujM3Ctmh1tDMLcJmm7k8opB/da8lMiNPb9OMbCY0=@vger.kernel.org X-Gm-Message-State: AOJu0YzIRtObKCMvo9hXSpz6RyF5dxcplzHjxDNm821aSCytIyyIhMyM ILZDTQGouTkTsSTgNWT3gW+GF9OGWaAZ5ywVUdOEbMFEfTmfvDXYtejnZ+8JYWKzz5HKf8mkxsE 9X5p7CUnvMVSZyUUKPOsXwCiTFgLY3mVOCvE0S/H6cVPQaXwiuXOK X-Gm-Gg: AY/fxX7/DO/qO/c/HYfBCouubrw+8vxw/IP0WzIbhzdr3uSdPV5WkI2ctPt9S9drExJ k/7e18yM0c9iJdvnhUSbeoJ9MSS07fbvaTBiQLYaSrXR2sTfW7XY3hNcfI4L2N6w6NPqKdPkPwx IeX6a9xD8ozSoqEiUp3TG4oN+/mzgWvuof0g0VrxY+RkIoZOHxTpR7wg2OZNWMwl8pCzUgMiCTK v537ZZaD80INPqK1GlPI6ICR06flkAEf0pqhm/XsWL7G/s8Zp+8acjbhHx3oEQ2EeESEQ+t1UdJ CoK2FcF+8U1vLRMSg8E/zA/Ype6Xhdf+Ey6Af+zd8t92oyUJ/C60b7UzOekTuVbIoPYWFQrJJ7P osAsigAfJJwJos1f2OBYHtaO5m5A= X-Google-Smtp-Source: AGHT+IHgEuWVwR0RX1wTZ7OF90db/MRXj16eInoWlRqFjPQZaS+k3kMpczRUtT6+Vfaf+LABKLHjxjBNmsTj X-Received: by 2002:a17:907:6d26:b0:b73:59b0:34c6 with SMTP id a640c23a62f3a-b7d23762815mr32323566b.4.1765516625184; Thu, 11 Dec 2025 21:17:05 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id a640c23a62f3a-b7cfa609a26sm86779266b.86.2025.12.11.21.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:05 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 7AD3B3420F0; Thu, 11 Dec 2025 22:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 74D2EE41A2E; Thu, 11 Dec 2025 22:17:03 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 5/8] selftests: ublk: don't share backing files between ublk servers Date: Thu, 11 Dec 2025 22:16:55 -0700 Message-ID: <20251212051658.1618543-6-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" stress_04 is missing a wait between blocks of tests, meaning multiple ublk servers will be running in parallel using the same backing files. Add a wait after each section to ensure each backing file is in use by a single ublk server at a time. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/test_stress_04.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/ublk/test_stress_04.sh b/tools/testing= /selftests/ublk/test_stress_04.sh index 965befcee830..c7220723b537 100755 --- a/tools/testing/selftests/ublk/test_stress_04.sh +++ b/tools/testing/selftests/ublk/test_stress_04.sh @@ -29,23 +29,25 @@ _create_backfile 1 128M _create_backfile 2 128M =20 ublk_io_and_kill_daemon 8G -t null -q 4 -z --no_ublk_fixed_fd & ublk_io_and_kill_daemon 256M -t loop -q 4 -z --no_ublk_fixed_fd "${UBLK_BA= CKFILES[0]}" & ublk_io_and_kill_daemon 256M -t stripe -q 4 -z "${UBLK_BACKFILES[1]}" "${U= BLK_BACKFILES[2]}" & +wait =20 if _have_feature "AUTO_BUF_REG"; then ublk_io_and_kill_daemon 8G -t null -q 4 --auto_zc & ublk_io_and_kill_daemon 256M -t loop -q 4 --auto_zc "${UBLK_BACKFILES[0]}= " & ublk_io_and_kill_daemon 256M -t stripe -q 4 --auto_zc --no_ublk_fixed_fd = "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & ublk_io_and_kill_daemon 8G -t null -q 4 -z --auto_zc --auto_zc_fallback & + wait fi =20 if _have_feature "PER_IO_DAEMON"; then ublk_io_and_kill_daemon 8G -t null -q 4 --auto_zc --nthreads 8 --per_io_t= asks & ublk_io_and_kill_daemon 256M -t loop -q 4 --auto_zc --nthreads 8 --per_io= _tasks "${UBLK_BACKFILES[0]}" & ublk_io_and_kill_daemon 256M -t stripe -q 4 --auto_zc --nthreads 8 --per_= io_tasks "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & ublk_io_and_kill_daemon 8G -t null -q 4 --auto_zc --auto_zc_fallback --nt= hreads 8 --per_io_tasks & + wait fi -wait =20 _cleanup_test "stress" _show_result $TID $ERR_CODE --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-lf1-f99.google.com (mail-lf1-f99.google.com [209.85.167.99]) (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 3A8C430DED0 for ; Fri, 12 Dec 2025 05:17:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516631; cv=none; b=rmXKETSLsrjH08DcBhiloUO2vp6KPVT92vmsHDePtP6MLtRiecyODdy3EsjAcIDRbZJufyRf6Rgh+etuLcCA2sKryrtrMYZRyAdTAnw/DMJeVkm/wS2kAAWv56TzV4W3LIOxaTIe8GkA749otjxQIJhe4G7A4f8OtfbjqSnhX1A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516631; c=relaxed/simple; bh=LNmBK8BbXU2AU/+zkmmJm0DJM/yE4e10w35U+rkx54s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pnoEeyLybTq1nv3TUEkWSzZpxDw8I/Py62EcPaBB0ME8Bl9vJMsItH/JCrUxZZU/ZhOcZ1zqc9wZAsMJmkJNdWoR6IXAyqFBD3M2jQ8YmAVWvzCqdpO/izbX5a2ThUE1dsMfoPIBpqIf77mcGtZJscOXeLMYKNZXByOo/plem8M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=Nz2u28qY; arc=none smtp.client-ip=209.85.167.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="Nz2u28qY" Received: by mail-lf1-f99.google.com with SMTP id 2adb3069b0e04-598ed017e4cso62325e87.0 for ; Thu, 11 Dec 2025 21:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516626; x=1766121426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=57Jz8InzcWfvhhZ5XG933BN7Op7rlmfOq8wxKbdaTP4=; b=Nz2u28qYw34G6gBkzQJVysK6iKSwAXZavxi0d9dcGCg98GWVSoMjlqTbAuRbgLZumB aC4SXX7E/hr2/ma/hbf2d0XRKlg5wh6szONuG5T7BM8BPdcFO5GFCM8/mNF7qFDOpxFX wnj3gAf7UUBRj++FimRHo3xwSisqtaLN5IgUyaPKDAV2t7mDLR7vtV3+CN0Iq4F1COhE 8YSQjwtCRPeoJfMUSNYZycRhzNSZK4MDFhylxH0WU+tP+FrsOHLTlvxEbfEc8DAaL/gq +hZaoQTX0kCe1uVX9laj7IlqrFnMejrYnccCDVOY+GnpUe6N9Sd8191BEpTOntr8QsyS c52A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516626; x=1766121426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=57Jz8InzcWfvhhZ5XG933BN7Op7rlmfOq8wxKbdaTP4=; b=UdgIi2V/eJrT1eaZskCd4aYMYlx7r0d5+7MBU6/tb36JkXUPF8b2z1qk4XQHxZVoPH Cq9XoxyE5lcIQM7MKqSpQCXnHyTOhxvzYi8/paxo8G4ZuACBh0zJuSySu0zQBI6mv+in 0tupw7/m6y5H4zmwjORL6BxSwOvmoeEag9BYOgzOt9kS98orZMEdEyWUvXUZUyT3yDiW ZmB9GaNTuQ+Y6UuiS2xb7nw76TgUueQDk9r2NtD9pj8S7xwmgKu/LmH4Od/5iWi2h3N2 Q0dCWmA3jUxTOV3oRLoiFiJDJcF74ymVsxq3aw2J6dfoJTQwImdNB21675kugxDOnwP2 s13A== X-Forwarded-Encrypted: i=1; AJvYcCX/6DPR55AufvzCvNlNS7nwv/xC83LMcINSKtGFVtPS6+xViSzPpif1+JNqZPUUMTLgQaLAZX96Y8+ovY4=@vger.kernel.org X-Gm-Message-State: AOJu0YwerLvohI1iTjF6gzwyrakFDRAAsxCXYAgdeSlZF78kmCG5zAR5 IX8JUBTEW/zxJkrbRGxU1jeYviPXx40CFLii3mqedDgHgIPzbntf6xK3RHwl9ftAp3KfyMqn0ER fUqVoK6+U2F7jJksz+TTEVDXbmw+u/+PLl8S8jwoqV8ux6ohuXEqZ X-Gm-Gg: AY/fxX6XBnlTE61d75aiS03Z0xVkDJWAUGupElzEde3U7yi/X0uK/01MFRvKZOG0HN/ wFHci8tVVGJPQ8CR7CQXO/aL6qTWHTIZ8uz5m0kqWp5OpAGB8aLfz8T6cz8JuYLWl+7wvOJxsDf nVuIqPlt+RpQ3p5RQYJXJv6qOCaAg3BFGDv0pYUwuNLH8Uo11w9h26Cj0Xq06tPkaF+lc7l8MSq drN5edVtddMZlDK3j9RC0Fw0LbXWQj2ldfXcawlyadsAy0KuaKaZwdQkwkFO+cr+CwB1XOQjRuD cCxz+KTUGj0LEh0zj7EGNsetRPu5ZUb03pSilz7bARbi2JuKOClLqYoJAEQ6X3A2xRVOqcG8Jt9 MDCFISJutQoP1ngSXsCCpdQovPWg= X-Google-Smtp-Source: AGHT+IG+QG4RAXApd1w4Szk42Vway3i7WNOlUKjxhNFoATJnq2vI1qzUk4DNiFXJGExb8HLEcYj2mWe6vKhC X-Received: by 2002:a05:6512:e86:b0:595:834a:b1ed with SMTP id 2adb3069b0e04-598faaa6ddfmr117200e87.7.1765516625582; Thu, 11 Dec 2025 21:17:05 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 2adb3069b0e04-598f2f36fd5sm941967e87.5.2025.12.11.21.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:05 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id A28873400F7; Thu, 11 Dec 2025 22:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id A07A1E41A2E; Thu, 11 Dec 2025 22:17:03 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 6/8] selftests: ublk: forbid multiple data copy modes Date: Thu, 11 Dec 2025 22:16:56 -0700 Message-ID: <20251212051658.1618543-7-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" The kublk mock ublk server allows multiple data copy mode arguments to be passed on the command line (--zero_copy, --get_data, and --auto_zc). The ublk device will be created with all the requested feature flags, however kublk will only use one of the modes to interact with request data (arbitrarily preferring auto_zc over zero_copy over get_data). To clarify the intent of the test, don't allow multiple data copy modes to be specified. --zero_copy and --auto_zc are allowed together for --auto_zc_fallback, which uses both copy modes. Don't set UBLK_F_USER_COPY for zero_copy, as it's a separate feature. Fix the test cases in test_stress_05 passing --get_data along with --zero_copy or --auto_zc. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/kublk.c | 11 ++++++++++- tools/testing/selftests/ublk/test_stress_05.sh | 10 +++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/ublk/kublk.c b/tools/testing/selftests= /ublk/kublk.c index f8fa102a627f..4dd02cb083ba 100644 --- a/tools/testing/selftests/ublk/kublk.c +++ b/tools/testing/selftests/ublk/kublk.c @@ -1611,11 +1611,11 @@ int main(int argc, char *argv[]) break; case 'd': ctx.queue_depth =3D strtol(optarg, NULL, 10); break; case 'z': - ctx.flags |=3D UBLK_F_SUPPORT_ZERO_COPY | UBLK_F_USER_COPY; + ctx.flags |=3D UBLK_F_SUPPORT_ZERO_COPY; break; case 'r': value =3D strtol(optarg, NULL, 10); if (value) ctx.flags |=3D UBLK_F_USER_RECOVERY; @@ -1684,10 +1684,19 @@ int main(int argc, char *argv[]) "F_AUTO_BUF_REG nor F_SUPPORT_ZERO_COPY is enabled\n", __func__); return -EINVAL; } =20 + if (!!(ctx.flags & UBLK_F_NEED_GET_DATA) + + !!(ctx.flags & UBLK_F_USER_COPY) + + (ctx.flags & UBLK_F_SUPPORT_ZERO_COPY && !ctx.auto_zc_fallback) + + (ctx.flags & UBLK_F_AUTO_BUF_REG && !ctx.auto_zc_fallback) + + ctx.auto_zc_fallback > 1) { + fprintf(stderr, "too many data copy modes specified\n"); + return -EINVAL; + } + i =3D optind; while (i < argc && ctx.nr_files < MAX_BACK_FILES) { ctx.files[ctx.nr_files++] =3D argv[i++]; } =20 diff --git a/tools/testing/selftests/ublk/test_stress_05.sh b/tools/testing= /selftests/ublk/test_stress_05.sh index 274295061042..68a194144302 100755 --- a/tools/testing/selftests/ublk/test_stress_05.sh +++ b/tools/testing/selftests/ublk/test_stress_05.sh @@ -56,21 +56,21 @@ for reissue in $(seq 0 1); do wait done =20 if _have_feature "ZERO_COPY"; then for reissue in $(seq 0 1); do - ublk_io_and_remove 8G -t null -q 4 -g -z -r 1 -i "$reissue" & - ublk_io_and_remove 256M -t loop -q 4 -g -z -r 1 -i "$reissue" "${UBLK_BA= CKFILES[1]}" & + ublk_io_and_remove 8G -t null -q 4 -z -r 1 -i "$reissue" & + ublk_io_and_remove 256M -t loop -q 4 -z -r 1 -i "$reissue" "${UBLK_BACKF= ILES[1]}" & wait done fi =20 if _have_feature "AUTO_BUF_REG"; then for reissue in $(seq 0 1); do - ublk_io_and_remove 8G -t null -q 4 -g --auto_zc -r 1 -i "$reissue" & - ublk_io_and_remove 256M -t loop -q 4 -g --auto_zc -r 1 -i "$reissue" "${= UBLK_BACKFILES[1]}" & - ublk_io_and_remove 8G -t null -q 4 -g -z --auto_zc --auto_zc_fallback -r= 1 -i "$reissue" & + ublk_io_and_remove 8G -t null -q 4 --auto_zc -r 1 -i "$reissue" & + ublk_io_and_remove 256M -t loop -q 4 --auto_zc -r 1 -i "$reissue" "${UBL= K_BACKFILES[1]}" & + ublk_io_and_remove 8G -t null -q 4 -z --auto_zc --auto_zc_fallback -r 1 = -i "$reissue" & wait done fi =20 if _have_feature "PER_IO_DAEMON"; then --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-ej1-f98.google.com (mail-ej1-f98.google.com [209.85.218.98]) (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 5E26B2F617F for ; Fri, 12 Dec 2025 05:17:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516630; cv=none; b=Pa+KaganVPC1TA5Db23UMyf2vk/ZsPaPxmCymW7uX/qFiOrfDZKYCW6zBW2EbVnee6G9QHb8fdK3DcW5S5QuoVMSgiINASw6XENT+++VlKE8mhDo4rnFav8uT1YcNtbxHoyZouOQczYjtYVZCXKoY2KqvTIP2xWumnyWOiVXGW8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516630; c=relaxed/simple; bh=iQ38AiA8WpaYjXkApiIllny59rXw+JDU7PqgdS0U2h4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EaFQOTwB2BpxGHI0xIOaR64CT2WBnePNf73iCY6ikiwmZiCfHyUtFhml3ITNK/qcI81gKn4iQ4fBdCoACzDYDqUrl9g94McOwG7a/o9LV4uu3Xza8HLAtx7P7e84TJikUJ5oXan8+Zlym1jWe45LSle5/CaOBbFIqdLkKWkMWgM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=V+v51Hhm; arc=none smtp.client-ip=209.85.218.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="V+v51Hhm" Received: by mail-ej1-f98.google.com with SMTP id a640c23a62f3a-b735c1fe67aso11061766b.2 for ; Thu, 11 Dec 2025 21:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516626; x=1766121426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PrOvEFha9jDIV8lCVskD9FwpZK1XYG8QVcTVv9lysko=; b=V+v51HhmT387d3EqRwgwsp0ZDEkYVU5MwbPx0xHTZncYhABgqQGmJocUNspoR91DGJ CgD06MiSL8HXMvRn3rEcarKPjrN2WwpgQ5AFNAGYM9IT11OCaAJ5OO7nx/aEUxLWI4rf MbiTPB03p5Qm+8tDqETuFurR2I9S5dyGGFKYRaBuNll4rxQV1U7aGQNv64Qtxc3vty1z 5D0knFyJOaieiDtv3F8aP0wkLcK2Cf4yZs9UfCXzQGgvHD+B3TRU3c2Zynr9jFORnxpF 5BuDChbZNH4KoR9zAWCLXCHymzDuqloT4cBJqBG0pYAMkNXyYEm6WKKNQE0HmaMAjaRw +h0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516626; x=1766121426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PrOvEFha9jDIV8lCVskD9FwpZK1XYG8QVcTVv9lysko=; b=OBwgj6wYiitKe4+J1yQsYuk58fdTjZVCcJ1ZAm7Xr9oBxzbuRYa0e77ZVlywjfzFwX bkE4FflsdzA6a/S7gqyODRj7WCDvHFu0J+I318y6XThplBw32eWOgytM3S8wP8Ilz/8t 7CpIa9OMrxXZndPCt0RnOCSPK50HCyYqLoD3IDXKBnXFvIFlE0TTy+UaK+N9TAhKcnbS nnJHFXzavwm3DY0PdGM+u/jhcJa6fREAraP7Y2Qfp7MFQs5209pG+wVqJeO+rAdWcnDP xy10xqExKb3OyZrbSH2GvDMEgYFGIGVRX3gyDweAzYE8RXxDFfQgC0SKs2g9bhUlyQzj JDsQ== X-Forwarded-Encrypted: i=1; AJvYcCXPlMvIFr06PY4mvBde9QwuemzYwJKGlFmw6q1zjwqtAnRGzk0dfYC9XcYpL59CsZ8Nlxnbmqx2YT3XYAs=@vger.kernel.org X-Gm-Message-State: AOJu0Yzp0tiMis2kdHQ0Es54n1oT6LrHFANDtQ8PBS3UPJ2693GWIjze h/9hUYwD4V6DOV68yTBoeKlJ1vHZRD7/Q4piyF6Gz/+7pUfc0E7H5sBDDJkRcH5Mbj7/+l2Xfv+ s/IamQUFZj+0cnHD14ytcvOBaDGRclGxxodhhA5X1lKUw8TjW73rs X-Gm-Gg: AY/fxX6h3BSEtaFW/FFDEd14zkIY0k67rT31RESFbSdlqocpgTqOIEg+NsDJGx0sQmY PlyVXp1JSJodRwiSM/iMkl966O/P0QjntsmozuvneaKvrcDdi8gZD+NMPImXg2gkTXPW1wHg1HC gPdisc+PXvk26ye1+tRcc/YluNkPEFp4R6ywdqM6HA44aN3B3HB8beTk5X7Pp3bEc5oTd0tZdzz vSkZ1pLmGTNsPsw+9NDYvSCCxLsQeY6CsmwkCTL21RNBWf3+YHyh5JzflvBmjNKfKOaBp5atTml 7KGVfMFHZ9e5xHX7mEuC2siexwO0N5NS/CH68ca1+7kdV3hg9qR4JHRc9t3tajiPG+/McDkOd2V W+MhaNqk9TQrnkgESH5bT7ykbaX4= X-Google-Smtp-Source: AGHT+IGNE1WUeyfEpE2FCHrU4wx0J7ge9PU3JlPk2VoedJ8eSASl3O4B0r9CJEr4tdkjvhbgb3BWlrErJt5h X-Received: by 2002:a17:906:f59b:b0:b7a:6e46:d5e3 with SMTP id a640c23a62f3a-b7d23633067mr36903766b.2.1765516625545; Thu, 11 Dec 2025 21:17:05 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id a640c23a62f3a-b7cfa3468fasm87885866b.43.2025.12.11.21.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:05 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (unknown [IPv6:2620:125:9007:640:ffff::1199]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id D551A34225F; Thu, 11 Dec 2025 22:17:03 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id D2E73E41A2E; Thu, 11 Dec 2025 22:17:03 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 7/8] selftests: ublk: add support for user copy to kublk Date: Thu, 11 Dec 2025 22:16:57 -0700 Message-ID: <20251212051658.1618543-8-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" The ublk selftests mock ublk server kublk supports every data copy mode except user copy. Add support for user copy to kublk, enabled via the --user_copy (-u) command line argument. On writes, issue pread() calls to copy the write data into the ublk_io's buffer before dispatching the write to the target implementation. On reads, issue pwrite() calls to copy read data from the ublk_io's buffer before committing the request. Copy in 2 KB chunks to provide some coverage of the offseting logic. Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/file_backed.c | 7 +-- tools/testing/selftests/ublk/kublk.c | 53 ++++++++++++++++++++-- tools/testing/selftests/ublk/kublk.h | 11 +++++ tools/testing/selftests/ublk/stripe.c | 2 +- 4 files changed, 64 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/ublk/file_backed.c b/tools/testing/sel= ftests/ublk/file_backed.c index cd9fe69ecce2..269d5f124e06 100644 --- a/tools/testing/selftests/ublk/file_backed.c +++ b/tools/testing/selftests/ublk/file_backed.c @@ -32,12 +32,13 @@ static int loop_queue_tgt_rw_io(struct ublk_thread *t, = struct ublk_queue *q, { unsigned ublk_op =3D ublksrv_get_op(iod); unsigned zc =3D ublk_queue_use_zc(q); unsigned auto_zc =3D ublk_queue_use_auto_zc(q); enum io_uring_op op =3D ublk_to_uring_op(iod, zc | auto_zc); + struct ublk_io *io =3D ublk_get_io(q, tag); struct io_uring_sqe *sqe[3]; - void *addr =3D (zc | auto_zc) ? NULL : (void *)iod->addr; + void *addr =3D io->buf_addr; =20 if (!zc || auto_zc) { ublk_io_alloc_sqes(t, sqe, 1); if (!sqe[0]) return -ENOMEM; @@ -54,11 +55,11 @@ static int loop_queue_tgt_rw_io(struct ublk_thread *t, = struct ublk_queue *q, return 1; } =20 ublk_io_alloc_sqes(t, sqe, 3); =20 - io_uring_prep_buf_register(sqe[0], q, tag, q->q_id, ublk_get_io(q, tag)->= buf_index); + io_uring_prep_buf_register(sqe[0], q, tag, q->q_id, io->buf_index); sqe[0]->flags |=3D IOSQE_CQE_SKIP_SUCCESS | IOSQE_IO_HARDLINK; sqe[0]->user_data =3D build_user_data(tag, ublk_cmd_op_nr(sqe[0]->cmd_op), 0, q->q_id, 1); =20 io_uring_prep_rw(op, sqe[1], ublk_get_registered_fd(q, 1) /*fds[1]*/, 0, @@ -66,11 +67,11 @@ static int loop_queue_tgt_rw_io(struct ublk_thread *t, = struct ublk_queue *q, iod->start_sector << 9); sqe[1]->buf_index =3D tag; sqe[1]->flags |=3D IOSQE_FIXED_FILE | IOSQE_IO_HARDLINK; sqe[1]->user_data =3D build_user_data(tag, ublk_op, 0, q->q_id, 1); =20 - io_uring_prep_buf_unregister(sqe[2], q, tag, q->q_id, ublk_get_io(q, tag)= ->buf_index); + io_uring_prep_buf_unregister(sqe[2], q, tag, q->q_id, io->buf_index); sqe[2]->user_data =3D build_user_data(tag, ublk_cmd_op_nr(sqe[2]->cmd_op)= , 0, q->q_id, 1); =20 return 2; } =20 diff --git a/tools/testing/selftests/ublk/kublk.c b/tools/testing/selftests= /ublk/kublk.c index 4dd02cb083ba..185ba553686a 100644 --- a/tools/testing/selftests/ublk/kublk.c +++ b/tools/testing/selftests/ublk/kublk.c @@ -594,10 +594,42 @@ static void ublk_set_auto_buf_reg(const struct ublk_q= ueue *q, buf.flags =3D UBLK_AUTO_BUF_REG_FALLBACK; =20 sqe->addr =3D ublk_auto_buf_reg_to_sqe_addr(&buf); } =20 +/* Copy in pieces to test the buffer offset logic */ +#define UBLK_USER_COPY_LEN 2048 + +static void ublk_user_copy(const struct ublk_io *io, __u8 match_ublk_op) +{ + const struct ublk_queue *q =3D ublk_io_to_queue(io); + const struct ublksrv_io_desc *iod =3D ublk_get_iod(q, io->tag); + __u64 off =3D ublk_user_copy_offset(q->q_id, io->tag); + __u8 ublk_op =3D ublksrv_get_op(iod); + __u32 len =3D iod->nr_sectors << 9; + void *addr =3D io->buf_addr; + + if (ublk_op !=3D match_ublk_op) + return; + + while (len) { + __u32 copy_len =3D min(len, UBLK_USER_COPY_LEN); + ssize_t copied; + + if (ublk_op =3D=3D UBLK_IO_OP_WRITE) + copied =3D pread(q->ublk_fd, addr, copy_len, off); + else if (ublk_op =3D=3D UBLK_IO_OP_READ) + copied =3D pwrite(q->ublk_fd, addr, copy_len, off); + else + assert(0); + assert(copied =3D=3D (ssize_t)copy_len); + addr +=3D copy_len; + off +=3D copy_len; + len -=3D copy_len; + } +} + int ublk_queue_io_cmd(struct ublk_thread *t, struct ublk_io *io) { struct ublk_queue *q =3D ublk_io_to_queue(io); struct ublksrv_io_cmd *cmd; struct io_uring_sqe *sqe[1]; @@ -616,13 +648,16 @@ int ublk_queue_io_cmd(struct ublk_thread *t, struct u= blk_io *io) (UBLKS_IO_NEED_FETCH_RQ | UBLKS_IO_NEED_COMMIT_RQ_COMP | UBLKS_IO_NEED_G= ET_DATA))) return 0; =20 if (io->flags & UBLKS_IO_NEED_GET_DATA) cmd_op =3D UBLK_U_IO_NEED_GET_DATA; - else if (io->flags & UBLKS_IO_NEED_COMMIT_RQ_COMP) + else if (io->flags & UBLKS_IO_NEED_COMMIT_RQ_COMP) { + if (ublk_queue_use_user_copy(q)) + ublk_user_copy(io, UBLK_IO_OP_READ); + cmd_op =3D UBLK_U_IO_COMMIT_AND_FETCH_REQ; - else if (io->flags & UBLKS_IO_NEED_FETCH_RQ) + } else if (io->flags & UBLKS_IO_NEED_FETCH_RQ) cmd_op =3D UBLK_U_IO_FETCH_REQ; =20 if (io_uring_sq_space_left(&t->ring) < 1) io_uring_submit(&t->ring); =20 @@ -647,11 +682,11 @@ int ublk_queue_io_cmd(struct ublk_thread *t, struct u= blk_io *io) else sqe[0]->flags =3D IOSQE_FIXED_FILE; sqe[0]->rw_flags =3D 0; cmd->tag =3D io->tag; cmd->q_id =3D q->q_id; - if (!ublk_queue_no_buf(q)) + if (!ublk_queue_no_buf(q) && !ublk_queue_use_user_copy(q)) cmd->addr =3D (__u64) (uintptr_t) io->buf_addr; else cmd->addr =3D 0; =20 if (ublk_queue_use_auto_zc(q)) @@ -749,10 +784,14 @@ static void ublk_handle_uring_cmd(struct ublk_thread = *t, io->flags &=3D ~UBLKS_IO_NEED_FETCH_RQ; } =20 if (cqe->res =3D=3D UBLK_IO_RES_OK) { assert(tag < q->q_depth); + + if (ublk_queue_use_user_copy(q)) + ublk_user_copy(io, UBLK_IO_OP_WRITE); + if (q->tgt_ops->queue_io) q->tgt_ops->queue_io(t, q, tag); } else if (cqe->res =3D=3D UBLK_IO_RES_NEED_GET_DATA) { io->flags |=3D UBLKS_IO_NEED_GET_DATA | UBLKS_IO_FREE; ublk_queue_io_cmd(t, io); @@ -1505,11 +1544,11 @@ static void __cmd_create_help(char *exe, bool recov= ery) { int i; =20 printf("%s %s -t [null|loop|stripe|fault_inject] [-q nr_queues] [-d depth= ] [-n dev_id]\n", exe, recovery ? "recover" : "add"); - printf("\t[--foreground] [--quiet] [-z] [--auto_zc] [--auto_zc_fallback] = [--debug_mask mask] [-r 0|1 ] [-g]\n"); + printf("\t[--foreground] [--quiet] [-z] [--auto_zc] [--auto_zc_fallback] = [--debug_mask mask] [-r 0|1] [-g] [-u]\n"); printf("\t[-e 0|1 ] [-i 0|1] [--no_ublk_fixed_fd]\n"); printf("\t[--nthreads threads] [--per_io_tasks]\n"); printf("\t[target options] [backfile1] [backfile2] ...\n"); printf("\tdefault: nr_queues=3D2(max 32), depth=3D128(max 1024), dev_id= =3D-1(auto allocation)\n"); printf("\tdefault: nthreads=3Dnr_queues"); @@ -1566,10 +1605,11 @@ int main(int argc, char *argv[]) { "recovery_fail_io", 1, NULL, 'e'}, { "recovery_reissue", 1, NULL, 'i'}, { "get_data", 1, NULL, 'g'}, { "auto_zc", 0, NULL, 0 }, { "auto_zc_fallback", 0, NULL, 0 }, + { "user_copy", 0, NULL, 'u'}, { "size", 1, NULL, 's'}, { "nthreads", 1, NULL, 0 }, { "per_io_tasks", 0, NULL, 0 }, { "no_ublk_fixed_fd", 0, NULL, 0 }, { 0, 0, 0, 0 } @@ -1591,11 +1631,11 @@ int main(int argc, char *argv[]) if (argc =3D=3D 1) return ret; =20 opterr =3D 0; optind =3D 2; - while ((opt =3D getopt_long(argc, argv, "t:n:d:q:r:e:i:s:gaz", + while ((opt =3D getopt_long(argc, argv, "t:n:d:q:r:e:i:s:gazu", longopts, &option_idx)) !=3D -1) { switch (opt) { case 'a': ctx.all =3D 1; break; @@ -1631,10 +1671,13 @@ int main(int argc, char *argv[]) ctx.flags |=3D UBLK_F_USER_RECOVERY | UBLK_F_USER_RECOVERY_REISSUE; break; case 'g': ctx.flags |=3D UBLK_F_NEED_GET_DATA; break; + case 'u': + ctx.flags |=3D UBLK_F_USER_COPY; + break; case 's': ctx.size =3D strtoull(optarg, NULL, 10); break; case 0: if (!strcmp(longopts[option_idx].name, "debug_mask")) diff --git a/tools/testing/selftests/ublk/kublk.h b/tools/testing/selftests= /ublk/kublk.h index fe42705c6d42..fda72e19ef09 100644 --- a/tools/testing/selftests/ublk/kublk.h +++ b/tools/testing/selftests/ublk/kublk.h @@ -206,10 +206,16 @@ extern int ublk_queue_io_cmd(struct ublk_thread *t, s= truct ublk_io *io); static inline int ublk_io_auto_zc_fallback(const struct ublksrv_io_desc *i= od) { return !!(iod->op_flags & UBLK_IO_F_NEED_REG_BUF); } =20 +static inline __u64 ublk_user_copy_offset(unsigned q_id, unsigned tag) +{ + return UBLKSRV_IO_BUF_OFFSET + + ((__u64)q_id << UBLK_QID_OFF | (__u64)tag << UBLK_TAG_OFF); +} + static inline int is_target_io(__u64 user_data) { return (user_data & (1ULL << 63)) !=3D 0; } =20 @@ -403,10 +409,15 @@ static inline int ublk_queue_use_auto_zc(const struct= ublk_queue *q) static inline int ublk_queue_auto_zc_fallback(const struct ublk_queue *q) { return q->flags & UBLKS_Q_AUTO_BUF_REG_FALLBACK; } =20 +static inline bool ublk_queue_use_user_copy(const struct ublk_queue *q) +{ + return !!(q->flags & UBLK_F_USER_COPY); +} + static inline int ublk_queue_no_buf(const struct ublk_queue *q) { return ublk_queue_use_zc(q) || ublk_queue_use_auto_zc(q); } =20 diff --git a/tools/testing/selftests/ublk/stripe.c b/tools/testing/selftest= s/ublk/stripe.c index 791fa8dc1651..fd412e1f01c0 100644 --- a/tools/testing/selftests/ublk/stripe.c +++ b/tools/testing/selftests/ublk/stripe.c @@ -132,11 +132,11 @@ static int stripe_queue_tgt_rw_io(struct ublk_thread = *t, struct ublk_queue *q, enum io_uring_op op =3D stripe_to_uring_op(iod, zc | auto_zc); struct io_uring_sqe *sqe[NR_STRIPE]; struct stripe_array *s =3D alloc_stripe_array(conf, iod); struct ublk_io *io =3D ublk_get_io(q, tag); int i, extra =3D zc ? 2 : 0; - void *base =3D (zc | auto_zc) ? NULL : (void *)iod->addr; + void *base =3D io->buf_addr; =20 io->private_data =3D s; calculate_stripe_array(conf, iod, s, base); =20 ublk_io_alloc_sqes(t, sqe, s->nr + extra); --=20 2.45.2 From nobody Sun Feb 8 00:48:21 2026 Received: from mail-ed1-f98.google.com (mail-ed1-f98.google.com [209.85.208.98]) (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 3D20515E8B for ; Fri, 12 Dec 2025 05:17:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516631; cv=none; b=NOu3qyt0H+cUbVB7UgIYVCcR09/f7D/n5ZniUsOYoIhN1szRBkYzIIImoJUBedEQ1kCxdrojEjnybZFl3K8jhbXP/C6nnIpm0xwMqYopPA3p0lyJieuEgmnDm4sq4I/jur2p3BDtQZF9l4SzRbnth/a+OYu0hS/Mvu2kpwFUuYY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765516631; c=relaxed/simple; bh=NfeLk77tFZmiD9XTisSqHimNCv3ZQEKRAlp4nkzBxoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g8bbmshBR9PnXOWwWO5z1d0e98edmEcUutM9MSyvLuCepj1k+jcvehSz9FdElSW5BmlskbnukPC3egSy3dNTC6T9UR5UHmm+LxdsbgmWODjIau3PmZgAJW+Wo9XFXhIo2B5zGNJsNOR8rSDuv12gfWd7xbpOyXiIUMcieK2ZNJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=Lq72N7Tw; arc=none smtp.client-ip=209.85.208.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="Lq72N7Tw" Received: by mail-ed1-f98.google.com with SMTP id 4fb4d7f45d1cf-64312565c8dso139363a12.0 for ; Thu, 11 Dec 2025 21:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1765516626; x=1766121426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aozRi9go2wj0syw2Rd2V+7GuC9C7Iw+1DFrkNVNbCsI=; b=Lq72N7TwT/BbPU5uh0WSM5G6jVvMu7neySMmShx92qKwe7Hs4RD+3zFgLO6iRzmKji mvUMeuBm+lctx27RF/eLE94qmncQpRyKs66zSYoBsRYTqyo7f/PbD8WqNbLKbjxf3TXl JmyBZr/aFmpFgo38L8RTz5tWriPzWEWyuTrrARMUSJgLZT2lnpQXFz2FVsd1H9ru4F9C PjPgJXCUCzku1Qge4+XK5hRh4Y7zxQkXI2b5AZpxPTIbwY9FDZexLzy5sRFeB1IOC03h TZicBxMzrHQNlAnmupm3FAbQnFxv/JxXsJqKZi5XQcM0Ktg05jsPtQCca9jFNpxGedy1 tBSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765516626; x=1766121426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aozRi9go2wj0syw2Rd2V+7GuC9C7Iw+1DFrkNVNbCsI=; b=VTiaaXNz6gS7B6bDIaY1sL6NkvWIX4auOVnSWQQuJZB6qRcH8gU0dNXytuNQ1utfVQ s15pjnO+hlCncR7AgCQBpkOD3pIO/K0E9rFKUyZOZJ+H3cTFRM8dBTETwLg8ucO10SWO YgUfXnjC/OPEPFoqJioZa5NGisb4mAqwhzP6oVil4z0q24s8YIQt+agmTyaREdmTjKJl 0GOlgyHOlTucJ/Ym+DDHgDK59l7jQDiEOuMBeORQpEafQtm9pnL9i4BuGhOV25n0LKZT lBbzut74f4V345jZ1yzLKc1VAI/hxwJIra7S/xfHsLPvESrM1ATWD62BDTDvuCmzSn57 JFrw== X-Forwarded-Encrypted: i=1; AJvYcCVKMPUJH0LrHY2sWe/h0gqsgp69V148Ar98ZAAR1355YpE/TY+jpL66CnsZ+SnVU6L88TGQYT/m2vfmhtg=@vger.kernel.org X-Gm-Message-State: AOJu0YxO5JQAGNl8o1L/ZVNaBrUK6syHbqiVpp/AksDeoC1FECPmte1h gV6OKs0QJPWQS3J0VsMSpGNTwlqXfjq32mvQVxAwxPaJbCEPxWDSBF9jROerfkkvgaPV/s582Ig CcWga0oJoldgl03R3Bhu3pRrcD79h4W+9aLJBy9aJkGR1c0lelF/S X-Gm-Gg: AY/fxX6eHQFNobVh9+/SjLByD4fsL/TagXhqUB/WTkgtimI/Gzq6KfkCWFYVK84qLHx Pn35EqOIBsqthYPa7wvDDzImvNHK8FksJlQbcI3TDYmMt5182Fup+epiw98vFKxTqIYkZpFSFW5 NF8RIa7gmjyPPjcooPbuOAxatky2dvbuyNbN3mqwdBVkvF3uXEeZrgxzCNeNnTQXNtYgLM1HyMW svSAc1ucnr+cbugWWidNULBRA+PfMkhaukj9rKvN3NsIfrYhTENhuKcDLMtUxtWnL/85hCdWFTO GdMnWLcQ/JDEopJRt5D8Dch/IWTmF2rLsnjUhYmJio3O/OkGCs4K4w6Tb4dFjdvVslZ1Hi41S3G CIsGqgf/AmoGS6ldm8KMLr4bm/aI= X-Google-Smtp-Source: AGHT+IFDnLhneNzVMY6p4fz/ZDKfHKmk/av5FXNTC8AM0Gpnr2TTsEKk4xqoki49Ggq9Fc64fzspX7DdbP79 X-Received: by 2002:a17:907:3da7:b0:b73:4445:85a8 with SMTP id a640c23a62f3a-b7d23a8caf0mr37655266b.8.1765516625776; Thu, 11 Dec 2025 21:17:05 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id a640c23a62f3a-b7cfa3456ffsm88038666b.44.2025.12.11.21.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 21:17:05 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.7.70.37]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 6102434079F; Thu, 11 Dec 2025 22:17:04 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 5E166E41A2E; Thu, 11 Dec 2025 22:17:04 -0700 (MST) From: Caleb Sander Mateos To: Ming Lei , Shuah Khan Cc: linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v2 8/8] selftests: ublk: add user copy test cases Date: Thu, 11 Dec 2025 22:16:58 -0700 Message-ID: <20251212051658.1618543-9-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20251212051658.1618543-1-csander@purestorage.com> References: <20251212051658.1618543-1-csander@purestorage.com> 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" The ublk selftests cover every data copy mode except user copy. Add tests for user copy based on the existing test suite: - generic_14 ("basic recover function verification (user copy)") based on generic_04 and generic_05 - null_03 ("basic IO test with user copy") based on null_01 and null_02 - loop_06 ("write and verify over user copy") based on loop_01 and loop_03 - loop_07 ("mkfs & mount & umount with user copy") based on loop_02 and loop_04 - stripe_05 ("write and verify test on user copy") based on stripe_03 - stripe_06 ("mkfs & mount & umount on user copy") based on stripe_02 and stripe_04 - stress_06 ("run IO and remove device (user copy)") based on stress_01 and stress_03 - stress_07 ("run IO and kill ublk server (user copy)") based on stress_02 and stress_04 Signed-off-by: Caleb Sander Mateos Reviewed-by: Ming Lei --- tools/testing/selftests/ublk/Makefile | 8 ++++ .../testing/selftests/ublk/test_generic_14.sh | 40 +++++++++++++++++++ tools/testing/selftests/ublk/test_loop_06.sh | 25 ++++++++++++ tools/testing/selftests/ublk/test_loop_07.sh | 21 ++++++++++ tools/testing/selftests/ublk/test_null_03.sh | 24 +++++++++++ .../testing/selftests/ublk/test_stress_06.sh | 39 ++++++++++++++++++ .../testing/selftests/ublk/test_stress_07.sh | 39 ++++++++++++++++++ .../testing/selftests/ublk/test_stripe_05.sh | 26 ++++++++++++ .../testing/selftests/ublk/test_stripe_06.sh | 21 ++++++++++ 9 files changed, 243 insertions(+) create mode 100755 tools/testing/selftests/ublk/test_generic_14.sh create mode 100755 tools/testing/selftests/ublk/test_loop_06.sh create mode 100755 tools/testing/selftests/ublk/test_loop_07.sh create mode 100755 tools/testing/selftests/ublk/test_null_03.sh create mode 100755 tools/testing/selftests/ublk/test_stress_06.sh create mode 100755 tools/testing/selftests/ublk/test_stress_07.sh create mode 100755 tools/testing/selftests/ublk/test_stripe_05.sh create mode 100755 tools/testing/selftests/ublk/test_stripe_06.sh diff --git a/tools/testing/selftests/ublk/Makefile b/tools/testing/selftest= s/ublk/Makefile index 770269efe42a..837977b62417 100644 --- a/tools/testing/selftests/ublk/Makefile +++ b/tools/testing/selftests/ublk/Makefile @@ -19,28 +19,36 @@ TEST_PROGS +=3D test_generic_08.sh TEST_PROGS +=3D test_generic_09.sh TEST_PROGS +=3D test_generic_10.sh TEST_PROGS +=3D test_generic_11.sh TEST_PROGS +=3D test_generic_12.sh TEST_PROGS +=3D test_generic_13.sh +TEST_PROGS +=3D test_generic_14.sh =20 TEST_PROGS +=3D test_null_01.sh TEST_PROGS +=3D test_null_02.sh +TEST_PROGS +=3D test_null_03.sh TEST_PROGS +=3D test_loop_01.sh TEST_PROGS +=3D test_loop_02.sh TEST_PROGS +=3D test_loop_03.sh TEST_PROGS +=3D test_loop_04.sh TEST_PROGS +=3D test_loop_05.sh +TEST_PROGS +=3D test_loop_06.sh +TEST_PROGS +=3D test_loop_07.sh TEST_PROGS +=3D test_stripe_01.sh TEST_PROGS +=3D test_stripe_02.sh TEST_PROGS +=3D test_stripe_03.sh TEST_PROGS +=3D test_stripe_04.sh +TEST_PROGS +=3D test_stripe_05.sh +TEST_PROGS +=3D test_stripe_06.sh =20 TEST_PROGS +=3D test_stress_01.sh TEST_PROGS +=3D test_stress_02.sh TEST_PROGS +=3D test_stress_03.sh TEST_PROGS +=3D test_stress_04.sh TEST_PROGS +=3D test_stress_05.sh +TEST_PROGS +=3D test_stress_06.sh +TEST_PROGS +=3D test_stress_07.sh =20 TEST_GEN_PROGS_EXTENDED =3D kublk =20 include ../lib.mk =20 diff --git a/tools/testing/selftests/ublk/test_generic_14.sh b/tools/testin= g/selftests/ublk/test_generic_14.sh new file mode 100755 index 000000000000..cd9b44b97c24 --- /dev/null +++ b/tools/testing/selftests/ublk/test_generic_14.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"generic_14" +ERR_CODE=3D0 + +ublk_run_recover_test() +{ + run_io_and_recover 256M "kill_daemon" "$@" + ERR_CODE=3D$? + if [ ${ERR_CODE} -ne 0 ]; then + echo "$TID failure: $*" + _show_result $TID $ERR_CODE + fi +} + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "recover" "basic recover function verification (user copy)" + +_create_backfile 0 256M +_create_backfile 1 128M +_create_backfile 2 128M + +ublk_run_recover_test -t null -q 2 -r 1 -u & +ublk_run_recover_test -t loop -q 2 -r 1 -u "${UBLK_BACKFILES[0]}" & +ublk_run_recover_test -t stripe -q 2 -r 1 -u "${UBLK_BACKFILES[1]}" "${UBL= K_BACKFILES[2]}" & +wait + +ublk_run_recover_test -t null -q 2 -r 1 -u -i 1 & +ublk_run_recover_test -t loop -q 2 -r 1 -u -i 1 "${UBLK_BACKFILES[0]}" & +ublk_run_recover_test -t stripe -q 2 -r 1 -u -i 1 "${UBLK_BACKFILES[1]}" "= ${UBLK_BACKFILES[2]}" & +wait + +_cleanup_test "recover" +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_loop_06.sh b/tools/testing/s= elftests/ublk/test_loop_06.sh new file mode 100755 index 000000000000..1d1a8a725502 --- /dev/null +++ b/tools/testing/selftests/ublk/test_loop_06.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"loop_06" +ERR_CODE=3D0 + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "loop" "write and verify over user copy" + +_create_backfile 0 256M +dev_id=3D$(_add_ublk_dev -t loop -u "${UBLK_BACKFILES[0]}") +_check_add_dev $TID $? + +# run fio over the ublk disk +_run_fio_verify_io --filename=3D/dev/ublkb"${dev_id}" --size=3D256M +ERR_CODE=3D$? + +_cleanup_test "loop" + +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_loop_07.sh b/tools/testing/s= elftests/ublk/test_loop_07.sh new file mode 100755 index 000000000000..493f3fb611a5 --- /dev/null +++ b/tools/testing/selftests/ublk/test_loop_07.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"loop_07" +ERR_CODE=3D0 + +_prep_test "loop" "mkfs & mount & umount with user copy" + +_create_backfile 0 256M + +dev_id=3D$(_add_ublk_dev -t loop -u "${UBLK_BACKFILES[0]}") +_check_add_dev $TID $? + +_mkfs_mount_test /dev/ublkb"${dev_id}" +ERR_CODE=3D$? + +_cleanup_test "loop" + +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_null_03.sh b/tools/testing/s= elftests/ublk/test_null_03.sh new file mode 100755 index 000000000000..0051067b4686 --- /dev/null +++ b/tools/testing/selftests/ublk/test_null_03.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"null_03" +ERR_CODE=3D0 + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "null" "basic IO test with user copy" + +dev_id=3D$(_add_ublk_dev -t null -u) +_check_add_dev $TID $? + +# run fio over the two disks +fio --name=3Djob1 --filename=3D/dev/ublkb"${dev_id}" --ioengine=3Dlibaio -= -rw=3Dreadwrite --iodepth=3D32 --size=3D256M > /dev/null 2>&1 +ERR_CODE=3D$? + +_cleanup_test "null" + +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_stress_06.sh b/tools/testing= /selftests/ublk/test_stress_06.sh new file mode 100755 index 000000000000..37188ec2e1f7 --- /dev/null +++ b/tools/testing/selftests/ublk/test_stress_06.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh +TID=3D"stress_06" +ERR_CODE=3D0 + +ublk_io_and_remove() +{ + run_io_and_remove "$@" + ERR_CODE=3D$? + if [ ${ERR_CODE} -ne 0 ]; then + echo "$TID failure: $*" + _show_result $TID $ERR_CODE + fi +} + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "stress" "run IO and remove device (user copy)" + +_create_backfile 0 256M +_create_backfile 1 128M +_create_backfile 2 128M + +ublk_io_and_remove 8G -t null -q 4 -u & +ublk_io_and_remove 256M -t loop -q 4 -u "${UBLK_BACKFILES[0]}" & +ublk_io_and_remove 256M -t stripe -q 4 -u "${UBLK_BACKFILES[1]}" "${UBLK_B= ACKFILES[2]}" & +wait + +ublk_io_and_remove 8G -t null -q 4 -u --nthreads 8 --per_io_tasks & +ublk_io_and_remove 256M -t loop -q 4 -u --nthreads 8 --per_io_tasks "${UBL= K_BACKFILES[0]}" & +ublk_io_and_remove 256M -t stripe -q 4 -u --nthreads 8 --per_io_tasks "${U= BLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & +wait + +_cleanup_test "stress" +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_stress_07.sh b/tools/testing= /selftests/ublk/test_stress_07.sh new file mode 100755 index 000000000000..fb061fc26d36 --- /dev/null +++ b/tools/testing/selftests/ublk/test_stress_07.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh +TID=3D"stress_07" +ERR_CODE=3D0 + +ublk_io_and_kill_daemon() +{ + run_io_and_kill_daemon "$@" + ERR_CODE=3D$? + if [ ${ERR_CODE} -ne 0 ]; then + echo "$TID failure: $*" + _show_result $TID $ERR_CODE + fi +} + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "stress" "run IO and kill ublk server (user copy)" + +_create_backfile 0 256M +_create_backfile 1 128M +_create_backfile 2 128M + +ublk_io_and_kill_daemon 8G -t null -q 4 -u --no_ublk_fixed_fd & +ublk_io_and_kill_daemon 256M -t loop -q 4 -u --no_ublk_fixed_fd "${UBLK_BA= CKFILES[0]}" & +ublk_io_and_kill_daemon 256M -t stripe -q 4 -u "${UBLK_BACKFILES[1]}" "${U= BLK_BACKFILES[2]}" & +wait + +ublk_io_and_kill_daemon 8G -t null -q 4 -u --nthreads 8 --per_io_tasks & +ublk_io_and_kill_daemon 256M -t loop -q 4 -u --nthreads 8 --per_io_tasks "= ${UBLK_BACKFILES[0]}" & +ublk_io_and_kill_daemon 256M -t stripe -q 4 -u --nthreads 8 --per_io_tasks= "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" & +wait + +_cleanup_test "stress" +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_stripe_05.sh b/tools/testing= /selftests/ublk/test_stripe_05.sh new file mode 100755 index 000000000000..05d71951d710 --- /dev/null +++ b/tools/testing/selftests/ublk/test_stripe_05.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"stripe_05" +ERR_CODE=3D0 + +if ! _have_program fio; then + exit "$UBLK_SKIP_CODE" +fi + +_prep_test "stripe" "write and verify test on user copy" + +_create_backfile 0 256M +_create_backfile 1 256M + +dev_id=3D$(_add_ublk_dev -t stripe -q 2 -u "${UBLK_BACKFILES[0]}" "${UBLK_= BACKFILES[1]}") +_check_add_dev $TID $? + +# run fio over the ublk disk +_run_fio_verify_io --filename=3D/dev/ublkb"${dev_id}" --size=3D512M +ERR_CODE=3D$? + +_cleanup_test "stripe" +_show_result $TID $ERR_CODE diff --git a/tools/testing/selftests/ublk/test_stripe_06.sh b/tools/testing= /selftests/ublk/test_stripe_06.sh new file mode 100755 index 000000000000..d06cac7626e2 --- /dev/null +++ b/tools/testing/selftests/ublk/test_stripe_06.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh + +TID=3D"stripe_06" +ERR_CODE=3D0 + +_prep_test "stripe" "mkfs & mount & umount on user copy" + +_create_backfile 0 256M +_create_backfile 1 256M + +dev_id=3D$(_add_ublk_dev -t stripe -u -q 2 "${UBLK_BACKFILES[0]}" "${UBLK_= BACKFILES[1]}") +_check_add_dev $TID $? + +_mkfs_mount_test /dev/ublkb"${dev_id}" +ERR_CODE=3D$? + +_cleanup_test "stripe" +_show_result $TID $ERR_CODE --=20 2.45.2