From nobody Mon Mar 13 13:53:37 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PZymd6mTwz3xl1j; Mon, 13 Mar 2023 13:53:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PZymd650mz3tL4; Mon, 13 Mar 2023 13:53:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1678715617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eeJJyLycVDT13XdOZ6yii7af7HfhJ2lJ9mfXrWsQKrg=; b=AlwZN+D+qHetZliu2Sz3+5ps9JqCE70JLbAf3K6TvRpftvF0hyh/dFZ22grLLGdS92y0X5 a9L2j7MOUaGhptVXlqw7pgoDbfvDem6EHaq/FSFhlss6v91vmCuG/iaMenyfIeAYErCOII 7ZVJz/bQYx72Je9M+erWOfhlJ6amdBHpqEkk0aC0wkhSicqBr8VVbqR9xkuWC9gKRKBXZZ Ah7Ku+leJy0s8suXxupybvLw8d3ILGm6e0yWT5vnue/5JCN+Fk0LWe2DmRU2TBPyP6QyXa V8FPRlYStnDQWQQWvgnBm6Bli2RHwffG+G/IcvbNkaw8fZp0YS0XzLTK6mlZ4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1678715617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eeJJyLycVDT13XdOZ6yii7af7HfhJ2lJ9mfXrWsQKrg=; b=oWPe2+GLOCSgp1+I8KPIaQ9nNhmKuSRriqKrSfERBRGmEBr8l2c76lg/sWjARuKJd2TiND +k46IOCsKXUCvvxqAusWTTxH+ec7P3m8ZkChUm3JNMfMcgw68jiIa8RbUKf8hl+4hVJFh9 K+BCvhDwbuOYfa0GhjCkEvNb04Eh1bYIfiIbpGKw1KquPCuN8IsV1kbthgVwEiraX5zT20 Usntq1P5O0Lf1mksw0yZzS9iWOj7ppmXh9nbrXNT6vKOFnwoa+zYkSWhiY60ZSq1Qg5g+c ZnLrRYo56e2yfWF+t20ZeB6F+hUJaI3kiit4KQSmzNvJ78M1I6FTuqZSXYFgMQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1678715617; a=rsa-sha256; cv=none; b=GUJ7OHeoO2aJYZthuNLroKkMt+8+i+4fZdXbDhvGUy3aLCAs9gfgdKjb7X7iSnaDDU7P4a qTsES/4bhNU+EIXsSxZsZp+QJibHYQGy/8F/iPF4Z1qvP5CvF+/TkTun1LcQjNr1e99m47 2KSLwHYLX7MkHM+SAzySpfp6QTSYwVI+Dj61tKPxUlAlzjsQhyJOK19tdozPzbmFiK2jse swI23B470ftkYnH+Ebsw9GSCY1ldSmRBb3oFl3lZ8BZw0PAiHWj7PbwtSgo0scOkQ5fa59 xcPy1XbIvp2BvSwhMVT/dKSnglTY4eEzOsXYzP97jXndwe9VPc9iNESrnDM1jg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PZymd5BfBzvpM; Mon, 13 Mar 2023 13:53:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 32DDrbNC042872; Mon, 13 Mar 2023 13:53:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32DDrbom042871; Mon, 13 Mar 2023 13:53:37 GMT (envelope-from git) Date: Mon, 13 Mar 2023 13:53:37 GMT Message-Id: <202303131353.32DDrbom042871@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: de0b02cb7b11 - stable/13 - nvmecontrol: Fix default ns create parameters. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: de0b02cb7b112947191af96dd34e7a95b760019c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=de0b02cb7b112947191af96dd34e7a95b760019c commit de0b02cb7b112947191af96dd34e7a95b760019c Author: Alexander Motin AuthorDate: 2023-03-09 15:19:00 +0000 Commit: Alexander Motin CommitDate: 2023-03-13 13:53:03 +0000 nvmecontrol: Fix default ns create parameters. Instead of passing 0xff's for all unset parameters, prefer reasonable defaults. It is much easier to use it this was without specs in hand. PR: 269912 (cherry picked from commit 20dc2c4d11ddaa980c491116b65c51ab522028e9) --- sbin/nvmecontrol/ns.c | 56 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/sbin/nvmecontrol/ns.c b/sbin/nvmecontrol/ns.c index 763c12aa11af..040918caf9c5 100644 --- a/sbin/nvmecontrol/ns.c +++ b/sbin/nvmecontrol/ns.c @@ -577,30 +577,48 @@ nscreate(const struct cmd *f, int argc, char *argv[]) NVME_CTRLR_DATA_OACS_NSMGMT_MASK) == 0) errx(EX_UNAVAILABLE, "controller does not support namespace management"); - /* Allow namespaces sharing if Multi-Path I/O is supported. */ - if (create_opt.nmic == NONE) { - create_opt.nmic = cd.mic ? (NVME_NS_DATA_NMIC_MAY_BE_SHARED_MASK << - NVME_NS_DATA_NMIC_MAY_BE_SHARED_SHIFT) : 0; - } - memset(&nsdata, 0, sizeof(nsdata)); nsdata.nsze = create_opt.nsze; nsdata.ncap = create_opt.cap; - if (create_opt.flbas == NONE) - nsdata.flbas = ((create_opt.lbaf & NVME_NS_DATA_FLBAS_FORMAT_MASK) - << NVME_NS_DATA_FLBAS_FORMAT_SHIFT) | - ((create_opt.mset & NVME_NS_DATA_FLBAS_EXTENDED_MASK) - << NVME_NS_DATA_FLBAS_EXTENDED_SHIFT); - else + if (create_opt.flbas != NONE) { nsdata.flbas = create_opt.flbas; - if (create_opt.dps == NONE) - nsdata.dps = ((create_opt.pi & NVME_NS_DATA_DPS_MD_START_MASK) - << NVME_NS_DATA_DPS_MD_START_SHIFT) | - ((create_opt.pil & NVME_NS_DATA_DPS_PIT_MASK) - << NVME_NS_DATA_DPS_PIT_SHIFT); - else + } else { + /* Default to the first format, whatever it is. */ + nsdata.flbas = 0; + if (create_opt.lbaf != NONE) { + nsdata.flbas |= (create_opt.lbaf & + NVME_NS_DATA_FLBAS_FORMAT_MASK) + << NVME_NS_DATA_FLBAS_FORMAT_SHIFT; + } + if (create_opt.mset != NONE) { + nsdata.flbas |= (create_opt.mset & + NVME_NS_DATA_FLBAS_EXTENDED_MASK) + << NVME_NS_DATA_FLBAS_EXTENDED_SHIFT; + } + } + if (create_opt.dps != NONE) { nsdata.dps = create_opt.dps; - nsdata.nmic = create_opt.nmic; + } else { + /* Default to protection disabled. */ + nsdata.dps = 0; + if (create_opt.pi != NONE) { + nsdata.dps |= (create_opt.pi & + NVME_NS_DATA_DPS_MD_START_MASK) + << NVME_NS_DATA_DPS_MD_START_SHIFT; + } + if (create_opt.pil != NONE) { + nsdata.dps |= (create_opt.pil & + NVME_NS_DATA_DPS_PIT_MASK) + << NVME_NS_DATA_DPS_PIT_SHIFT; + } + } + if (create_opt.nmic != NONE) { + nsdata.nmic = create_opt.nmic; + } else { + /* Allow namespaces sharing if Multi-Path I/O is supported. */ + nsdata.nmic = cd.mic ? (NVME_NS_DATA_NMIC_MAY_BE_SHARED_MASK << + NVME_NS_DATA_NMIC_MAY_BE_SHARED_SHIFT) : 0; + } nvme_namespace_data_swapbytes(&nsdata); memset(&pt, 0, sizeof(pt));