xfs: fully initialise temp leaf in xfs_attr3_leaf_compact
authorDave Chinner <dchinner@redhat.com>
Tue, 21 May 2013 08:02:06 +0000 (18:02 +1000)
committerBen Myers <bpm@sgi.com>
Thu, 30 May 2013 22:26:24 +0000 (17:26 -0500)
commit634fd5322a3e6ae632dcf5f20eebc0583ba50838
tree9add9c9df36af29972ef5c0d50543a76d03f6a62
parent9e80c76205b46b338cb56c336148f54b2326342f
xfs: fully initialise temp leaf in xfs_attr3_leaf_compact

xfs_attr3_leaf_compact() uses a temporary buffer for compacting the
the entries in a leaf. It copies the the original buffer into the
temporary buffer, then zeros the original buffer completely. It then
copies the entries back into the original buffer.  However, the
original buffer has not been correctly initialised, and so the
movement of the entries goes horribly wrong.

Make sure the zeroed destination buffer is fully initialised, and
once we've set up the destination incore header appropriately, write
is back to the buffer before starting to move entries around.

While debugging this, the _d/_s prefixes weren't sufficient to
remind me what buffer was what, so rename then all _src/_dst.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
(cherry picked from commit d4c712bcf26a25c2b67c90e44e0b74c7993b5334)
fs/xfs/xfs_attr_leaf.c