Lines Matching defs:cbe_lun

119 	struct ctl_be_lun	cbe_lun;
201 ctl_remove_lun(&lun->cbe_lun);
365 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
366 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
372 lbas = io->scsiio.kern_data_len / cbe_lun->blocksize;
377 lba >> cbe_lun->pblockexp, GP_READ);
378 lbaoff = lba & ~(UINT_MAX << cbe_lun->pblockexp);
379 page += lbaoff * cbe_lun->blocksize;
381 cbe_lun->blocksize);
383 if (res < cbe_lun->blocksize)
403 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
404 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
457 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
461 lbas = MIN(lbas, 131072 / cbe_lun->blocksize);
462 len = lbas * cbe_lun->blocksize;
479 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
480 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
488 lbaoff = lba & ~(UINT_MAX << cbe_lun->pblockexp);
490 lbas = MIN(lbas, (SGPP << cbe_lun->pblockexp) - lbaoff);
491 sgs = (lbas + lbaoff + be_lun->pblockmul - 1) >> cbe_lun->pblockexp;
492 off = lbaoff * cbe_lun->blocksize;
498 len = lbas * cbe_lun->blocksize;
501 (lba >> cbe_lun->pblockexp) + i, op);
516 lba >> cbe_lun->pblockexp, op);
524 io->scsiio.kern_data_len = lbas * cbe_lun->blocksize;
591 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
592 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
599 lbaoff = ARGS(io)->lba & ~(UINT_MAX << cbe_lun->pblockexp);
602 ARGS(io)->lba >> cbe_lun->pblockexp, GP_OTHER);
643 ctl_backend_ramdisk_delete(struct ctl_be_lun *cbe_lun, off_t lba, off_t len,
646 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
653 p = lba >> cbe_lun->pblockexp;
654 lbaoff = lba & ~(UINT_MAX << cbe_lun->pblockexp);
658 memset(page + lbaoff * cbe_lun->blocksize, 0,
660 cbe_lun->blocksize);
666 lp = (lba + len) >> cbe_lun->pblockexp;
667 lbaoff = (lba + len) & ~(UINT_MAX << cbe_lun->pblockexp);
671 memset(page, 0, lbaoff * cbe_lun->blocksize);
687 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
688 struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun;
705 ctl_backend_ramdisk_delete(cbe_lun, lbalen->lba, lbalen->len,
714 lba >> cbe_lun->pblockexp, GP_WRITE);
720 lbaoff = lba & ~(UINT_MAX << cbe_lun->pblockexp);
721 page += lbaoff * cbe_lun->blocksize;
723 memset(page, 0, cbe_lun->blocksize);
726 cbe_lun->blocksize);
738 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
756 ctl_backend_ramdisk_delete(cbe_lun,
768 struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io);
789 ctl_lun_has_media(cbe_lun);
790 ctl_start_lun(cbe_lun);
792 ctl_stop_lun(cbe_lun);
794 ctl_lun_ejected(cbe_lun);
832 val = be_lun->cap_used / be_lun->cbe_lun.blocksize;
835 be_lun->cbe_lun.blocksize;
891 if (be_lun->cbe_lun.lun_id == params->lun_id) {
919 retval = ctl_remove_lun(&be_lun->cbe_lun);
958 struct ctl_be_lun *cbe_lun;
969 cbe_lun = &be_lun->cbe_lun;
970 cbe_lun->be_lun = be_lun;
973 ctl_init_opts(&cbe_lun->options, req->num_be_args, req->kern_be_args);
976 cbe_lun->lun_type = params->device_type;
978 cbe_lun->lun_type = T_DIRECT;
980 cbe_lun->flags = 0;
981 value = ctl_get_opt(&cbe_lun->options, "ha_role");
984 cbe_lun->flags |= CTL_LUN_FLAG_PRIMARY;
986 cbe_lun->flags |= CTL_LUN_FLAG_PRIMARY;
989 value = ctl_get_opt(&cbe_lun->options, "pblocksize");
1001 if (cbe_lun->lun_type == T_DIRECT ||
1002 cbe_lun->lun_type == T_CDROM) {
1004 cbe_lun->blocksize = params->blocksize_bytes;
1005 else if (cbe_lun->lun_type == T_CDROM)
1006 cbe_lun->blocksize = 2048;
1008 cbe_lun->blocksize = 512;
1009 be_lun->pblockmul = be_lun->pblocksize / cbe_lun->blocksize;
1014 be_lun->pblocksize, cbe_lun->blocksize);
1017 if (params->lun_size_bytes < cbe_lun->blocksize) {
1020 params->lun_size_bytes, cbe_lun->blocksize);
1023 be_lun->size_blocks = params->lun_size_bytes / cbe_lun->blocksize;
1024 be_lun->size_bytes = be_lun->size_blocks * cbe_lun->blocksize;
1031 cbe_lun->maxlba = be_lun->size_blocks - 1;
1032 cbe_lun->pblockexp = fls(be_lun->pblockmul) - 1;
1033 cbe_lun->pblockoff = 0;
1034 cbe_lun->ublockexp = cbe_lun->pblockexp;
1035 cbe_lun->ublockoff = 0;
1036 cbe_lun->atomicblock = be_lun->pblocksize;
1037 cbe_lun->opttxferlen = SGPP * be_lun->pblocksize;
1038 value = ctl_get_opt(&cbe_lun->options, "capacity");
1043 cbe_lun->pblockexp = 0;
1047 params->blocksize_bytes = cbe_lun->blocksize;
1050 value = ctl_get_opt(&cbe_lun->options, "unmap");
1052 cbe_lun->flags |= CTL_LUN_FLAG_UNMAP;
1053 value = ctl_get_opt(&cbe_lun->options, "readonly");
1056 cbe_lun->flags |= CTL_LUN_FLAG_READONLY;
1057 } else if (cbe_lun->lun_type != T_DIRECT)
1058 cbe_lun->flags |= CTL_LUN_FLAG_READONLY;
1059 cbe_lun->serseq = CTL_LUN_SERSEQ_OFF;
1060 value = ctl_get_opt(&cbe_lun->options, "serseq");
1062 cbe_lun->serseq = CTL_LUN_SERSEQ_ON;
1064 cbe_lun->serseq = CTL_LUN_SERSEQ_READ;
1066 cbe_lun->serseq = CTL_LUN_SERSEQ_OFF;
1069 cbe_lun->req_lun_id = params->req_lun_id;
1070 cbe_lun->flags |= CTL_LUN_FLAG_ID_REQ;
1072 cbe_lun->req_lun_id = 0;
1074 cbe_lun->lun_shutdown = ctl_backend_ramdisk_lun_shutdown;
1075 cbe_lun->be = &ctl_be_ramdisk_driver;
1079 strncpy((char *)cbe_lun->serial_num, tmpstr,
1080 MIN(sizeof(cbe_lun->serial_num), sizeof(tmpstr)));
1086 strncpy((char *)cbe_lun->serial_num, params->serial_num,
1087 MIN(sizeof(cbe_lun->serial_num),
1092 strncpy((char *)cbe_lun->device_id, tmpstr,
1093 MIN(sizeof(cbe_lun->device_id), sizeof(tmpstr)));
1099 strncpy((char *)cbe_lun->device_id, params->device_id,
1100 MIN(sizeof(cbe_lun->device_id),
1131 retval = ctl_add_lun(&be_lun->cbe_lun);
1145 params->req_lun_id = cbe_lun->lun_id;
1155 ctl_free_opts(&cbe_lun->options);
1170 struct ctl_be_lun *cbe_lun;
1180 if (be_lun->cbe_lun.lun_id == params->lun_id)
1190 cbe_lun = &be_lun->cbe_lun;
1194 ctl_update_opts(&cbe_lun->options, req->num_be_args, req->kern_be_args);
1196 wasprim = (cbe_lun->flags & CTL_LUN_FLAG_PRIMARY);
1197 value = ctl_get_opt(&cbe_lun->options, "ha_role");
1200 cbe_lun->flags |= CTL_LUN_FLAG_PRIMARY;
1202 cbe_lun->flags &= ~CTL_LUN_FLAG_PRIMARY;
1204 cbe_lun->flags |= CTL_LUN_FLAG_PRIMARY;
1206 cbe_lun->flags &= ~CTL_LUN_FLAG_PRIMARY;
1207 if (wasprim != (cbe_lun->flags & CTL_LUN_FLAG_PRIMARY)) {
1208 if (cbe_lun->flags & CTL_LUN_FLAG_PRIMARY)
1209 ctl_lun_primary(cbe_lun);
1211 ctl_lun_secondary(cbe_lun);
1214 blocksize = be_lun->cbe_lun.blocksize;
1223 be_lun->cbe_lun.maxlba = be_lun->size_blocks - 1;
1224 ctl_lun_capacity_changed(&be_lun->cbe_lun);
1247 ctl_free_opts(&be_lun->cbe_lun.options);