1 diff -aurp open-iscsi-2.0-872-rc1-bnx2i/libiscsi/libiscsi.c open-iscsi-2.0-872-rc1-bnx2i.work/libiscsi/libiscsi.c
2 --- open-iscsi-2.0-872-rc1-bnx2i/libiscsi/libiscsi.c 2010-05-18 17:57:59.000000000 -0500
3 +++ open-iscsi-2.0-872-rc1-bnx2i.work/libiscsi/libiscsi.c 2010-05-18 17:58:43.000000000 -0500
6 #define CHECK(a) { context->error_str[0] = 0; rc = a; if (rc) goto leave; }
8 +/* UGLY, not thread safe :( */
9 +static int sysfs_initialized = 0;
11 struct libiscsi_context {
13 /* For get_parameter_helper() */
14 @@ -66,7 +69,10 @@ struct libiscsi_context *libiscsi_init(v
17 log_init("libiscsi", 1024, libiscsi_log, context);
19 + if (!sysfs_initialized) {
21 + sysfs_initialized = 1;
24 if (idbm_init(NULL)) {
26 @@ -529,6 +535,11 @@ int libiscsi_get_firmware_network_config
28 struct boot_context fw_entry;
30 + if (!sysfs_initialized) {
32 + sysfs_initialized = 1;
35 memset(config, 0, sizeof *config);
36 memset(&fw_entry, 0, sizeof fw_entry);
37 if (fw_get_entry(&fw_entry))
38 @@ -551,6 +562,11 @@ int libiscsi_get_firmware_initiator_name
40 struct boot_context fw_entry;
42 + if (!sysfs_initialized) {
44 + sysfs_initialized = 1;
47 memset(initiatorname, 0, LIBISCSI_VALUE_MAXLEN);
48 memset(&fw_entry, 0, sizeof fw_entry);
49 if (fw_get_entry(&fw_entry))