linux/mm/filemap.c
<<
>>
Prefs
   1/*
   2 *      linux/mm/filemap.c
   3 *
   4 * Copyright (C) 1994-1999  Linus Torvalds
   5 */
   6
   7/*
   8 * This file handles the generic file mmap semantics used by
   9 * most "normal" filesystems (but you don't /have/ to use this:
  10 * the NFS filesystem used to do this differently, for example)
  11 */
  12#include <linux/module.h>
  13#include <linux/compiler.h>
  14#include <linux/fs.h>
  15#include <linux/uaccess.h>
  16#include <linux/aio.h>
  17#include <linux/capability.h>
  18#include <linux/kernel_stat.h>
  19#include <linux/gfp.h>
  20#include <linux/mm.h>
  21#include <linux/swap.h>
  22#include <linux/mman.h>
  23#include <linux/pagemap.h>
  24#include <linux/file.h>
  25#include <linux/uio.h>
  26#include <linux/hash.h>
  27#include <linux/writeback.h>
  28#include <linux/backing-dev.h>
  29#include <linux/pagevec.h>
  30#include <linux/blkdev.h>
  31#include <linux/security.h>
  32#include <linux/syscalls.h>
  33#include <linux/cpuset.h>
  34#include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
  35#include <linux/memcontrol.h>
  36#include <linux/mm_inline.h> /* for page_is_file_cache() */
  37#include "internal.h"
  38
  39/*
  40 * FIXME: remove all knowledge of the buffer layer from the core VM
  41 */
  42#include <linux/buffer_head.h> /* for try_to_free_buffers */
  43
  44#include <asm/mman.h>
  45
  46/*
  47 * Shared mappings implemented 30.11.1994. It's not fully working yet,
  48 * though.
  49 *
  50 * Shared mappings now work. 15.8.1995  Bruno.
  51 *
  52 * finished 'unifying' the page and buffer cache and SMP-threaded the
  53 * page-cache, 21.05.1999, Ingo Molnar <mingo@redhat.com>
  54 *
  55 * SMP-threaded pagemap-LRU 1999, Andrea Arcangeli <andrea@suse.de>
  56 */
  57
  58/*
  59 * Lock ordering:
  60 *
  61 *  ->i_mmap_lock               (truncate_pagecache)
  62 *    ->private_lock            (__free_pte->__set_page_dirty_buffers)
  63 *      ->swap_lock             (exclusive_swap_page, others)
  64 *        ->mapping->tree_lock
  65 *
  66 *  ->i_mutex
  67 *    ->i_mmap_lock             (truncate->unmap_mapping_range)
  68 *
  69 *  ->mmap_sem
  70 *    ->i_mmap_lock
  71 *      ->page_table_lock or pte_lock   (various, mainly in memory.c)
  72 *        ->mapping->tree_lock  (arch-dependent flush_dcache_mmap_lock)
  73 *
  74 *  ->mmap_sem
  75 *    ->lock_page               (access_process_vm)
  76 *
  77 *  ->i_mutex                   (generic_file_buffered_write)
  78 *    ->mmap_sem                (fault_in_pages_readable->do_page_fault)
  79 *
  80 *  ->i_mutex
  81 *    ->i_alloc_sem             (various)
  82 *
  83 *  ->inode_lock
  84 *    ->sb_lock                 (fs/fs-writeback.c)
  85 *    ->mapping->tree_lock      (__sync_single_inode)
  86 *
  87 *  ->i_mmap_lock
  88 *    ->anon_vma.lock           (vma_adjust)
  89 *
  90 *  ->anon_vma.lock
  91 *    ->page_table_lock or pte_lock     (anon_vma_prepare and various)
  92 *
  93 *  ->page_table_lock or pte_lock
  94 *    ->swap_lock               (try_to_unmap_one)
  95 *    ->private_lock            (try_to_unmap_one)
  96 *    ->tree_lock               (try_to_unmap_one)
  97 *    ->zone.lru_lock           (follow_page->mark_page_accessed)
  98 *    ->zone.lru_lock           (check_pte_range->isolate_lru_page)
  99 *    ->private_lock            (page_remove_rmap->set_page_dirty)
 100 *    ->tree_lock               (page_remove_rmap->set_page_dirty)
 101 *    ->inode_lock              (page_remove_rmap->set_page_dirty)
 102 *    ->inode_lock              (zap_pte_range->set_page_dirty)
 103 *    ->private_lock            (zap_pte_range->__set_page_dirty_buffers)
 104 *
 105 *  ->task->proc_lock
 106 *    ->dcache_lock             (proc_pid_lookup)
 107 *
 108 *  (code doesn't rely on that order, so you could switch it around)
 109 *  ->tasklist_lock             (memory_failure, collect_procs_ao)
 110 *    ->i_mmap_lock
 111 */
 112
 113/*
 114 * Remove a page from the page cache and free it. Caller has to make
 115 * sure the page is locked and that nobody else uses it - or that usage
 116 * is safe.  The caller must hold the mapping's tree_lock.
 117 */
 118void __remove_from_page_cache(struct page *page)
 119{
 120        struct address_space *mapping = page->mapping;
 121
 122        radix_tree_delete(&mapping->page_tree, page->index);
 123        page->mapping = NULL;
 124        mapping->nrpages--;
 125        __dec_zone_page_state(page, NR_FILE_PAGES);
 126        if (PageSwapBacked(page))
 127                __dec_zone_page_state(page, NR_SHMEM);
 128        BUG_ON(page_mapped(page));
 129
 130        /*
 131         * Some filesystems seem to re-dirty the page even after
 132         * the VM has canceled the dirty bit (eg ext3 journaling).
 133         *
 134         * Fix it up by doing a final dirty accounting check after
 135         * having removed the page entirely.
 136         */
 137        if (PageDirty(page) && mapping_cap_account_dirty(mapping)) {
 138                dec_zone_page_state(page, NR_FILE_DIRTY);
 139                dec_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE);
 140        }
 141}
 142
 143void remove_from_page_cache(struct page *page)
 144{
 145        struct address_space *mapping = page->mapping;
 146
 147        BUG_ON(!PageLocked(page));
 148
 149        spin_lock_irq(&mapping->tree_lock);
 150        __remove_from_page_cache(page);
 151        spin_unlock_irq(&mapping->tree_lock);
 152        mem_cgroup_uncharge_cache_page(page);
 153}
 154EXPORT_SYMBOL(remove_from_page_cache);
 155
 156static int sync_page(void *word)
 157{
 158        struct address_space *mapping;
 159        struct page *page;
 160
 161        page = container_of((unsigned long *)word, struct page, flags);
 162
 163        /*
 164         * page_mapping() is being called without PG_locked held.
 165         * Some knowledge of the state and use of the page is used to
 166         * reduce the requirements down to a memory barrier.
 167         * The danger here is of a stale page_mapping() return value
 168         * indicating a struct address_space different from the one it's
 169         * associated with when it is associated with one.
 170         * After smp_mb(), it's either the correct page_mapping() for
 171         * the page, or an old page_mapping() and the page's own
 172         * page_mapping() has gone NULL.
 173         * The ->sync_page() address_space operation must tolerate
 174         * page_mapping() going NULL. By an amazing coincidence,
 175         * this comes about because none of the users of the page
 176         * in the ->sync_page() methods make essential use of the
 177         * page_mapping(), merely passing the page down to the backing
 178         * device's unplug functions when it's non-NULL, which in turn
 179         * ignore it for all cases but swap, where only page_private(page) is
 180         * of interest. When page_mapping() does go NULL, the entire
 181         * call stack gracefully ignores the page and returns.
 182         * -- wli
 183         */
 184        smp_mb();
 185        mapping = page_mapping(page);
 186        if (mapping && mapping->a_ops && mapping->a_ops->sync_page)
 187                mapping->a_ops->sync_page(page);
 188        io_schedule();
 189        return 0;
 190}
 191
 192static int sync_page_killable(void *word)
 193{
 194        sync_page(word);
 195        return fatal_signal_pending(current) ? -EINTR : 0;
 196}
 197
 198/**
 199 * __filemap_fdatawrite_range - start writeback on mapping dirty pages in range
 200 * @mapping:    address space structure to write
 201 * @start:      offset in bytes where the range starts
 202 * @end:        offset in bytes where the range ends (inclusive)
 203 * @sync_mode:  enable synchronous operation
 204 *
 205 * Start writeback against all of a mapping's dirty pages that lie
 206 * within the byte offsets <start, end> inclusive.
 207 *
 208 * If sync_mode is WB_SYNC_ALL then this is a "data integrity" operation, as
 209 * opposed to a regular memory cleansing writeback.  The difference between
 210 * these two operations is that if a dirty page/buffer is encountered, it must
 211 * be waited upon, and not just skipped over.
 212 */
 213int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
 214                                loff_t end, int sync_mode)
 215{
 216        int ret;
 217        struct writeback_control wbc = {
 218                .sync_mode = sync_mode,
 219                .nr_to_write = LONG_MAX,
 220                .range_start = start,
 221                .range_end = end,
 222        };
 223
 224        if (!mapping_cap_writeback_dirty(mapping))
 225                return 0;
 226
 227        ret = do_writepages(mapping, &wbc);
 228        return ret;
 229}
 230
 231static inline int __filemap_fdatawrite(struct address_space *mapping,
 232        int sync_mode)
 233{
 234        return __filemap_fdatawrite_range(mapping, 0, LLONG_MAX, sync_mode);
 235}
 236
 237int filemap_fdatawrite(struct address_space *mapping)
 238{
 239        return __filemap_fdatawrite(mapping, WB_SYNC_ALL);
 240}
 241EXPORT_SYMBOL(filemap_fdatawrite);
 242
 243int filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
 244                                loff_t end)
 245{
 246        return __filemap_fdatawrite_range(mapping, start, end, WB_SYNC_ALL);
 247}
 248EXPORT_SYMBOL(filemap_fdatawrite_range);
 249
 250/**
 251 * filemap_flush - mostly a non-blocking flush
 252 * @mapping:    target address_space
 253 *
 254 * This is a mostly non-blocking flush.  Not suitable for data-integrity
 255 * purposes - I/O may not be started against all dirty pages.
 256 */
 257int filemap_flush(struct address_space *mapping)
 258{
 259        return __filemap_fdatawrite(mapping, WB_SYNC_NONE);
 260}
 261EXPORT_SYMBOL(filemap_flush);
 262
 263/**
 264 * filemap_fdatawait_range - wait for writeback to complete
 265 * @mapping:            address space structure to wait for
 266 * @start_byte:         offset in bytes where the range starts
 267 * @end_byte:           offset in bytes where the range ends (inclusive)
 268 *
 269 * Walk the list of under-writeback pages of the given address space
 270 * in the given range and wait for all of them.
 271 */
 272int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte,
 273                            loff_t end_byte)
 274{
 275        pgoff_t index = start_byte >> PAGE_CACHE_SHIFT;
 276        pgoff_t end = end_byte >> PAGE_CACHE_SHIFT;
 277        struct pagevec pvec;
 278        int nr_pages;
 279        int ret = 0;
 280
 281        if (end_byte < start_byte)
 282                return 0;
 283
 284        pagevec_init(&pvec, 0);
 285        while ((index <= end) &&
 286                        (nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
 287                        PAGECACHE_TAG_WRITEBACK,
 288                        min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1)) != 0) {
 289                unsigned i;
 290
 291                for (i = 0; i < nr_pages; i++) {
 292                        struct page *page = pvec.pages[i];
 293
 294                        /* until radix tree lookup accepts end_index */
 295                        if (page->index > end)
 296                                continue;
 297
 298                        wait_on_page_writeback(page);
 299                        if (PageError(page))
 300                                ret = -EIO;
 301                }
 302                pagevec_release(&pvec);
 303                cond_resched();
 304        }
 305
 306        /* Check for outstanding write errors */
 307        if (test_and_clear_bit(AS_ENOSPC, &mapping->flags))
 308                ret = -ENOSPC;
 309        if (test_and_clear_bit(AS_EIO, &mapping->flags))
 310                ret = -EIO;
 311
 312        return ret;
 313}
 314EXPORT_SYMBOL(filemap_fdatawait_range);
 315
 316/**
 317 * filemap_fdatawait - wait for all under-writeback pages to complete
 318 * @mapping: address space structure to wait for
 319 *
 320 * Walk the list of under-writeback pages of the given address space
 321 * and wait for all of them.
 322 */
 323int filemap_fdatawait(struct address_space *mapping)
 324{
 325        loff_t i_size = i_size_read(mapping->host);
 326
 327        if (i_size == 0)
 328                return 0;
 329
 330        return filemap_fdatawait_range(mapping, 0, i_size - 1);
 331}
 332EXPORT_SYMBOL(filemap_fdatawait);
 333
 334int filemap_write_and_wait(struct address_space *mapping)
 335{
 336        int err = 0;
 337
 338        if (mapping->nrpages) {
 339                err = filemap_fdatawrite(mapping);
 340                /*
 341                 * Even if the above returned error, the pages may be
 342                 * written partially (e.g. -ENOSPC), so we wait for it.
 343                 * But the -EIO is special case, it may indicate the worst
 344                 * thing (e.g. bug) happened, so we avoid waiting for it.
 345                 */
 346                if (err != -EIO) {
 347                        int err2 = filemap_fdatawait(mapping);
 348                        if (!err)
 349                                err = err2;
 350                }
 351        }
 352        return err;
 353}
 354EXPORT_SYMBOL(filemap_write_and_wait);
 355
 356/**
 357 * filemap_write_and_wait_range - write out & wait on a file range
 358 * @mapping:    the address_space for the pages
 359 * @lstart:     offset in bytes where the range starts
 360 * @lend:       offset in bytes where the range ends (inclusive)
 361 *
 362 * Write out and wait upon file offsets lstart->lend, inclusive.
 363 *
 364 * Note that `lend' is inclusive (describes the last byte to be written) so
 365 * that this function can be used to write to the very end-of-file (end = -1).
 366 */
 367int filemap_write_and_wait_range(struct address_space *mapping,
 368                                 loff_t lstart, loff_t lend)
 369{
 370        int err = 0;
 371
 372        if (mapping->nrpages) {
 373                err = __filemap_fdatawrite_range(mapping, lstart, lend,
 374                                                 WB_SYNC_ALL);
 375                /* See comment of filemap_write_and_wait() */
 376                if (err != -EIO) {
 377                        int err2 = filemap_fdatawait_range(mapping,
 378                                                lstart, lend);
 379                        if (!err)
 380                                err = err2;
 381                }
 382        }
 383        return err;
 384}
 385EXPORT_SYMBOL(filemap_write_and_wait_range);
 386
 387/**
 388 * add_to_page_cache_locked - add a locked page to the pagecache
 389 * @page:       page to add
 390 * @mapping:    the page's address_space
 391 * @offset:     page index
 392 * @gfp_mask:   page allocation mode
 393 *
 394 * This function is used to add a page to the pagecache. It must be locked.
 395 * This function does not add the page to the LRU.  The caller must do that.
 396 */
 397int add_to_page_cache_locked(struct page *page, struct address_space *mapping,
 398                pgoff_t offset, gfp_t gfp_mask)
 399{
 400        int error;
 401
 402        VM_BUG_ON(!PageLocked(page));
 403
 404        error = mem_cgroup_cache_charge(page, current->mm,
 405                                        gfp_mask & GFP_RECLAIM_MASK);
 406        if (error)
 407                goto out;
 408
 409        error = radix_tree_preload(gfp_mask & ~__GFP_HIGHMEM);
 410        if (error == 0) {
 411                page_cache_get(page);
 412                page->mapping = mapping;
 413                page->index = offset;
 414
 415                spin_lock_irq(&mapping->tree_lock);
 416                error = radix_tree_insert(&mapping->page_tree, offset, page);
 417                if (likely(!error)) {
 418                        mapping->nrpages++;
 419                        __inc_zone_page_state(page, NR_FILE_PAGES);
 420                        if (PageSwapBacked(page))
 421                                __inc_zone_page_state(page, NR_SHMEM);
 422                        spin_unlock_irq(&mapping->tree_lock);
 423                } else {
 424                        page->mapping = NULL;
 425                        spin_unlock_irq(&mapping->tree_lock);
 426                        mem_cgroup_uncharge_cache_page(page);
 427                        page_cache_release(page);
 428                }
 429                radix_tree_preload_end();
 430        } else
 431                mem_cgroup_uncharge_cache_page(page);
 432out:
 433        return error;
 434}
 435EXPORT_SYMBOL(add_to_page_cache_locked);
 436
 437int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
 438                                pgoff_t offset, gfp_t gfp_mask)
 439{
 440        int ret;
 441
 442        /*
 443         * Splice_read and readahead add shmem/tmpfs pages into the page cache
 444         * before shmem_readpage has a chance to mark them as SwapBacked: they
 445         * need to go on the anon lru below, and mem_cgroup_cache_charge
 446         * (called in add_to_page_cache) needs to know where they're going too.
 447         */
 448        if (mapping_cap_swap_backed(mapping))
 449                SetPageSwapBacked(page);
 450
 451        ret = add_to_page_cache(page, mapping, offset, gfp_mask);
 452        if (ret == 0) {
 453                if (page_is_file_cache(page))
 454                        lru_cache_add_file(page);
 455                else
 456                        lru_cache_add_anon(page);
 457        }
 458        return ret;
 459}
 460EXPORT_SYMBOL_GPL(add_to_page_cache_lru);
 461
 462#ifdef CONFIG_NUMA
 463struct page *__page_cache_alloc(gfp_t gfp)
 464{
 465        int n;
 466        struct page *page;
 467
 468        if (cpuset_do_page_mem_spread()) {
 469                get_mems_allowed();
 470                n = cpuset_mem_spread_node();
 471                page = alloc_pages_exact_node(n, gfp, 0);
 472                put_mems_allowed();
 473                return page;
 474        }
 475        return alloc_pages(gfp, 0);
 476}
 477EXPORT_SYMBOL(__page_cache_alloc);
 478#endif
 479
 480static int __sleep_on_page_lock(void *word)
 481{
 482        io_schedule();
 483        return 0;
 484}
 485
 486/*
 487 * In order to wait for pages to become available there must be
 488 * waitqueues associated with pages. By using a hash table of
 489 * waitqueues where the bucket discipline is to maintain all
 490 * waiters on the same queue and wake all when any of the pages
 491 * become available, and for the woken contexts to check to be
 492 * sure the appropriate page became available, this saves space
 493 * at a cost of "thundering herd" phenomena during rare hash
 494 * collisions.
 495 */
 496static wait_queue_head_t *page_waitqueue(struct page *page)
 497{
 498        const struct zone *zone = page_zone(page);
 499
 500        return &zone->wait_table[hash_ptr(page, zone->wait_table_bits)];
 501}
 502
 503static inline void wake_up_page(struct page *page, int bit)
 504{
 505        __wake_up_bit(page_waitqueue(page), &page->flags, bit);
 506}
 507
 508void wait_on_page_bit(struct page *page, int bit_nr)
 509{
 510        DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
 511
 512        if (test_bit(bit_nr, &page->flags))
 513                __wait_on_bit(page_waitqueue(page), &wait, sync_page,
 514                                                        TASK_UNINTERRUPTIBLE);
 515}
 516EXPORT_SYMBOL(wait_on_page_bit);
 517
 518/**
 519 * add_page_wait_queue - Add an arbitrary waiter to a page's wait queue
 520 * @page: Page defining the wait queue of interest
 521 * @waiter: Waiter to add to the queue
 522 *
 523 * Add an arbitrary @waiter to the wait queue for the nominated @page.
 524 */
 525void add_page_wait_queue(struct page *page, wait_queue_t *waiter)
 526{
 527        wait_queue_head_t *q = page_waitqueue(page);
 528        unsigned long flags;
 529
 530        spin_lock_irqsave(&q->lock, flags);
 531        __add_wait_queue(q, waiter);
 532        spin_unlock_irqrestore(&q->lock, flags);
 533}
 534EXPORT_SYMBOL_GPL(add_page_wait_queue);
 535
 536/**
 537 * unlock_page - unlock a locked page
 538 * @page: the page
 539 *
 540 * Unlocks the page and wakes up sleepers in ___wait_on_page_locked().
 541 * Also wakes sleepers in wait_on_page_writeback() because the wakeup
 542 * mechananism between PageLocked pages and PageWriteback pages is shared.
 543 * But that's OK - sleepers in wait_on_page_writeback() just go back to sleep.
 544 *
 545 * The mb is necessary to enforce ordering between the clear_bit and the read
 546 * of the waitqueue (to avoid SMP races with a parallel wait_on_page_locked()).
 547 */
 548void unlock_page(struct page *page)
 549{
 550        VM_BUG_ON(!PageLocked(page));
 551        clear_bit_unlock(PG_locked, &page->flags);
 552        smp_mb__after_clear_bit();
 553        wake_up_page(page, PG_locked);
 554}
 555EXPORT_SYMBOL(unlock_page);
 556
 557/**
 558 * end_page_writeback - end writeback against a page
 559 * @page: the page
 560 */
 561void end_page_writeback(struct page *page)
 562{
 563        if (TestClearPageReclaim(page))
 564                rotate_reclaimable_page(page);
 565
 566        if (!test_clear_page_writeback(page))
 567                BUG();
 568
 569        smp_mb__after_clear_bit();
 570        wake_up_page(page, PG_writeback);
 571}
 572EXPORT_SYMBOL(end_page_writeback);
 573
 574/**
 575 * __lock_page - get a lock on the page, assuming we need to sleep to get it
 576 * @page: the page to lock
 577 *
 578 * Ugly. Running sync_page() in state TASK_UNINTERRUPTIBLE is scary.  If some
 579 * random driver's requestfn sets TASK_RUNNING, we could busywait.  However
 580 * chances are that on the second loop, the block layer's plug list is empty,
 581 * so sync_page() will then return in state TASK_UNINTERRUPTIBLE.
 582 */
 583void __lock_page(struct page *page)
 584{
 585        DEFINE_WAIT_BIT(wait, &page->flags, PG_locked);
 586
 587        __wait_on_bit_lock(page_waitqueue(page), &wait, sync_page,
 588                                                        TASK_UNINTERRUPTIBLE);
 589}
 590EXPORT_SYMBOL(__lock_page);
 591
 592int __lock_page_killable(struct page *page)
 593{
 594        DEFINE_WAIT_BIT(wait, &page->flags, PG_locked);
 595
 596        return __wait_on_bit_lock(page_waitqueue(page), &wait,
 597                                        sync_page_killable, TASK_KILLABLE);
 598}
 599EXPORT_SYMBOL_GPL(__lock_page_killable);
 600
 601/**
 602 * __lock_page_nosync - get a lock on the page, without calling sync_page()
 603 * @page: the page to lock
 604 *
 605 * Variant of lock_page that does not require the caller to hold a reference
 606 * on the page's mapping.
 607 */
 608void __lock_page_nosync(struct page *page)
 609{
 610        DEFINE_WAIT_BIT(wait, &page->flags, PG_locked);
 611        __wait_on_bit_lock(page_waitqueue(page), &wait, __sleep_on_page_lock,
 612                                                        TASK_UNINTERRUPTIBLE);
 613}
 614
 615/**
 616 * find_get_page - find and get a page reference
 617 * @mapping: the address_space to search
 618 * @offset: the page index
 619 *
 620 * Is there a pagecache struct page at the given (mapping, offset) tuple?
 621 * If yes, increment its refcount and return it; if no, return NULL.
 622 */
 623struct page *find_get_page(struct address_space *mapping, pgoff_t offset)
 624{
 625        void **pagep;
 626        struct page *page;
 627
 628        rcu_read_lock();
 629repeat:
 630        page = NULL;
 631        pagep = radix_tree_lookup_slot(&mapping->page_tree, offset);
 632        if (pagep) {
 633                page = radix_tree_deref_slot(pagep);
 634                if (unlikely(!page))
 635                        goto out;
 636                if (radix_tree_deref_retry(page))
 637                        goto repeat;
 638
 639                if (!page_cache_get_speculative(page))
 640                        goto repeat;
 641
 642                /*
 643                 * Has the page moved?
 644                 * This is part of the lockless pagecache protocol. See
 645                 * include/linux/pagemap.h for details.
 646                 */
 647                if (unlikely(page != *pagep)) {
 648                        page_cache_release(page);
 649                        goto repeat;
 650                }
 651        }
 652out:
 653        rcu_read_unlock();
 654
 655        return page;
 656}
 657EXPORT_SYMBOL(find_get_page);
 658
 659/**
 660 * find_lock_page - locate, pin and lock a pagecache page
 661 * @mapping: the address_space to search
 662 * @offset: the page index
 663 *
 664 * Locates the desired pagecache page, locks it, increments its reference
 665 * count and returns its address.
 666 *
 667 * Returns zero if the page was not present. find_lock_page() may sleep.
 668 */
 669struct page *find_lock_page(struct address_space *mapping, pgoff_t offset)
 670{
 671        struct page *page;
 672
 673repeat:
 674        page = find_get_page(mapping, offset);
 675        if (page) {
 676                lock_page(page);
 677                /* Has the page been truncated? */
 678                if (unlikely(page->mapping != mapping)) {
 679                        unlock_page(page);
 680                        page_cache_release(page);
 681                        goto repeat;
 682                }
 683                VM_BUG_ON(page->index != offset);
 684        }
 685        return page;
 686}
 687EXPORT_SYMBOL(find_lock_page);
 688
 689/**
 690 * find_or_create_page - locate or add a pagecache page
 691 * @mapping: the page's address_space
 692 * @index: the page's index into the mapping
 693 * @gfp_mask: page allocation mode
 694 *
 695 * Locates a page in the pagecache.  If the page is not present, a new page
 696 * is allocated using @gfp_mask and is added to the pagecache and to the VM's
 697 * LRU list.  The returned page is locked and has its reference count
 698 * incremented.
 699 *
 700 * find_or_create_page() may sleep, even if @gfp_flags specifies an atomic
 701 * allocation!
 702 *
 703 * find_or_create_page() returns the desired page's address, or zero on
 704 * memory exhaustion.
 705 */
 706struct page *find_or_create_page(struct address_space *mapping,
 707                pgoff_t index, gfp_t gfp_mask)
 708{
 709        struct page *page;
 710        int err;
 711repeat:
 712        page = find_lock_page(mapping, index);
 713        if (!page) {
 714                page = __page_cache_alloc(gfp_mask);
 715                if (!page)
 716                        return NULL;
 717                /*
 718                 * We want a regular kernel memory (not highmem or DMA etc)
 719                 * allocation for the radix tree nodes, but we need to honour
 720                 * the context-specific requirements the caller has asked for.
 721                 * GFP_RECLAIM_MASK collects those requirements.
 722                 */
 723                err = add_to_page_cache_lru(page, mapping, index,
 724                        (gfp_mask & GFP_RECLAIM_MASK));
 725                if (unlikely(err)) {
 726                        page_cache_release(page);
 727                        page = NULL;
 728                        if (err == -EEXIST)
 729                                goto repeat;
 730                }
 731        }
 732        return page;
 733}
 734EXPORT_SYMBOL(find_or_create_page);
 735
 736/**
 737 * find_get_pages - gang pagecache lookup
 738 * @mapping:    The address_space to search
 739 * @start:      The starting page index
 740 * @nr_pages:   The maximum number of pages
 741 * @pages:      Where the resulting pages are placed
 742 *
 743 * find_get_pages() will search for and return a group of up to
 744 * @nr_pages pages in the mapping.  The pages are placed at @pages.
 745 * find_get_pages() takes a reference against the returned pages.
 746 *
 747 * The search returns a group of mapping-contiguous pages with ascending
 748 * indexes.  There may be holes in the indices due to not-present pages.
 749 *
 750 * find_get_pages() returns the number of pages which were found.
 751 */
 752unsigned find_get_pages(struct address_space *mapping, pgoff_t start,
 753                            unsigned int nr_pages, struct page **pages)
 754{
 755        unsigned int i;
 756        unsigned int ret;
 757        unsigned int nr_found;
 758
 759        rcu_read_lock();
 760restart:
 761        nr_found = radix_tree_gang_lookup_slot(&mapping->page_tree,
 762                                (void ***)pages, start, nr_pages);
 763        ret = 0;
 764        for (i = 0; i < nr_found; i++) {
 765                struct page *page;
 766repeat:
 767                page = radix_tree_deref_slot((void **)pages[i]);
 768                if (unlikely(!page))
 769                        continue;
 770                if (radix_tree_deref_retry(page)) {
 771                        if (ret)
 772                                start = pages[ret-1]->index;
 773                        goto restart;
 774                }
 775
 776                if (!page_cache_get_speculative(page))
 777                        goto repeat;
 778
 779                /* Has the page moved? */
 780                if (unlikely(page != *((void **)pages[i]))) {
 781                        page_cache_release(page);
 782                        goto repeat;
 783                }
 784
 785                pages[ret] = page;
 786                ret++;
 787        }
 788        rcu_read_unlock();
 789        return ret;
 790}
 791
 792/**
 793 * find_get_pages_contig - gang contiguous pagecache lookup
 794 * @mapping:    The address_space to search
 795 * @index:      The starting page index
 796 * @nr_pages:   The maximum number of pages
 797 * @pages:      Where the resulting pages are placed
 798 *
 799 * find_get_pages_contig() works exactly like find_get_pages(), except
 800 * that the returned number of pages are guaranteed to be contiguous.
 801 *
 802 * find_get_pages_contig() returns the number of pages which were found.
 803 */
 804unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t index,
 805                               unsigned int nr_pages, struct page **pages)
 806{
 807        unsigned int i;
 808        unsigned int ret;
 809        unsigned int nr_found;
 810
 811        rcu_read_lock();
 812restart:
 813        nr_found = radix_tree_gang_lookup_slot(&mapping->page_tree,
 814                                (void ***)pages, index, nr_pages);
 815        ret = 0;
 816        for (i = 0; i < nr_found; i++) {
 817                struct page *page;
 818repeat:
 819                page = radix_tree_deref_slot((void **)pages[i]);
 820                if (unlikely(!page))
 821                        continue;
 822                if (radix_tree_deref_retry(page))
 823                        goto restart;
 824
 825                if (page->mapping == NULL || page->index != index)
 826                        break;
 827
 828                if (!page_cache_get_speculative(page))
 829                        goto repeat;
 830
 831                /* Has the page moved? */
 832                if (unlikely(page != *((void **)pages[i]))) {
 833                        page_cache_release(page);
 834                        goto repeat;
 835                }
 836
 837                pages[ret] = page;
 838                ret++;
 839                index++;
 840        }
 841        rcu_read_unlock();
 842        return ret;
 843}
 844EXPORT_SYMBOL(find_get_pages_contig);
 845
 846/**
 847 * find_get_pages_tag - find and return pages that match @tag
 848 * @mapping:    the address_space to search
 849 * @index:      the starting page index
 850 * @tag:        the tag index
 851 * @nr_pages:   the maximum number of pages
 852 * @pages:      where the resulting pages are placed
 853 *
 854 * Like find_get_pages, except we only return pages which are tagged with
 855 * @tag.   We update @index to index the next page for the traversal.
 856 */
 857unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index,
 858                        int tag, unsigned int nr_pages, struct page **pages)
 859{
 860        unsigned int i;
 861        unsigned int ret;
 862        unsigned int nr_found;
 863
 864        rcu_read_lock();
 865restart:
 866        nr_found = radix_tree_gang_lookup_tag_slot(&mapping->page_tree,
 867                                (void ***)pages, *index, nr_pages, tag);
 868        ret = 0;
 869        for (i = 0; i < nr_found; i++) {
 870                struct page *page;
 871repeat:
 872                page = radix_tree_deref_slot((void **)pages[i]);
 873                if (unlikely(!page))
 874                        continue;
 875                if (radix_tree_deref_retry(page))
 876                        goto restart;
 877
 878                if (!page_cache_get_speculative(page))
 879                        goto repeat;
 880
 881                /* Has the page moved? */
 882                if (unlikely(page != *((void **)pages[i]))) {
 883                        page_cache_release(page);
 884                        goto repeat;
 885                }
 886
 887                pages[ret] = page;
 888                ret++;
 889        }
 890        rcu_read_unlock();
 891
 892        if (ret)
 893                *index = pages[ret - 1]->index + 1;
 894
 895        return ret;
 896}
 897EXPORT_SYMBOL(find_get_pages_tag);
 898
 899/**
 900 * grab_cache_page_nowait - returns locked page at given index in given cache
 901 * @mapping: target address_space
 902 * @index: the page index
 903 *
 904 * Same as grab_cache_page(), but do not wait if the page is unavailable.
 905 * This is intended for speculative data generators, where the data can
 906 * be regenerated if the page couldn't be grabbed.  This routine should
 907 * be safe to call while holding the lock for another page.
 908 *
 909 * Clear __GFP_FS when allocating the page to avoid recursion into the fs
 910 * and deadlock against the caller's locked page.
 911 */
 912struct page *
 913grab_cache_page_nowait(struct address_space *mapping, pgoff_t index)
 914{
 915        struct page *page = find_get_page(mapping, index);
 916
 917        if (page) {
 918                if (trylock_page(page))
 919                        return page;
 920                page_cache_release(page);
 921                return NULL;
 922        }
 923        page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~__GFP_FS);
 924        if (page && add_to_page_cache_lru(page, mapping, index, GFP_NOFS)) {
 925                page_cache_release(page);
 926                page = NULL;
 927        }
 928        return page;
 929}
 930EXPORT_SYMBOL(grab_cache_page_nowait);
 931
 932/*
 933 * CD/DVDs are error prone. When a medium error occurs, the driver may fail
 934 * a _large_ part of the i/o request. Imagine the worst scenario:
 935 *
 936 *      ---R__________________________________________B__________
 937 *         ^ reading here                             ^ bad block(assume 4k)
 938 *
 939 * read(R) => miss => readahead(R...B) => media error => frustrating retries
 940 * => failing the whole request => read(R) => read(R+1) =>
 941 * readahead(R+1...B+1) => bang => read(R+2) => read(R+3) =>
 942 * readahead(R+3...B+2) => bang => read(R+3) => read(R+4) =>
 943 * readahead(R+4...B+3) => bang => read(R+4) => read(R+5) => ......
 944 *
 945 * It is going insane. Fix it by quickly scaling down the readahead size.
 946 */
 947static void shrink_readahead_size_eio(struct file *filp,
 948                                        struct file_ra_state *ra)
 949{
 950        ra->ra_pages /= 4;
 951}
 952
 953/**
 954 * do_generic_file_read - generic file read routine
 955 * @filp:       the file to read
 956 * @ppos:       current file position
 957 * @desc:       read_descriptor
 958 * @actor:      read method
 959 *
 960 * This is a generic file read routine, and uses the
 961 * mapping->a_ops->readpage() function for the actual low-level stuff.
 962 *
 963 * This is really ugly. But the goto's actually try to clarify some
 964 * of the logic when it comes to error handling etc.
 965 */
 966static void do_generic_file_read(struct file *filp, loff_t *ppos,
 967                read_descriptor_t *desc, read_actor_t actor)
 968{
 969        struct address_space *mapping = filp->f_mapping;
 970        struct inode *inode = mapping->host;
 971        struct file_ra_state *ra = &filp->f_ra;
 972        pgoff_t index;
 973        pgoff_t last_index;
 974        pgoff_t prev_index;
 975        unsigned long offset;      /* offset into pagecache page */
 976        unsigned int prev_offset;
 977        int error;
 978
 979        index = *ppos >> PAGE_CACHE_SHIFT;
 980        prev_index = ra->prev_pos >> PAGE_CACHE_SHIFT;
 981        prev_offset = ra->prev_pos & (PAGE_CACHE_SIZE-1);
 982        last_index = (*ppos + desc->count + PAGE_CACHE_SIZE-1) >> PAGE_CACHE_SHIFT;
 983        offset = *ppos & ~PAGE_CACHE_MASK;
 984
 985        for (;;) {
 986                struct page *page;
 987                pgoff_t end_index;
 988                loff_t isize;
 989                unsigned long nr, ret;
 990
 991                cond_resched();
 992find_page:
 993                page = find_get_page(mapping, index);
 994                if (!page) {
 995                        page_cache_sync_readahead(mapping,
 996                                        ra, filp,
 997                                        index, last_index - index);
 998                        page = find_get_page(mapping, index);
 999                        if (unlikely(page == NULL))
1000                                goto no_cached_page;
1001                }
1002                if (PageReadahead(page)) {
1003                        page_cache_async_readahead(mapping,
1004                                        ra, filp, page,
1005                                        index, last_index - index);
1006                }
1007                if (!PageUptodate(page)) {
1008                        if (inode->i_blkbits == PAGE_CACHE_SHIFT ||
1009                                        !mapping->a_ops->is_partially_uptodate)
1010                                goto page_not_up_to_date;
1011                        if (!trylock_page(page))
1012                                goto page_not_up_to_date;
1013                        /* Did it get truncated before we got the lock? */
1014                        if (!page->mapping)
1015                                goto page_not_up_to_date_locked;
1016                        if (!mapping->a_ops->is_partially_uptodate(page,
1017                                                                desc, offset))
1018                                goto page_not_up_to_date_locked;
1019                        unlock_page(page);
1020                }
1021page_ok:
1022                /*
1023                 * i_size must be checked after we know the page is Uptodate.
1024                 *
1025                 * Checking i_size after the check allows us to calculate
1026                 * the correct value for "nr", which means the zero-filled
1027                 * part of the page is not copied back to userspace (unless
1028                 * another truncate extends the file - this is desired though).
1029                 */
1030
1031                isize = i_size_read(inode);
1032                end_index = (isize - 1) >> PAGE_CACHE_SHIFT;
1033                if (unlikely(!isize || index > end_index)) {
1034                        page_cache_release(page);
1035                        goto out;
1036                }
1037
1038                /* nr is the maximum number of bytes to copy from this page */
1039                nr = PAGE_CACHE_SIZE;
1040                if (index == end_index) {
1041                        nr = ((isize - 1) & ~PAGE_CACHE_MASK) + 1;
1042                        if (nr <= offset) {
1043                                page_cache_release(page);
1044                                goto out;
1045                        }
1046                }
1047                nr = nr - offset;
1048
1049                /* If users can be writing to this page using arbitrary
1050                 * virtual addresses, take care about potential aliasing
1051                 * before reading the page on the kernel side.
1052                 */
1053                if (mapping_writably_mapped(mapping))
1054                        flush_dcache_page(page);
1055
1056                /*
1057                 * When a sequential read accesses a page several times,
1058                 * only mark it as accessed the first time.
1059                 */
1060                if (prev_index != index || offset != prev_offset)
1061                        mark_page_accessed(page);
1062                prev_index = index;
1063
1064                /*
1065                 * Ok, we have the page, and it's up-to-date, so
1066                 * now we can copy it to user space...
1067                 *
1068                 * The actor routine returns how many bytes were actually used..
1069                 * NOTE! This may not be the same as how much of a user buffer
1070                 * we filled up (we may be padding etc), so we can only update
1071                 * "pos" here (the actor routine has to update the user buffer
1072                 * pointers and the remaining count).
1073                 */
1074                ret = actor(desc, page, offset, nr);
1075                offset += ret;
1076                index += offset >> PAGE_CACHE_SHIFT;
1077                offset &= ~PAGE_CACHE_MASK;
1078                prev_offset = offset;
1079
1080                page_cache_release(page);
1081                if (ret == nr && desc->count)
1082                        continue;
1083                goto out;
1084
1085page_not_up_to_date:
1086                /* Get exclusive access to the page ... */
1087                error = lock_page_killable(page);
1088                if (unlikely(error))
1089                        goto readpage_error;
1090
1091page_not_up_to_date_locked:
1092                /* Did it get truncated before we got the lock? */
1093                if (!page->mapping) {
1094                        unlock_page(page);
1095                        page_cache_release(page);
1096                        continue;
1097                }
1098
1099                /* Did somebody else fill it already? */
1100                if (PageUptodate(page)) {
1101                        unlock_page(page);
1102                        goto page_ok;
1103                }
1104
1105readpage:
1106                /*
1107                 * A previous I/O error may have been due to temporary
1108                 * failures, eg. multipath errors.
1109                 * PG_error will be set again if readpage fails.
1110                 */
1111                ClearPageError(page);
1112                /* Start the actual read. The read will unlock the page. */
1113                error = mapping->a_ops->readpage(filp, page);
1114
1115                if (unlikely(error)) {
1116                        if (error == AOP_TRUNCATED_PAGE) {
1117                                page_cache_release(page);
1118                                goto find_page;
1119                        }
1120                        goto readpage_error;
1121                }
1122
1123                if (!PageUptodate(page)) {
1124                        error = lock_page_killable(page);
1125                        if (unlikely(error))
1126                                goto readpage_error;
1127                        if (!PageUptodate(page)) {
1128                                if (page->mapping == NULL) {
1129                                        /*
1130                                         * invalidate_mapping_pages got it
1131                                         */
1132                                        unlock_page(page);
1133                                        page_cache_release(page);
1134                                        goto find_page;
1135                                }
1136                                unlock_page(page);
1137                                shrink_readahead_size_eio(filp, ra);
1138                                error = -EIO;
1139                                goto readpage_error;
1140                        }
1141                        unlock_page(page);
1142                }
1143
1144                goto page_ok;
1145
1146readpage_error:
1147                /* UHHUH! A synchronous read error occurred. Report it */
1148                desc->error = error;
1149                page_cache_release(page);
1150                goto out;
1151
1152no_cached_page:
1153                /*
1154                 * Ok, it wasn't cached, so we need to create a new
1155                 * page..
1156                 */
1157                page = page_cache_alloc_cold(mapping);
1158                if (!page) {
1159                        desc->error = -ENOMEM;
1160                        goto out;
1161                }
1162                error = add_to_page_cache_lru(page, mapping,
1163                                                index, GFP_KERNEL);
1164                if (error) {
1165                        page_cache_release(page);
1166                        if (error == -EEXIST)
1167                                goto find_page;
1168                        desc->error = error;
1169                        goto out;
1170                }
1171                goto readpage;
1172        }
1173
1174out:
1175        ra->prev_pos = prev_index;
1176        ra->prev_pos <<= PAGE_CACHE_SHIFT;
1177        ra->prev_pos |= prev_offset;
1178
1179        *ppos = ((loff_t)index << PAGE_CACHE_SHIFT) + offset;
1180        file_accessed(filp);
1181}
1182
1183int file_read_actor(read_descriptor_t *desc, struct page *page,
1184                        unsigned long offset, unsigned long size)
1185{
1186        char *kaddr;
1187        unsigned long left, count = desc->count;
1188
1189        if (size > count)
1190                size = count;
1191
1192        /*
1193         * Faults on the destination of a read are common, so do it before
1194         * taking the kmap.
1195         */
1196        if (!fault_in_pages_writeable(desc->arg.buf, size)) {
1197                kaddr = kmap_atomic(page, KM_USER0);
1198                left = __copy_to_user_inatomic(desc->arg.buf,
1199                                                kaddr + offset, size);
1200                kunmap_atomic(kaddr, KM_USER0);
1201                if (left == 0)
1202                        goto success;
1203        }
1204
1205        /* Do it the slow way */
1206        kaddr = kmap(page);
1207        left = __copy_to_user(desc->arg.buf, kaddr + offset, size);
1208        kunmap(page);
1209
1210        if (left) {
1211                size -= left;
1212                desc->error = -EFAULT;
1213        }
1214success:
1215        desc->count = count - size;
1216        desc->written += size;
1217        desc->arg.buf += size;
1218        return size;
1219}
1220
1221/*
1222 * Performs necessary checks before doing a write
1223 * @iov:        io vector request
1224 * @nr_segs:    number of segments in the iovec
1225 * @count:      number of bytes to write
1226 * @access_flags: type of access: %VERIFY_READ or %VERIFY_WRITE
1227 *
1228 * Adjust number of segments and amount of bytes to write (nr_segs should be
1229 * properly initialized first). Returns appropriate error code that caller
1230 * should return or zero in case that write should be allowed.
1231 */
1232int generic_segment_checks(const struct iovec *iov,
1233                        unsigned long *nr_segs, size_t *count, int access_flags)
1234{
1235        unsigned long   seg;
1236        size_t cnt = 0;
1237        for (seg = 0; seg < *nr_segs; seg++) {
1238                const struct iovec *iv = &iov[seg];
1239
1240                /*
1241                 * If any segment has a negative length, or the cumulative
1242                 * length ever wraps negative then return -EINVAL.
1243                 */
1244                cnt += iv->iov_len;
1245                if (unlikely((ssize_t)(cnt|iv->iov_len) < 0))
1246                        return -EINVAL;
1247                if (access_ok(access_flags, iv->iov_base, iv->iov_len))
1248                        continue;
1249                if (seg == 0)
1250                        return -EFAULT;
1251                *nr_segs = seg;
1252                cnt -= iv->iov_len;     /* This segment is no good */
1253                break;
1254        }
1255        *count = cnt;
1256        return 0;
1257}
1258EXPORT_SYMBOL(generic_segment_checks);
1259
1260/**
1261 * generic_file_aio_read - generic filesystem read routine
1262 * @iocb:       kernel I/O control block
1263 * @iov:        io vector request
1264 * @nr_segs:    number of segments in the iovec
1265 * @pos:        current file position
1266 *
1267 * This is the "read()" routine for all filesystems
1268 * that can use the page cache directly.
1269 */
1270ssize_t
1271generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
1272                unsigned long nr_segs, loff_t pos)
1273{
1274        struct file *filp = iocb->ki_filp;
1275        ssize_t retval;
1276        unsigned long seg = 0;
1277        size_t count;
1278        loff_t *ppos = &iocb->ki_pos;
1279
1280        count = 0;
1281        retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE);
1282        if (retval)
1283                return retval;
1284
1285        /* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
1286        if (filp->f_flags & O_DIRECT) {
1287                loff_t size;
1288                struct address_space *mapping;
1289                struct inode *inode;
1290
1291                mapping = filp->f_mapping;
1292                inode = mapping->host;
1293                if (!count)
1294                        goto out; /* skip atime */
1295                size = i_size_read(inode);
1296                if (pos < size) {
1297                        retval = filemap_write_and_wait_range(mapping, pos,
1298                                        pos + iov_length(iov, nr_segs) - 1);
1299                        if (!retval) {
1300                                retval = mapping->a_ops->direct_IO(READ, iocb,
1301                                                        iov, pos, nr_segs);
1302                        }
1303                        if (retval > 0) {
1304                                *ppos = pos + retval;
1305                                count -= retval;
1306                        }
1307
1308                        /*
1309                         * Btrfs can have a short DIO read if we encounter
1310                         * compressed extents, so if there was an error, or if
1311                         * we've already read everything we wanted to, or if
1312                         * there was a short read because we hit EOF, go ahead
1313                         * and return.  Otherwise fallthrough to buffered io for
1314                         * the rest of the read.
1315                         */
1316                        if (retval < 0 || !count || *ppos >= size) {
1317                                file_accessed(filp);
1318                                goto out;
1319                        }
1320                }
1321        }
1322
1323        count = retval;
1324        for (seg = 0; seg < nr_segs; seg++) {
1325                read_descriptor_t desc;
1326                loff_t offset = 0;
1327
1328                /*
1329                 * If we did a short DIO read we need to skip the section of the
1330                 * iov that we've already read data into.
1331                 */
1332                if (count) {
1333                        if (count > iov[seg].iov_len) {
1334                                count -= iov[seg].iov_len;
1335                                continue;
1336                        }
1337                        offset = count;
1338                        count = 0;
1339                }
1340
1341                desc.written = 0;
1342                desc.arg.buf = iov[seg].iov_base + offset;
1343                desc.count = iov[seg].iov_len - offset;
1344                if (desc.count == 0)
1345                        continue;
1346                desc.error = 0;
1347                do_generic_file_read(filp, ppos, &desc, file_read_actor);
1348                retval += desc.written;
1349                if (desc.error) {
1350                        retval = retval ?: desc.error;
1351                        break;
1352                }
1353                if (desc.count > 0)
1354                        break;
1355        }
1356out:
1357        return retval;
1358}
1359EXPORT_SYMBOL(generic_file_aio_read);
1360
1361static ssize_t
1362do_readahead(struct address_space *mapping, struct file *filp,
1363             pgoff_t index, unsigned long nr)
1364{
1365        if (!mapping || !mapping->a_ops || !mapping->a_ops->readpage)
1366                return -EINVAL;
1367
1368        force_page_cache_readahead(mapping, filp, index, nr);
1369        return 0;
1370}
1371
1372SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
1373{
1374        ssize_t ret;
1375        struct file *file;
1376
1377        ret = -EBADF;
1378        file = fget(fd);
1379        if (file) {
1380                if (file->f_mode & FMODE_READ) {
1381                        struct address_space *mapping = file->f_mapping;
1382                        pgoff_t start = offset >> PAGE_CACHE_SHIFT;
1383                        pgoff_t end = (offset + count - 1) >> PAGE_CACHE_SHIFT;
1384                        unsigned long len = end - start + 1;
1385                        ret = do_readahead(mapping, file, start, len);
1386                }
1387                fput(file);
1388        }
1389        return ret;
1390}
1391#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
1392asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
1393{
1394        return SYSC_readahead((int) fd, offset, (size_t) count);
1395}
1396SYSCALL_ALIAS(sys_readahead, SyS_readahead);
1397#endif
1398
1399#ifdef CONFIG_MMU
1400/**
1401 * page_cache_read - adds requested page to the page cache if not already there
1402 * @file:       file to read
1403 * @offset:     page index
1404 *
1405 * This adds the requested page to the page cache if it isn't already there,
1406 * and schedules an I/O to read in its contents from disk.
1407 */
1408static int page_cache_read(struct file *file, pgoff_t offset)
1409{
1410        struct address_space *mapping = file->f_mapping;
1411        struct page *page; 
1412        int ret;
1413
1414        do {
1415                page = page_cache_alloc_cold(mapping);
1416                if (!page)
1417                        return -ENOMEM;
1418
1419                ret = add_to_page_cache_lru(page, mapping, offset, GFP_KERNEL);
1420                if (ret == 0)
1421                        ret = mapping->a_ops->readpage(file, page);
1422                else if (ret == -EEXIST)
1423                        ret = 0; /* losing race to add is OK */
1424
1425                page_cache_release(page);
1426
1427        } while (ret == AOP_TRUNCATED_PAGE);
1428                
1429        return ret;
1430}
1431
1432#define MMAP_LOTSAMISS  (100)
1433
1434/*
1435 * Synchronous readahead happens when we don't even find
1436 * a page in the page cache at all.
1437 */
1438static void do_sync_mmap_readahead(struct vm_area_struct *vma,
1439                                   struct file_ra_state *ra,
1440                                   struct file *file,
1441                                   pgoff_t offset)
1442{
1443        unsigned long ra_pages;
1444        struct address_space *mapping = file->f_mapping;
1445
1446        /* If we don't want any read-ahead, don't bother */
1447        if (VM_RandomReadHint(vma))
1448                return;
1449
1450        if (VM_SequentialReadHint(vma) ||
1451                        offset - 1 == (ra->prev_pos >> PAGE_CACHE_SHIFT)) {
1452                page_cache_sync_readahead(mapping, ra, file, offset,
1453                                          ra->ra_pages);
1454                return;
1455        }
1456
1457        if (ra->mmap_miss < INT_MAX)
1458                ra->mmap_miss++;
1459
1460        /*
1461         * Do we miss much more than hit in this file? If so,
1462         * stop bothering with read-ahead. It will only hurt.
1463         */
1464        if (ra->mmap_miss > MMAP_LOTSAMISS)
1465                return;
1466
1467        /*
1468         * mmap read-around
1469         */
1470        ra_pages = max_sane_readahead(ra->ra_pages);
1471        if (ra_pages) {
1472                ra->start = max_t(long, 0, offset - ra_pages/2);
1473                ra->size = ra_pages;
1474                ra->async_size = 0;
1475                ra_submit(ra, mapping, file);
1476        }
1477}
1478
1479/*
1480 * Asynchronous readahead happens when we find the page and PG_readahead,
1481 * so we want to possibly extend the readahead further..
1482 */
1483static void do_async_mmap_readahead(struct vm_area_struct *vma,
1484                                    struct file_ra_state *ra,
1485                                    struct file *file,
1486                                    struct page *page,
1487                                    pgoff_t offset)
1488{
1489        struct address_space *mapping = file->f_mapping;
1490
1491        /* If we don't want any read-ahead, don't bother */
1492        if (VM_RandomReadHint(vma))
1493                return;
1494        if (ra->mmap_miss > 0)
1495                ra->mmap_miss--;
1496        if (PageReadahead(page))
1497                page_cache_async_readahead(mapping, ra, file,
1498                                           page, offset, ra->ra_pages);
1499}
1500
1501/**
1502 * filemap_fault - read in file data for page fault handling
1503 * @vma:        vma in which the fault was taken
1504 * @vmf:        struct vm_fault containing details of the fault
1505 *
1506 * filemap_fault() is invoked via the vma operations vector for a
1507 * mapped memory region to read in file data during a page fault.
1508 *
1509 * The goto's are kind of ugly, but this streamlines the normal case of having
1510 * it in the page cache, and handles the special cases reasonably without
1511 * having a lot of duplicated code.
1512 */
1513int filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
1514{
1515        int error;
1516        struct file *file = vma->vm_file;
1517        struct address_space *mapping = file->f_mapping;
1518        struct file_ra_state *ra = &file->f_ra;
1519        struct inode *inode = mapping->host;
1520        pgoff_t offset = vmf->pgoff;
1521        struct page *page;
1522        pgoff_t size;
1523        int ret = 0;
1524
1525        size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
1526        if (offset >= size)
1527                return VM_FAULT_SIGBUS;
1528
1529        /*
1530         * Do we have something in the page cache already?
1531         */
1532        page = find_get_page(mapping, offset);
1533        if (likely(page)) {
1534                /*
1535                 * We found the page, so try async readahead before
1536                 * waiting for the lock.
1537                 */
1538                do_async_mmap_readahead(vma, ra, file, page, offset);
1539                lock_page(page);
1540
1541                /* Did it get truncated? */
1542                if (unlikely(page->mapping != mapping)) {
1543                        unlock_page(page);
1544                        put_page(page);
1545                        goto no_cached_page;
1546                }
1547        } else {
1548                /* No page in the page cache at all */
1549                do_sync_mmap_readahead(vma, ra, file, offset);
1550                count_vm_event(PGMAJFAULT);
1551                ret = VM_FAULT_MAJOR;
1552retry_find:
1553                page = find_lock_page(mapping, offset);
1554                if (!page)
1555                        goto no_cached_page;
1556        }
1557
1558        /*
1559         * We have a locked page in the page cache, now we need to check
1560         * that it's up-to-date. If not, it is going to be due to an error.
1561         */
1562        if (unlikely(!PageUptodate(page)))
1563                goto page_not_uptodate;
1564
1565        /*
1566         * Found the page and have a reference on it.
1567         * We must recheck i_size under page lock.
1568         */
1569        size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
1570        if (unlikely(offset >= size)) {
1571                unlock_page(page);
1572                page_cache_release(page);
1573                return VM_FAULT_SIGBUS;
1574        }
1575
1576        ra->prev_pos = (loff_t)offset << PAGE_CACHE_SHIFT;
1577        vmf->page = page;
1578        return ret | VM_FAULT_LOCKED;
1579
1580no_cached_page:
1581        /*
1582         * We're only likely to ever get here if MADV_RANDOM is in
1583         * effect.
1584         */
1585        error = page_cache_read(file, offset);
1586
1587        /*
1588         * The page we want has now been added to the page cache.
1589         * In the unlikely event that someone removed it in the
1590         * meantime, we'll just come back here and read it again.
1591         */
1592        if (error >= 0)
1593                goto retry_find;
1594
1595        /*
1596         * An error return from page_cache_read can result if the
1597         * system is low on memory, or a problem occurs while trying
1598         * to schedule I/O.
1599         */
1600        if (error == -ENOMEM)
1601                return VM_FAULT_OOM;
1602        return VM_FAULT_SIGBUS;
1603
1604page_not_uptodate:
1605        /*
1606         * Umm, take care of errors if the page isn't up-to-date.
1607         * Try to re-read it _once_. We do this synchronously,
1608         * because there really aren't any performance issues here
1609         * and we need to check for errors.
1610         */
1611        ClearPageError(page);
1612        error = mapping->a_ops->readpage(file, page);
1613        if (!error) {
1614                wait_on_page_locked(page);
1615                if (!PageUptodate(page))
1616                        error = -EIO;
1617        }
1618        page_cache_release(page);
1619
1620        if (!error || error == AOP_TRUNCATED_PAGE)
1621                goto retry_find;
1622
1623        /* Things didn't work out. Return zero to tell the mm layer so. */
1624        shrink_readahead_size_eio(file, ra);
1625        return VM_FAULT_SIGBUS;
1626}
1627EXPORT_SYMBOL(filemap_fault);
1628
1629const struct vm_operations_struct generic_file_vm_ops = {
1630        .fault          = filemap_fault,
1631};
1632
1633/* This is used for a general mmap of a disk file */
1634
1635int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
1636{
1637        struct address_space *mapping = file->f_mapping;
1638
1639        if (!mapping->a_ops->readpage)
1640                return -ENOEXEC;
1641        file_accessed(file);
1642        vma->vm_ops = &generic_file_vm_ops;
1643        vma->vm_flags |= VM_CAN_NONLINEAR;
1644        return 0;
1645}
1646
1647/*
1648 * This is for filesystems which do not implement ->writepage.
1649 */
1650int generic_file_readonly_mmap(struct file *file, struct vm_area_struct *vma)
1651{
1652        if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE))
1653                return -EINVAL;
1654        return generic_file_mmap(file, vma);
1655}
1656#else
1657int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
1658{
1659        return -ENOSYS;
1660}
1661int generic_file_readonly_mmap(struct file * file, struct vm_area_struct * vma)
1662{
1663        return -ENOSYS;
1664}
1665#endif /* CONFIG_MMU */
1666
1667EXPORT_SYMBOL(generic_file_mmap);
1668EXPORT_SYMBOL(generic_file_readonly_mmap);
1669
1670static struct page *__read_cache_page(struct address_space *mapping,
1671                                pgoff_t index,
1672                                int (*filler)(void *,struct page*),
1673                                void *data,
1674                                gfp_t gfp)
1675{
1676        struct page *page;
1677        int err;
1678repeat:
1679        page = find_get_page(mapping, index);
1680        if (!page) {
1681                page = __page_cache_alloc(gfp | __GFP_COLD);
1682                if (!page)
1683                        return ERR_PTR(-ENOMEM);
1684                err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL);
1685                if (unlikely(err)) {
1686                        page_cache_release(page);
1687                        if (err == -EEXIST)
1688                                goto repeat;
1689                        /* Presumably ENOMEM for radix tree node */
1690                        return ERR_PTR(err);
1691                }
1692                err = filler(data, page);
1693                if (err < 0) {
1694                        page_cache_release(page);
1695                        page = ERR_PTR(err);
1696                }
1697        }
1698        return page;
1699}
1700
1701static struct page *do_read_cache_page(struct address_space *mapping,
1702                                pgoff_t index,
1703                                int (*filler)(void *,struct page*),
1704                                void *data,
1705                                gfp_t gfp)
1706
1707{
1708        struct page *page;
1709        int err;
1710
1711retry:
1712        page = __read_cache_page(mapping, index, filler, data, gfp);
1713        if (IS_ERR(page))
1714                return page;
1715        if (PageUptodate(page))
1716                goto out;
1717
1718        lock_page(page);
1719        if (!page->mapping) {
1720                unlock_page(page);
1721                page_cache_release(page);
1722                goto retry;
1723        }
1724        if (PageUptodate(page)) {
1725                unlock_page(page);
1726                goto out;
1727        }
1728        err = filler(data, page);
1729        if (err < 0) {
1730                page_cache_release(page);
1731                return ERR_PTR(err);
1732        }
1733out:
1734        mark_page_accessed(page);
1735        return page;
1736}
1737
1738/**
1739 * read_cache_page_async - read into page cache, fill it if needed
1740 * @mapping:    the page's address_space
1741 * @index:      the page index
1742 * @filler:     function to perform the read
1743 * @data:       destination for read data
1744 *
1745 * Same as read_cache_page, but don't wait for page to become unlocked
1746 * after submitting it to the filler.
1747 *
1748 * Read into the page cache. If a page already exists, and PageUptodate() is
1749 * not set, try to fill the page but don't wait for it to become unlocked.
1750 *
1751 * If the page does not get brought uptodate, return -EIO.
1752 */
1753struct page *read_cache_page_async(struct address_space *mapping,
1754                                pgoff_t index,
1755                                int (*filler)(void *,struct page*),
1756                                void *data)
1757{
1758        return do_read_cache_page(mapping, index, filler, data, mapping_gfp_mask(mapping));
1759}
1760EXPORT_SYMBOL(read_cache_page_async);
1761
1762static struct page *wait_on_page_read(struct page *page)
1763{
1764        if (!IS_ERR(page)) {
1765                wait_on_page_locked(page);
1766                if (!PageUptodate(page)) {
1767                        page_cache_release(page);
1768                        page = ERR_PTR(-EIO);
1769                }
1770        }
1771        return page;
1772}
1773
1774/**
1775 * read_cache_page_gfp - read into page cache, using specified page allocation flags.
1776 * @mapping:    the page's address_space
1777 * @index:      the page index
1778 * @gfp:        the page allocator flags to use if allocating
1779 *
1780 * This is the same as "read_mapping_page(mapping, index, NULL)", but with
1781 * any new page allocations done using the specified allocation flags. Note
1782 * that the Radix tree operations will still use GFP_KERNEL, so you can't
1783 * expect to do this atomically or anything like that - but you can pass in
1784 * other page requirements.
1785 *
1786 * If the page does not get brought uptodate, return -EIO.
1787 */
1788struct page *read_cache_page_gfp(struct address_space *mapping,
1789                                pgoff_t index,
1790                                gfp_t gfp)
1791{
1792        filler_t *filler = (filler_t *)mapping->a_ops->readpage;
1793
1794        return wait_on_page_read(do_read_cache_page(mapping, index, filler, NULL, gfp));
1795}
1796EXPORT_SYMBOL(read_cache_page_gfp);
1797
1798/**
1799 * read_cache_page - read into page cache, fill it if needed
1800 * @mapping:    the page's address_space
1801 * @index:      the page index
1802 * @filler:     function to perform the read
1803 * @data:       destination for read data
1804 *
1805 * Read into the page cache. If a page already exists, and PageUptodate() is
1806 * not set, try to fill the page then wait for it to become unlocked.
1807 *
1808 * If the page does not get brought uptodate, return -EIO.
1809 */
1810struct page *read_cache_page(struct address_space *mapping,
1811                                pgoff_t index,
1812                                int (*filler)(void *,struct page*),
1813                                void *data)
1814{
1815        return wait_on_page_read(read_cache_page_async(mapping, index, filler, data));
1816}
1817EXPORT_SYMBOL(read_cache_page);
1818
1819/*
1820 * The logic we want is
1821 *
1822 *      if suid or (sgid and xgrp)
1823 *              remove privs
1824 */
1825int should_remove_suid(struct dentry *dentry)
1826{
1827        mode_t mode = dentry->d_inode->i_mode;
1828        int kill = 0;
1829
1830        /* suid always must be killed */
1831        if (unlikely(mode & S_ISUID))
1832                kill = ATTR_KILL_SUID;
1833
1834        /*
1835         * sgid without any exec bits is just a mandatory locking mark; leave
1836         * it alone.  If some exec bits are set, it's a real sgid; kill it.
1837         */
1838        if (unlikely((mode & S_ISGID) && (mode & S_IXGRP)))
1839                kill |= ATTR_KILL_SGID;
1840
1841        if (unlikely(kill && !capable(CAP_FSETID) && S_ISREG(mode)))
1842                return kill;
1843
1844        return 0;
1845}
1846EXPORT_SYMBOL(should_remove_suid);
1847
1848static int __remove_suid(struct dentry *dentry, int kill)
1849{
1850        struct iattr newattrs;
1851
1852        newattrs.ia_valid = ATTR_FORCE | kill;
1853        return notify_change(dentry, &newattrs);
1854}
1855
1856int file_remove_suid(struct file *file)
1857{
1858        struct dentry *dentry = file->f_path.dentry;
1859        int killsuid = should_remove_suid(dentry);
1860        int killpriv = security_inode_need_killpriv(dentry);
1861        int error = 0;
1862
1863        if (killpriv < 0)
1864                return killpriv;
1865        if (killpriv)
1866                error = security_inode_killpriv(dentry);
1867        if (!error && killsuid)
1868                error = __remove_suid(dentry, killsuid);
1869
1870        return error;
1871}
1872EXPORT_SYMBOL(file_remove_suid);
1873
1874static size_t __iovec_copy_from_user_inatomic(char *vaddr,
1875                        const struct iovec *iov, size_t base, size_t bytes)
1876{
1877        size_t copied = 0, left = 0;
1878
1879        while (bytes) {
1880                char __user *buf = iov->iov_base + base;
1881                int copy = min(bytes, iov->iov_len - base);
1882
1883                base = 0;
1884                left = __copy_from_user_inatomic(vaddr, buf, copy);
1885                copied += copy;
1886                bytes -= copy;
1887                vaddr += copy;
1888                iov++;
1889
1890                if (unlikely(left))
1891                        break;
1892        }
1893        return copied - left;
1894}
1895
1896/*
1897 * Copy as much as we can into the page and return the number of bytes which
1898 * were successfully copied.  If a fault is encountered then return the number of
1899 * bytes which were copied.
1900 */
1901size_t iov_iter_copy_from_user_atomic(struct page *page,
1902                struct iov_iter *i, unsigned long offset, size_t bytes)
1903{
1904        char *kaddr;
1905        size_t copied;
1906
1907        BUG_ON(!in_atomic());
1908        kaddr = kmap_atomic(page, KM_USER0);
1909        if (likely(i->nr_segs == 1)) {
1910                int left;
1911                char __user *buf = i->iov->iov_base + i->iov_offset;
1912                left = __copy_from_user_inatomic(kaddr + offset, buf, bytes);
1913                copied = bytes - left;
1914        } else {
1915                copied = __iovec_copy_from_user_inatomic(kaddr + offset,
1916                                                i->iov, i->iov_offset, bytes);
1917        }
1918        kunmap_atomic(kaddr, KM_USER0);
1919
1920        return copied;
1921}
1922EXPORT_SYMBOL(iov_iter_copy_from_user_atomic);
1923
1924/*
1925 * This has the same sideeffects and return value as
1926 * iov_iter_copy_from_user_atomic().
1927 * The difference is that it attempts to resolve faults.
1928 * Page must not be locked.
1929 */
1930size_t iov_iter_copy_from_user(struct page *page,
1931                struct iov_iter *i, unsigned long offset, size_t bytes)
1932{
1933        char *kaddr;
1934        size_t copied;
1935
1936        kaddr = kmap(page);
1937        if (likely(i->nr_segs == 1)) {
1938                int left;
1939                char __user *buf = i->iov->iov_base + i->iov_offset;
1940                left = __copy_from_user(kaddr + offset, buf, bytes);
1941                copied = bytes - left;
1942        } else {
1943                copied = __iovec_copy_from_user_inatomic(kaddr + offset,
1944                                                i->iov, i->iov_offset, bytes);
1945        }
1946        kunmap(page);
1947        return copied;
1948}
1949EXPORT_SYMBOL(iov_iter_copy_from_user);
1950
1951void iov_iter_advance(struct iov_iter *i, size_t bytes)
1952{
1953        BUG_ON(i->count < bytes);
1954
1955        if (likely(i->nr_segs == 1)) {
1956                i->iov_offset += bytes;
1957                i->count -= bytes;
1958        } else {
1959                const struct iovec *iov = i->iov;
1960                size_t base = i->iov_offset;
1961
1962                /*
1963                 * The !iov->iov_len check ensures we skip over unlikely
1964                 * zero-length segments (without overruning the iovec).
1965                 */
1966                while (bytes || unlikely(i->count && !iov->iov_len)) {
1967                        int copy;
1968
1969                        copy = min(bytes, iov->iov_len - base);
1970                        BUG_ON(!i->count || i->count < copy);
1971                        i->count -= copy;
1972                        bytes -= copy;
1973                        base += copy;
1974                        if (iov->iov_len == base) {
1975                                iov++;
1976                                base = 0;
1977                        }
1978                }
1979                i->iov = iov;
1980                i->iov_offset = base;
1981        }
1982}
1983EXPORT_SYMBOL(iov_iter_advance);
1984
1985/*
1986 * Fault in the first iovec of the given iov_iter, to a maximum length
1987 * of bytes. Returns 0 on success, or non-zero if the memory could not be
1988 * accessed (ie. because it is an invalid address).
1989 *
1990 * writev-intensive code may want this to prefault several iovecs -- that
1991 * would be possible (callers must not rely on the fact that _only_ the
1992 * first iovec will be faulted with the current implementation).
1993 */
1994int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes)
1995{
1996        char __user *buf = i->iov->iov_base + i->iov_offset;
1997        bytes = min(bytes, i->iov->iov_len - i->iov_offset);
1998        return fault_in_pages_readable(buf, bytes);
1999}
2000EXPORT_SYMBOL(iov_iter_fault_in_readable);
2001
2002/*
2003 * Return the count of just the current iov_iter segment.
2004 */
2005size_t iov_iter_single_seg_count(struct iov_iter *i)
2006{
2007        const struct iovec *iov = i->iov;
2008        if (i->nr_segs == 1)
2009                return i->count;
2010        else
2011                return min(i->count, iov->iov_len - i->iov_offset);
2012}
2013EXPORT_SYMBOL(iov_iter_single_seg_count);
2014
2015/*
2016 * Performs necessary checks before doing a write
2017 *
2018 * Can adjust writing position or amount of bytes to write.
2019 * Returns appropriate error code that caller should return or
2020 * zero in case that write should be allowed.
2021 */
2022inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk)
2023{
2024        struct inode *inode = file->f_mapping->host;
2025        unsigned long limit = rlimit(RLIMIT_FSIZE);
2026
2027        if (unlikely(*pos < 0))
2028                return -EINVAL;
2029
2030        if (!isblk) {
2031                /* FIXME: this is for backwards compatibility with 2.4 */
2032                if (file->f_flags & O_APPEND)
2033                        *pos = i_size_read(inode);
2034
2035                if (limit != RLIM_INFINITY) {
2036                        if (*pos >= limit) {
2037                                send_sig(SIGXFSZ, current, 0);
2038                                return -EFBIG;
2039                        }
2040                        if (*count > limit - (typeof(limit))*pos) {
2041                                *count = limit - (typeof(limit))*pos;
2042                        }
2043                }
2044        }
2045
2046        /*
2047         * LFS rule
2048         */
2049        if (unlikely(*pos + *count > MAX_NON_LFS &&
2050                                !(file->f_flags & O_LARGEFILE))) {
2051                if (*pos >= MAX_NON_LFS) {
2052                        return -EFBIG;
2053                }
2054                if (*count > MAX_NON_LFS - (unsigned long)*pos) {
2055                        *count = MAX_NON_LFS - (unsigned long)*pos;
2056                }
2057        }
2058
2059        /*
2060         * Are we about to exceed the fs block limit ?
2061         *
2062         * If we have written data it becomes a short write.  If we have
2063         * exceeded without writing data we send a signal and return EFBIG.
2064         * Linus frestrict idea will clean these up nicely..
2065         */
2066        if (likely(!isblk)) {
2067                if (unlikely(*pos >= inode->i_sb->s_maxbytes)) {
2068                        if (*count || *pos > inode->i_sb->s_maxbytes) {
2069                                return -EFBIG;
2070                        }
2071                        /* zero-length writes at ->s_maxbytes are OK */
2072                }
2073
2074                if (unlikely(*pos + *count > inode->i_sb->s_maxbytes))
2075                        *count = inode->i_sb->s_maxbytes - *pos;
2076        } else {
2077#ifdef CONFIG_BLOCK
2078                loff_t isize;
2079                if (bdev_read_only(I_BDEV(inode)))
2080                        return -EPERM;
2081                isize = i_size_read(inode);
2082                if (*pos >= isize) {
2083                        if (*count || *pos > isize)
2084                                return -ENOSPC;
2085                }
2086
2087                if (*pos + *count > isize)
2088                        *count = isize - *pos;
2089#else
2090                return -EPERM;
2091#endif
2092        }
2093        return 0;
2094}
2095EXPORT_SYMBOL(generic_write_checks);
2096
2097int pagecache_write_begin(struct file *file, struct address_space *mapping,
2098                                loff_t pos, unsigned len, unsigned flags,
2099                                struct page **pagep, void **fsdata)
2100{
2101        const struct address_space_operations *aops = mapping->a_ops;
2102
2103        return aops->write_begin(file, mapping, pos, len, flags,
2104                                                        pagep, fsdata);
2105}
2106EXPORT_SYMBOL(pagecache_write_begin);
2107
2108int pagecache_write_end(struct file *file, struct address_space *mapping,
2109                                loff_t pos, unsigned len, unsigned copied,
2110                                struct page *page, void *fsdata)
2111{
2112        const struct address_space_operations *aops = mapping->a_ops;
2113
2114        mark_page_accessed(page);
2115        return aops->write_end(file, mapping, pos, len, copied, page, fsdata);
2116}
2117EXPORT_SYMBOL(pagecache_write_end);
2118
2119ssize_t
2120generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
2121                unsigned long *nr_segs, loff_t pos, loff_t *ppos,
2122                size_t count, size_t ocount)
2123{
2124        struct file     *file = iocb->ki_filp;
2125        struct address_space *mapping = file->f_mapping;
2126        struct inode    *inode = mapping->host;
2127        ssize_t         written;
2128        size_t          write_len;
2129        pgoff_t         end;
2130
2131        if (count != ocount)
2132                *nr_segs = iov_shorten((struct iovec *)iov, *nr_segs, count);
2133
2134        write_len = iov_length(iov, *nr_segs);
2135        end = (pos + write_len - 1) >> PAGE_CACHE_SHIFT;
2136
2137        written = filemap_write_and_wait_range(mapping, pos, pos + write_len - 1);
2138        if (written)
2139                goto out;
2140
2141        /*
2142         * After a write we want buffered reads to be sure to go to disk to get
2143         * the new data.  We invalidate clean cached page from the region we're
2144         * about to write.  We do this *before* the write so that we can return
2145         * without clobbering -EIOCBQUEUED from ->direct_IO().
2146         */
2147        if (mapping->nrpages) {
2148                written = invalidate_inode_pages2_range(mapping,
2149                                        pos >> PAGE_CACHE_SHIFT, end);
2150                /*
2151                 * If a page can not be invalidated, return 0 to fall back
2152                 * to buffered write.
2153                 */
2154                if (written) {
2155                        if (written == -EBUSY)
2156                                return 0;
2157                        goto out;
2158                }
2159        }
2160
2161        written = mapping->a_ops->direct_IO(WRITE, iocb, iov, pos, *nr_segs);
2162
2163        /*
2164         * Finally, try again to invalidate clean pages which might have been
2165         * cached by non-direct readahead, or faulted in by get_user_pages()
2166         * if the source of the write was an mmap'ed region of the file
2167         * we're writing.  Either one is a pretty crazy thing to do,
2168         * so we don't support it 100%.  If this invalidation
2169         * fails, tough, the write still worked...
2170         */
2171        if (mapping->nrpages) {
2172                invalidate_inode_pages2_range(mapping,
2173                                              pos >> PAGE_CACHE_SHIFT, end);
2174        }
2175
2176        if (written > 0) {
2177                loff_t end = pos + written;
2178                if (end > i_size_read(inode) && !S_ISBLK(inode->i_mode)) {
2179                        i_size_write(inode,  end);
2180                        mark_inode_dirty(inode);
2181                }
2182                *ppos = end;
2183        }
2184out:
2185        return written;
2186}
2187EXPORT_SYMBOL(generic_file_direct_write);
2188
2189/*
2190 * Find or create a page at the given pagecache position. Return the locked
2191 * page. This function is specifically for buffered writes.
2192 */
2193struct page *grab_cache_page_write_begin(struct address_space *mapping,
2194                                        pgoff_t index, unsigned flags)
2195{
2196        int status;
2197        struct page *page;
2198        gfp_t gfp_notmask = 0;
2199        if (flags & AOP_FLAG_NOFS)
2200                gfp_notmask = __GFP_FS;
2201repeat:
2202        page = find_lock_page(mapping, index);
2203        if (likely(page))
2204                return page;
2205
2206        page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask);
2207        if (!page)
2208                return NULL;
2209        status = add_to_page_cache_lru(page, mapping, index,
2210                                                GFP_KERNEL & ~gfp_notmask);
2211        if (unlikely(status)) {
2212                page_cache_release(page);
2213                if (status == -EEXIST)
2214                        goto repeat;
2215                return NULL;
2216        }
2217        return page;
2218}
2219EXPORT_SYMBOL(grab_cache_page_write_begin);
2220
2221static ssize_t generic_perform_write(struct file *file,
2222                                struct iov_iter *i, loff_t pos)
2223{
2224        struct address_space *mapping = file->f_mapping;
2225        const struct address_space_operations *a_ops = mapping->a_ops;
2226        long status = 0;
2227        ssize_t written = 0;
2228        unsigned int flags = 0;
2229
2230        /*
2231         * Copies from kernel address space cannot fail (NFSD is a big user).
2232         */
2233        if (segment_eq(get_fs(), KERNEL_DS))
2234                flags |= AOP_FLAG_UNINTERRUPTIBLE;
2235
2236        do {
2237                struct page *page;
2238                unsigned long offset;   /* Offset into pagecache page */
2239                unsigned long bytes;    /* Bytes to write to page */
2240                size_t copied;          /* Bytes copied from user */
2241                void *fsdata;
2242
2243                offset = (pos & (PAGE_CACHE_SIZE - 1));
2244                bytes = min_t(unsigned long, PAGE_CACHE_SIZE - offset,
2245                                                iov_iter_count(i));
2246
2247again:
2248
2249                /*
2250                 * Bring in the user page that we will copy from _first_.
2251                 * Otherwise there's a nasty deadlock on copying from the
2252                 * same page as we're writing to, without it being marked
2253                 * up-to-date.
2254                 *
2255                 * Not only is this an optimisation, but it is also required
2256                 * to check that the address is actually valid, when atomic
2257                 * usercopies are used, below.
2258                 */
2259                if (unlikely(iov_iter_fault_in_readable(i, bytes))) {
2260                        status = -EFAULT;
2261                        break;
2262                }
2263
2264                status = a_ops->write_begin(file, mapping, pos, bytes, flags,
2265                                                &page, &fsdata);
2266                if (unlikely(status))
2267                        break;
2268
2269                if (mapping_writably_mapped(mapping))
2270                        flush_dcache_page(page);
2271
2272                pagefault_disable();
2273                copied = iov_iter_copy_from_user_atomic(page, i, offset, bytes);
2274                pagefault_enable();
2275                flush_dcache_page(page);
2276
2277                mark_page_accessed(page);
2278                status = a_ops->write_end(file, mapping, pos, bytes, copied,
2279                                                page, fsdata);
2280                if (unlikely(status < 0))
2281                        break;
2282                copied = status;
2283
2284                cond_resched();
2285
2286                iov_iter_advance(i, copied);
2287                if (unlikely(copied == 0)) {
2288                        /*
2289                         * If we were unable to copy any data at all, we must
2290                         * fall back to a single segment length write.
2291                         *
2292                         * If we didn't fallback here, we could livelock
2293                         * because not all segments in the iov can be copied at
2294                         * once without a pagefault.
2295                         */
2296                        bytes = min_t(unsigned long, PAGE_CACHE_SIZE - offset,
2297                                                iov_iter_single_seg_count(i));
2298                        goto again;
2299                }
2300                pos += copied;
2301                written += copied;
2302
2303                balance_dirty_pages_ratelimited(mapping);
2304
2305        } while (iov_iter_count(i));
2306
2307        return written ? written : status;
2308}
2309
2310ssize_t
2311generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov,
2312                unsigned long nr_segs, loff_t pos, loff_t *ppos,
2313                size_t count, ssize_t written)
2314{
2315        struct file *file = iocb->ki_filp;
2316        ssize_t status;
2317        struct iov_iter i;
2318
2319        iov_iter_init(&i, iov, nr_segs, count, written);
2320        status = generic_perform_write(file, &i, pos);
2321
2322        if (likely(status >= 0)) {
2323                written += status;
2324                *ppos = pos + status;
2325        }
2326        
2327        return written ? written : status;
2328}
2329EXPORT_SYMBOL(generic_file_buffered_write);
2330
2331/**
2332 * __generic_file_aio_write - write data to a file
2333 * @iocb:       IO state structure (file, offset, etc.)
2334 * @iov:        vector with data to write
2335 * @nr_segs:    number of segments in the vector
2336 * @ppos:       position where to write
2337 *
2338 * This function does all the work needed for actually writing data to a
2339 * file. It does all basic checks, removes SUID from the file, updates
2340 * modification times and calls proper subroutines depending on whether we
2341 * do direct IO or a standard buffered write.
2342 *
2343 * It expects i_mutex to be grabbed unless we work on a block device or similar
2344 * object which does not need locking at all.
2345 *
2346 * This function does *not* take care of syncing data in case of O_SYNC write.
2347 * A caller has to handle it. This is mainly due to the fact that we want to
2348 * avoid syncing under i_mutex.
2349 */
2350ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
2351                                 unsigned long nr_segs, loff_t *ppos)
2352{
2353        struct file *file = iocb->ki_filp;
2354        struct address_space * mapping = file->f_mapping;
2355        size_t ocount;          /* original count */
2356        size_t count;           /* after file limit checks */
2357        struct inode    *inode = mapping->host;
2358        loff_t          pos;
2359        ssize_t         written;
2360        ssize_t         err;
2361
2362        ocount = 0;
2363        err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ);
2364        if (err)
2365                return err;
2366
2367        count = ocount;
2368        pos = *ppos;
2369
2370        vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE);
2371
2372        /* We can write back this queue in page reclaim */
2373        current->backing_dev_info = mapping->backing_dev_info;
2374        written = 0;
2375
2376        err = generic_write_checks(file, &pos, &count, S_ISBLK(inode->i_mode));
2377        if (err)
2378                goto out;
2379
2380        if (count == 0)
2381                goto out;
2382
2383        err = file_remove_suid(file);
2384        if (err)
2385                goto out;
2386
2387        file_update_time(file);
2388
2389        /* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
2390        if (unlikely(file->f_flags & O_DIRECT)) {
2391                loff_t endbyte;
2392                ssize_t written_buffered;
2393
2394                written = generic_file_direct_write(iocb, iov, &nr_segs, pos,
2395                                                        ppos, count, ocount);
2396                if (written < 0 || written == count)
2397                        goto out;
2398                /*
2399                 * direct-io write to a hole: fall through to buffered I/O
2400                 * for completing the rest of the request.
2401                 */
2402                pos += written;
2403                count -= written;
2404                written_buffered = generic_file_buffered_write(iocb, iov,
2405                                                nr_segs, pos, ppos, count,
2406                                                written);
2407                /*
2408                 * If generic_file_buffered_write() retuned a synchronous error
2409                 * then we want to return the number of bytes which were
2410                 * direct-written, or the error code if that was zero.  Note
2411                 * that this differs from normal direct-io semantics, which
2412                 * will return -EFOO even if some bytes were written.
2413                 */
2414                if (written_buffered < 0) {
2415                        err = written_buffered;
2416                        goto out;
2417                }
2418
2419                /*
2420                 * We need to ensure that the page cache pages are written to
2421                 * disk and invalidated to preserve the expected O_DIRECT
2422                 * semantics.
2423                 */
2424                endbyte = pos + written_buffered - written - 1;
2425                err = filemap_write_and_wait_range(file->f_mapping, pos, endbyte);
2426                if (err == 0) {
2427                        written = written_buffered;
2428                        invalidate_mapping_pages(mapping,
2429                                                 pos >> PAGE_CACHE_SHIFT,
2430                                                 endbyte >> PAGE_CACHE_SHIFT);
2431                } else {
2432                        /*
2433                         * We don't know how much we wrote, so just return
2434                         * the number of bytes which were direct-written
2435                         */
2436                }
2437        } else {
2438                written = generic_file_buffered_write(iocb, iov, nr_segs,
2439                                pos, ppos, count, written);
2440        }
2441out:
2442        current->backing_dev_info = NULL;
2443        return written ? written : err;
2444}
2445EXPORT_SYMBOL(__generic_file_aio_write);
2446
2447/**
2448 * generic_file_aio_write - write data to a file
2449 * @iocb:       IO state structure
2450 * @iov:        vector with data to write
2451 * @nr_segs:    number of segments in the vector
2452 * @pos:        position in file where to write
2453 *
2454 * This is a wrapper around __generic_file_aio_write() to be used by most
2455 * filesystems. It takes care of syncing the file in case of O_SYNC file
2456 * and acquires i_mutex as needed.
2457 */
2458ssize_t generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
2459                unsigned long nr_segs, loff_t pos)
2460{
2461        struct file *file = iocb->ki_filp;
2462        struct inode *inode = file->f_mapping->host;
2463        ssize_t ret;
2464
2465        BUG_ON(iocb->ki_pos != pos);
2466
2467        mutex_lock(&inode->i_mutex);
2468        ret = __generic_file_aio_write(iocb, iov, nr_segs, &iocb->ki_pos);
2469        mutex_unlock(&inode->i_mutex);
2470
2471        if (ret > 0 || ret == -EIOCBQUEUED) {
2472                ssize_t err;
2473
2474                err = generic_write_sync(file, pos, ret);
2475                if (err < 0 && ret > 0)
2476                        ret = err;
2477        }
2478        return ret;
2479}
2480EXPORT_SYMBOL(generic_file_aio_write);
2481
2482/**
2483 * try_to_release_page() - release old fs-specific metadata on a page
2484 *
2485 * @page: the page which the kernel is trying to free
2486 * @gfp_mask: memory allocation flags (and I/O mode)
2487 *
2488 * The address_space is to try to release any data against the page
2489 * (presumably at page->private).  If the release was successful, return `1'.
2490 * Otherwise return zero.
2491 *
2492 * This may also be called if PG_fscache is set on a page, indicating that the
2493 * page is known to the local caching routines.
2494 *
2495 * The @gfp_mask argument specifies whether I/O may be performed to release
2496 * this page (__GFP_IO), and whether the call may block (__GFP_WAIT & __GFP_FS).
2497 *
2498 */
2499int try_to_release_page(struct page *page, gfp_t gfp_mask)
2500{
2501        struct address_space * const mapping = page->mapping;
2502
2503        BUG_ON(!PageLocked(page));
2504        if (PageWriteback(page))
2505                return 0;
2506
2507        if (mapping && mapping->a_ops->releasepage)
2508                return mapping->a_ops->releasepage(page, gfp_mask);
2509        return try_to_free_buffers(page);
2510}
2511
2512EXPORT_SYMBOL(try_to_release_page);
2513
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.