Lines Matching +full:storage +full:- +full:target
2 # SPDX-License-Identifier: BSD-3-Clause
6 # Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
36 parser.add_argument('-s', dest='server_addr',
38 parser.add_argument('-p', dest='port',
41 parser.add_argument('-t', dest='timeout',
44 parser.add_argument('-r', dest='conn_retries',
47 parser.add_argument('-v', dest='verbose', action='store_const', const="INFO",
49 parser.add_argument('--verbose', dest='verbose', choices=['DEBUG', 'INFO', 'ERROR'],
51 parser.add_argument('--dry-run', dest='dry_run', action='store_true', help="Display request and exit")
53 parser.add_argument('--go-client', dest='go_client', action='store_true', help="Use Go client")
55 parser.add_argument('--server', dest='is_server', action='store_true',
58 **STATUS=0 if the command succeeded or **STATUS=1 if it failed. --server is meant \
63 parser.add_argument('--plugin', dest='rpc_plugin', help='Module name of plugin with additional RPC commands')
84 p.add_argument('-c', '--current', help='Get list of RPC methods only callable in the current state.', action='store_true')
85 p.add_argument('-i', '--include-aliases', help='include RPC aliases', action='store_true')
102 p.add_argument('-i', '--indent', help="""Indent level. Value less than 0 mean compact mode. Default indent level is 2.
104 p.add_argument('-s', '--subsystems', help="""Comma-separated list of subsystems (and their dependencies) to save""")
112 p.add_argument('-i', '--include-aliases', help='include RPC aliases', action='store_true')
113 p.add_argument('-j', '--json-conf', help='Valid JSON configuration', default=sys.stdin)
124 p.add_argument('-i', '--indent', help="""Indent level. Value less than 0 mean compact mode. Default indent level is 2.
126 p.add_argument('-n', '--name', help='Name of subsystem', required=True)
134 p.add_argument('-j', '--json-conf', help='Valid JSON configuration', default=sys.stdin)
157 p.add_argument('-e', '--enable', action='store_true', help='Enable context switch monitoring')
158 p.add_argument('-d', '--disable', action='store_true', help='Disable context switch monitoring')
180 p.add_argument('-p', '--period', help="Scheduler period in microseconds", type=int)
181 p.add_argument('--load-limit', help="Scheduler load limit. Reserved for dynamic scheduler", type=int)
182 p.add_argument('--core-limit', help="Scheduler core limit. Reserved for dynamic scheduler", type=int)
183 p.add_argument('--core-busy', help="Scheduler core busy limit. Reserved for dynamic scheduler", type=int)
184 p.add_argument('--mappings', help="Comma-separated list of thread:core mappings. Reserved for static scheduler")
206 p.add_argument('-i', '--isolated-core-mask', help="Mask of CPU cores to isolate from scheduling change", type=str)
207 p.add_argument('-s', '--scheduling-core', help="Scheduler scheduling core. Idle threads will move to scheduling core."
236 p.add_argument('-p', '--bdev-io-pool-size', help='Number of bdev_io structures in shared buffer pool', type=int)
237 p.add_argument('-c', '--bdev-io-cache-size', help='Maximum number of bdev_io structures cached per thread', type=int)
239 group.add_argument('-e', '--enable-auto-examine', dest='bdev_auto_examine', help='Allow to auto examine', action='store_true')
240 group.add_argument('-d', '--disable-auto-examine', dest='bdev_auto_examine', help='Not allow to auto examine', action='store_false')
241 p.add_argument('--iobuf-small-cache-size', help='Size of the small iobuf per thread cache', type=int)
242 p.add_argument('--iobuf-large-cache-size', help='Size of the large iobuf per thread cache', type=int)
252 p.add_argument('-b', '--name', help='Name or alias of the bdev')
271 p.add_argument('-b', '--base-bdev-name', help="Name of the base bdev", required=True)
272 p.add_argument('-p', '--pm-path', help="Path to persistent memory", required=True)
273 p.add_argument('-l', '--lb-size', help="Compressed vol logical block size (optional, if used must be 512 or 4096)", type=int)
274 p.add_argument('-c', '--comp-algo', help='Compression algorithm, (deflate, lz4). Default is deflate')
275 p.add_argument('-L', '--comp-level',
295 p.add_argument('-b', '--name', help="Name of a comp bdev. Example: COMP_Nvme0n1")
310 p.add_argument('-p', '--crypto-pmd', help="Name of the crypto device driver. Obsolete, see dpdk_cryptodev_set_driver")
311 p.add_argument('-k', '--key', help="Key. Obsolete, see accel_crypto_key_create")
312 p.add_argument('-c', '--cipher', help="cipher to use. Obsolete, see accel_crypto_key_create")
313 p.add_argument('-k2', '--key2', help="2nd key for cipher AES_XTS. Obsolete, see accel_crypto_key_create", default=None)
314 p.add_argument('-n', '--key-name', help="Key name to use, see accel_crypto_key_create")
336 '--cache-line-size',
393 p.add_argument('-t', '--threshold', type=int,
395 p.add_argument('-c', '--promotion-count', type=int,
397 p.add_argument('-p', '--policy', choices=['always', 'full', 'never'], required=True,
430 p.add_argument('-b', '--name', help="Name of the bdev")
431 p.add_argument('-u', '--uuid', help="UUID of the bdev (optional)")
435 p.add_argument('-p', '--physical-block-size', help='Physical block size for this bdev.', type=int)
436 p.add_argument('-o', '--optimal-io-boundary', help="""Split on optimal IO boundary, in number of
438 p.add_argument('-m', '--md-size', type=int,
440 p.add_argument('-i', '--md-interleave', action='store_true',
442 p.add_argument('-t', '--dif-type', type=int, choices=[0, 1, 2, 3],
443 help='Protection information type. Parameter --md-size needs'
444 'to be set along --dif-type. Default=0 - no protection.')
445 p.add_argument('-d', '--dif-is-head-of-md', action='store_true',
447 p.add_argument('-f', '--dif-pi-format', type=int, choices=[0, 1, 2],
448 help='Protection infromation format. Parameter --dif-type needs to be set together.'
463 print("ERROR: --md-size must be > 0 when --dif-type is > 0")
478 p.add_argument('-u', '--uuid', help='UUID of the bdev (optional)')
481 p.add_argument('-p', '--physical-block-size', help='Physical block size for this bdev.', type=int)
482 p.add_argument('-m', '--md-size', type=int,
484 p.add_argument('-t', '--dif-type', type=int, choices=[0, 1, 2, 3],
485 help='Protection information type. Parameter --md-size needs'
486 'to be set along --dif-type. Default=0 - no protection.')
487 p.add_argument('-d', '--dif-is-head-of-md', action='store_true',
489 p.add_argument('-f', '--dif-pi-format', type=int, choices=[0, 1, 2],
490 help='Protection infromation format. Parameter --dif-type needs to be set together.'
526 p.add_argument("-r", "--readonly", action='store_true', help='Set this bdev as read-only')
527 p.add_argument("--fallocate", action='store_true', help='Support unmap/writezeros by fallocate')
528 p.add_argument('-u', '--uuid', help="UUID of the bdev (optional)")
558 p.add_argument('-u', '--uuid', help="UUID of the bdev")
588 p.add_argument('-c', '--conserve-cpu', action='store_true', help='Whether or not to conserve CPU when polling')
634 p.add_argument('-a', '--action-on-timeout',
636 p.add_argument('-t', '--timeout-us',
638 p.add_argument('--timeout-admin-us',
640 p.add_argument('-k', '--keep-alive-timeout-ms',
641 help="Keep alive timeout period in millisecond. If 0, disable keep-alive.", type=int)
642 p.add_argument('--arbitration-burst',
644 p.add_argument('--low-priority-weight',
646 p.add_argument('--medium-priority-weight',
648 p.add_argument('--high-priority-weight',
650 p.add_argument('-p', '--nvme-adminq-poll-period-us',
652 p.add_argument('-i', '--nvme-ioq-poll-period-us',
654 p.add_argument('-s', '--io-queue-requests',
656 p.add_argument('-d', '--disable-delay-cmd-submit',
659 p.add_argument('-c', '--transport-retry-count',
661 p.add_argument('-r', '--bdev-retry-count',
662 help='the number of attempts per I/O in the bdev layer when an I/O fails. -1 means infinite retries.', type=int)
663 p.add_argument('-e', '--transport-ack-timeout',
665 Range 0-31 where 0 is driver-specific default value.""", type=int)
666 p.add_argument('-l', '--ctrlr-loss-timeout-sec',
668 -1 means infinite reconnect retries. 0 means no reconnect retry.
670 If reconnect_delay_sec is non-zero, ctrlr_loss_timeout_sec has to be -1 or not less than
674 p.add_argument('-o', '--reconnect-delay-sec',
677 If ctrlr_loss_timeout_sec is -1, reconnect_delay_sec has to be non-zero.
678 If ctrlr_loss_timeout_sec is not -1 or zero, reconnect_delay_sec has to be non-zero and
682 p.add_argument('-u', '--fast-io-fail-timeout-sec',
686 less than ctrlr_loss_timeout_sec if ctrlr_loss_timeout_sec is not -1.
689 p.add_argument('-f', '--disable-auto-failback',
693 p.add_argument('--generate-uuids',
697 p.add_argument('--transport-tos',
700 p.add_argument('-m', '--nvme-error-stat', help="Enable collecting NVMe error counts.", action='store_true')
701 p.add_argument('-q', '--rdma-srq-size',
703 p.add_argument('--io-path-stat',
706 p.add_argument('--allow-accel-sequence',
709 p.add_argument('--rdma-max-cq-size',
711 p.add_argument('--rdma-cm-event-timeout-ms',
713 p.add_argument('--dhchap-digests', help='Comma-separated list of allowed DH-HMAC-CHAP digests',
715 p.add_argument('--dhchap-dhgroups', help='Comma-separated list of allowed DH-HMAC-CHAP DH groups',
717 p.add_argument('--enable-rdma-umr-per-io',
718 help='''Enable scatter-gather RDMA Memory Region per IO if supported by the system.''',
720 p.add_argument('--disable-rdma-umr-per-io',
721 help='''Disable scatter-gather RDMA Memory Region per IO.''',
730 p.add_argument('-d', '--disable', dest='enable', default=False, action='store_false', help="Disable hotplug (default)")
731 p.add_argument('-e', '--enable', dest='enable', action='store_true', help="Enable hotplug")
732 p.add_argument('-r', '--period-us',
765 p.add_argument('-b', '--name', help="Name of the NVMe controller, prefix for each bdev name", required=True)
766 p.add_argument('-t', '--trtype',
767 help='NVMe-oF target trtype: e.g., rdma, pcie', required=True)
768 p.add_argument('-a', '--traddr',
769 help='NVMe-oF target address: e.g., an ip address or BDF', required=True)
770 p.add_argument('-f', '--adrfam',
771 help='NVMe-oF target adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
772 p.add_argument('-s', '--trsvcid',
773 help='NVMe-oF target trsvcid: e.g., a port number')
774 p.add_argument('-p', '--priority',
775 help='NVMe-oF connection priority: e.g., a priority number')
776 p.add_argument('-n', '--subnqn', help='NVMe-oF target subnqn')
777 p.add_argument('-q', '--hostnqn', help='NVMe-oF host subnqn')
778 p.add_argument('-i', '--hostaddr',
779 help='NVMe-oF host address: e.g., an ip address')
780 p.add_argument('-c', '--hostsvcid',
781 help='NVMe-oF host svcid: e.g., a port number')
782 p.add_argument('-r', '--prchk-reftag',
784 p.add_argument('-g', '--prchk-guard',
786 p.add_argument('-e', '--hdgst',
788 p.add_argument('-d', '--ddgst',
790 p.add_argument('--fabrics-timeout', type=int, help='Fabrics connect timeout in microseconds',
792 p.add_argument('-x', '--multipath', help='Set multipath behavior (disable, failover, multipath)')
793 p.add_argument('--num-io-queues', type=int, help='Set the number of IO queues to request during initialization.')
794 p.add_argument('-l', '--ctrlr-loss-timeout-sec',
796 -1 means infinite reconnect retries. 0 means no reconnect retry.
798 If reconnect_delay_sec is non-zero, ctrlr_loss_timeout_sec has to be -1 or not less than
801 p.add_argument('-o', '--reconnect-delay-sec',
804 If ctrlr_loss_timeout_sec is -1, reconnect_delay_sec has to be non-zero.
805 If ctrlr_loss_timeout_sec is not -1 or zero, reconnect_delay_sec has to be non-zero and
808 p.add_argument('-u', '--fast-io-fail-timeout-sec',
812 less than ctrlr_loss_timeout_sec if ctrlr_loss_timeout_sec is not -1.""",
814 p.add_argument('-k', '--psk',
818 p.add_argument('-m', '--max-bdevs', type=int,
820 p.add_argument('--dhchap-key', help='DH-HMAC-CHAP key name')
821 p.add_argument('--dhchap-ctrlr-key', help='DH-HMAC-CHAP controller key name')
822 p.add_argument('-U', '--allow-unrecognized-csi', help="""Allow attaching namespaces with unrecognized command set identifiers.
833 p.add_argument('-n', '--name', help="Name of the NVMe controller. Example: Nvme0")
850 p.add_argument('-t', '--trtype',
851 help='NVMe-oF target trtype: e.g., rdma, pcie')
852 p.add_argument('-a', '--traddr',
853 help='NVMe-oF target address: e.g., an ip address or BDF')
854 p.add_argument('-f', '--adrfam',
855 help='NVMe-oF target adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
856 p.add_argument('-s', '--trsvcid',
857 help='NVMe-oF target trsvcid: e.g., a port number')
858 p.add_argument('-n', '--subnqn', help='NVMe-oF target subnqn')
859 p.add_argument('-i', '--hostaddr',
860 help='NVMe-oF host address: e.g., an ip address')
861 p.add_argument('-c', '--hostsvcid',
862 help='NVMe-oF host svcid: e.g., a port number')
873 p.add_argument('-c', '--cntlid', help="NVMe controller ID", type=int)
884 p.add_argument('-c', '--cntlid', help="NVMe controller ID", type=int)
895 p.add_argument('-c', '--cntlid', help="NVMe controller ID", type=int)
913 p.add_argument('-b', '--name', help="Name of the NVMe controller prefix for each bdev name", required=True)
914 p.add_argument('-t', '--trtype',
915 help='NVMe-oF target trtype: e.g., rdma, pcie', required=True)
916 p.add_argument('-a', '--traddr',
917 help='NVMe-oF target address: e.g., an ip address or BDF', required=True)
918 p.add_argument('-f', '--adrfam',
919 help='NVMe-oF target adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
920 p.add_argument('-s', '--trsvcid',
921 help='NVMe-oF target trsvcid: e.g., a port number')
922 p.add_argument('-q', '--hostnqn', help='NVMe-oF host subnqn')
923 p.add_argument('-w', '--wait-for-attach', action='store_true',
925 p.add_argument('-T', '--attach-timeout-ms', type=int,
928 selects the --wait-for-attach option.""")
929 p.add_argument('-l', '--ctrlr-loss-timeout-sec',
931 -1 means infinite reconnect retries. 0 means no reconnect retry.
933 If reconnect_delay_sec is non-zero, ctrlr_loss_timeout_sec has to be -1 or not less than
936 p.add_argument('-o', '--reconnect-delay-sec',
939 If ctrlr_loss_timeout_sec is -1, reconnect_delay_sec has to be non-zero.
940 If ctrlr_loss_timeout_sec is not -1 or zero, reconnect_delay_sec has to be non-zero and
943 p.add_argument('-u', '--fast-io-fail-timeout-sec',
947 less than ctrlr_loss_timeout_sec if ctrlr_loss_timeout_sec is not -1.""",
955 p.add_argument('-b', '--name', help="Name of the service to stop", required=True)
968 p.add_argument('-n', '--name', help="Name of the NVMe bdev")
978 p.add_argument('-b', '--name', help='Name of the NVMe bdev', required=True)
979 p.add_argument('-c', '--cntlid', help='NVMe-oF controller ID', type=int, required=True)
991 p.add_argument('-b', '--name', help='Name of the NVMe bdev', required=True)
992 p.add_argument('-p', '--policy', help='Multipath policy (active_passive or active_active)', required=True)
993 p.add_argument('-s', '--selector', help='Multipath selector (round_robin, queue_depth)')
994 p.add_argument('-r', '--rr-min-io',
995 help='Number of IO to route to a path before switching to another for round-robin',
1006 p.add_argument('-b', '--name', help="Name of the Blockdev. Example: NVMe0n1", required=True)
1015 p.add_argument('-n', '--name',
1025 p.add_argument('-n', '--name',
1033 help='Set DH-HMAC-CHAP keys and force (re)authentication on all '
1036 p.add_argument('--dhchap-key', help='DH-HMAC-CHAP key name')
1037 p.add_argument('--dhchap-ctrlr-key', help='DH-HMAC-CHAP controller key name')
1049 p.add_argument('-b', '--name', help="Name of the zone device", required=True)
1050 p.add_argument('-n', '--base-bdev', help='Name of underlying, non-zoned bdev', required=True)
1051 p.add_argument('-z', '--zone-capacity', help='Surfaced zone capacity in blocks', type=int, required=True)
1052 p.add_argument('-o', '--optimal-open-zones', help='Number of zones required to reach optimal write speed', type=int, required=True)
1070 raise Exception('--config %s not in key=value form' % entry)
1083 p.add_argument('--user', help="Ceph user name (i.e. admin, not client.admin)")
1084 p.add_argument('--config-param', action='append', metavar='key=value',
1086 p.add_argument('--config-file', help="The file path of the Rados configuration file")
1087 p.add_argument('--key-file', help="The file path of the Rados keyring file")
1088 p.add_argument('--core-mask', help="Set core mask for librbd IO context threads")
1104 p.add_argument('-b', '--name', help="Name of the registered Rados Cluster Name. Example: Cluster1")
1114 raise Exception('--config %s not in key=value form' % entry)
1127 p.add_argument('-b', '--name', help="Name of the bdev")
1128 p.add_argument('--user', help="Ceph user name (i.e. admin, not client.admin)")
1129 p.add_argument('--config', action='append', metavar='key=value',
1134 p.add_argument('-c', '--cluster-name', help="cluster name to identify the Rados cluster")
1135 p.add_argument('-u', '--uuid', help="UUID of the bdev")
1169 p.add_argument('-b', '--base-bdev-name', help="Name of the existing bdev", required=True)
1170 p.add_argument('-d', '--name', help="Name of the delay bdev", required=True)
1171 p.add_argument('-u', '--uuid', help='UUID of the bdev (optional)')
1172 p.add_argument('-r', '--avg-read-latency',
1174 p.add_argument('-t', '--nine-nine-read-latency',
1176 p.add_argument('-w', '--avg-write-latency',
1178 p.add_argument('-n', '--nine-nine-write-latency',
1209 p.add_argument('--uuid', help='UUID for this bdev')
1225 p.add_argument('-t', '--timeout-sec', help="Timeout for command, in seconds, if 0, don't track timeout.", type=int)
1236 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
1237 p.add_argument('-i', '--initiator-iqn', help="Initiator IQN", required=True)
1238 p.add_argument('--url', help="iSCSI Lun URL", required=True)
1256 p.add_argument('-b', '--base-bdev-name', help="Name of the existing bdev", required=True)
1257 p.add_argument('-p', '--name', help="Name of the pass through bdev", required=True)
1258 p.add_argument('-u', '--uuid', help="UUID of the bdev")
1275 p.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1")
1276 p.add_argument('-t', '--timeout-ms', help="""Time in ms to wait for the bdev to appear (only used
1277 with the -b|--name option). The default timeout is 0, meaning the RPC returns immediately
1290 p.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1")
1291 p.add_argument('-c', '--per-channel', default=False, dest='per_channel', help='Display per channel IO stats for specified device',
1293 p.add_argument('--reset-mode', help="Mode to reset I/O statistics after getting", choices=['all', 'maxmin', 'none'])
1301 p.add_argument('-b', '--name', help="Name of the Blockdev. Example: Nvme0n1")
1302 p.add_argument('-m', '--mode', help="Mode to reset I/O statistics", choices=['all', 'maxmin', 'none'])
1310 p.add_argument('-e', '--enable', default=True, dest='enable', action='store_true', help='Enable histograms on specified device')
1311 p.add_argument('-d', '--disable', dest='enable', action='store_false', help='Disable histograms on specified device')
1312 p.add_argument('-o', '--opc', help='Enable histogram for specified io type. Defaults to all io types if not specified.'
1349 p.add_argument('--rw-ios-per-sec',
1352 p.add_argument('--rw-mbytes-per-sec',
1355 p.add_argument('--r-mbytes-per-sec',
1358 p.add_argument('--w-mbytes-per-sec',
1378 '-n', '--num', help='the number of commands you want to fail', type=int)
1380 '-q', '--queue-depth', help='the queue depth at which to trigger the error', type=int)
1382 '-o', '--corrupt-offset', help='the offset in bytes to xor with corrupt_value', type=int)
1384 '-v', '--corrupt-value', help='the value for xor (1-255, 0 is invalid)', type=int)
1410 p.add_argument('-c', '--name', help="Name of the NVMe bdev controller. Example: Nvme0", required=True)
1442 p.add_argument('-f', '--auth-file', help='Path to CHAP shared secret file')
1443 p.add_argument('-b', '--node-base', help='Prefix of the name of iSCSI target node')
1444 p.add_argument('-o', '--nop-timeout', help='Timeout in seconds to nop-in request to the initiator', type=int)
1445 p.add_argument('-n', '--nop-in-interval', help='Time interval in secs between nop-in requests by the target', type=int)
1446 p.add_argument('-d', '--disable-chap', help="""CHAP for discovery session should be disabled.
1447 *** Mutually exclusive with --require-chap""", action='store_true')
1448 p.add_argument('-r', '--require-chap', help="""CHAP for discovery session should be required.
1449 *** Mutually exclusive with --disable-chap""", action='store_true')
1450 p.add_argument('-m', '--mutual-chap', help='CHAP for discovery session should be mutual', action='store_true')
1451 p.add_argument('-g', '--chap-group', help="""Authentication group ID for discovery session.
1453 p.add_argument('-a', '--max-sessions', help='Maximum number of sessions in the host.', type=int)
1454 p.add_argument('-q', '--max-queue-depth', help='Max number of outstanding I/Os per queue.', type=int)
1455 p.add_argument('-c', '--max-connections-per-session', help='Negotiated parameter, MaxConnections.', type=int)
1456 p.add_argument('-w', '--default-time2wait', help='Negotiated parameter, DefaultTime2Wait.', type=int)
1457 p.add_argument('-v', '--default-time2retain', help='Negotiated parameter, DefaultTime2Retain.', type=int)
1458 p.add_argument('-s', '--first-burst-length', help='Negotiated parameter, FirstBurstLength.', type=int)
1459 p.add_argument('-i', '--immediate-data', help='Negotiated parameter, ImmediateData.', action='store_true')
1460 p.add_argument('-l', '--error-recovery-level', help='Negotiated parameter, ErrorRecoveryLevel', type=int)
1461 p.add_argument('-p', '--allow-duplicated-isid', help='Allow duplicated initiator session ID.', action='store_true')
1462 p.add_argument('-x', '--max-large-datain-per-connection', help='Max number of outstanding split read I/Os per connection', type=int)
1463 p.add_argument('-k', '--max-r2t-per-connection', help='Max number of outstanding R2Ts per connection', type=int)
1464 p.add_argument('-u', '--pdu-pool-size', help='Number of PDUs in the pool', type=int)
1465 p.add_argument('-j', '--immediate-data-pool-size', help='Number of immediate data buffers in the pool', type=int)
1466 p.add_argument('-z', '--data-out-pool-size', help='Number of data out buffers in the pool', type=int)
1479 p.add_argument('-d', '--disable-chap', help="""CHAP for discovery session should be disabled.
1480 *** Mutually exclusive with --require-chap""", action='store_true')
1481 p.add_argument('-r', '--require-chap', help="""CHAP for discovery session should be required.
1482 *** Mutually exclusive with --disable-chap""", action='store_true')
1483 p.add_argument('-m', '--mutual-chap', help='CHAP for discovery session should be mutual', action='store_true')
1484 p.add_argument('-g', '--chap-group', help="""Authentication group ID for discovery session.
1498 p.add_argument('-c', '--secrets', help="""Comma-separated list of CHAP secrets
1523 p.add_argument('-u', '--user', help='User name for one-way CHAP authentication', required=True)
1524 p.add_argument('-s', '--secret', help='Secret for one-way CHAP authentication', required=True)
1525 p.add_argument('-m', '--muser', help='User name for mutual CHAP authentication')
1526 p.add_argument('-r', '--msecret', help='Secret for mutual CHAP authentication')
1535 p.add_argument('-u', '--user', help='User name for one-way CHAP authentication', required=True)
1561 p = subparsers.add_parser('iscsi_get_target_nodes', help='Display target nodes')
1568 help='Enable or disable histogram for specified iscsi target')
1569 p.add_argument('-e', '--enable', default=True, dest='enable', action='store_true', help='Enable histograms on specified iscsi target')
1570 p.add_argument('-d', '--disable', dest='enable', action='store_false', help='Disable histograms on specified iscsi target')
1571 p.add_argument('name', help='iscsi target name')
1578 help='Get histogram for specified iscsi target')
1579 p.add_argument('name', help='target name')
1607 p = subparsers.add_parser('iscsi_create_target_node', help='Add a target node')
1608 p.add_argument('name', help='Target node name (ASCII)')
1609 p.add_argument('alias_name', help='Target node alias name (ASCII)')
1610 p.add_argument('bdev_name_id_pairs', help="""Whitespace-separated list of <bdev name:LUN ID> pairs enclosed
1613 *** The bdevs must pre-exist ***
1621 p.add_argument('queue_depth', help='Desired target queue depth', type=int)
1622 p.add_argument('-g', '--chap-group', help="""Authentication group ID for this target node.
1624 p.add_argument('-d', '--disable-chap', help="""CHAP authentication should be disabled for this target node.
1625 *** Mutually exclusive with --require-chap ***""", action='store_true')
1626 p.add_argument('-r', '--require-chap', help="""CHAP authentication should be required for this target node.
1627 *** Mutually exclusive with --disable-chap ***""", action='store_true')
1629 '-m', '--mutual-chap', help='CHAP authentication should be mutual/bidirectional.', action='store_true')
1630 p.add_argument('-H', '--header-digest',
1631 help='Header Digest should be required for this target node.', action='store_true')
1632 p.add_argument('-D', '--data-digest',
1633 help='Data Digest should be required for this target node.', action='store_true')
1644 help='Add LUN to the target node')
1645 p.add_argument('name', help='Target node name (ASCII)')
1648 p.add_argument('-i', dest='lun_id', help="""LUN ID (integer >= 0)
1649 *** If LUN ID is omitted or -1, the lowest free one is assigned ***""", type=int)
1662 help='Set CHAP authentication for the target node')
1663 p.add_argument('name', help='Target node name (ASCII)')
1664 p.add_argument('-g', '--chap-group', help="""Authentication group ID for this target node.
1666 p.add_argument('-d', '--disable-chap', help="""CHAP authentication should be disabled for this target node.
1667 *** Mutually exclusive with --require-chap ***""", action='store_true')
1668 p.add_argument('-r', '--require-chap', help="""CHAP authentication should be required for this target node.
1669 *** Mutually exclusive with --disable-chap ***""", action='store_true')
1670 p.add_argument('-m', '--mutual-chap', help='CHAP authentication should be mutual/bidirectional.',
1685 help='Add PG-IG maps to the target node')
1686 p.add_argument('name', help='Target node name (ASCII)')
1703 help='Delete PG-IG maps from the target node')
1704 p.add_argument('name', help='Target node name (ASCII)')
1721 help="""Update redirect portal of the public portal group for the target node.
1723 p.add_argument('name', help='Target node name (ASCII)')
1725 p.add_argument('-a', '--redirect-host', help='Numeric IP address for redirect portal')
1726 p.add_argument('-p', '--redirect-port', help='Numeric TCP port for redirect portal')
1736 help="""For the target node, request connections whose portal group tag
1738 p.add_argument('name', help='Target node name (ASCII)')
1739 p.add_argument('-t', '--pg-tag', help='Portal group tag (unique, integer > 0)', type=int)
1768 p.add_argument('-p', '--private', help="""Public (false) or private (true) portal group.
1770 portal group may optionally specify a redirect portal for non-discovery logins. This redirect
1772 p.add_argument('-w', '--wait', help="""Do not listening on portals until it is started explicitly.
1774 on portals should be allowed after all associated target nodes are created.""", action='store_true')
1803 p.add_argument('initiator_list', help="""Whitespace-separated list of initiator hostnames or IP addresses,
1804 enclosed in quotes. Example: 'ANY' or 'iqn.2016-06.io.spdk:host1 iqn.2016-06.io.spdk:host2'""")
1805 p.add_argument('netmask_list', help="""Whitespace-separated list of initiator netmasks enclosed in quotes.
1830 p.add_argument('-n', dest='initiator_list', help="""Whitespace-separated list of initiator hostnames or IP addresses,
1832 'iqn.2016-06.io.spdk:host1 iqn.2016-06.io.spdk:host2'""")
1833 p.add_argument('-m', dest='netmask_list', help="""Whitespace-separated list of initiator netmasks enclosed in quotes.
1858 p.add_argument('-n', dest='initiator_list', help="""Whitespace-separated list of initiator hostnames or IP addresses,
1860 'iqn.2016-06.io.spdk:host1 iqn.2016-06.io.spdk:host2'""")
1861 p.add_argument('-m', dest='netmask_list', help="""Whitespace-separated list of initiator netmasks enclosed in quotes.
1870 help='Delete a target node')
1872 help='Target node name to be deleted. Example: iqn.2016-06.io.spdk:disk1.')
1905 p.add_argument('-g', '--chap-group', help="""Authentication group ID for this portal group.
1907 p.add_argument('-d', '--disable-chap', help="""CHAP authentication should be disabled for this portal group.
1908 *** Mutually exclusive with --require-chap ***""", action='store_true')
1909 p.add_argument('-r', '--require-chap', help="""CHAP authentication should be required for this portal group.
1910 *** Mutually exclusive with --disable-chap ***""", action='store_true')
1911 p.add_argument('-m', '--mutual-chap', help='CHAP authentication should be mutual/bidirectional.',
2069 p.add_argument('-c', '--cluster-sz', help='size of cluster (in bytes)', type=int)
2070 p.add_argument('--clear-method', help="""Change clear method for data region.
2072 p.add_argument('-m', '--md-pages-per-cluster-ratio', help='reserved metadata pages for each cluster', type=int)
2073 p.add_argument('-s', '--md-page-size', help='size of metadata page (in bytes)', type=int)
2093 p.add_argument('-u', '--uuid', help='lvol store UUID')
2094 p.add_argument('-l', '--lvs-name', help='lvol store name')
2107 p.add_argument('-u', '--uuid', help='lvol store UUID')
2108 p.add_argument('-l', '--lvs-name', help='lvol store name')
2109 p.add_argument('-t', '--thin-provision', action='store_true', help='create lvol bdev as thin provisioned')
2110 p.add_argument('-c', '--clear-method', help="""Change default data clusters clear method.
2143 help='Create a clone of a non-lvol bdev')
2247 p.add_argument('-u', '--uuid', help='lvol store UUID')
2248 p.add_argument('-l', '--lvs-name', help='lvol store name')
2257 p.add_argument('-u', '--uuid', help='lvol store UUID')
2258 p.add_argument('-l', '--lvs-name', help='lvol store name')
2267 p.add_argument('-u', '--lvs-uuid', help='only lvols in lvol store UUID')
2268 p.add_argument('-l', '--lvs-name', help='only lvols in lvol store name')
2278 p.add_argument('-w', '--process-window-size-kb', type=int,
2280 p.add_argument('-b', '--process-max-bandwidth-mb-sec', type=int,
2311 p.add_argument('-n', '--name', help='raid bdev name', required=True)
2312 p.add_argument('-z', '--strip-size-kb', help='strip size in KB', type=int)
2313 p.add_argument('-r', '--raid-level', help='raid level, raid0, raid1 and a special level concat are supported', required=True)
2314 p.add_argument('-b', '--base-bdevs', help='base bdevs name, whitespace separated list in quotes', required=True)
2315 p.add_argument('--uuid', help='UUID for this raid bdev')
2316 p.add_argument('-s', '--superblock', help='information about raid bdev will be stored in superblock on each base bdev, '
2355 p.add_argument('-s', '--split-size-mb', help='size in MiB for each bdev', type=int)
2356 p.add_argument('split_count', help="""Optional - number of split bdevs to create. Total size * split_count must not
2381 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2382 p.add_argument('-d', '--base-bdev', help='Name of bdev used as underlying device',
2384 p.add_argument('-u', '--uuid', help='UUID of restored bdev (not applicable when creating new '
2385 'instance): e.g. b286d19a-0059-4709-abcd-9f7732b1567d (optional)')
2386 p.add_argument('-c', '--cache', help='Name of the bdev to be used as a write buffer cache',
2388 p.add_argument('--overprovisioning', help='Percentage of device used for relocation, not exposed'
2390 p.add_argument('--l2p-dram-limit', help='l2p size that could reside in DRAM (optional); default 2048',
2392 p.add_argument('--core-mask', help='CPU core mask - which cores will be used for ftl core thread, '
2394 p.add_argument('-f', '--fast-shutdown', help="Enable fast shutdown", action='store_true')
2409 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2410 p.add_argument('-d', '--base-bdev', help='Name of bdev used as underlying device',
2412 p.add_argument('-u', '--uuid', help='UUID of restored bdev', required=True)
2413 p.add_argument('-c', '--cache', help='Name of the bdev to be used as a write buffer cache',
2415 p.add_argument('--overprovisioning', help='Percentage of device used for relocation, not exposed'
2417 p.add_argument('--l2p-dram-limit', help='l2p size that could reside in DRAM (optional); default 2048',
2419 p.add_argument('--core-mask', help='CPU core mask - which cores will be used for ftl core thread, '
2421 p.add_argument('-f', '--fast-shutdown', help="Enable fast shutdown", action='store_true')
2428 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2429 p.add_argument('-f', '--fast-shutdown', help="Fast shutdown", action='store_true')
2436 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2437 p.add_argument('-f', '--fast-shutdown', help="Fast shutdown", action='store_true')
2446 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2447 p.add_argument('--lba', help='start LBA', required=True, type=int)
2448 p.add_argument('--num-blocks', help='num blocks', required=True, type=int)
2455 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2462 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2471 p.add_argument('-b', '--name', help="Name of the bdev", required=True)
2472 p.add_argument('-p', '--property', help="Name of the property to be set", required=True)
2473 p.add_argument('-v', '--value', help="Value of the property", required=True)
2502 help='Create spdk ublk target for ublk dev')
2503 p.add_argument('-m', '--cpumask', help='cpu mask for ublk dev')
2504 p.add_argument('--disable-user-copy', help='Disable user copy feature', action='store_true')
2510 help='Destroy spdk ublk target for ublk dev')
2524 p.add_argument('-q', '--num-queues', help="the total number of queues. Example: 1", type=int)
2525 p.add_argument('-d', '--queue-depth', help="queue depth. Example: 128", type=int)
2554 p.add_argument('-n', '--ublk-id', help="ublk device id. Example: 1", type=int)
2584 p.add_argument('-n', '--nbd-device', help="Path of the nbd device. Example: /dev/nbd0")
2587 # NVMe-oF
2593 help='Set the maximum number of NVMf target subsystems')
2594 p.add_argument('-x', '--max-subsystems', help='Max number of NVMf subsystems', type=int, required=True)
2605 p = subparsers.add_parser('nvmf_set_config', help='Set NVMf target config')
2606 p.add_argument('-i', '--passthru-identify-ctrlr', help="""Passthrough fields like serial number and model number
2608 p.add_argument('-m', '--poll-groups-mask', help='Set cpumask for NVMf poll groups (optional)', type=str)
2609 p.add_argument('-d', '--discovery-filter', help="""Set discovery filter (optional), possible values are: `match_any` (default) or
2611 p.add_argument('--dhchap-digests', help='Comma-separated list of allowed DH-HMAC-CHAP digests',
2613 p.add_argument('--dhchap-dhgroups', help='Comma-separated list of allowed DH-HMAC-CHAP DH groups',
2621 p.add_argument('-t', '--trtype', help='Transport type (ex. RDMA)', type=str, required=True)
2622 p.add_argument('-g', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2623 p.add_argument('-q', '--max-queue-depth', help='Max number of outstanding I/O per queue', type=int)
2624 p.add_argument('-m', '--max-io-qpairs-per-ctrlr', help='Max number of IO qpairs per controller', type=int)
2625 p.add_argument('-c', '--in-capsule-data-size', help='Max number of in-capsule data size', type=int)
2626 p.add_argument('-i', '--max-io-size', help='Max I/O size (bytes)', type=int)
2627 p.add_argument('-u', '--io-unit-size', help='I/O unit size (bytes)', type=int)
2628 p.add_argument('-a', '--max-aq-depth', help='Max number of admin cmds per AQ', type=int)
2629 p.add_argument('-n', '--num-shared-buffers', help='The number of pooled data buffers available to the transport', type=int)
2630 p.add_argument('-b', '--buf-cache-size', help='The number of shared buffers to reserve for each poll group', type=int)
2631 p.add_argument('-z', '--zcopy', action='store_true', help='''Use zero-copy operations if the
2633 p.add_argument('-d', '--num-cqe', help="""The number of CQ entries. Only used when no_srq=true.
2635 p.add_argument('-s', '--max-srq-depth', help='Max number of outstanding I/O per SRQ. Relevant only for RDMA transport', type=int)
2636 p.add_argument('-r', '--no-srq', action='store_true', help='Disable per-thread shared receive queue. Relevant only for RDMA transport')
2637 p.add_argument('-o', '--c2h-success', action='store_false', help='Disable C2H success optimization. Relevant only for TCP transport')
2638 p.add_argument('-f', '--dif-insert-or-strip', action='store_true', help='Enable DIF insert/strip. Relevant only for TCP transport')
2639 p.add_argument('-y', '--sock-priority', help='The sock priority of the tcp connection. Relevant only for TCP transport', type=int)
2640 p.add_argument('-l', '--acceptor-backlog', help='Pending connections allowed at one time. Relevant only for RDMA transport', type=int)
2641 p.add_argument('-x', '--abort-timeout-sec', help='Abort execution timeout value, in seconds', type=int)
2642 p.add_argument('-w', '--no-wr-batching', action='store_true', help='Disable work requests batching. Relevant only for RDMA transport')
2643 p.add_argument('-e', '--control-msg-num', help="""The number of control messages per poll group.
2645 p.add_argument('-M', '--disable-mappable-bar0', action='store_true', help="""Disable mmap() of BAR0.
2646 Relevant only for VFIO-USER transport""")
2647 p.add_argument('-I', '--disable-adaptive-irq', action='store_true', help="""Disable adaptive interrupt feature.
2648 Relevant only for VFIO-USER transport""")
2649 p.add_argument('-S', '--disable-shadow-doorbells', action='store_true', help="""Disable shadow doorbell support.
2650 Relevant only for VFIO-USER transport""")
2651 p.add_argument('--acceptor-poll-rate', help='Polling interval of the acceptor for incoming connections (usec)', type=int)
2652 p.add_argument('--ack-timeout', help='ACK timeout in milliseconds', type=int)
2653 p.add_argument('--data-wr-pool-size', help='RDMA data WR pool size. Relevant only for RDMA transport', type=int)
2654 p.add_argument('--disable-command-passthru', help='Disallow command passthru', action='store_true')
2661 p.add_argument('--trtype', help='Transport type (optional)')
2662 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2670 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2688 p = subparsers.add_parser('nvmf_create_subsystem', help='Create an NVMe-oF subsystem')
2690 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2691 p.add_argument("-s", "--serial-number", help="""
2694 p.add_argument("-d", "--model-number", help="""
2697 p.add_argument("-a", "--allow-any-host", action='store_true', help="Allow any host to connect (don't enforce allowed host NQN list)")
2698 p.add_argument("-m", "--max-namespaces", help="Maximum number of namespaces allowed",
2700 p.add_argument("-r", "--ana-reporting", action='store_true', help="Enable ANA reporting feature")
2701 p.add_argument("-i", "--min_cntlid", help="Minimum controller ID", type=int)
2702 p.add_argument("-I", "--max_cntlid", help="Maximum controller ID", type=int)
2703 p.add_argument("--max-discard-size", help="Maximum discard size (Kib)", type=int)
2704 p.add_argument("--max-write-zeroes-size", help="Maximum write_zeroes size (Kib)", type=int)
2705 p.add_argument("-p", "--passthrough", action='store_true', help="""Use NVMe passthrough for all I/O commands and namespace-directed
2716 help='subsystem nqn to be deleted. Example: nqn.2016-06.io.spdk:cnode1.')
2717 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2723 p = subparsers.add_parser('nvmf_subsystem_add_listener', help='Add a listener to an NVMe-oF subsystem')
2724 p.add_argument('nqn', help='NVMe-oF subsystem NQN (\'discovery\' can be used as shortcut for discovery NQN)')
2725 p.add_argument('-t', '--trtype', help='NVMe-oF transport type: e.g., rdma', required=True)
2726 p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
2727 p.add_argument('-p', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2728 p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
2729 p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number (required for RDMA or TCP)')
2730 p.add_argument('-k', '--secure-channel', help='Immediately establish a secure channel', action="store_true")
2731 p.add_argument('-n', '--ana-state', help='ANA state to set: optimized, non_optimized, or inaccessible', type=str)
2732 p.add_argument('-S', '--sock-impl', help='The socket implementation to use for the listener (ex. posix)', type=str)
2744 p = subparsers.add_parser('nvmf_subsystem_remove_listener', help='Remove a listener from an NVMe-oF subsystem')
2745 p.add_argument('nqn', help='NVMe-oF subsystem NQN (\'discovery\' can be used as shortcut for discovery NQN)')
2746 p.add_argument('-t', '--trtype', help='NVMe-oF transport type: e.g., rdma', required=True)
2747 p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
2748 p.add_argument('-p', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2749 p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
2750 p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number (required for TCP and RDMA transport types)')
2764 p = subparsers.add_parser('nvmf_subsystem_listener_set_ana_state', help='Set ANA state of a listener for an NVMe-oF subsystem')
2765 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2766 p.add_argument('-n', '--ana-state', help='ANA state to set: optimized, non_optimized, or inaccessible', required=True)
2767 p.add_argument('-t', '--trtype', help='NVMe-oF transport type: e.g., rdma', required=True)
2768 p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
2769 p.add_argument('-p', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2770 p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
2771 p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number')
2772 p.add_argument('-g', '--anagrpid', help='ANA group ID (optional)', type=int)
2778 p = subparsers.add_parser('nvmf_discovery_add_referral', help='Add a discovery service referral to an NVMe-oF target')
2779 p.add_argument('-t', '--trtype', help='NVMe-oF transport type: e.g., rdma', required=True)
2780 p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
2781 p.add_argument('-p', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2782 p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
2783 p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number (required for RDMA or TCP)')
2784 p.add_argument('-k', '--secure-channel', help='The connection to that discovery subsystem requires a secure channel',
2786 p.add_argument('-n', '--subnqn', help='Subsystem NQN')
2798 p = subparsers.add_parser('nvmf_discovery_remove_referral', help='Remove a discovery service referral from an NVMe-oF target')
2799 p.add_argument('-t', '--trtype', help='NVMe-oF transport type: e.g., rdma', required=True)
2800 p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
2801 p.add_argument('-p', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2802 p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
2803 p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number (required for TCP and RDMA transport types)')
2804 p.add_argument('-n', '--subnqn', help='Subsystem NQN')
2812 help='Display discovery subsystem referrals of an NVMe-oF target')
2813 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2819 p = subparsers.add_parser('nvmf_subsystem_add_ns', help='Add a namespace to an NVMe-oF subsystem')
2820 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2822 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2823 p.add_argument('-p', '--ptpl-file', help='The persistent reservation storage location (optional)', type=str)
2824 p.add_argument('-n', '--nsid', help='The requested NSID (optional)', type=int)
2825 p.add_argument('-g', '--nguid', help='Namespace globally unique identifier (optional)')
2826 p.add_argument('-e', '--eui64', help='Namespace EUI-64 identifier (optional)')
2827 p.add_argument('-u', '--uuid', help='Namespace UUID (optional)')
2828 p.add_argument('-a', '--anagrpid', help='ANA group ID (optional)', type=int)
2829 p.add_argument('-i', '--no-auto-visible', action='store_true',
2831 p.add_argument('-N', '--hide-metadata', action='store_true',
2843 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2846 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2855 p = subparsers.add_parser('nvmf_subsystem_remove_ns', help='Remove a namespace to an NVMe-oF subsystem')
2856 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2858 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2870 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2873 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2900 p = subparsers.add_parser('nvmf_subsystem_add_host', help='Add a host to an NVMe-oF subsystem')
2901 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2903 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2904 p.add_argument('--psk', help='Path to PSK file for TLS authentication (optional). Only applicable for TCP transport.', type=str)
2905 p.add_argument('--dhchap-key', help='DH-HMAC-CHAP key name (optional)')
2906 p.add_argument('--dhchap-ctrlr-key', help='DH-HMAC-CHAP controller key name (optional)')
2915 p = subparsers.add_parser('nvmf_subsystem_remove_host', help='Remove a host from an NVMe-oF subsystem')
2916 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2918 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2932 p.add_argument('-t', '--tgt-name', help='Name of the NVMe-oF target')
2933 p.add_argument('--dhchap-key', help='DH-HMAC-CHAP key name')
2934 p.add_argument('--dhchap-ctrlr-key', help='DH-HMAC-CHAP controller key name')
2944 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2945 p.add_argument('-e', '--enable', action='store_true', help='Enable allowing any host')
2946 p.add_argument('-d', '--disable', action='store_true', help='Disable allowing any host')
2947 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2956 help='Display controllers of an NVMe-oF subsystem.')
2957 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2958 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2967 help='Display queue pairs of an NVMe-oF subsystem.')
2968 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2969 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2978 help='Display listeners of an NVMe-oF subsystem.')
2979 p.add_argument('nqn', help='NVMe-oF subsystem NQN')
2980 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2988 p.add_argument('-t', '--tgt-name', help='The name of the parent NVMe-oF target (optional)', type=str)
2998 p.add_argument('-t1', '--crdt1', help='Command Retry Delay Time 1, in units of 100 milliseconds', type=int)
2999 p.add_argument('-t2', '--crdt2', help='Command Retry Delay Time 2, in units of 100 milliseconds', type=int)
3000 p.add_argument('-t3', '--crdt3', help='Command Retry Delay Time 3, in units of 100 milliseconds', type=int)
3008 p.add_argument('-t', '--tgt-name', help='The name of the NVMe-oF target (optional)', type=str)
3016 p.add_argument('-t', '--tgt-name', help='The name of the NVMe-oF target (optional)', type=str)
3059 p = subparsers.add_parser('virtio_blk_get_transports', help='Display virtio-blk transports or requested transport')
3060 p.add_argument('--name', help='Transport name (optional)', type=str)
3071 p.add_argument('--cpumask', help='cpu mask for this controller')
3072 p.add_argument("--delay", action='store_true', help='whether delay starting controller or not')
3101 help='Remove target from vhost controller')
3102 p.add_argument('ctrlr', help='controller name to remove target from')
3112 p.add_argument('--cpumask', help='cpu mask for this controller')
3113 p.add_argument('--transport', help='virtio blk transport name (default: vhost_user_blk)')
3114 p.add_argument("-r", "--readonly", action='store_true', help='Set controller as read-only')
3115 p.add_argument("-p", "--packed_ring", action='store_true', help='Set controller as packed ring supported')
3122 p.add_argument('-n', '--name', help="Name of vhost controller")
3145 controller (for example, SCSI devices for a virtio-scsi controller).
3148 p.add_argument('-t', '--trtype',
3149 help='Virtio target transport type: pci or user', required=True)
3150 p.add_argument('-a', '--traddr',
3151 help='Transport type specific target address: e.g. UNIX domain socket path or BDF', required=True)
3152 p.add_argument('-d', '--dev-type',
3154 p.add_argument('--vq-count', help='Number of virtual queues to be used.', type=int)
3155 p.add_argument('--vq-size', help='Size of each queue', type=int)
3161 p = subparsers.add_parser('bdev_virtio_scsi_get_devices', help='List all Virtio-SCSI devices.')
3177 p.add_argument('-d', '--disable', dest='enable', default=False, action='store_false', help="Disable hotplug (default)")
3178 p.add_argument('-e', '--enable', dest='enable', action='store_true', help="Enable hotplug")
3179 p.add_argument('-r', '--period-us',
3183 # vfio-user target
3207 p = subparsers.add_parser('vfu_virtio_create_blk_endpoint', help='Create virtio-blk endpoint.')
3209 p.add_argument('--bdev-name', help='block device name', type=str, required=True)
3210 p.add_argument('--cpumask', help='CPU masks')
3211 p.add_argument('--num-queues', help='number of vrings', type=int, default=0)
3212 p.add_argument('--qsize', help='number of element for each vring', type=int, default=0)
3213 p.add_argument("--packed-ring", action='store_true', help='Enable packed ring')
3222 p = subparsers.add_parser('vfu_virtio_scsi_add_target', help='Attach a block device to SCSI target of PCI endpoint.')
3224 p.add_argument('--scsi-target-num', help='number of SCSI Target', type=int, required=True)
3225 p.add_argument('--bdev-name', help='block device name', type=str, required=True)
3233 p = subparsers.add_parser('vfu_virtio_scsi_remove_target', help='Remove the specified SCSI target of PCI endpoint.')
3235 p.add_argument('--scsi-target-num', help='number of SCSI Target', type=int, required=True)
3246 p = subparsers.add_parser('vfu_virtio_create_scsi_endpoint', help='Create virtio-scsi endpoint.')
3248 p.add_argument('--cpumask', help='CPU masks')
3249 p.add_argument('--num-io-queues', help='number of IO vrings', type=int, default=0)
3250 p.add_argument('--qsize', help='number of element for each vring', type=int, default=0)
3251 p.add_argument("--packed-ring", action='store_true', help='Enable packed ring')
3264 p = subparsers.add_parser('vfu_virtio_create_fs_endpoint', help='Create virtio-fs endpoint.')
3266 p.add_argument('--fsdev-name', help='fsdev name', type=str, required=True)
3267 p.add_argument('--tag', help='virtiofs tag', type=str, required=True)
3268 p.add_argument('--cpumask', help='CPU masks')
3269 p.add_argument('--num-queues', help='number of vrings', type=int, default=0)
3270 p.add_argument('--qsize', help='number of element for each vring', type=int, default=0)
3271 p.add_argument("--packed-ring", action='store_true', help='Enable packed ring')
3292 p.add_argument('-o', '--opname', help='opname')
3293 p.add_argument('-m', '--module', help='name of module')
3305 p.add_argument('-c', '--cipher', help='cipher', required=True)
3306 p.add_argument('-k', '--key', help='key', required=True)
3307 p.add_argument('-e', '--key2', help='key2', default=None)
3308 p.add_argument('-t', '--tweak-mode', help='tweak mode', default=None)
3309 p.add_argument('-n', '--name', help='key name', required=True)
3317 p.add_argument('-n', '--name', help='key name', required=True, type=str)
3325 p.add_argument('-k', '--key-name', help='Get information about a specific key', type=str)
3341 p.add_argument('--small-cache-size', type=int, help='Size of the small iobuf cache')
3342 p.add_argument('--large-cache-size', type=int, help='Size of the large iobuf cache')
3343 p.add_argument('--task-count', type=int, help='Maximum number of tasks per IO channel')
3344 p.add_argument('--sequence-count', type=int, help='Maximum number of sequences per IO channel')
3345 p.add_argument('--buf-count', type=int, help='Maximum number of buffers per IO channel')
3367 p.add_argument('-p', '--pmd', type=int, help='0 = auto-select, 1= QAT only, 2 = mlx5_pci only, 3 = uadk only')
3376 p.add_argument('-k', '--config-kernel-mode', help='Use Kernel mode dsa',
3401 p.add_argument('-d', '--driver-name', help='The driver, can be one of crypto_aesni_mb, crypto_qat or mlx5_pci', type=str)
3420 p.add_argument('-q', '--qp-size', type=int, help='QP size')
3421 p.add_argument('-r', '--num-requests', type=int, help='Size of the shared requests pool')
3422 p.add_argument('-d', '--allowed-devs', help="Comma separated list of allowed device names, e.g. mlx5_0,mlx5_1")
3423 p.add_argument('-s', '--crypto-split-blocks', type=int,
3424 help="Number of data blocks to be processed in 1 crypto UMR. [0-65535], 0 means no limit")
3425 p.add_argument('-e', '--enable-driver', dest='enable_driver', action='store_true', default=None,
3433 p.add_argument('-l', '--level', type=str, help='Verbose level, one of \"total\", \"channel\" or \"device\"')
3444 p.add_argument('-o', '--opcode', help='Opcode')
3445 p.add_argument('-t', '--type',
3447 p.add_argument('-c', '--count', type=int,
3449 p.add_argument('-i', '--interval', type=int, help='Interval between injections')
3450 p.add_argument('--errcode', type=int, help='Error code to inject (only relevant for type=failure)')
3460 p.add_argument('-b', '--nvme-ctrlr-name', help='nvme ctrlr name')
3461 p.add_argument('-p', '--password', help='password for admin')
3469 p.add_argument('-b', '--nvme-ctrlr-name', help='nvme ctrlr name')
3470 p.add_argument('-p', '--password', help='password')
3483 p.add_argument('-b', '--nvme-ctrlr-name', help='nvme ctrlr name', required=True)
3484 p.add_argument('-n', '--nsid', help='namespace ID (only support nsid=1 for now)', type=int, required=True)
3485 p.add_argument('-i', '--locking-range-id', help='locking range id', type=int, required=True)
3486 p.add_argument('-s', '--range-start', help='locking range start LBA', type=int, required=True)
3487 p.add_argument('-l', '--range-length', help='locking range length (in blocks)', type=int, required=True)
3488 p.add_argument('-p', '--password', help='admin password', required=True)
3497 p.add_argument('-b', '--bdev-name', help='opal bdev')
3498 p.add_argument('-p', '--password', help='password')
3507 p.add_argument('-b', '--bdev-name', help='opal virtual bdev', required=True)
3508 p.add_argument('-p', '--password', help='admin password', required=True)
3519 p.add_argument('-b', '--bdev-name', help='opal bdev', required=True)
3520 p.add_argument('-p', '--admin-password', help='admin password', required=True)
3521 p.add_argument('-i', '--user-id', help='ID for new user', type=int, required=True)
3522 p.add_argument('-u', '--user-password', help='password set for this user', required=True)
3533 p.add_argument('-b', '--bdev-name', help='opal bdev', required=True)
3534 p.add_argument('-i', '--user-id', help='ID of the user who want to set lock state, either admin or a user assigned to this bdev',
3536 p.add_argument('-p', '--password', help='password of this user', required=True)
3537 p.add_argument('-l', '--lock-state', help='lock state to set, choose from {readwrite, readonly, rwlock}', required=True)
3554 p.add_argument('-n', '--nvme-name', help="""Name of the operating NVMe controller""")
3555 p.add_argument('-t', '--cmd-type', help="""Type of nvme cmd. Valid values are: admin, io""")
3556 p.add_argument('-r', '--data-direction', help="""Direction of data transfer. Valid values are: c2h, h2c""")
3557 p.add_argument('-c', '--cmdbuf', help="""NVMe command encoded by base64 urlsafe""")
3558 p.add_argument('-d', '--data', help="""Data transferring to controller from host, encoded by base64 urlsafe""")
3559 p.add_argument('-m', '--metadata', help="""Metadata transferring to controller from host, encoded by base64 urlsafe""")
3560 p.add_argument('-D', '--data-length', help="""Data length required to transfer from controller to host""", type=int)
3561 p.add_argument('-M', '--metadata-length', help="""Metadata length required to transfer from controller to host""", type=int)
3562 p.add_argument('-T', '--timeout-ms',
3580 p.add_argument('-i', '--id', help="""First ID to start fetching from""", type=int)
3581 p.add_argument('-n', '--max', help="""Maximum number of notifications to return in response""", type=int)
3598 p.add_argument('-i', '--id', type=int, help='thread ID')
3599 p.add_argument('-m', '--cpumask', help='cpumask for this thread')
3607 p.add_argument('-d', '--disable', dest='enabled', default=False, action='store_false', help="Disable timestamps")
3608 p.add_argument('-e', '--enable', dest='enabled', action='store_true', help="Enable timestamps")
3648 p.add_argument('-c', '--cluster-sz',
3682 p.add_argument('fsdev-io-pool-size', help='Size of fsdev IO objects pool', type=int)
3683 p.add_argument('fsdev-io-cache-size', help='Size of fsdev IO objects cache per thread', type=int)
3696 group.add_argument('--enable-xattr', help='Enable extended attributes', action='store_true', default=None)
3697 group.add_argument('--disable-xattr', help='Disable extended attributes', dest='enable_xattr', action='store_false', default=None)
3700 group.add_argument('--enable-writeback-cache', help='Enable writeback cache', action='store_true', default=None)
3701 group.add_argument('--disable-writeback-cache', help='Disable writeback cache', dest='enable_writeback_cache', action='store_false',
3704 p.add_argument('-w', '--max-write', help='Max write size in bytes', type=int)
3706 p.add_argument('--skip-rw', dest='skip_rw', help="Do not process read or write commands. This is used for testing.",
3724 p.add_argument('-i', '--impl', help='Socket implementation name, e.g. posix', required=True)
3742 p.add_argument('-i', '--impl', help='Socket implementation name, e.g. posix', required=True)
3743 p.add_argument('-r', '--recv-buf-size', help='Size of receive buffer on socket in bytes', type=int)
3744 p.add_argument('-s', '--send-buf-size', help='Size of send buffer on socket in bytes', type=int)
3745 p.add_argument('-p', '--enable-placement-id', help='Option for placement-id. 0:disable,1:incoming_napi,2:incoming_cpu', type=int)
3746 p.add_argument('--enable-recv-pipe', help='Enable receive pipe',
3748 p.add_argument('--disable-recv-pipe', help='Disable receive pipe',
3750 p.add_argument('--enable-quickack', help='Enable quick ACK',
3752 p.add_argument('--disable-quickack', help='Disable quick ACK',
3754 p.add_argument('--enable-zerocopy-send-server', help='Enable zerocopy on send for server sockets',
3756 p.add_argument('--disable-zerocopy-send-server', help='Disable zerocopy on send for server sockets',
3758 p.add_argument('--enable-zerocopy-send-client', help='Enable zerocopy on send for client sockets',
3760 p.add_argument('--disable-zerocopy-send-client', help='Disable zerocopy on send for client sockets',
3762 p.add_argument('--zerocopy-threshold', help='Set zerocopy_threshold in bytes', type=int)
3763 p.add_argument('--tls-version', help='TLS protocol version', type=int)
3764 p.add_argument('--enable-ktls', help='Enable Kernel TLS',
3766 p.add_argument('--disable-ktls', help='Disable Kernel TLS',
3777 p.add_argument('-i', '--impl', help='Socket implementation name, e.g. posix', required=True)
3801 p.add_argument('--format-lspci', help='Format the output in a way to be consumed by lspci -F',
3818 p.add_argument('-n', '--nvme-name', help="""Name of the operating NVMe controller""", required=True)
3819 p.add_argument('-t', '--cmd-type', help="""Type of NVMe command. Valid values are: admin, io""", required=True)
3820 p.add_argument('-o', '--opc', help="""Opcode of the NVMe command.""", required=True, type=int)
3821 p.add_argument('-s', '--do-not-submit',
3824 p.add_argument('-w', '--timeout-in-us', help="""Wait specified microseconds when do_not_submit is true""", type=int)
3825 p.add_argument('-e', '--err-count', help="""Number of matching NVMe commands to inject errors""", type=int)
3826 p.add_argument('-u', '--sct', help="""Status code type""", type=int)
3827 p.add_argument('-c', '--sc', help="""Status code""", type=int)
3838 p.add_argument('-n', '--nvme-name', help="""Name of the operating NVMe controller""", required=True)
3839 p.add_argument('-t', '--cmd-type', help="""Type of nvme cmd. Valid values are: admin, io""", required=True)
3840 p.add_argument('-o', '--opc', help="""Opcode of the nvme cmd.""", required=True, type=int)
3861 p.add_argument('-u', '--uuid', help="UUID of the bdev")
3862 p.add_argument('-o', '--oclass', help="DAOS object class")
3893 p.add_argument('--small-pool-count', help='number of small buffers in the global pool', type=int)
3894 p.add_argument('--large-pool-count', help='number of large buffers in the global pool', type=int)
3895 p.add_argument('--small-bufsize', help='size of a small buffer', type=int)
3896 p.add_argument('--large-bufsize', help='size of a large buffer', type=int)
3897 p.add_argument('--enable-numa', help='enable per-NUMA node buffer pools', action='store_true')
3913 p.add_argument('-b', '--name', help="Name of the NVMe controller prefix for each bdev name", required=True)
3914 p.add_argument('-s', '--svcname', help='Service type to discover: e.g., _nvme-disc._tcp', required=True)
3915 p.add_argument('-q', '--hostnqn', help='NVMe-oF host subnqn')
3922 p.add_argument('-b', '--name', help="Name of the service to stop", required=True)
3934 p = subparsers.add_parser('keyring_file_add_key', help='Add a file-based key to the keyring')
3942 p = subparsers.add_parser('keyring_file_remove_key', help='Remove a file-based key from the keyring')
3956 p.add_argument('-e', '--enable', help='Enable keyring_linux module', action='store_true')
3982 # Ignore lines starting with # - treat them as comments
3998 plugin_parser.add_argument('--plugin', dest='rpc_plugin', help='Module name of plugin with additional RPC commands')
4019 # All option names are defined with dashes only - for example: --tgt-name
4020 # But if user used underscores, convert them to dashes (--tgt_name => --tgt-name)
4025 if arg.startswith('--') and "_" in arg:
4027 args[i] = '='.join([opt.replace('_', '-'), *vals])