forked from Minki/linux
xfs: fix endian conversion issue in discard code
When finding the longest extent in an AG, we read the value directly out of the AGF buffer without endian conversion. This will give an incorrect length, resulting in FITRIM operations potentially not trimming everything that it should. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
parent
40d344ec5e
commit
b1c770c273
@ -68,7 +68,7 @@ xfs_trim_extents(
|
||||
* Look up the longest btree in the AGF and start with it.
|
||||
*/
|
||||
error = xfs_alloc_lookup_le(cur, 0,
|
||||
XFS_BUF_TO_AGF(agbp)->agf_longest, &i);
|
||||
be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
|
||||
if (error)
|
||||
goto out_del_cursor;
|
||||
|
||||
@ -84,7 +84,7 @@ xfs_trim_extents(
|
||||
if (error)
|
||||
goto out_del_cursor;
|
||||
XFS_WANT_CORRUPTED_GOTO(i == 1, out_del_cursor);
|
||||
ASSERT(flen <= XFS_BUF_TO_AGF(agbp)->agf_longest);
|
||||
ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));
|
||||
|
||||
/*
|
||||
* Too small? Give up.
|
||||
|
Loading…
Reference in New Issue
Block a user