Lines Matching refs:h

228 	struct rdac_dh_data	*h;  member
299 struct rdac_dh_data *h, struct list_head *list) in rdac_failover_get() argument
307 if (h->ctlr->use_ms10) { in rdac_failover_get()
311 rdac_pg = &h->ctlr->mode_select.expanded; in rdac_failover_get()
323 rdac_pg = &h->ctlr->mode_select.legacy; in rdac_failover_get()
335 lun_table[qdata->h->lun] = 0x81; in rdac_failover_get()
339 rq = get_rdac_req(sdev, &h->ctlr->mode_select, data_size, WRITE); in rdac_failover_get()
344 if (h->ctlr->use_ms10) { in rdac_failover_get()
354 rq->sense = h->sense; in rdac_failover_get()
406 unsigned int len, struct rdac_dh_data *h) in submit_inquiry() argument
412 rq = get_rdac_req(sdev, &h->inq, len, READ); in submit_inquiry()
423 rq->sense = h->sense; in submit_inquiry()
436 static int get_lun_info(struct scsi_device *sdev, struct rdac_dh_data *h, in get_lun_info() argument
442 err = submit_inquiry(sdev, 0xC8, sizeof(struct c8_inquiry), h); in get_lun_info()
444 inqp = &h->inq.c8; in get_lun_info()
450 h->lun = inqp->lun[7]; /* Uses only the last byte */ in get_lun_info()
462 static int check_ownership(struct scsi_device *sdev, struct rdac_dh_data *h) in check_ownership() argument
467 h->state = RDAC_STATE_ACTIVE; in check_ownership()
468 err = submit_inquiry(sdev, 0xC9, sizeof(struct c9_inquiry), h); in check_ownership()
470 inqp = &h->inq.c9; in check_ownership()
473 h->mode = RDAC_MODE_IOSHIP; /* LUN in IOSHIP mode */ in check_ownership()
475 h->mode = RDAC_MODE_AVT; /* LUN in AVT mode */ in check_ownership()
477 h->mode = RDAC_MODE; /* LUN in RDAC mode */ in check_ownership()
481 h->lun_state = RDAC_LUN_OWNED; in check_ownership()
483 h->lun_state = RDAC_LUN_UNOWNED; in check_ownership()
484 if (h->mode == RDAC_MODE) in check_ownership()
485 h->state = RDAC_STATE_PASSIVE; in check_ownership()
490 h->preferred = RDAC_PREFERRED; in check_ownership()
492 h->preferred = RDAC_NON_PREFERRED; in check_ownership()
499 struct rdac_dh_data *h, char *array_name, u8 *array_id) in initialize_controller() argument
504 err = submit_inquiry(sdev, 0xC4, sizeof(struct c4_inquiry), h); in initialize_controller()
506 inqp = &h->inq.c4; in initialize_controller()
514 h->ctlr = get_controller(index, array_name, array_id, sdev); in initialize_controller()
515 if (!h->ctlr) in initialize_controller()
522 static int set_mode_select(struct scsi_device *sdev, struct rdac_dh_data *h) in set_mode_select() argument
527 err = submit_inquiry(sdev, 0xC2, sizeof(struct c2_inquiry), h); in set_mode_select()
529 inqp = &h->inq.c2; in set_mode_select()
535 h->ctlr->use_ms10 = 1; in set_mode_select()
537 h->ctlr->use_ms10 = 0; in set_mode_select()
547 struct rdac_dh_data *h = get_rdac_data(sdev); in mode_select_handle_sense() local
579 (char *) h->ctlr->array_name, h->ctlr->index, in mode_select_handle_sense()
592 struct rdac_dh_data *h = get_rdac_data(sdev); in send_mode_select() local
606 rq = rdac_failover_get(sdev, h, &list); in send_mode_select()
612 (char *) h->ctlr->array_name, h->ctlr->index, in send_mode_select()
618 err = mode_select_handle_sense(sdev, h->sense); in send_mode_select()
625 h->state = RDAC_STATE_ACTIVE; in send_mode_select()
628 (char *) h->ctlr->array_name, h->ctlr->index); in send_mode_select()
635 qdata->h->state = RDAC_STATE_ACTIVE; in send_mode_select()
653 qdata->h = get_rdac_data(sdev); in queue_mode_select()
657 ctlr = qdata->h->ctlr; in queue_mode_select()
672 struct rdac_dh_data *h = get_rdac_data(sdev); in rdac_activate() local
676 err = check_ownership(sdev, h); in rdac_activate()
680 switch (h->mode) { in rdac_activate()
682 if (h->lun_state == RDAC_LUN_UNOWNED) in rdac_activate()
686 if ((h->lun_state == RDAC_LUN_UNOWNED) && in rdac_activate()
687 (h->preferred == RDAC_PREFERRED)) in rdac_activate()
707 struct rdac_dh_data *h = get_rdac_data(sdev); in rdac_prep_fn() local
710 if (h->state != RDAC_STATE_ACTIVE) { in rdac_prep_fn()
721 struct rdac_dh_data *h = get_rdac_data(sdev); in rdac_check_sense() local
725 (char *) h->ctlr->array_name, h->ctlr->index, in rdac_check_sense()
762 h->state = RDAC_STATE_PASSIVE; in rdac_check_sense()
834 struct rdac_dh_data *h; in rdac_bus_attach() local
839 h = kzalloc(sizeof(*h) , GFP_KERNEL); in rdac_bus_attach()
840 if (!h) in rdac_bus_attach()
842 h->lun = UNINITIALIZED_LUN; in rdac_bus_attach()
843 h->state = RDAC_STATE_ACTIVE; in rdac_bus_attach()
845 err = get_lun_info(sdev, h, array_name, array_id); in rdac_bus_attach()
849 err = initialize_controller(sdev, h, array_name, array_id); in rdac_bus_attach()
853 err = check_ownership(sdev, h); in rdac_bus_attach()
857 err = set_mode_select(sdev, h); in rdac_bus_attach()
863 RDAC_NAME, h->lun, mode[(int)h->mode], in rdac_bus_attach()
864 lun_state[(int)h->lun_state]); in rdac_bus_attach()
866 return &h->dh_data; in rdac_bus_attach()
870 kref_put(&h->ctlr->kref, release_controller); in rdac_bus_attach()
874 kfree(h); in rdac_bus_attach()
880 struct rdac_dh_data *h = get_rdac_data(sdev); in rdac_bus_detach() local
882 if (h->ctlr && h->ctlr->ms_queued) in rdac_bus_detach()
886 if (h->ctlr) in rdac_bus_detach()
887 kref_put(&h->ctlr->kref, release_controller); in rdac_bus_detach()
889 kfree(h); in rdac_bus_detach()