On Wed, Mar 01, 2017 at 10:00:03AM -0500, Brian Foster wrote: > Mathias Troiden reproduced a filesystem corruption that resulted in > a zero-sized local format symlink inode. This is invalid state and > results in an inode that cannot be accessed or modified. > > The kernel detects this problem on inode access, fails and warns the > user to umount and run xfs_repair. Unfortunately, xfs_repair doesn't > even detect the problem. Thus the user has no path to recovery. > > Update xfs_repair to check for invalid zero-sized symlinks and flag > them as corrupted. This results in tossing the inode, but returns > the fs to a valid state. > > Reported-by: Mathias Troiden <mathias.troiden@xxxxxxxxx> > Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Looks good, Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > repair/dinode.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/repair/dinode.c b/repair/dinode.c > index 8d01409..d664f87 100644 > --- a/repair/dinode.c > +++ b/repair/dinode.c > @@ -1385,6 +1385,11 @@ process_symlink( > return(1); > } > > + if (be64_to_cpu(dino->di_size) == 0) { > + do_warn(_("zero size symlink in inode %" PRIu64 "\n"), lino); > + return 1; > + } > + > /* > * have to check symlink component by component. > * get symlink contents into data area > -- > 2.7.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html