> -----Original Message----- > From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi- > owner@xxxxxxxxxxxxxxx] On Behalf Of Moger, Babu > Sent: Friday, April 08, 2011 12:39 PM > To: linux-scsi@xxxxxxxxxxxxxxx; device-mapper development > Cc: Qi, Yanling; Chauhan, Vijay; Stankey, Robert; Arumugam, Anburaja; > Krishnasamy, Somasundaram; Dachepalli, Sudhir > Subject: [PATCH 2/3] scsi_dh_rdac : Detect the different RDAC operating > modes > > This patch detects different operating RDAC modes during the discovery. > It also collects the information about > the preferred path. > > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > Reviewed-by: Yanling Qi <yanling.qi@xxxxxxx> > Reviewed-by: Sudhir Dachepalli <Sudhir.Dachepalli@xxxxxxx> > Reviewed-by: Somasundaram Krishnasamy <Somasundaram.Krishnasamy@xxxxxxx> > Reviewed-by: Bob Stankey <Robert.Stankey@xxxxxxx> > Reviewed-by: Vijay Chauhan <Vijay.Chauhan@xxxxxxx> Tested-by: Charles Cummins <Charles.cummins@xxxxxxx> > > --- > --- linux-2.6.38/drivers/scsi/device_handler/scsi_dh_rdac.c.orig 2011- > 03-17 16:51:40.000000000 -0500 > +++ linux-2.6.38/drivers/scsi/device_handler/scsi_dh_rdac.c 2011-03-17 > 16:53:33.000000000 -0500 > @@ -194,7 +194,6 @@ struct rdac_dh_data { > > #define RDAC_LUN_UNOWNED 0 > #define RDAC_LUN_OWNED 1 > -#define RDAC_LUN_AVT 2 > char lun_state; > > #define RDAC_PREFERRED 0 > @@ -473,25 +472,33 @@ static int check_ownership(struct scsi_d > int err; > 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; > - if ((inqp->avte_cvp >> 7) == 0x1) { > - /* LUN in AVT mode */ > - sdev_printk(KERN_NOTICE, sdev, > - "%s: AVT mode detected\n", > - RDAC_NAME); > - h->lun_state = RDAC_LUN_AVT; > - } else if ((inqp->avte_cvp & 0x1) != 0) { > - /* LUN was owned by the controller */ > + /* detect the operating mode */ > + if ((inqp->avte_cvp >> 5) & 0x1) > + h->mode = RDAC_MODE_IOSHIP; /* LUN in IOSHIP mode */ > + else if (inqp->avte_cvp >> 7) > + h->mode = RDAC_MODE_AVT; /* LUN in AVT mode */ > + else > + h->mode = RDAC_MODE; /* LUN in RDAC mode */ > + > + /* Update ownership */ > + if (inqp->avte_cvp & 0x1) > h->lun_state = RDAC_LUN_OWNED; > + else { > + h->lun_state = RDAC_LUN_UNOWNED; > + if (h->mode == RDAC_MODE) > + h->state = RDAC_STATE_PASSIVE; > } > - } > > - if (h->lun_state == RDAC_LUN_UNOWNED) > - h->state = RDAC_STATE_PASSIVE; > + /* Update path prio*/ > + if (inqp->path_prio & 0x1) > + h->preferred = RDAC_PREFERRED; > + else > + h->preferred = RDAC_NON_PREFERRED; > + } > > return err; > } > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html