From patchwork Mon Oct 5 14:35:26 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Reinecke X-Patchwork-Id: 51740 Received: from hormel.redhat.com (hormel1.redhat.com [209.132.177.33]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n95EZj1Q012002 for ; Mon, 5 Oct 2009 14:35:45 GMT Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110]) by hormel.redhat.com (Postfix) with ESMTP id BB8DD61A0A7; Mon, 5 Oct 2009 10:35:44 -0400 (EDT) Received: from int-mx02.intmail.prod.int.phx2.redhat.com (nat-pool.util.phx.redhat.com [10.8.5.200]) by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id n95EZgUg005928 for ; Mon, 5 Oct 2009 10:35:42 -0400 Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.5]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n95EZgAd030453 for ; Mon, 5 Oct 2009 10:35:42 -0400 Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n95EZU7J013312 for ; Mon, 5 Oct 2009 10:35:30 -0400 Received: from relay2.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 8D5AB8FEA2; Mon, 5 Oct 2009 16:35:29 +0200 (CEST) Message-ID: <4ACA042E.2000507@suse.de> Date: Mon, 05 Oct 2009 16:35:26 +0200 From: Hannes Reinecke User-Agent: Thunderbird 2.0.0.23 (X11/20090812) MIME-Version: 1.0 To: Chandra Seetharaman References: <20090930020811.11455.59565.sendpatchset@chandra-ubuntu> <4AC9EE1B.7030702@suse.de> In-Reply-To: <4AC9EE1B.7030702@suse.de> X-RedHat-Spam-Score: -4 (AWL,RCVD_IN_DNSWL_HI) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Scanned-By: MIMEDefang 2.67 on 10.5.110.5 X-loop: dm-devel@redhat.com Cc: michaelc@cs.wisc.edu, linux-scsi@vger.kernel.org, dm-devel@redhat.com, Benoit_Arthur@emc.com, Eddie.Williams@steeleye.com Subject: [dm-devel] Re: [PATCH 0/4] scsi_dh: Make scsi_dh_activate asynchronous X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.5 Precedence: junk Reply-To: device-mapper development List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index ec0ad84..6900115 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c @@ -42,6 +42,7 @@ /* * Controller modes definitions */ +#define RDAC_MODE_TRANSFER_ALL_VISIBLE_LUNS 0x01 #define RDAC_MODE_TRANSFER_SPECIFIED_LUNS 0x02 /* @@ -129,6 +130,7 @@ struct rdac_controller { u8 subsys_id[SUBSYS_ID_LEN]; u8 slot_id[SLOT_ID_LEN]; int use_ms10; + int transfer_all_luns; struct kref kref; struct list_head node; /* list of all controllers */ union { @@ -253,7 +255,8 @@ static struct request *rdac_failover_get(struct scsi_device *sdev, rdac_pg->subpage_code = 0x1; rdac_pg->page_len[0] = 0x01; rdac_pg->page_len[1] = 0x28; - rdac_pg->lun_table[h->lun] = 0x81; + if (!h->ctlr->transfer_all_luns) + rdac_pg->lun_table[h->lun] = 0x81; } else { struct rdac_pg_legacy *rdac_pg; @@ -263,9 +266,13 @@ static struct request *rdac_failover_get(struct scsi_device *sdev, common = &rdac_pg->common; rdac_pg->page_code = RDAC_PAGE_CODE_REDUNDANT_CONTROLLER; rdac_pg->page_len = 0x68; - rdac_pg->lun_table[h->lun] = 0x81; + if (!h->ctlr->transfer_all_luns) + rdac_pg->lun_table[h->lun] = 0x81; } - common->rdac_mode[1] = RDAC_MODE_TRANSFER_SPECIFIED_LUNS; + if (h->ctlr->transfer_all_luns) + common->rdac_mode[1] = RDAC_MODE_TRANSFER_ALL_VISIBLE_LUNS; + else + common->rdac_mode[1] = RDAC_MODE_TRANSFER_SPECIFIED_LUNS; common->quiescence_timeout = RDAC_QUIESCENCE_TIME; common->rdac_options = RDAC_FORCED_QUIESENCE; @@ -326,6 +333,7 @@ static struct rdac_controller *get_controller(u8 *subsys_id, u8 *slot_id) memcpy(ctlr->slot_id, slot_id, SLOT_ID_LEN); kref_init(&ctlr->kref); ctlr->use_ms10 = -1; + ctlr->transfer_all_luns = 1; list_add(&ctlr->node, &ctlr_list); done: spin_unlock(&list_lock);