From patchwork Tue Sep 29 23:19:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Klaus Jensen X-Patchwork-Id: 11807359 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 79A32139A for ; Tue, 29 Sep 2020 23:22:06 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1491A20773 for ; Tue, 29 Sep 2020 23:22:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1491A20773 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=irrelevant.dk Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:46272 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kNOwe-0002UE-Fn for patchwork-qemu-devel@patchwork.kernel.org; Tue, 29 Sep 2020 19:22:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kNOu7-0000UM-DB; Tue, 29 Sep 2020 19:19:27 -0400 Received: from wnew2-smtp.messagingengine.com ([64.147.123.27]:41317) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kNOu5-00007o-6A; Tue, 29 Sep 2020 19:19:27 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.west.internal (Postfix) with ESMTP id 45583F11; Tue, 29 Sep 2020 19:19:22 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 29 Sep 2020 19:19:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=from:to:cc:subject:date:message-id:mime-version:content-type :content-transfer-encoding; s=fm1; bh=E+sX1lwObBdNstk9+Ral8pxNrm qIX63dHpQucV76Wyc=; b=fwCZYYwxzCjMQhVHJA640FOKo2xgRnNM7mIXFyhKhq MfpSL9Lzb3wbm6CYjMS0irr2/X2148WEaARlRKDg0MrKg7inD3HP9MBFBhXmf0pw 9EBmtp7XuB4YEL8GWJ14rdBICSJaih/1cICKB4SwBtstdI/kE75h+EdeAF03GStO 54sRoH3NPpDVUjJpjVfIjh4PPQoIsuy33P3z2RhScvw87kgvICBxUuV61mMvM+3S 4hqv0cBT2qNsNSwlJs6zhQdIXtnJcHi/tSAlD4SBAAPCTPDkSbM0GsQztKoioI8s PZ3JdbtYkXTzkNIi7WJ8JWwzw1Z5O90KKl2aoJPZHFZA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=E+sX1l wObBdNstk9+Ral8pxNrmqIX63dHpQucV76Wyc=; b=dYqLw4Thi4mg9R4y9steA4 I0Mkr13WIsSkbR9PaG/gcqGy125zfUfxPap4lpC/IRJr1Wub6TeRATnqnBsOYdeg exPC8LZN/QbCBSlJf72AFCKe9Z3xKTHEmg0LDMY8l/CXtQTzJjRfhtR54T1HeJWA jibFbq0y2X9xQAcH7hH6Q4p3r4RQEnxWm3OQMdkWd6jvWFvQKg+WVeothy+5dmM7 3zgq4s0YbYoLPjpBFTBNZ0GSbKYDZihVta/2dc3A9WN0BjfwncPE38a57rVmQ/+7 UkfeJ3ifdbFBJWGe9kCaQpxPdKzemVmTDlbcOoTRu5ypiDscxRwQPEdgQr2Lz/DA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrfedtgddujecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofggtgfgsehtqhertdertdejnecuhfhrohhmpefmlhgruhhsucfl vghnshgvnhcuoehithhssehirhhrvghlvghvrghnthdrughkqeenucggtffrrghtthgvrh hnpeefudehfedugffhuddttefffeeluedttdetgfduleduuddugfeuhfelueeuuefggfen ucfkphepkedtrdduieejrdelkedrudeltdenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpehithhssehirhhrvghlvghvrghnthdrughk X-ME-Proxy: Received: from apples.local (80-167-98-190-cable.dk.customer.tdc.net [80.167.98.190]) by mail.messagingengine.com (Postfix) with ESMTPA id 2033A3280063; Tue, 29 Sep 2020 19:19:19 -0400 (EDT) From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v2 00/14] hw/block/nvme: zoned namespace command set Date: Wed, 30 Sep 2020 01:19:03 +0200 Message-Id: <20200929231917.433586-1-its@irrelevant.dk> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Received-SPF: pass client-ip=64.147.123.27; envelope-from=its@irrelevant.dk; helo=wnew2-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/29 17:46:07 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Klaus Jensen Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Klaus Jensen So, things escalated a bit. I'm removing the old cover letter. I don't think we need it anymore - you all know the reason I keep posting versions of this implementation ;) Based-on: <20200922084533.1273962-1-its@irrelevant.dk> Changes for v2 ~~~~~~~~~~~~~~ * "hw/block/nvme: add support for dulbe and block utilization tracking" - Factor out pstate init/load into separate functions. - Fixed a stupid off-by-1 bug that would trigger when resetting the last zone. - I added a more formalized pstate file format that includes a header. This is pretty similar to what is done in Dmitry's series, but with fewer fields. The device parameters for nvme-ns are still the "authoritative" ones, so if any parameters that influence LBA size, number of zones, etc. do not match, an error indicating the discrepancy will be produced. IIRC, Dmitry's version does the same. It is set up such that newer versions can load pstate files from older versions. The file format header is not unlike a standard nvme datastructure with reserved areas. This means that when adding new command sets that require persistent state, it is not needed to bump the version number, unless the header has to change dramatically. This is demonstrated when the zoned namespace command set support is added in "hw/block/nvme: add basic read/write for zoned namespaces". * "hw/block/nvme: add basic read/write for zoned namespaces" - The device will now transition all opened zones to Closed on "normal shutdown". You can force the "transition to Full" behavior by killing QEMU from the monitor. * "hw/block/nvme: add the zone append command" - Slightly reordered the logic so a LBA Out of Range error is returned before Invalid Field in Command for normal read/write commands. * "hw/block/nvme: support zone active excursions" - Dropped. Optional and non-critical. * "hw/block/nvme: support reset/finish recommended limits" - Dropped. Optional and non-critical. Gollu Appalanaidu (1): hw/block/nvme: add commands supported and effects log page Klaus Jensen (13): hw/block/nvme: add nsid to get/setfeat trace events hw/block/nvme: add trace event for requests with non-zero status code hw/block/nvme: make lba data size configurable hw/block/nvme: reject io commands if only admin command set selected hw/block/nvme: consolidate read, write and write zeroes hw/block/nvme: add support for dulbe and block utilization tracking hw/block/nvme: support namespace types hw/block/nvme: add basic read/write for zoned namespaces hw/block/nvme: add the zone management receive command hw/block/nvme: add the zone management send command hw/block/nvme: add the zone append command hw/block/nvme: track and enforce zone resources hw/block/nvme: allow open to close transitions by controller docs/specs/nvme.txt | 47 +- hw/block/nvme-ns.h | 180 ++++- hw/block/nvme.h | 22 + include/block/nvme.h | 230 +++++- block/nvme.c | 4 +- hw/block/nvme-ns.c | 456 +++++++++++- hw/block/nvme.c | 1560 +++++++++++++++++++++++++++++++++++++++-- hw/block/trace-events | 42 +- 8 files changed, 2443 insertions(+), 98 deletions(-)