From: Eric Sandeen Date: Wed, 22 Jan 2020 16:29:43 +0000 (-0500) Subject: xfs_repair: stop using ->data_entry_p() X-Git-Tag: v5.5.0-rc0~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e655785bc567dc3091c237b8eaa23598fe5fb573;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: stop using ->data_entry_p() The ->data_entry_p() op went away in v5.5 kernelspace, so rework xfs_repair to use ->data_entry_offset instead, in preparation for the v5.5 libxfs backport. This could later be cleaned up to use offsets as was done in kernel commit 8073af5153c for example. Signed-off-by: Eric Sandeen Reviewed-by: Darrick J. Wong Signed-off-by: Eric Sandeen --- diff --git a/repair/dir2.c b/repair/dir2.c index b8a454610..f5f2d7bf7 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -580,7 +580,7 @@ process_dir2_data( d = bp->b_addr; bf = M_DIROPS(mp)->data_bestfree_p(d); - ptr = (char *)M_DIROPS(mp)->data_entry_p(d); + ptr = (char *)d + M_DIROPS(mp)->data_entry_offset; badbest = lastfree = freeseen = 0; if (be16_to_cpu(bf[0].length) == 0) { badbest |= be16_to_cpu(bf[0].offset) != 0; @@ -646,7 +646,7 @@ process_dir2_data( do_warn(_("\twould junk block\n")); return 1; } - ptr = (char *)M_DIROPS(mp)->data_entry_p(d); + ptr = (char *)d + M_DIROPS(mp)->data_entry_offset; /* * Process the entries now. */ diff --git a/repair/phase6.c b/repair/phase6.c index d4d26254a..e7d227ae3 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -1527,7 +1527,7 @@ longform_dir2_entry_check_data( bp = *bpp; d = bp->b_addr; - ptr = (char *)M_DIROPS(mp)->data_entry_p(d); + ptr = (char *)d + M_DIROPS(mp)->data_entry_offset; nbad = 0; needscan = needlog = 0; junkit = 0; @@ -1587,7 +1587,7 @@ longform_dir2_entry_check_data( break; /* check for block with no data entries */ - if ((ptr == (char *)M_DIROPS(mp)->data_entry_p(d)) && + if ((ptr == (char *)d + M_DIROPS(mp)->data_entry_offset) && (ptr + be16_to_cpu(dup->length) >= endptr)) { junkit = 1; *num_illegal += 1; @@ -1656,7 +1656,7 @@ longform_dir2_entry_check_data( do_warn(_("would fix magic # to %#x\n"), wantmagic); } lastfree = 0; - ptr = (char *)M_DIROPS(mp)->data_entry_p(d); + ptr = (char *)d + M_DIROPS(mp)->data_entry_offset; /* * look at each entry. reference inode pointed to by each * entry in the incore inode tree. @@ -1831,7 +1831,7 @@ longform_dir2_entry_check_data( (dep->name[0] == '.' && dep->namelen == 1)); add_inode_ref(current_irec, current_ino_offset); if (da_bno != 0 || - dep != M_DIROPS(mp)->data_entry_p(d)) { + dep != (void *)d + M_DIROPS(mp)->data_entry_offset) { /* "." should be the first entry */ nbad++; if (entry_junked(