Lines Matching refs:h
229 struct rdac_dh_data *h; member
301 lun_table[qdata->h->lun] = 0x81; in rdac_failover_get()
362 static int get_lun_info(struct scsi_device *sdev, struct rdac_dh_data *h, in get_lun_info() argument
366 struct c8_inquiry *inqp = &h->inq.c8; in get_lun_info()
375 h->lun = inqp->lun[7]; /* Uses only the last byte */ in get_lun_info()
388 static int check_ownership(struct scsi_device *sdev, struct rdac_dh_data *h) in check_ownership() argument
392 struct c9_inquiry *inqp = &h->inq.c9; in check_ownership()
394 h->state = RDAC_STATE_ACTIVE; in check_ownership()
399 h->mode = RDAC_MODE_IOSHIP; /* LUN in IOSHIP mode */ in check_ownership()
401 h->mode = RDAC_MODE_AVT; /* LUN in AVT mode */ in check_ownership()
403 h->mode = RDAC_MODE; /* LUN in RDAC mode */ in check_ownership()
407 h->lun_state = RDAC_LUN_OWNED; in check_ownership()
410 h->lun_state = RDAC_LUN_UNOWNED; in check_ownership()
411 if (h->mode == RDAC_MODE) { in check_ownership()
412 h->state = RDAC_STATE_PASSIVE; in check_ownership()
420 h->preferred = RDAC_PREFERRED; in check_ownership()
423 h->preferred = RDAC_NON_PREFERRED; in check_ownership()
425 list_for_each_entry_rcu(tmp, &h->ctlr->dh_list, node) { in check_ownership()
438 struct rdac_dh_data *h, char *array_name, u8 *array_id) in initialize_controller() argument
441 struct c4_inquiry *inqp = &h->inq.c4; in initialize_controller()
452 h->ctlr = get_controller(index, array_name, array_id, sdev); in initialize_controller()
453 if (!h->ctlr) in initialize_controller()
456 h->sdev = sdev; in initialize_controller()
457 list_add_rcu(&h->node, &h->ctlr->dh_list); in initialize_controller()
465 static int set_mode_select(struct scsi_device *sdev, struct rdac_dh_data *h) in set_mode_select() argument
468 struct c2_inquiry *inqp = &h->inq.c2; in set_mode_select()
477 h->ctlr->use_ms10 = 1; in set_mode_select()
479 h->ctlr->use_ms10 = 0; in set_mode_select()
488 struct rdac_dh_data *h = sdev->handler_data; in mode_select_handle_sense() local
495 (char *) h->ctlr->array_name, h->ctlr->index, in mode_select_handle_sense()
506 struct rdac_dh_data *h = sdev->handler_data; in send_mode_select() local
571 (char *)h->ctlr->array_name, h->ctlr->index); in send_mode_select()
573 rc = scsi_execute_cmd(sdev, cdb, opf, &h->ctlr->mode_select, data_size, in send_mode_select()
576 h->state = RDAC_STATE_ACTIVE; in send_mode_select()
579 (char *) h->ctlr->array_name, h->ctlr->index); in send_mode_select()
590 qdata->h->state = RDAC_STATE_ACTIVE; in send_mode_select()
608 qdata->h = sdev->handler_data; in queue_mode_select()
612 ctlr = qdata->h->ctlr; in queue_mode_select()
627 struct rdac_dh_data *h = sdev->handler_data; in rdac_activate() local
631 err = check_ownership(sdev, h); in rdac_activate()
635 switch (h->mode) { in rdac_activate()
637 if (h->lun_state == RDAC_LUN_UNOWNED) in rdac_activate()
641 if ((h->lun_state == RDAC_LUN_UNOWNED) && in rdac_activate()
642 (h->preferred == RDAC_PREFERRED)) in rdac_activate()
662 struct rdac_dh_data *h = sdev->handler_data; in rdac_prep_fn() local
664 if (h->state != RDAC_STATE_ACTIVE) { in rdac_prep_fn()
675 struct rdac_dh_data *h = sdev->handler_data; in rdac_check_sense() local
679 (char *) h->ctlr->array_name, h->ctlr->index, in rdac_check_sense()
716 h->state = RDAC_STATE_PASSIVE; in rdac_check_sense()
739 struct rdac_dh_data *h; in rdac_bus_attach() local
744 h = kzalloc(sizeof(*h) , GFP_KERNEL); in rdac_bus_attach()
745 if (!h) in rdac_bus_attach()
747 h->lun = UNINITIALIZED_LUN; in rdac_bus_attach()
748 h->state = RDAC_STATE_ACTIVE; in rdac_bus_attach()
750 err = get_lun_info(sdev, h, array_name, array_id); in rdac_bus_attach()
754 err = initialize_controller(sdev, h, array_name, array_id); in rdac_bus_attach()
758 err = check_ownership(sdev, h); in rdac_bus_attach()
762 err = set_mode_select(sdev, h); in rdac_bus_attach()
768 RDAC_NAME, h->lun, mode[(int)h->mode], in rdac_bus_attach()
769 lun_state[(int)h->lun_state]); in rdac_bus_attach()
771 sdev->handler_data = h; in rdac_bus_attach()
776 kref_put(&h->ctlr->kref, release_controller); in rdac_bus_attach()
780 kfree(h); in rdac_bus_attach()
786 struct rdac_dh_data *h = sdev->handler_data; in rdac_bus_detach() local
788 if (h->ctlr && h->ctlr->ms_queued) in rdac_bus_detach()
792 if (h->ctlr) { in rdac_bus_detach()
793 list_del_rcu(&h->node); in rdac_bus_detach()
794 kref_put(&h->ctlr->kref, release_controller); in rdac_bus_detach()
799 kfree(h); in rdac_bus_detach()