|
@@ -150,17 +150,11 @@ static int dio_refill_pages(struct dio *dio)
|
|
|
int nr_pages;
|
|
|
|
|
|
nr_pages = min(dio->total_pages - dio->curr_page, DIO_PAGES);
|
|
|
- down_read(¤t->mm->mmap_sem);
|
|
|
- ret = get_user_pages(
|
|
|
- current, /* Task for fault acounting */
|
|
|
- current->mm, /* whose pages? */
|
|
|
+ ret = get_user_pages_fast(
|
|
|
dio->curr_user_address, /* Where from? */
|
|
|
nr_pages, /* How many pages? */
|
|
|
dio->rw == READ, /* Write to memory? */
|
|
|
- 0, /* force (?) */
|
|
|
- &dio->pages[0],
|
|
|
- NULL); /* vmas */
|
|
|
- up_read(¤t->mm->mmap_sem);
|
|
|
+ &dio->pages[0]); /* Put results here */
|
|
|
|
|
|
if (ret < 0 && dio->blocks_available && (dio->rw & WRITE)) {
|
|
|
struct page *page = ZERO_PAGE(0);
|