diff options
author | Gris Ge <fge@redhat.com> | 2018-04-13 20:14:42 +0800 |
---|---|---|
committer | Gris Ge <fge@redhat.com> | 2018-04-13 20:14:42 +0800 |
commit | ebc1673cd0978f4d656687e909833806a84833d7 (patch) | |
tree | ced0e976b0e7857271123b8e2814c236166ab4ef /libopeniscsiusr | |
parent | 87ea50a1c3a97abd5d223bd7f8530109062f1239 (diff) | |
download | open-iscsi-ebc1673cd0978f4d656687e909833806a84833d7.tar.gz |
libopeniscsiusr: Fix iscsi_iface_get() on default interfaces.
Issue:
Command `iscsiadm -m iface default` will got failure:
iSCSI ERROR: Failed to open /etc/iscsi/ifaces/default using read mode:
2 No such file or directory # idbm.c:_idbm_recs_read():743
Fix:
If `iscsi_iface_get()` specified the default iface, just copy from
build config instead of looking up the idbm.
Signed-off-by: Gris Ge <fge@redhat.com>
Diffstat (limited to 'libopeniscsiusr')
-rw-r--r-- | libopeniscsiusr/iface.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libopeniscsiusr/iface.c b/libopeniscsiusr/iface.c index 903bcd8..95870bf 100644 --- a/libopeniscsiusr/iface.c +++ b/libopeniscsiusr/iface.c @@ -876,6 +876,17 @@ int iscsi_iface_get(struct iscsi_context *ctx, const char *iface_name, *iface = NULL; + size_t i = 0; + for (; i < sizeof(_DEFAULT_IFACES)/sizeof(struct iscsi_iface); ++i) { + if (strcmp(iface_name, _DEFAULT_IFACES[i].name) == 0) { + *iface = calloc(1, sizeof(struct iscsi_iface)); + _alloc_null_check(ctx, *iface, rc, out); + memcpy(*iface, &_DEFAULT_IFACES[i], + sizeof(struct iscsi_iface)); + goto out; + } + } + rc = _idbm_lock(ctx); if (rc != LIBISCSI_OK) return rc; @@ -886,6 +897,7 @@ int iscsi_iface_get(struct iscsi_context *ctx, const char *iface_name, _idbm_unlock(ctx); +out: return rc; } |