lkml.org 
[lkml]   [2007]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 33/33] nfs: do not warn on radix tree node allocation failures
    GFP_ATOMIC failures are rather common, no not warn about them.

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    fs/nfs/inode.c | 2 +-
    fs/nfs/write.c | 10 ++++++++++
    2 files changed, 11 insertions(+), 1 deletion(-)

    Index: linux-2.6/fs/nfs/inode.c
    ===================================================================
    --- linux-2.6.orig/fs/nfs/inode.c
    +++ linux-2.6/fs/nfs/inode.c
    @@ -1172,7 +1172,7 @@ static void init_once(struct kmem_cache
    INIT_LIST_HEAD(&nfsi->open_files);
    INIT_LIST_HEAD(&nfsi->access_cache_entry_lru);
    INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
    - INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC);
    + INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC|__GFP_NOWARN);
    nfsi->ncommit = 0;
    nfsi->npages = 0;
    nfs4_init_once(nfsi);
    Index: linux-2.6/fs/nfs/write.c
    ===================================================================
    --- linux-2.6.orig/fs/nfs/write.c
    +++ linux-2.6/fs/nfs/write.c
    @@ -652,6 +652,7 @@ static struct nfs_page * nfs_update_requ
    struct inode *inode = mapping->host;
    struct nfs_page *req, *new = NULL;
    pgoff_t rqend, end;
    + int error;

    end = offset + bytes;

    @@ -659,6 +660,10 @@ static struct nfs_page * nfs_update_requ
    /* Loop over all inode entries and see if we find
    * A request for the page we wish to update
    */
    + error = radix_tree_preload(GFP_NOIO);
    + if (error)
    + return ERR_PTR(error);
    +
    spin_lock(&inode->i_lock);
    req = nfs_page_find_request_locked(NFS_I(inode), page);
    if (req) {
    @@ -666,6 +671,7 @@ static struct nfs_page * nfs_update_requ
    int error;

    spin_unlock(&inode->i_lock);
    + radix_tree_preload_end();
    error = nfs_wait_on_request(req);
    nfs_release_request(req);
    if (error < 0) {
    @@ -676,6 +682,7 @@ static struct nfs_page * nfs_update_requ
    continue;
    }
    spin_unlock(&inode->i_lock);
    + radix_tree_preload_end();
    if (new)
    nfs_release_request(new);
    break;
    @@ -687,13 +694,16 @@ static struct nfs_page * nfs_update_requ
    error = nfs_inode_add_request(inode, new);
    if (error) {
    spin_unlock(&inode->i_lock);
    + radix_tree_preload_end();
    nfs_unlock_request(new);
    return ERR_PTR(error);
    }
    spin_unlock(&inode->i_lock);
    + radix_tree_preload_end();
    return new;
    }
    spin_unlock(&inode->i_lock);
    + radix_tree_preload_end();

    new = nfs_create_request(ctx, inode, page, offset, bytes);
    if (IS_ERR(new))
    --

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-30 17:31    [W:0.030 / U:30.844 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site