blob: 1f36b7229047d3e07c4fc5f8a4314b8a991f174d [file] [log] [blame]
In Chromium OS, sysroot is mounted read-only, but iscsid keeps the idbm
database in /etc/iscsi, so scanning and adding nodes and targets fails. This
patch allows to change the root of the idbm database during compile time with
a -DISCSI_IDBM_ROOT preprocessor directive.
Fix by Victor Dodon <printesoi@chromium.org>
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2468,9 +2468,9 @@ free_info:
int idbm_init(idbm_get_config_file_fn *fn)
{
/* make sure root db dir is there */
- if (access(ISCSI_CONFIG_ROOT, F_OK) != 0) {
- if (mkdir(ISCSI_CONFIG_ROOT, 0660) != 0) {
- log_error("Could not make %s %d\n", ISCSI_CONFIG_ROOT,
+ if (access(ISCSI_IDBM_ROOT, F_OK) != 0) {
+ if (mkdir(ISCSI_IDBM_ROOT, 0660) != 0) {
+ log_error("Could not make %s %d\n", ISCSI_IDBM_ROOT,
errno);
return errno;
}
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -28,12 +28,16 @@
#include "config.h"
#include "list.h"
-#define NODE_CONFIG_DIR ISCSI_CONFIG_ROOT"nodes"
-#define SLP_CONFIG_DIR ISCSI_CONFIG_ROOT"slp"
-#define ISNS_CONFIG_DIR ISCSI_CONFIG_ROOT"isns"
-#define STATIC_CONFIG_DIR ISCSI_CONFIG_ROOT"static"
-#define FW_CONFIG_DIR ISCSI_CONFIG_ROOT"fw"
-#define ST_CONFIG_DIR ISCSI_CONFIG_ROOT"send_targets"
+#ifndef ISCSI_IDBM_ROOT
+# define ISCSI_IDBM_ROOT ISCSI_CONFIG_ROOT
+#endif
+
+#define NODE_CONFIG_DIR ISCSI_IDBM_ROOT"nodes"
+#define SLP_CONFIG_DIR ISCSI_IDBM_ROOT"slp"
+#define ISNS_CONFIG_DIR ISCSI_IDBM_ROOT"isns"
+#define STATIC_CONFIG_DIR ISCSI_IDBM_ROOT"static"
+#define FW_CONFIG_DIR ISCSI_IDBM_ROOT"fw"
+#define ST_CONFIG_DIR ISCSI_IDBM_ROOT"send_targets"
#define ST_CONFIG_NAME "st_config"
#define ISNS_CONFIG_NAME "isns_config"