Hi all,
I'm trying to install and run libhbalinux. I had it working,
but it didn't seem to ever use libpciacess() or find any HBAs,
due to a failure of readlink on /sys/class/fc_host/hostX since
that's a directory and not a symlink.
I think the intent must have been to read /sys/class/fc_host/hostX/device.
I don't see how that ever worked, or any change that obviously
broke it. The kernel hasn't changed that from a link to a
directory recently, as far as I can tell.
So, I fixed that, but now I'm getting a failure to load
libpciaccess which results in the symbol pci_system_init()
not getting found.
Can anyone tell me what I might be doing wrong? I've
run ldconfig. I've linked libhbalinux against libpciaccess.
Here's the patch (cut/paste, not applicable):
diff --git a/lport.c b/lport.c
index 5e8802f..897604f 100644
--- a/lport.c
+++ b/lport.c
@@ -163,6 +163,7 @@ sysfs_scan(struct dirent *dp, void *arg)
struct adapter_info *ap;
struct port_info *pp;
char host_dir[80], hba_dir[80], drv_dir[80];
+ char dev_dir[128];
char ifname[20], buf[256];
char *driverName;
int data[32], rc, i;
@@ -225,10 +226,12 @@ sysfs_scan(struct dirent *dp, void *arg)
goto skip;
/*
- * See if host_dir is a PCI device directory
+ * See if <host_dir>/device is a PCI device directory
* If not, try it as a net device.
*/
- i = readlink(host_dir, buf, sizeof(buf) - 1);
+ snprintf(dev_dir, sizeof(dev_dir),
+ SYSFS_HOST_DIR "/%s/device", dp->d_name);
+ i = readlink(dev_dir, buf, sizeof(buf) - 1);
if (i < 0)
goto skip;
buf[i] = '\0';
---
Here's the error I get:
# ./fcoeadm -i
./fcoeadm: symbol lookup error: /usr/lib64/libhbalinux.so.2: undefined symbol:
pci_system_init
Thanks for any help you can give.
Joe
_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel