gfs2: gfs2_walk_metadata fix
authorAndreas Gruenbacher <agruenba@redhat.com>
Mon, 5 Aug 2019 11:22:03 +0000 (12:22 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Aug 2019 08:12:41 +0000 (10:12 +0200)
commit21344f0575f0ad63a7258c8addea9abbbc1a4dd6
tree999ab411ccd2c287f761bfed30cd6f181490a3e4
parentb674f7914a64efe9709c912911c72a700683424e
gfs2: gfs2_walk_metadata fix

commit a27a0c9b6a208722016c8ec5ad31ec96082b91ec upstream.

It turns out that the current version of gfs2_metadata_walker suffers
from multiple problems that can cause gfs2_hole_size to report an
incorrect size.  This will confuse fiemap as well as lseek with the
SEEK_DATA flag.

Fix that by changing gfs2_hole_walker to compute the metapath to the
first data block after the hole (if any), and compute the hole size
based on that.

Fixes xfstest generic/490.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Bob Peterson <rpeterso@redhat.com>
Cc: stable@vger.kernel.org # v4.18+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/gfs2/bmap.c