From owner-freebsd-scsi@FreeBSD.ORG Tue Feb 8 17:25:53 2005 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 32A9C16A4CE for ; Tue, 8 Feb 2005 17:25:53 +0000 (GMT) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7AE9343D2D for ; Tue, 8 Feb 2005 17:25:52 +0000 (GMT) (envelope-from scottl@freebsd.org) Received: from [192.168.254.12] (g4.samsco.home [192.168.254.12]) (authenticated bits=0) by pooker.samsco.org (8.13.1/8.13.1) with ESMTP id j18HQCWs004314; Tue, 8 Feb 2005 10:26:12 -0700 (MST) (envelope-from scottl@freebsd.org) Message-ID: <4208F618.3000400@freebsd.org> Date: Tue, 08 Feb 2005 10:25:44 -0700 From: Scott Long User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7) Gecko/20040514 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Danny Braniss References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.8 required=3.8 tests=ALL_TRUSTED autolearn=failed version=3.0.2 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on pooker.samsco.org cc: freebsd-scsi@freebsd.org Subject: Re: how CAM/HBA probe for devices? X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2005 17:25:53 -0000 Danny Braniss wrote: > i have been writing a driver for the iSCSI, and am concentrating > on the initiator side. > So far i mannaged to get to first base, ie, managed to login onto a target, > but now im stuck. > After several hours of reading/searching, this is avoiding me: > how can i get the CAM to probe for devices on this 'controller'? > thanks, > danny > A scan is performed when CAM gets an XPT_SCAN_BUS command. This happens automatically during boot after the XPT_RESET_BUS command finishes. A driver or userland app can send an XPT_SCAN_BUS command at any time via various interfaces. However, you've just hit the first big blocker in iSCSI support. CAM is oriented around parallel SCSI, and in parallel SCSI you do a linear scan of targets from 0 to 7 or 15, depending on the bus width. LUNs are also scanned linearly on each target, though we need to implement the REPORT_LUNS feature so that we can efficiently detect high LUNs without needing a linear scan. Anyways, the linear scan of targets works because the range is very small and bounded. For iSCSI, this obviously won't work. CAM has no concept of iSCSI addresses, and even if it did, doing a linear scan of even a small subnet would be prohibitively expensive. What is really needed is a new XPT layer that understands iSCSI. By this, I mean a layer that understands how to properly scan and detect targets, how to log into them, etc. It should also have a certain amount of flexibility so that hardware-assisted solutions can plug in and pick-and-choose the pieces they need from the transport layer. Lucent did an iSCSI initiator for FreeBSD 4.x a while back and I think they got around all of this by telling CAM not to auto-scan at boot, followed by having the driver announce devices to CAM directly (look at the ATAPI-CAM code for an example of how to do this) and do all the detection and login work behind CAM's back. This really should only be considered a hack though. If you're interested, I might be able to dig up the link to it. We never pursued integrating it to the FreeBSD tree because of very restrictive licensing terms on it. I started some preliminary work last spring on cleaning up CAM to segregate parallel SCSI knowledge into its own module. This should eventually allow a system where multiple XPT modules can live together and each provide a different transport. At the end, I'd like to see transports for p-scsi, iscsi, sas, ata/sata, and fc. This is of course in my fantasy world of inifinite hacking time =-) If you're interested in helping, I'd love to talk to you some more offline. Please don't let this scare you away from what you're doing. iSCSI support is badly needed, and I'm thrilled that your working on it. If there is anything I can do to help, please ask. Scott