Re: [patch 4/6] gfs2: remove dependency on __GFP_NOFAIL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Looks good to me, I've added it to the -nmw tree. There are a few more
GFP_NOFAIL instances in the code that we can probably remove in the
future, but these two are pretty easy. Thanks for the patch,

Steve.

On Tue, 2010-07-20 at 19:45 -0700, David Rientjes wrote:
> The k[mc]allocs in dr_split_leaf() and dir_double_exhash() are failable,
> so remove __GFP_NOFAIL from their masks.
> 
> Cc: Bob Peterson <rpeterso@xxxxxxxxxx>
> Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx>
> ---
>  fs/gfs2/dir.c |   11 +++++++++--
>  1 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c
> --- a/fs/gfs2/dir.c
> +++ b/fs/gfs2/dir.c
> @@ -955,7 +955,12 @@ static int dir_split_leaf(struct inode *inode, const struct qstr *name)
>  	/* Change the pointers.
>  	   Don't bother distinguishing stuffed from non-stuffed.
>  	   This code is complicated enough already. */
> -	lp = kmalloc(half_len * sizeof(__be64), GFP_NOFS | __GFP_NOFAIL);
> +	lp = kmalloc(half_len * sizeof(__be64), GFP_NOFS);
> +	if (!lp) {
> +		error = -ENOMEM;
> +		goto fail_brelse;
> +	}
> +
>  	/*  Change the pointers  */
>  	for (x = 0; x < half_len; x++)
>  		lp[x] = cpu_to_be64(bn);
> @@ -1063,7 +1068,9 @@ static int dir_double_exhash(struct gfs2_inode *dip)
>  
>  	/*  Allocate both the "from" and "to" buffers in one big chunk  */
>  
> -	buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS | __GFP_NOFAIL);
> +	buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS);
> +	if (!buf)
> +		return -ENOMEM;
>  
>  	for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) {
>  		error = gfs2_dir_read_data(dip, (char *)buf,



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]