xfs
[Top] [All Lists]

Re: [PATCH 5/3] xfs: limit specualtive delalloc to maxioffset

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 5/3] xfs: limit specualtive delalloc to maxioffset
From: Ben Myers <bpm@xxxxxxx>
Date: Tue, 8 May 2012 13:02:56 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20120429124319.GT9541@dastard>
References: <1335519922-14371-1-git-send-email-david@xxxxxxxxxxxxx> <20120429124319.GT9541@dastard>
User-agent: Mutt/1.5.20 (2009-06-14)
On Sun, Apr 29, 2012 at 10:43:19PM +1000, Dave Chinner wrote:
> 
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> Speculative delayed allocation beyond EOF near the maximum supported
> file offset can result in creating delalloc extents beyond
> mp->m_maxioffset (8EB). These can never be trimmed during
> xfs_free_eof_blocks() because they are beyond mp->m_maxioffset, and
> that results in assert failures in xfs_fs_destroy_inode() due to
> delalloc blocks still being present. xfstests 071 exposes this
> problem.
> 
> Limit speculative delalloc to mp->m_maxioffset to avoid this
> problem.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  fs/xfs/xfs_iomap.c |    9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
> index 303c03a..4a08ea3 100644
> --- a/fs/xfs/xfs_iomap.c
> +++ b/fs/xfs/xfs_iomap.c
> @@ -412,6 +412,15 @@ retry:
>                       return error;
>       }
>  
> +     /*
> +      * Make sure preallocation does not create extents beyond the range we
> +      * actually support in this filesystem.
> +      */
> +     if (last_fsb > XFS_B_TO_FSB(mp, mp->m_maxioffset))
> +             last_fsb = XFS_B_TO_FSB(mp, mp->m_maxioffset);
> +
> +     ASSERT(last_fsb > offset_fsb);
> +

Yeah, looks good.  xfs_iomap_prealloc_size isn't the only one who can push us
up above m_maxioffset, so this is the right place for the check.

Reviewed-by: Ben Myers <bpm@xxxxxxx>

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [PATCH 5/3] xfs: limit specualtive delalloc to maxioffset, Ben Myers <=