]> Pileus Git - ~andy/linux/commitdiff
Revert "target: Do not special-case loop and iscsi fabric module loads"
authorNicholas Bellinger <nab@linux-iscsi.org>
Wed, 11 Jul 2012 20:29:47 +0000 (13:29 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Tue, 17 Jul 2012 00:35:14 +0000 (17:35 -0700)
Existing lio_dump.py code expects this to be in place for /iscsi.

Revert for now to avoid userspace breakage in lio-utils

This reverts commit fd88a785f9ac5d6be437c528571ccd85cdf2d493.

Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_configfs.c

index 37c4bf3be43a232f91cc33fd62e1881c64c4d134..801efa8920464620ca8cdbc318d5c4865181c5c3 100644 (file)
@@ -122,9 +122,47 @@ static struct config_group *target_core_register_fabric(
        const char *name)
 {
        struct target_fabric_configfs *tf;
+       int ret;
 
        pr_debug("Target_Core_ConfigFS: REGISTER -> group: %p name:"
                        " %s\n", group, name);
+       /*
+        * Below are some hardcoded request_module() calls to automatically
+        * local fabric modules when the following is called:
+        *
+        * mkdir -p /sys/kernel/config/target/$MODULE_NAME
+        *
+        * Note that this does not limit which TCM fabric module can be
+        * registered, but simply provids auto loading logic for modules with
+        * mkdir(2) system calls with known TCM fabric modules.
+        */
+       if (!strncmp(name, "iscsi", 5)) {
+               /*
+                * Automatically load the LIO Target fabric module when the
+                * following is called:
+                *
+                * mkdir -p $CONFIGFS/target/iscsi
+                */
+               ret = request_module("iscsi_target_mod");
+               if (ret < 0) {
+                       pr_err("request_module() failed for"
+                               " iscsi_target_mod.ko: %d\n", ret);
+                       return ERR_PTR(-EINVAL);
+               }
+       } else if (!strncmp(name, "loopback", 8)) {
+               /*
+                * Automatically load the tcm_loop fabric module when the
+                * following is called:
+                *
+                * mkdir -p $CONFIGFS/target/loopback
+                */
+               ret = request_module("tcm_loop");
+               if (ret < 0) {
+                       pr_err("request_module() failed for"
+                               " tcm_loop.ko: %d\n", ret);
+                       return ERR_PTR(-EINVAL);
+               }
+       }
 
        tf = target_core_get_fabric(name);
        if (!tf) {