[dm-devel] i/o error due to all path failure with rdac

Chandra Seetharaman sekharan at us.ibm.com
Thu Oct 30 23:35:29 UTC 2008


Can you try this patch.
---------
Signed-off-by: Chandra Seetharaman <sekharan at us.ibm.com>

Index: linux-2.6.27/drivers/scsi/device_handler/scsi_dh_rdac.c
===================================================================
--- linux-2.6.27.orig/drivers/scsi/device_handler/scsi_dh_rdac.c
+++ linux-2.6.27/drivers/scsi/device_handler/scsi_dh_rdac.c
@@ -386,6 +386,7 @@ static int check_ownership(struct scsi_d
 	struct c9_inquiry *inqp;
 
 	h->lun_state = RDAC_LUN_UNOWNED;
+	h->state = RDAC_STATE_ACTIVE;
 	err = submit_inquiry(sdev, 0xC9, sizeof(struct c9_inquiry), h);
 	if (err == SCSI_DH_OK) {
 		inqp = &h->inq.c9;
---

On Thu, 2008-10-30 at 17:21 -0600, Moger, Babu wrote:
> Looks like eventually we get rport failure after the controller offline.
> 
> 
> I have attached the messages file.  I am running raw IO.
> 
> Also, please note that I have added following lines in check_sense. This condition (quiescence) should be retried.
> 
> 
> case UNIT_ATTENTION:
>                 if ((sense_hdr->asc == 0x29 && sense_hdr->ascq == 0x00) ||
>                     (sense_hdr->asc == 0x8b && sense_hdr->ascq == 0x02))
>                         /*
>                          * Power On, Reset, or Bus Device Reset, just retry.
>                          */
>                         return ADD_TO_MLQUEUE;
> 
> 
> 
> Thanks
> Babu Moger
> 
> -----Original Message-----
> From: Chandra Seetharaman [mailto:sekharan at us.ibm.com]
> Sent: Thursday, October 30, 2008 5:24 PM
> To: Moger, Babu
> Cc: device-mapper development; linux-scsi at vger.kernel.org
> Subject: RE: [dm-devel] i/o error due to all path failure with rdac
> 
> 
> On Thu, 2008-10-30 at 14:30 -0600, Moger, Babu wrote:
> > This is what happens in my case
> >
> > When the active path is failed, the dh handler calls rdac_activate to activate the passive path.
> > Then check_ownership is called. As you know check_ownership sends inquiry (page c9). Looking at the
> > response this function sets the lun_state(h->lun_state) to RDAC_LUN_OWNED.
> >
> > If lun_state is set to RDAC_LUN_OWNED then send_mode_select will not be called. This is what
> > happens in my case.
> 
> Ok. Now it is clear. I thought the port was disabled.
> 
> The rport failure in the log you sent made me think that it was a port
> disable. Why was there a rport failure ?
> 
> Can you add these two lines at the top of
> scsi_dn_rdac.c:rdac_check_sense() function, retest and send me the log.
> ------------
>         sdev_printk(KERN_ERR, sdev, "sense_key:%x; asc %c; ascq %x\n",
>                 sense_hdr->sense_key, sense_hdr->asc, sense_hdr->ascq);
> -----------
> I want to see if we are getting any special sense that we are not
> handling.




More information about the dm-devel mailing list