50 lines
1.4 KiB
Diff
50 lines
1.4 KiB
Diff
|
diff -aurp open-iscsi-2.0-872-rc1-bnx2i/libiscsi/libiscsi.c open-iscsi-2.0-872-rc1-bnx2i.work/libiscsi/libiscsi.c
|
||
|
--- open-iscsi-2.0-872-rc1-bnx2i/libiscsi/libiscsi.c 2010-05-18 17:57:59.000000000 -0500
|
||
|
+++ open-iscsi-2.0-872-rc1-bnx2i.work/libiscsi/libiscsi.c 2010-05-18 17:58:43.000000000 -0500
|
||
|
@@ -40,6 +40,9 @@
|
||
|
|
||
|
#define CHECK(a) { context->error_str[0] = 0; rc = a; if (rc) goto leave; }
|
||
|
|
||
|
+/* UGLY, not thread safe :( */
|
||
|
+static int sysfs_initialized = 0;
|
||
|
+
|
||
|
struct libiscsi_context {
|
||
|
char error_str[256];
|
||
|
/* For get_parameter_helper() */
|
||
|
@@ -66,7 +69,10 @@ struct libiscsi_context *libiscsi_init(v
|
||
|
return NULL;
|
||
|
|
||
|
log_init("libiscsi", 1024, libiscsi_log, context);
|
||
|
- sysfs_init();
|
||
|
+ if (!sysfs_initialized) {
|
||
|
+ sysfs_init();
|
||
|
+ sysfs_initialized = 1;
|
||
|
+ }
|
||
|
increase_max_files();
|
||
|
if (idbm_init(NULL)) {
|
||
|
sysfs_cleanup();
|
||
|
@@ -529,6 +535,11 @@ int libiscsi_get_firmware_network_config
|
||
|
{
|
||
|
struct boot_context fw_entry;
|
||
|
|
||
|
+ if (!sysfs_initialized) {
|
||
|
+ sysfs_init();
|
||
|
+ sysfs_initialized = 1;
|
||
|
+ }
|
||
|
+
|
||
|
memset(config, 0, sizeof *config);
|
||
|
memset(&fw_entry, 0, sizeof fw_entry);
|
||
|
if (fw_get_entry(&fw_entry))
|
||
|
@@ -551,6 +562,11 @@ int libiscsi_get_firmware_initiator_name
|
||
|
{
|
||
|
struct boot_context fw_entry;
|
||
|
|
||
|
+ if (!sysfs_initialized) {
|
||
|
+ sysfs_init();
|
||
|
+ sysfs_initialized = 1;
|
||
|
+ }
|
||
|
+
|
||
|
memset(initiatorname, 0, LIBISCSI_VALUE_MAXLEN);
|
||
|
memset(&fw_entry, 0, sizeof fw_entry);
|
||
|
if (fw_get_entry(&fw_entry))
|