From owner-svn-src-all@FreeBSD.ORG Tue Sep 24 17:01:30 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9E847818; Tue, 24 Sep 2013 17:01:30 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7200D2AF2; Tue, 24 Sep 2013 17:01:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r8OH1UXc014689; Tue, 24 Sep 2013 17:01:30 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r8OH1URq014688; Tue, 24 Sep 2013 17:01:30 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201309241701.r8OH1URq014688@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 24 Sep 2013 17:01:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r255855 - head/sys/dev/iscsi_initiator X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Sep 2013 17:01:30 -0000 Author: trasz Date: Tue Sep 24 17:01:29 2013 New Revision: 255855 URL: http://svnweb.freebsd.org/changeset/base/255855 Log: Improve error handling in the old initiator, preventing panic on attempt to load iscsi_initiator.ko when iscsi.ko is already loaded. Approved by: re (glebius) Sponsored by: FreeBSD Foundation Modified: head/sys/dev/iscsi_initiator/iscsi.c Modified: head/sys/dev/iscsi_initiator/iscsi.c ============================================================================== --- head/sys/dev/iscsi_initiator/iscsi.c Tue Sep 24 16:59:28 2013 (r255854) +++ head/sys/dev/iscsi_initiator/iscsi.c Tue Sep 24 17:01:29 2013 (r255855) @@ -706,7 +706,7 @@ free_pdus(struct isc_softc *sc) } } -static void +static int iscsi_start(void) { debug_called(8); @@ -715,8 +715,6 @@ iscsi_start(void) TUNABLE_INT_FETCH("net.iscsi_initiator.max_pdus", &max_pdus); isc = malloc(sizeof(struct isc_softc), M_ISCSI, M_ZERO|M_WAITOK); - isc->dev = make_dev(&iscsi_cdevsw, max_sessions, UID_ROOT, GID_WHEEL, 0600, "iscsi"); - isc->dev->si_drv1 = isc; mtx_init(&isc->isc_mtx, "iscsi-isc", NULL, MTX_DEF); TAILQ_INIT(&isc->isc_sess); @@ -726,10 +724,6 @@ iscsi_start(void) isc->pdu_zone = uma_zcreate("pdu", sizeof(pduq_t), NULL, NULL, NULL, NULL, 0, 0); - if(isc->pdu_zone == NULL) { - xdebug("iscsi_initiator: uma_zcreate failed"); - // XXX: should fail... - } uma_zone_set_max(isc->pdu_zone, max_pdus); isc->unit = new_unrhdr(0, max_sessions-1, NULL); sx_init(&isc->unit_sx, "iscsi sx"); @@ -782,7 +776,16 @@ iscsi_start(void) mtx_init(&iscsi_dbg_mtx, "iscsi_dbg", NULL, MTX_DEF); #endif + isc->dev = make_dev_credf(MAKEDEV_CHECKNAME, &iscsi_cdevsw, max_sessions, + NULL, UID_ROOT, GID_WHEEL, 0600, "iscsi"); + if (isc->dev == NULL) { + xdebug("iscsi_initiator: make_dev_credf failed"); + return (EEXIST); + } + isc->dev->si_drv1 = isc; + printf("iscsi: version %s\n", iscsi_driver_version); + return (0); } /* @@ -830,11 +833,13 @@ iscsi_stop(void) static int iscsi_modevent(module_t mod, int what, void *arg) { + int error = 0; + debug_called(8); switch(what) { case MOD_LOAD: - iscsi_start(); + error = iscsi_start(); break; case MOD_QUIESCE: @@ -854,7 +859,7 @@ iscsi_modevent(module_t mod, int what, v default: break; } - return 0; + return (error); } moduledata_t iscsi_mod = {