Skip to content
Snippets Groups Projects
Commit 9531e2de authored by Dave Chinner's avatar Dave Chinner Committed by Ben Myers
Browse files

xfs: remote attribute allocation may be contiguous


When CRCs are enabled, there may be multiple allocations made if the
headers cause a length overflow. This, however, does not mean that
the number of headers required increases, as the second and
subsequent extents may be contiguous with the previous extent. Hence
when we map the extents to write the attribute data, we may end up
with less extents than allocations made. Hence the assertion that we
consume the number of headers we calculated in the allocation loop
is incorrect and needs to be removed.

Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarBen Myers <bpm@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>

(cherry picked from commit 90253cf1)
parent e400d27d
No related branches found
No related tags found
No related merge requests found
...@@ -359,6 +359,11 @@ xfs_attr_rmtval_set( ...@@ -359,6 +359,11 @@ xfs_attr_rmtval_set(
* into requiring more blocks. e.g. for 512 byte blocks, we'll * into requiring more blocks. e.g. for 512 byte blocks, we'll
* spill for another block every 9 headers we require in this * spill for another block every 9 headers we require in this
* loop. * loop.
*
* Note that this can result in contiguous allocation of blocks,
* so we don't use all the space we allocate for headers as we
* have one less header for each contiguous allocation that
* occurs in the map/write loop below.
*/ */
if (crcs && blkcnt == 0) { if (crcs && blkcnt == 0) {
int total_len; int total_len;
...@@ -439,7 +444,6 @@ xfs_attr_rmtval_set( ...@@ -439,7 +444,6 @@ xfs_attr_rmtval_set(
lblkno += map.br_blockcount; lblkno += map.br_blockcount;
} }
ASSERT(valuelen == 0); ASSERT(valuelen == 0);
ASSERT(hdrcnt == 0);
return 0; return 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment