libnvmf_host_get_ids-libnvme32
Retrieve host ids from various sources
Usage
int libnvmf_host_get_ids (struct libnvme_global_ctx *ctx , const char *hostnqn_arg , const char *hostid_arg , char **hostnqn , char **hostid );
Arguments
ctx
|
struct libnvme_global_ctx object |
|---|---|
hostnqn_arg
|
Input hostnqn (command line) argument |
hostid_arg
|
Input hostid (command line) argument |
hostnqn
|
Output hostnqn; may be NULL if the caller does not need it |
hostid
|
Output hostid; may be NULL if the caller does not need it |
Overview
libnvmf_host_get_ids figures out which hostnqn/hostid is to be used. There are several sources where this information can be retrieved.
The order is:
- Start with hostnqn/hostid given on the command line (hostnqn_arg, hostid_arg), if any - Otherwise, use the first host already resolved in ctx's host list, if any - Otherwise, use ctx's own hostnqn/hostid default, or /etc/nvme/hostnqn and /etc/nvme/hostid if ctx has none - Otherwise, if hostnqn is known but hostid is not, and hostnqn has a "uuid:" component, derive hostid from it - As a last resort, derive a still-missing hostid from DMI or device-tree information (or generate a random one), then build a hostnqn from that hostid if one is still missing
The function also checks that hostnqn and hostid match, logging a debug warning if not. The Linux NVMe implementation expects a 1:1 matching between the IDs.
Return
0 on success (hostnqn and hostid contain valid strings which the caller needs to free), or negative error code otherwise.