On Tue, Apr 17, 2018 at 04:39:16PM +1000, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > When we have corrupted free inode btrees, we can attempt to > allocate inodes that we know are already allocated. Catch allocation > of these inodes and report corruption as early as possible to > prevent corruption propagation or deadlocks. > > Signed-Off-By: Dave Chinner <dchinner@xxxxxxxxxx> > --- > fs/xfs/xfs_inode.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > index 7b764f746ff2..12e6c1aec386 100644 > --- a/fs/xfs/xfs_inode.c > +++ b/fs/xfs/xfs_inode.c > @@ -790,6 +790,19 @@ xfs_ialloc( > } > ASSERT(*ialloc_context == NULL); > > + /* > + * Protect against obviously corrupt allocation btree records. Later > + * xfs_iget checks will catch re-allocation of other active in-memory > + * and on-disk inodes. If we don't catch reallocating the parent inode > + * here we will deadlock in xfs_iget() so we have to do these checks > + * first. > + */ > + if ((pip && ino == pip->i_ino) || > + !xfs_verify_dir_ino(mp, ino)) { Seems like the whole conditional would fit onto a single line. Otherwise looks fine: Reviewed-by: Christoph Hellwig <hch@xxxxxx> -- 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