• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/hv/

Lines Matching refs:blkvsc_req

141 static int blkvsc_submit_request(struct blkvsc_request *blkvsc_req,
143 static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req);
446 struct blkvsc_request *blkvsc_req;
453 blkvsc_req = kmem_cache_alloc(blkdev->request_pool, GFP_KERNEL);
454 if (!blkvsc_req)
457 memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
458 init_waitqueue_head(&blkvsc_req->wevent);
459 blkvsc_req->dev = blkdev;
460 blkvsc_req->req = NULL;
461 blkvsc_req->write = 0;
463 blkvsc_req->request.DataBuffer.PfnArray[0] = 0;
464 blkvsc_req->request.DataBuffer.Offset = 0;
465 blkvsc_req->request.DataBuffer.Length = 0;
467 blkvsc_req->cmnd[0] = SYNCHRONIZE_CACHE;
468 blkvsc_req->cmd_len = 10;
474 blkvsc_req->cond = 0;
475 blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
477 wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
479 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
487 struct blkvsc_request *blkvsc_req;
494 blkvsc_req = kmem_cache_alloc(blkdev->request_pool, GFP_KERNEL);
495 if (!blkvsc_req)
498 memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
501 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
505 init_waitqueue_head(&blkvsc_req->wevent);
506 blkvsc_req->dev = blkdev;
507 blkvsc_req->req = NULL;
508 blkvsc_req->write = 0;
510 blkvsc_req->request.DataBuffer.PfnArray[0] = page_to_pfn(page_buf);
511 blkvsc_req->request.DataBuffer.Offset = 0;
512 blkvsc_req->request.DataBuffer.Length = 64;
514 blkvsc_req->cmnd[0] = INQUIRY;
515 blkvsc_req->cmnd[1] = 0x1; /* Get product data */
516 blkvsc_req->cmnd[2] = 0x83; /* mode page 83 */
517 blkvsc_req->cmnd[4] = 64;
518 blkvsc_req->cmd_len = 6;
524 blkvsc_req->cond = 0;
526 blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
529 blkvsc_req, blkvsc_req->cond);
531 wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
562 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
570 struct blkvsc_request *blkvsc_req;
581 blkvsc_req = kmem_cache_alloc(blkdev->request_pool, GFP_KERNEL);
582 if (!blkvsc_req)
585 memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
588 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
592 init_waitqueue_head(&blkvsc_req->wevent);
593 blkvsc_req->dev = blkdev;
594 blkvsc_req->req = NULL;
595 blkvsc_req->write = 0;
597 blkvsc_req->request.DataBuffer.PfnArray[0] = page_to_pfn(page_buf);
598 blkvsc_req->request.DataBuffer.Offset = 0;
599 blkvsc_req->request.DataBuffer.Length = 8;
601 blkvsc_req->cmnd[0] = READ_CAPACITY;
602 blkvsc_req->cmd_len = 16;
608 blkvsc_req->cond = 0;
610 blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
613 blkvsc_req, blkvsc_req->cond);
615 wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
618 if (blkvsc_req->request.Status) {
619 scsi_normalize_sense(blkvsc_req->sense_buffer,
640 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
647 struct blkvsc_request *blkvsc_req;
658 blkvsc_req = kmem_cache_alloc(blkdev->request_pool, GFP_KERNEL);
659 if (!blkvsc_req)
662 memset(blkvsc_req, 0, sizeof(struct blkvsc_request));
665 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
669 init_waitqueue_head(&blkvsc_req->wevent);
670 blkvsc_req->dev = blkdev;
671 blkvsc_req->req = NULL;
672 blkvsc_req->write = 0;
674 blkvsc_req->request.DataBuffer.PfnArray[0] = page_to_pfn(page_buf);
675 blkvsc_req->request.DataBuffer.Offset = 0;
676 blkvsc_req->request.DataBuffer.Length = 12;
678 blkvsc_req->cmnd[0] = 0x9E; /* READ_CAPACITY16; */
679 blkvsc_req->cmd_len = 16;
685 blkvsc_req->cond = 0;
687 blkvsc_submit_request(blkvsc_req, blkvsc_cmd_completion);
690 blkvsc_req, blkvsc_req->cond);
692 wait_event_interruptible(blkvsc_req->wevent, blkvsc_req->cond);
695 if (blkvsc_req->request.Status) {
696 scsi_normalize_sense(blkvsc_req->sense_buffer,
715 kmem_cache_free(blkvsc_req->dev->request_pool, blkvsc_req);
787 static void blkvsc_init_rw(struct blkvsc_request *blkvsc_req)
789 /* ASSERT(blkvsc_req->req); */
790 /* ASSERT(blkvsc_req->sector_count <= (MAX_MULTIPAGE_BUFFER_COUNT*8)); */
792 blkvsc_req->cmd_len = 16;
794 if (blkvsc_req->sector_start > 0xffffffff) {
795 if (rq_data_dir(blkvsc_req->req)) {
796 blkvsc_req->write = 1;
797 blkvsc_req->cmnd[0] = WRITE_16;
799 blkvsc_req->write = 0;
800 blkvsc_req->cmnd[0] = READ_16;
803 blkvsc_req->cmnd[1] |=
804 (blkvsc_req->req->cmd_flags & REQ_FUA) ? 0x8 : 0;
806 *(unsigned long long *)&blkvsc_req->cmnd[2] =
807 cpu_to_be64(blkvsc_req->sector_start);
808 *(unsigned int *)&blkvsc_req->cmnd[10] =
809 cpu_to_be32(blkvsc_req->sector_count);
810 } else if ((blkvsc_req->sector_count > 0xff) ||
811 (blkvsc_req->sector_start > 0x1fffff)) {
812 if (rq_data_dir(blkvsc_req->req)) {
813 blkvsc_req->write = 1;
814 blkvsc_req->cmnd[0] = WRITE_10;
816 blkvsc_req->write = 0;
817 blkvsc_req->cmnd[0] = READ_10;
820 blkvsc_req->cmnd[1] |=
821 (blkvsc_req->req->cmd_flags & REQ_FUA) ? 0x8 : 0;
823 *(unsigned int *)&blkvsc_req->cmnd[2] =
824 cpu_to_be32(blkvsc_req->sector_start);
825 *(unsigned short *)&blkvsc_req->cmnd[7] =
826 cpu_to_be16(blkvsc_req->sector_count);
828 if (rq_data_dir(blkvsc_req->req)) {
829 blkvsc_req->write = 1;
830 blkvsc_req->cmnd[0] = WRITE_6;
832 blkvsc_req->write = 0;
833 blkvsc_req->cmnd[0] = READ_6;
836 *(unsigned int *)&blkvsc_req->cmnd[1] =
837 cpu_to_be32(blkvsc_req->sector_start) >> 8;
838 blkvsc_req->cmnd[1] &= 0x1f;
839 blkvsc_req->cmnd[4] = (unsigned char)blkvsc_req->sector_count;
843 static int blkvsc_submit_request(struct blkvsc_request *blkvsc_req,
846 struct block_device_context *blkdev = blkvsc_req->dev;
859 "len %d\n", blkvsc_req,
860 (blkvsc_req->write) ? "WRITE" : "READ",
861 (unsigned long) blkvsc_req->sector_start,
862 blkvsc_req->sector_count,
863 blkvsc_req->request.DataBuffer.Offset,
864 blkvsc_req->request.DataBuffer.Length);
866 storvsc_req = &blkvsc_req->request;
867 storvsc_req->Extension = (void *)((unsigned long)blkvsc_req +
870 storvsc_req->Type = blkvsc_req->write ? WRITE_TYPE : READ_TYPE;
873 storvsc_req->Context = blkvsc_req;
880 storvsc_req->CdbLen = blkvsc_req->cmd_len;
881 storvsc_req->Cdb = blkvsc_req->cmnd;
883 storvsc_req->SenseBuffer = blkvsc_req->sense_buffer;
887 &blkvsc_req->request);
905 struct blkvsc_request *blkvsc_req = NULL;
942 if ((!blkvsc_req) ||
950 if (blkvsc_req) {
951 blkvsc_req->sector_start = start_sector;
952 sector_div(blkvsc_req->sector_start, (blkdev->sector_size >> 9));
954 blkvsc_req->sector_count = num_sectors / (blkdev->sector_size >> 9);
955 blkvsc_init_rw(blkvsc_req);
959 * Create new blkvsc_req to represent
962 blkvsc_req = kmem_cache_alloc(blkdev->request_pool, GFP_ATOMIC);
963 if (!blkvsc_req) {
966 blkvsc_req, tmp,
969 list_del(&blkvsc_req->req_entry);
970 kmem_cache_free(blkdev->request_pool, blkvsc_req);
977 memset(blkvsc_req, 0,
980 blkvsc_req->dev = blkdev;
981 blkvsc_req->req = req;
982 blkvsc_req->request.DataBuffer.Offset = bvec->bv_offset;
983 blkvsc_req->request.DataBuffer.Length = 0;
986 blkvsc_req->group = group;
987 blkvsc_req->group->outstanding++;
988 list_add_tail(&blkvsc_req->req_entry,
989 &blkvsc_req->group->blkvsc_req_list);
996 /* Add the curr bvec/segment to the curr blkvsc_req */
997 blkvsc_req->request.DataBuffer.PfnArray[databuf_idx] = page_to_pfn(bvec->bv_page);
998 blkvsc_req->request.DataBuffer.Length += bvec->bv_len;
1011 if (blkvsc_req) {
1013 blkdev, req, blkvsc_req->group,
1014 blkvsc_req->group->outstanding);
1016 blkvsc_req->sector_start = start_sector;
1017 sector_div(blkvsc_req->sector_start,
1020 blkvsc_req->sector_count = num_sectors /
1023 blkvsc_init_rw(blkvsc_req);
1026 list_for_each_entry(blkvsc_req, &group->blkvsc_req_list, req_entry) {
1028 DPRINT_DBG(BLKVSC_DRV, "adding blkvsc_req to "
1029 "pending_list - blkvsc_req %p start_sect %lu"
1030 " sect_count %ld (%lu %ld)\n", blkvsc_req,
1031 (unsigned long)blkvsc_req->sector_start,
1032 blkvsc_req->sector_count,
1036 list_add_tail(&blkvsc_req->pend_entry,
1039 ret = blkvsc_submit_request(blkvsc_req,
1043 list_add_tail(&blkvsc_req->pend_entry,
1047 DPRINT_DBG(BLKVSC_DRV, "submitted blkvsc_req %p "
1049 "ret %d\n", blkvsc_req,
1050 (unsigned long)blkvsc_req->sector_start,
1051 blkvsc_req->sector_count,
1062 struct blkvsc_request *blkvsc_req =
1065 (struct block_device_context *)blkvsc_req->dev;
1069 blkvsc_req);
1073 if (blkvsc_req->request.Status)
1074 if (scsi_normalize_sense(blkvsc_req->sense_buffer,
1078 blkvsc_req->cond = 1;
1079 wake_up_interruptible(&blkvsc_req->wevent);
1084 struct blkvsc_request *blkvsc_req =
1087 (struct block_device_context *)blkvsc_req->dev;
1091 /* ASSERT(blkvsc_req->group); */
1093 DPRINT_DBG(BLKVSC_DRV, "blkdev %p blkvsc_req %p group %p type %s "
1096 blkdev, blkvsc_req, blkvsc_req->group,
1097 (blkvsc_req->write) ? "WRITE" : "READ",
1098 (unsigned long)blkvsc_req->sector_start,
1099 blkvsc_req->sector_count,
1100 blkvsc_req->request.DataBuffer.Length,
1101 blkvsc_req->group->outstanding,
1107 blkvsc_req->group->outstanding--;
1111 * completed. This guarantees no out-of-order blkvsc_req
1114 if (blkvsc_req->group->outstanding == 0) {
1116 &blkvsc_req->group->blkvsc_req_list,
1118 DPRINT_DBG(BLKVSC_DRV, "completing blkvsc_req %p "
1172 DPRINT_DBG(BLKVSC_DRV, "completing blkvsc_req %p "