|
@@ -155,6 +155,8 @@ static ssize_t target_core_item_dbroot_store(struct config_item *item,
|
|
|
|
|
|
mutex_unlock(&g_tf_lock);
|
|
|
|
|
|
+ pr_debug("Target_Core_ConfigFS: db_root set to %s\n", db_root);
|
|
|
+
|
|
|
return read_bytes;
|
|
|
}
|
|
|
|
|
@@ -3213,6 +3215,27 @@ void target_setup_backend_cits(struct target_backend *tb)
|
|
|
target_core_setup_dev_stat_cit(tb);
|
|
|
}
|
|
|
|
|
|
+static void target_init_dbroot(void)
|
|
|
+{
|
|
|
+ struct file *fp;
|
|
|
+
|
|
|
+ snprintf(db_root_stage, DB_ROOT_LEN, DB_ROOT_PREFERRED);
|
|
|
+ fp = filp_open(db_root_stage, O_RDONLY, 0);
|
|
|
+ if (IS_ERR(fp)) {
|
|
|
+ pr_err("db_root: cannot open: %s\n", db_root_stage);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!S_ISDIR(file_inode(fp)->i_mode)) {
|
|
|
+ filp_close(fp, NULL);
|
|
|
+ pr_err("db_root: not a valid directory: %s\n", db_root_stage);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ filp_close(fp, NULL);
|
|
|
+
|
|
|
+ strncpy(db_root, db_root_stage, DB_ROOT_LEN);
|
|
|
+ pr_debug("Target_Core_ConfigFS: db_root set to %s\n", db_root);
|
|
|
+}
|
|
|
+
|
|
|
static int __init target_core_init_configfs(void)
|
|
|
{
|
|
|
struct configfs_subsystem *subsys = &target_core_fabrics;
|
|
@@ -3293,6 +3316,8 @@ static int __init target_core_init_configfs(void)
|
|
|
if (ret < 0)
|
|
|
goto out;
|
|
|
|
|
|
+ target_init_dbroot();
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
out:
|