V4 superblocks do not contain the log_incompat feature bit, which means
that we cannot protect xattr log items against kernels that are too old
to know how to recover them.  Turn off the log items for such
filesystems and adjust the "delayed" name to reflect what it's really
controlling.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
        int                     error, local;
        int                     rmt_blks = 0;
        unsigned int            total;
-       int                     delayed = xfs_has_larp(mp);
+       bool                    use_logging = xfs_has_larp(mp);
 
        if (xfs_is_shutdown(dp->i_mount))
                return -EIO;
                rmt_blks = xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
        }
 
-       if (delayed) {
+       if (use_logging) {
                error = xfs_attr_use_log_assist(mp);
                if (error)
                        return error;
 out_unlock:
        xfs_iunlock(dp, XFS_ILOCK_EXCL);
 drop_incompat:
-       if (delayed)
+       if (use_logging)
                xlog_drop_incompat_feat(mp->m_log);
        return error;
 
 
 static inline bool xfs_has_larp(struct xfs_mount *mp)
 {
 #ifdef DEBUG
-       return xfs_globals.larp;
+       /* Logged xattrs require a V5 super for log_incompat */
+       return xfs_has_crc(mp) && xfs_globals.larp;
 #else
        return false;
 #endif