linux/fs/xfs
Dave Chinner d302cf1d31 xfs: don't shutdown log recovery on validation errors
Unfortunately, we cannot guarantee that items logged multiple times
and replayed by log recovery do not take objects back in time. When
they are taken back in time, the go into an intermediate state which
is corrupt, and hence verification that occurs on this intermediate
state causes log recovery to abort with a corruption shutdown.

Instead of causing a shutdown and unmountable filesystem, don't
verify post-recovery items before they are written to disk. This is
less than optimal, but there is no way to detect this issue for
non-CRC filesystems If log recovery successfully completes, this
will be undone and the object will be consistent by subsequent
transactions that are replayed, so in most cases we don't need to
take drastic action.

For CRC enabled filesystems, leave the verifiers in place - we need
to call them to recalculate the CRCs on the objects anyway. This
recovery problem can be solved for such filesystems - we have a LSN
stamped in all metadata at writeback time that we can to determine
whether the item should be replayed or not. This is a separate piece
of work, so is not addressed by this patch.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>

(cherry picked from commit 9222a9cf86)
2013-06-14 15:59:45 -05:00
..
Kconfig
kmem.c
kmem.h
Makefile
mrlock.h
time.h
uuid.c
uuid.h
xfs_acl.c xfs: increase number of ACL entries for V5 superblocks 2013-06-06 10:52:15 -05:00
xfs_acl.h xfs: increase number of ACL entries for V5 superblocks 2013-06-06 10:52:15 -05:00
xfs_ag.h
xfs_alloc_btree.c
xfs_alloc_btree.h
xfs_alloc.c
xfs_alloc.h
xfs_aops.c xfs: fix sub-page blocksize data integrity writes 2013-05-24 16:26:51 -05:00
xfs_aops.h
xfs_attr_leaf.c xfs: fix remote attribute invalidation for a leaf 2013-06-06 10:50:52 -05:00
xfs_attr_leaf.h xfs: fix implicit padding in directory and attr CRC formats 2013-06-14 15:59:16 -05:00
xfs_attr_remote.c xfs: rework remote attr CRCs 2013-05-30 17:26:31 -05:00
xfs_attr_remote.h xfs: rework remote attr CRCs 2013-05-30 17:26:31 -05:00
xfs_attr_sf.h
xfs_attr.c
xfs_attr.h
xfs_bit.c
xfs_bit.h
xfs_bmap_btree.c
xfs_bmap_btree.h
xfs_bmap.c
xfs_bmap.h
xfs_btree.c xfs: ensure btree root split sets blkno correctly 2013-06-14 15:59:31 -05:00
xfs_btree.h
xfs_buf_item.c xfs: fix split buffer vector log recovery support 2013-05-30 17:18:01 -05:00
xfs_buf_item.h
xfs_buf.c xfs: rework remote attr CRCs 2013-05-30 17:26:31 -05:00
xfs_buf.h
xfs_cksum.h
xfs_da_btree.c xfs: xfs_da3_node_read_verify() doesn't handle XFS_ATTR3_LEAF_MAGIC 2013-05-24 16:29:37 -05:00
xfs_da_btree.h
xfs_dfrag.c xfs: disable swap extents ioctl on CRC enabled filesystems 2013-05-30 17:20:08 -05:00
xfs_dfrag.h
xfs_dinode.h
xfs_dir2_block.c
xfs_dir2_data.c
xfs_dir2_format.h xfs: fix implicit padding in directory and attr CRC formats 2013-06-14 15:59:16 -05:00
xfs_dir2_leaf.c xfs: fix missing KM_NOFS tags to keep lockdep happy 2013-05-24 16:29:15 -05:00
xfs_dir2_node.c xfs: fix dir3 freespace block corruption 2013-05-30 17:22:54 -05:00
xfs_dir2_priv.h
xfs_dir2_sf.c
xfs_dir2.c
xfs_dir2.h
xfs_discard.c
xfs_discard.h
xfs_dquot_item.c
xfs_dquot_item.h
xfs_dquot.c xfs: rework dquot CRCs 2013-06-06 10:50:35 -05:00
xfs_dquot.h
xfs_error.c
xfs_error.h
xfs_export.c
xfs_export.h
xfs_extent_busy.c
xfs_extent_busy.h
xfs_extfree_item.c xfs: Don't reference the EFI after it is freed 2013-05-24 16:27:57 -05:00
xfs_extfree_item.h
xfs_file.c aio: don't include aio.h in sched.h 2013-05-07 20:16:25 -07:00
xfs_filestream.c
xfs_filestream.h
xfs_fs.h xfs: add fsgeom flag for v5 superblock support. 2013-05-30 17:19:45 -05:00
xfs_fsops.c xfs: add fsgeom flag for v5 superblock support. 2013-05-30 17:19:45 -05:00
xfs_fsops.h
xfs_globals.c
xfs_ialloc_btree.c
xfs_ialloc_btree.h
xfs_ialloc.c
xfs_ialloc.h
xfs_icache.c
xfs_icache.h
xfs_inode_item.c
xfs_inode_item.h
xfs_inode.c xfs: inode unlinked list needs to recalculate the inode CRC 2013-06-06 10:51:19 -05:00
xfs_inode.h
xfs_inum.h
xfs_ioctl32.c xfs: fallback to vmalloc for large buffers in xfs_compat_attrlist_by_handle 2013-05-07 19:00:10 -05:00
xfs_ioctl32.h
xfs_ioctl.c xfs: fallback to vmalloc for large buffers in xfs_attrlist_by_handle 2013-05-07 18:56:38 -05:00
xfs_ioctl.h
xfs_iomap.c
xfs_iomap.h
xfs_iops.c xfs: kill suid/sgid through the truncate path. 2013-05-30 17:17:35 -05:00
xfs_iops.h
xfs_itable.c
xfs_itable.h
xfs_linux.h
xfs_log_cil.c xfs: fix missing KM_NOFS tags to keep lockdep happy 2013-05-24 16:29:15 -05:00
xfs_log_priv.h
xfs_log_recover.c xfs: don't shutdown log recovery on validation errors 2013-06-14 15:59:45 -05:00
xfs_log_recover.h
xfs_log.c
xfs_log.h
xfs_message.c
xfs_message.h
xfs_mount.c xfs: don't emit v5 superblock warnings on write 2013-06-14 15:58:47 -05:00
xfs_mount.h
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qm_bhv.c
xfs_qm_syscalls.c xfs: avoid nesting transactions in xfs_qm_scall_setqlim() 2013-05-30 17:10:56 -05:00
xfs_qm.c xfs: rework dquot CRCs 2013-06-06 10:50:35 -05:00
xfs_qm.h
xfs_quota_priv.h
xfs_quota.h xfs: rework dquot CRCs 2013-06-06 10:50:35 -05:00
xfs_quotaops.c
xfs_rename.c
xfs_rtalloc.c
xfs_rtalloc.h
xfs_sb.h
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: disable noattr2/attr2 mount options for CRC enabled filesystems 2013-06-06 10:51:34 -05:00
xfs_super.h
xfs_symlink.c xfs: fix incorrect remote symlink block count 2013-05-30 17:19:07 -05:00
xfs_symlink.h
xfs_sysctl.c
xfs_sysctl.h
xfs_trace.c
xfs_trace.h
xfs_trans_ail.c
xfs_trans_buf.c
xfs_trans_dquot.c
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_priv.h
xfs_trans_space.h
xfs_trans.c
xfs_trans.h
xfs_types.h
xfs_utils.c
xfs_utils.h
xfs_vnode.h
xfs_vnodeops.c xfs: fix rounding in xfs_free_file_space 2013-05-24 16:27:41 -05:00
xfs_vnodeops.h
xfs_xattr.c
xfs.h