ISCSI - Minor module handling
authorAntonio Huete <tuxillo@quantumachine.net>
Fri, 4 Sep 2009 22:18:21 +0000 (00:18 +0200)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 8 Sep 2009 16:03:34 +0000 (09:03 -0700)
  - Rename iscsi module name to iscsi_initiator
  - iscontrol now loads automatically iscsi_initiator module

sbin/iscontrol/iscontrol.8
sbin/iscontrol/iscontrol.c
sbin/iscontrol/iscontrol.h
sys/dev/disk/iscsi/initiator/iscsi.c

index b5c3b1e..ffc76af 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/sbin/iscontrol/iscontrol.8,v 1.3 2008/11/25 07:17:11 scottl Exp $
 .\"
-.Dd August 24, 2009
+.Dd September 04, 2009
 .Dt ISCONTROL 8
 .Os
 .Sh NAME
@@ -113,8 +113,6 @@ whatever options are specified, and start an iscsi-session.
 RFC 3720
 .\"Sh HISTORY
 .Sh BUGS
-.Nm
-should probably load the iscsi_initiator module if needed.
 .br
 Not all functions/specifications have been implemented yet, noticeably
 missing are the Task Management Functions.
index 07f557a..ca77ccc 100644 (file)
@@ -37,6 +37,8 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/sysctl.h>
+#include <sys/module.h>
+#include <sys/linker.h>
 
 #include <netinet/in.h>
 #include <netinet/tcp.h>
@@ -131,6 +133,14 @@ main(int cc, char **vv)
      isc_opt_t *op;
      FILE      *fd;
 
+     /* Try to load iscsi_initiator module before starting its operation */
+     if (modfind(INITIATORMOD) < 0) {
+            if (kldload(INITIATORMOD) < 0 || modfind(INITIATORMOD) < 0) {
+                    perror(INITIATORMOD ": Error while handling kernel module");
+                    return 1;
+            }
+     }
+
      op = &opvals;
      iscsidev = "/dev/"ISCSIDEV;
      fd = NULL;
index 31d9e73..a8149ad 100644 (file)
@@ -28,6 +28,8 @@
 /*
  | $Id: iscontrol.h,v 2.3 2007/04/27 08:36:49 danny Exp danny $
  */
+#define INITIATORMOD "iscsi_initiator"
+
 #ifdef DEBUG
 int vflag;
 
index 6a2f449..f71a6a8 100644 (file)
@@ -896,7 +896,7 @@ iscsi_modevent(module_t mod, int what, void *arg)
 }
 
 moduledata_t iscsi_mod = {
-         "iscsi",
+         "iscsi_initiator",
          (modeventhand_t) iscsi_modevent,
          0
 };
@@ -916,5 +916,5 @@ iscsi_rootconf(void)
 SYSINIT(cpu_rootconf1, SI_SUB_ROOT_CONF, SI_ORDER_FIRST, iscsi_rootconf, NULL)
 #endif
 
-DECLARE_MODULE(iscsi, iscsi_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
-MODULE_DEPEND(iscsi, cam, 1, 1, 1);
+DECLARE_MODULE(iscsi_initiator, iscsi_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
+MODULE_DEPEND(iscsi_initiator, cam, 1, 1, 1);