From d7a4aed9e0e347654f5f262ffc4b1487a94c8781 Mon Sep 17 00:00:00 2001 From: "Salyzyn, Mark" Date: Tue, 8 Jan 2008 14:07:57 -0800 Subject: [PATCH] --- yaml --- r: 77107 b: refs/heads/master c: b18268fc631034882f5f3dd93daa248a3bfdd085 h: refs/heads/master i: 77105: f8ac6e08db166b1670152f5d3f36b2b99fede003 77103: 5d65912836fd0bd8625d1b1d97d6eea70f40e881 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/aacraid/linit.c | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 5110259bf388..7c8485f1237a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b6ef70f33ca2a3084b4fea12414550724a9114dc +refs/heads/master: b18268fc631034882f5f3dd93daa248a3bfdd085 diff --git a/trunk/drivers/scsi/aacraid/linit.c b/trunk/drivers/scsi/aacraid/linit.c index 6a553ea730db..0523cc6d895c 100644 --- a/trunk/drivers/scsi/aacraid/linit.c +++ b/trunk/drivers/scsi/aacraid/linit.c @@ -401,16 +401,14 @@ static int aac_biosparm(struct scsi_device *sdev, struct block_device *bdev, static int aac_slave_configure(struct scsi_device *sdev) { + struct aac_dev *aac = (struct aac_dev *)sdev->host->hostdata; if ((sdev->type == TYPE_DISK) && - (sdev_channel(sdev) != CONTAINER_CHANNEL)) { + (sdev_channel(sdev) != CONTAINER_CHANNEL) && + (!aac->raid_scsi_mode || (sdev_channel(sdev) != 2))) { if (expose_physicals == 0) return -ENXIO; - if (expose_physicals < 0) { - struct aac_dev *aac = - (struct aac_dev *)sdev->host->hostdata; - if (!aac->raid_scsi_mode || (sdev_channel(sdev) != 2)) - sdev->no_uld_attach = 1; - } + if (expose_physicals < 0) + sdev->no_uld_attach = 1; } if (sdev->tagged_supported && (sdev->type == TYPE_DISK) && (sdev_channel(sdev) == CONTAINER_CHANNEL)) { @@ -419,6 +417,7 @@ static int aac_slave_configure(struct scsi_device *sdev) unsigned num_lsu = 0; unsigned num_one = 0; unsigned depth; + unsigned cid; /* * Firmware has an individual device recovery time typically @@ -426,11 +425,15 @@ static int aac_slave_configure(struct scsi_device *sdev) */ if (sdev->timeout < (45 * HZ)) sdev->timeout = 45 * HZ; + for (cid = 0; cid < aac->maximum_num_containers; ++cid) + if (aac->fsa_dev[cid].valid) + ++num_lsu; __shost_for_each_device(dev, host) { if (dev->tagged_supported && (dev->type == TYPE_DISK) && - (sdev_channel(dev) == CONTAINER_CHANNEL)) - ++num_lsu; - else + (sdev_channel(dev) == CONTAINER_CHANNEL)) { + if (!aac->fsa_dev[sdev_id(dev)].valid) + ++num_lsu; + } else ++num_one; } if (num_lsu == 0)