aacraid drives missing after update 10.0 -> 10.1 ?

Borja Marcos borjam at sarenet.es
Mon Nov 17 15:26:02 UTC 2014


On Nov 17, 2014, at 3:52 PM, Kurt Jaeger wrote:

> Hi!
> 
>>>> If your running a custom kernel do you have both the options for aac enable:
> 
>>> It's the GENERIC kernel.
> 
>> That's curious. In order  to have direct access to the  disks I
>> had to patch aac_cam.c. Maybe you were
>> using a patched file and you forgot?
> 
> I upgraded using freebsd-update and upgraded GENERIC. What additional 
> patch would be needed ?

Beware, it's just my case,  not necessarily others'. 

My controller (built-in in a SunFire X4240) I needed to comment out several lines
so that the passthrough driver attaches the disks to the "da" driver. It was suggested 
back in 2007 (with flashing warnings all over the place!) by Scott Long answering
my question about ZFS and avoiding "intelligent RAID controller" features entirely.

These are the two relevant threads:
http://lists.freebsd.org/pipermail/freebsd-scsi/2007-October/003223.html
http://lists.freebsd.org/pipermail/freebsd-scsi/2007-November/003234.html

They are related to the "mfi"  cards, but  I posted them so that you have some historical context.
Of course now we know that it's far better to repurpose them by flashing with IT-mode firmware
(turning them into "HBA, period" devices).

Back to our "aac". I have that SunFire machine in which I was unable to access
the disks individually. So I checked the source code for aac_cam.c and I found
out that the same trick works.

This is what I do. Beware! This is working for me since 2012, but of course there's no guarantee.
At some point (with some 9. x version) the kludge stopped identifyng SSD disks connected to the
backplane, but it works with the SAS disks I am using.

Again, USE WITH CAUTION! Something like this should be made more or less "official".



--- aac_cam.c	2014-11-17 15:20:24.011457711 +0000
+++ aac_cam.c.orig	2014-11-17 15:08:13.116702602 +0000
@@ -129,7 +129,7 @@
 			return;
 		}
 
-		if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+		if (xpt_create_path(&ccb->ccb_h.path, NULL,
 		    cam_sim_path(camsc->sim),
 		    target_id, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 			xpt_free_ccb(ccb);
@@ -548,9 +548,8 @@
 		/*
 		 * We want DASD and PROC devices to only be
 		 * visible through the pass device.
-		 * CHANGE: WE WANT DASD DEVICES VISIBLE!
 		 */
-		if ((/* IGNORE THIS: (device == T_DIRECT) || */
+		if (((device == T_DIRECT) ||
 		    (device == T_PROCESSOR) ||
 		    (sc->flags & AAC_FLAGS_CAM_PASSONLY))) {
 			/*










Borja.



More information about the freebsd-stable mailing list