Lines Matching refs:curlun

284 	struct fsg_lun		*curlun;  member
642 struct fsg_lun *curlun = common->curlun; in do_read() local
666 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_read()
670 if (lba >= curlun->num_sectors) { in do_read()
671 curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; in do_read()
674 file_offset = ((loff_t) lba) << curlun->blkbits; in do_read()
690 curlun->file_length - file_offset); in do_read()
705 curlun->sense_data = in do_read()
707 curlun->sense_data_info = in do_read()
708 file_offset >> curlun->blkbits; in do_read()
709 curlun->info_valid = 1; in do_read()
717 nread = vfs_read(curlun->filp, in do_read()
720 VLDBG(curlun, "file read %u @ %llu -> %d\n", amount, in do_read()
726 LDBG(curlun, "error in file read: %d\n", (int)nread); in do_read()
729 LDBG(curlun, "partial file read: %d/%u\n", in do_read()
731 nread = round_down(nread, curlun->blksize); in do_read()
747 curlun->sense_data = SS_UNRECOVERED_READ_ERROR; in do_read()
748 curlun->sense_data_info = in do_read()
749 file_offset >> curlun->blkbits; in do_read()
750 curlun->info_valid = 1; in do_read()
773 struct fsg_lun *curlun = common->curlun; in do_write() local
783 if (curlun->ro) { in do_write()
784 curlun->sense_data = SS_WRITE_PROTECTED; in do_write()
787 spin_lock(&curlun->filp->f_lock); in do_write()
788 curlun->filp->f_flags &= ~O_SYNC; /* Default is not to wait */ in do_write()
789 spin_unlock(&curlun->filp->f_lock); in do_write()
807 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_write()
810 if (!curlun->nofua && (common->cmnd[1] & 0x08)) { /* FUA */ in do_write()
811 spin_lock(&curlun->filp->f_lock); in do_write()
812 curlun->filp->f_flags |= O_SYNC; in do_write()
813 spin_unlock(&curlun->filp->f_lock); in do_write()
816 if (lba >= curlun->num_sectors) { in do_write()
817 curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; in do_write()
823 file_offset = usb_offset = ((loff_t) lba) << curlun->blkbits; in do_write()
841 if (usb_offset >= curlun->file_length) { in do_write()
843 curlun->sense_data = in do_write()
845 curlun->sense_data_info = in do_write()
846 usb_offset >> curlun->blkbits; in do_write()
847 curlun->info_valid = 1; in do_write()
882 curlun->sense_data = SS_COMMUNICATION_FAILURE; in do_write()
883 curlun->sense_data_info = in do_write()
884 file_offset >> curlun->blkbits; in do_write()
885 curlun->info_valid = 1; in do_write()
890 if (curlun->file_length - file_offset < amount) { in do_write()
891 LERROR(curlun, in do_write()
894 (unsigned long long)curlun->file_length); in do_write()
895 amount = curlun->file_length - file_offset; in do_write()
904 amount = round_down(amount, curlun->blksize); in do_write()
910 nwritten = vfs_write(curlun->filp, in do_write()
913 VLDBG(curlun, "file write %u @ %llu -> %d\n", amount, in do_write()
919 LDBG(curlun, "error in file write: %d\n", in do_write()
923 LDBG(curlun, "partial file write: %d/%u\n", in do_write()
925 nwritten = round_down(nwritten, curlun->blksize); in do_write()
933 curlun->sense_data = SS_WRITE_ERROR; in do_write()
934 curlun->sense_data_info = in do_write()
935 file_offset >> curlun->blkbits; in do_write()
936 curlun->info_valid = 1; in do_write()
963 struct fsg_lun *curlun = common->curlun; in do_synchronize_cache() local
968 rc = fsg_lun_fsync_sub(curlun); in do_synchronize_cache()
970 curlun->sense_data = SS_WRITE_ERROR; in do_synchronize_cache()
977 static void invalidate_sub(struct fsg_lun *curlun) in invalidate_sub() argument
979 struct file *filp = curlun->filp; in invalidate_sub()
984 VLDBG(curlun, "invalidate_mapping_pages -> %ld\n", rc); in invalidate_sub()
989 struct fsg_lun *curlun = common->curlun; in do_verify() local
1003 if (lba >= curlun->num_sectors) { in do_verify()
1004 curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; in do_verify()
1013 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_verify()
1022 amount_left = verification_length << curlun->blkbits; in do_verify()
1023 file_offset = ((loff_t) lba) << curlun->blkbits; in do_verify()
1026 fsg_lun_fsync_sub(curlun); in do_verify()
1030 invalidate_sub(curlun); in do_verify()
1044 curlun->file_length - file_offset); in do_verify()
1046 curlun->sense_data = in do_verify()
1048 curlun->sense_data_info = in do_verify()
1049 file_offset >> curlun->blkbits; in do_verify()
1050 curlun->info_valid = 1; in do_verify()
1056 nread = vfs_read(curlun->filp, in do_verify()
1059 VLDBG(curlun, "file read %u @ %llu -> %d\n", amount, in do_verify()
1066 LDBG(curlun, "error in file verify: %d\n", (int)nread); in do_verify()
1069 LDBG(curlun, "partial file verify: %d/%u\n", in do_verify()
1071 nread = round_down(nread, curlun->blksize); in do_verify()
1074 curlun->sense_data = SS_UNRECOVERED_READ_ERROR; in do_verify()
1075 curlun->sense_data_info = in do_verify()
1076 file_offset >> curlun->blkbits; in do_verify()
1077 curlun->info_valid = 1; in do_verify()
1091 struct fsg_lun *curlun = common->curlun; in do_inquiry() local
1094 if (!curlun) { /* Unsupported LUNs are okay */ in do_inquiry()
1102 buf[0] = curlun->cdrom ? TYPE_ROM : TYPE_DISK; in do_inquiry()
1103 buf[1] = curlun->removable ? 0x80 : 0; in do_inquiry()
1116 struct fsg_lun *curlun = common->curlun; in do_request_sense() local
1137 if (curlun && curlun->unit_attention_data != SS_NO_SENSE) { in do_request_sense()
1138 curlun->sense_data = curlun->unit_attention_data; in do_request_sense()
1139 curlun->unit_attention_data = SS_NO_SENSE; in do_request_sense()
1143 if (!curlun) { /* Unsupported LUNs are okay */ in do_request_sense()
1149 sd = curlun->sense_data; in do_request_sense()
1150 sdinfo = curlun->sense_data_info; in do_request_sense()
1151 valid = curlun->info_valid << 7; in do_request_sense()
1152 curlun->sense_data = SS_NO_SENSE; in do_request_sense()
1153 curlun->sense_data_info = 0; in do_request_sense()
1154 curlun->info_valid = 0; in do_request_sense()
1169 struct fsg_lun *curlun = common->curlun; in do_read_capacity() local
1176 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_read_capacity()
1180 put_unaligned_be32(curlun->num_sectors - 1, &buf[0]); in do_read_capacity()
1182 put_unaligned_be32(curlun->blksize, &buf[4]);/* Block length */ in do_read_capacity()
1188 struct fsg_lun *curlun = common->curlun; in do_read_header() local
1194 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_read_header()
1197 if (lba >= curlun->num_sectors) { in do_read_header()
1198 curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; in do_read_header()
1210 struct fsg_lun *curlun = common->curlun; in do_read_toc() local
1217 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_read_toc()
1231 store_cdrom_address(&buf[16], msf, curlun->num_sectors); in do_read_toc()
1237 struct fsg_lun *curlun = common->curlun; in do_mode_sense() local
1247 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_mode_sense()
1253 curlun->sense_data = SS_SAVING_PARAMETERS_NOT_SUPPORTED; in do_mode_sense()
1267 buf[2] = (curlun->ro ? 0x80 : 0x00); /* WP, DPOFUA */ in do_mode_sense()
1271 buf[3] = (curlun->ro ? 0x80 : 0x00); /* WP, DPOFUA */ in do_mode_sense()
1309 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_mode_sense()
1323 struct fsg_lun *curlun = common->curlun; in do_start_stop() local
1326 if (!curlun) { in do_start_stop()
1328 } else if (!curlun->removable) { in do_start_stop()
1329 curlun->sense_data = SS_INVALID_COMMAND; in do_start_stop()
1333 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_start_stop()
1345 if (!fsg_lun_is_open(curlun)) { in do_start_stop()
1346 curlun->sense_data = SS_MEDIUM_NOT_PRESENT; in do_start_stop()
1353 if (curlun->prevent_medium_removal) { in do_start_stop()
1354 LDBG(curlun, "unload attempt prevented\n"); in do_start_stop()
1355 curlun->sense_data = SS_MEDIUM_REMOVAL_PREVENTED; in do_start_stop()
1364 fsg_lun_close(curlun); in do_start_stop()
1373 struct fsg_lun *curlun = common->curlun; in do_prevent_allow() local
1376 if (!common->curlun) { in do_prevent_allow()
1378 } else if (!common->curlun->removable) { in do_prevent_allow()
1379 common->curlun->sense_data = SS_INVALID_COMMAND; in do_prevent_allow()
1385 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in do_prevent_allow()
1389 if (curlun->prevent_medium_removal && !prevent) in do_prevent_allow()
1390 fsg_lun_fsync_sub(curlun); in do_prevent_allow()
1391 curlun->prevent_medium_removal = prevent; in do_prevent_allow()
1398 struct fsg_lun *curlun = common->curlun; in do_read_format_capacities() local
1405 put_unaligned_be32(curlun->num_sectors, &buf[0]); in do_read_format_capacities()
1407 put_unaligned_be32(curlun->blksize, &buf[4]);/* Block length */ in do_read_format_capacities()
1414 struct fsg_lun *curlun = common->curlun; in do_mode_select() local
1417 if (curlun) in do_mode_select()
1418 curlun->sense_data = SS_INVALID_COMMAND; in do_mode_select()
1628 struct fsg_lun *curlun = common->curlun; in send_status() local
1643 if (curlun) { in send_status()
1644 sd = curlun->sense_data; in send_status()
1645 sdinfo = curlun->sense_data_info; in send_status()
1696 struct fsg_lun *curlun; in check_command() local
1763 curlun = common->curlun; in check_command()
1764 if (curlun) { in check_command()
1766 curlun->sense_data = SS_NO_SENSE; in check_command()
1767 curlun->sense_data_info = 0; in check_command()
1768 curlun->info_valid = 0; in check_command()
1788 if (curlun && curlun->unit_attention_data != SS_NO_SENSE && in check_command()
1791 curlun->sense_data = curlun->unit_attention_data; in check_command()
1792 curlun->unit_attention_data = SS_NO_SENSE; in check_command()
1800 if (curlun) in check_command()
1801 curlun->sense_data = SS_INVALID_FIELD_IN_CDB; in check_command()
1808 if (curlun && !fsg_lun_is_open(curlun) && needs_medium) { in check_command()
1809 curlun->sense_data = SS_MEDIUM_NOT_PRESENT; in check_command()
1821 if (common->curlun) in check_command_size_in_blocks()
1822 common->data_size_from_cmnd <<= common->curlun->blkbits; in check_command_size_in_blocks()
1950 if (!common->curlun || !common->curlun->cdrom) in do_scsi_command()
1962 if (!common->curlun || !common->curlun->cdrom) in do_scsi_command()
2082 common->curlun->sense_data = SS_INVALID_COMMAND; in do_scsi_command()
2173 common->curlun = common->luns[common->lun]; in received_cbw()
2175 common->curlun = NULL; in received_cbw()
2354 struct fsg_lun *curlun; in handle_exception() local
2423 curlun = common->luns[i]; in handle_exception()
2424 if (!curlun) in handle_exception()
2426 curlun->prevent_medium_removal = 0; in handle_exception()
2427 curlun->sense_data = SS_NO_SENSE; in handle_exception()
2428 curlun->unit_attention_data = SS_NO_SENSE; in handle_exception()
2429 curlun->sense_data_info = 0; in handle_exception()
2430 curlun->info_valid = 0; in handle_exception()
2569 struct fsg_lun *curlun = common->luns[i]; in fsg_main_thread() local
2570 if (!curlun || !fsg_lun_is_open(curlun)) in fsg_main_thread()
2573 fsg_lun_close(curlun); in fsg_main_thread()
2574 curlun->unit_attention_data = SS_MEDIUM_NOT_PRESENT; in fsg_main_thread()
2588 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in ro_show() local
2590 return fsg_show_ro(curlun, buf); in ro_show()
2596 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in nofua_show() local
2598 return fsg_show_nofua(curlun, buf); in nofua_show()
2604 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in file_show() local
2607 return fsg_show_file(curlun, filesem, buf); in file_show()
2613 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in ro_store() local
2616 return fsg_store_ro(curlun, filesem, buf, count); in ro_store()
2622 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in nofua_store() local
2624 return fsg_store_nofua(curlun, buf, count); in nofua_store()
2630 struct fsg_lun *curlun = fsg_lun_from_dev(dev); in file_store() local
2633 return fsg_store_file(curlun, filesem, buf, count); in file_store()