X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fs%2Fdirect-io.c;h=9606ee848fd81c98ca9fc2cc496e0452140c9205;hb=606bd0a8616a0e59021cb2997e942513f24f641d;hp=9e81addbd6ea7293ad3d2578d20bfeaf92cf8354;hpb=7924e4f6519dd5b349ed146fe9fe35206730be67;p=linux-2.6-block.git diff --git a/fs/direct-io.c b/fs/direct-io.c index 9e81addbd6ea..9606ee848fd8 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -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);