08 Dec, 2010

1 commit

  • When a nfs_page is freed, nfs_free_request is called which also calls
    nfs_clear_request to clean out the lock and open contexts and free the
    pagecache page.

    However, a couple of places in the nfs code call nfs_clear_request
    themselves. What happens here if the refcount on the request is still high?
    We'll be releasing contexts and freeing pointers while the request is
    possibly still in use.

    Remove those bare calls to nfs_clear_context. That should only be done when
    the request is being freed.

    Note that when doing this, we need to watch out for tests of req->wb_page.
    Previously, nfs_set_page_tag_locked() and nfs_clear_page_tag_locked()
    would check the value of req->wb_page to figure out if the page is mapped
    into the nfsi->nfs_page_tree. We now indicate the page is mapped using
    the new bit PG_MAPPED in req->wb_flags .

    Reported-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

31 Jul, 2010

1 commit


10 Jul, 2008

1 commit

  • Currently, if an unstable write completes, we cannot redirty the page in
    order to reflect a new change in the page data until after we've sent a
    COMMIT request.

    This patch allows a page rewrite to proceed without the unnecessary COMMIT
    step, putting it immediately back onto the dirty page list, undoing the
    VM unstable write accounting, and removing the NFS_PAGE_TAG_COMMIT tag from
    the NFS radix tree.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

30 Jan, 2008

1 commit


10 Oct, 2007

1 commit


11 Jul, 2007

4 commits


24 May, 2007

1 commit

  • When processes are allowed to attempt to lock a non-contiguous range of nfs
    write requests, it is possible for generic_writepages to 'wrap round' the
    address space, and call writepage() on a request that is already locked by
    the same process.

    We avoid the deadlock by checking if the page index is contiguous with the
    list of nfs write requests that is already held in our
    nfs_pageio_descriptor prior to attempting to lock a new request.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

01 May, 2007

6 commits


21 Apr, 2007

1 commit


15 Apr, 2007

1 commit

  • If the writebacks are cancelled via nfs_cancel_dirty_list, or due to the
    memory allocation failing in nfs_flush_one/nfs_flush_multi, then we must
    ensure that the PG_writeback flag is cleared.

    Also ensure that we actually own the PG_writeback flag whenever we
    schedule a new writeback by making nfs_set_page_writeback() return the
    value of test_set_page_writeback().
    The PG_writeback page flag ends up replacing the functionality of the
    PG_FLUSHING nfs_page flag, so we rip that out too.

    Signed-off-by: Trond Myklebust
    Cc: Peter Zijlstra
    Signed-off-by: Linus Torvalds

    Trond Myklebust
     

06 Dec, 2006

3 commits


09 Jun, 2006

2 commits


07 Jan, 2006

1 commit


23 Jun, 2005

2 commits


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds