# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1180723313 -32400 # Node ID 34d5cf9ba108d79252b6e0465c3cbfa7171a5336 # Parent 15b2b115a8813cac6f600d94f3ada1ca781b0908 blktap clean up PATCHNAME: blktap_clean_up Signed-off-by: Isaku Yamahata diff -r 15b2b115a881 -r 34d5cf9ba108 linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c --- a/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c Sat Jun 02 03:35:08 2007 +0900 +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c Sat Jun 02 03:41:53 2007 +0900 @@ -957,14 +957,7 @@ static void fast_flush_area(pending_req_ static void fast_flush_area(pending_req_t *req, int k_idx, int u_idx, int tapidx) { - struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST*2]; - unsigned int i, invcount = 0; - struct grant_handle_pair *khandle; - uint64_t ptep; - int ret, mmap_idx; - unsigned long kvaddr, uvaddr; tap_blkif_t *info; - info = tapfds[tapidx]; @@ -973,63 +966,13 @@ static void fast_flush_area(pending_req_ return; } - if (info->vma != NULL && - xen_feature(XENFEAT_auto_translated_physmap)) { + if (info->vma != NULL) { down_write(&info->vma->vm_mm->mmap_sem); zap_page_range(info->vma, MMAP_VADDR(info->user_vstart, u_idx, 0), req->nr_pages << PAGE_SHIFT, NULL); up_write(&info->vma->vm_mm->mmap_sem); - return; - } - - mmap_idx = req->mem_idx; - - for (i = 0; i < req->nr_pages; i++) { - kvaddr = idx_to_kaddr(mmap_idx, k_idx, i); - uvaddr = MMAP_VADDR(info->user_vstart, u_idx, i); - - khandle = &pending_handle(mmap_idx, k_idx, i); - - if (khandle->kernel != INVALID_GRANT_HANDLE) { - gnttab_set_unmap_op(&unmap[invcount], - idx_to_kaddr(mmap_idx, k_idx, i), - GNTMAP_host_map, khandle->kernel); - invcount++; - - set_phys_to_machine( - __pa(idx_to_kaddr(mmap_idx, k_idx, i)) - >> PAGE_SHIFT, INVALID_P2M_ENTRY); - } - - if (khandle->user != INVALID_GRANT_HANDLE) { - BUG_ON(xen_feature(XENFEAT_auto_translated_physmap)); - if (create_lookup_pte_addr( - info->vma->vm_mm, - MMAP_VADDR(info->user_vstart, u_idx, i), - &ptep) !=0) { - WPRINTK("Couldn't get a pte addr!\n"); - return; - } - - gnttab_set_unmap_op(&unmap[invcount], ptep, - GNTMAP_host_map - | GNTMAP_application_map - | GNTMAP_contains_pte, - khandle->user); - invcount++; - } - - BLKTAP_INVALIDATE_HANDLE(khandle); - } - ret = HYPERVISOR_grant_table_op( - GNTTABOP_unmap_grant_ref, unmap, invcount); - BUG_ON(ret); - - if (info->vma != NULL && !xen_feature(XENFEAT_auto_translated_physmap)) - zap_page_range(info->vma, - MMAP_VADDR(info->user_vstart, u_idx, 0), - req->nr_pages << PAGE_SHIFT, NULL); + } } /****************************************************************** @@ -1092,7 +1035,7 @@ static int blktap_read_ufe_ring(tap_blki static int blktap_read_ufe_ring(tap_blkif_t *info) { /* This is called to read responses from the UFE ring. */ - RING_IDX i, j, rp; + RING_IDX i, rp; blkif_response_t *resp; blkif_t *blkif=NULL; int pending_idx, usr_idx, mmap_idx; @@ -1132,23 +1075,6 @@ static int blktap_read_ufe_ring(tap_blki pending_req = &pending_reqs[mmap_idx][pending_idx]; blkif = pending_req->blkif; - - for (j = 0; j < pending_req->nr_pages; j++) { - - unsigned long kvaddr, uvaddr; - struct page **map = info->vma->vm_private_data; - struct page *pg; - int offset; - - uvaddr = MMAP_VADDR(info->user_vstart, usr_idx, j); - kvaddr = idx_to_kaddr(mmap_idx, pending_idx, j); - - pg = pfn_to_page(__pa(kvaddr) >> PAGE_SHIFT); - ClearPageReserved(pg); - offset = (uvaddr - info->vma->vm_start) - >> PAGE_SHIFT; - map[offset] = NULL; - } fast_flush_area(pending_req, pending_idx, usr_idx, info->minor); info->idx_map[usr_idx] = INVALID_REQ; make_response(blkif, pending_req->id, res.operation,