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
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
kmem.c
xfs: switch to proper __bitwise type for KM_... flags
2012-05-29 23:28:32 -04:00
kmem.h
xfs: switch to proper __bitwise type for KM_... flags
2012-05-29 23:28:32 -04:00
Makefile
xfs: split remote attribute code out
2013-04-27 12:49:32 -05:00
mrlock.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
time.h
uuid.c
uuid.h
xfs: add CRC infrastructure
2012-11-19 20:11:24 -06:00
xfs.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
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: add CRC checks to the AGI
2013-04-21 14:57:43 -05:00
xfs_alloc.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_alloc.h
xfs: convert buffer verifiers to an ops structure.
2012-11-15 21:35:12 -06:00
xfs_alloc_btree.c
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_alloc_btree.h
xfs: add support for large btree blocks
2013-04-21 14:53:46 -05:00
xfs_aops.c
xfs: fix sub-page blocksize data integrity writes
2013-05-24 16:26:51 -05:00
xfs_aops.h
Prefix IO_XX flags with XFS_IO_XX to avoid namespace colision.
2012-07-22 11:00:55 -05:00
xfs_attr.c
xfs: split remote attribute code out
2013-04-27 12:49:32 -05:00
xfs_attr.h
xfs: split remote attribute code out
2013-04-27 12:49:32 -05:00
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_bit.c
xfs_bit.h
xfs_bmap.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_bmap.h
xfs: move allocation stack switch up to xfs_bmapi_allocate
2012-10-18 17:42:48 -05:00
xfs_bmap_btree.c
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_bmap_btree.h
xfs: add support for large btree blocks
2013-04-21 14:53:46 -05:00
xfs_btree.c
xfs: ensure btree root split sets blkno correctly
2013-06-14 15:59:31 -05:00
xfs_btree.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_buf.c
xfs: rework remote attr CRCs
2013-05-30 17:26:31 -05:00
xfs_buf.h
xfs: use b_maps[] for discontiguous buffers
2013-01-16 16:07:11 -06:00
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: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_cksum.h
xfs: add CRC infrastructure
2012-11-19 20:11:24 -06:00
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: add buffer types to directory and attribute buffers
2013-04-27 13:01:06 -05:00
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: add version 3 inode format with CRCs
2013-04-21 15:03:33 -05:00
xfs_dir2.c
xfs: remove struct xfs_dabuf and infrastructure
2012-07-01 14:50:07 -05:00
xfs_dir2.h
xfs_dir2_block.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_dir2_data.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
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: add buffer types to directory and attribute buffers
2013-04-27 13:01:06 -05:00
xfs_dir2_sf.c
xfs: shortform directory offsets change for dir3 format
2013-04-27 12:24:32 -05:00
xfs_discard.c
xfs: check for possible overflow in xfs_ioc_trim
2012-08-23 14:48:44 -05:00
xfs_discard.h
xfs_dquot.c
xfs: rework dquot CRCs
2013-06-06 10:50:35 -05:00
xfs_dquot.h
xfs: xfs_dquot prealloc throttling watermarks and low free space
2013-03-22 16:06:30 -05:00
xfs_dquot_item.c
xfs_dquot_item.h
xfs_error.c
xfs: increase hexdump output in xfs_corruption_error
2013-04-21 14:48:41 -05:00
xfs_error.h
xfs_export.c
fs: encode_fh: return FILEID_INVALID if invalid fid_type
2013-02-26 02:46:10 -05:00
xfs_export.h
xfs_extent_busy.c
xfs: make xfs_extent_busy_trim not static
2012-05-14 16:21:04 -05:00
xfs_extent_busy.h
xfs: make xfs_extent_busy_trim not static
2012-05-14 16:21:04 -05:00
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: don't free EFIs before the EFDs are committed
2013-04-05 13:25:35 -05:00
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: add background scanning to clear eofblocks inodes
2012-11-08 15:34:59 -06:00
xfs_ialloc.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_ialloc.h
xfs: convert buffer verifiers to an ops structure.
2012-11-15 21:35:12 -06:00
xfs_ialloc_btree.c
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_ialloc_btree.h
xfs: add support for large btree blocks
2013-04-21 14:53:46 -05:00
xfs_icache.c
xfs: add background scanning to clear eofblocks inodes
2012-11-08 15:34:59 -06:00
xfs_icache.h
xfs: add background scanning to clear eofblocks inodes
2012-11-08 15:34:59 -06:00
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: add version 3 inode format with CRCs
2013-04-21 15:03:33 -05:00
xfs_inode_item.c
xfs: add version 3 inode format with CRCs
2013-04-21 15:03:33 -05:00
xfs_inode_item.h
xfs remove the XFS_TRANS_DEBUG routines
2012-12-17 16:29:00 -06:00
xfs_inum.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_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_iomap.c
xfs: xfs_iomap_prealloc_size() tracepoint
2013-03-22 16:07:56 -05:00
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: convert buffer verifiers to an ops structure.
2012-11-15 21:35:12 -06:00
xfs_itable.h
xfs_linux.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_log.c
xfs: rename random32() to prandom_u32()
2013-03-07 12:33:57 -06:00
xfs_log.h
xfs: xfs_quiesce_attr() should quiesce the log like unmount
2012-10-17 13:39:14 -05:00
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: Remove the obsolete XLOG_CIL_HARD_SPACE_LIMIT() macros
2013-04-16 13:18:33 -05:00
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_message.c
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_message.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_mount.c
xfs: don't emit v5 superblock warnings on write
2013-06-14 15:58:47 -05:00
xfs_mount.h
xfs: add CRC checks to the superblock
2013-04-27 13:03:12 -05:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qm.c
xfs: rework dquot CRCs
2013-06-06 10:50:35 -05:00
xfs_qm.h
xfs: add CRC checks for quota blocks
2013-04-21 14:58:22 -05:00
xfs_qm_bhv.c
xfs: Remove boolean_t typedef completely.
2013-01-17 17:32:57 -06:00
xfs_qm_syscalls.c
xfs: avoid nesting transactions in xfs_qm_scall_setqlim()
2013-05-30 17:10:56 -05:00
xfs_quota.h
xfs: rework dquot CRCs
2013-06-06 10:50:35 -05:00
xfs_quota_priv.h
xfs_quotaops.c
userns: Convert qutoactl
2012-09-18 01:01:39 -07:00
xfs_rename.c
xfs_rtalloc.c
xfs: uncached buffer reads need to return an error
2012-11-15 21:34:05 -06:00
xfs_rtalloc.h
xfs_sb.h
xfs: implement extended feature masks
2013-04-27 13:05:18 -05:00
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: xfs_sync_data is redundant.
2012-10-17 12:01:25 -05:00
xfs_symlink.c
xfs: fix incorrect remote symlink block count
2013-05-30 17:19:07 -05:00
xfs_symlink.h
xfs: add CRC checks to remote symlinks
2013-04-27 11:49:28 -05:00
xfs_sysctl.c
xfs: add background scanning to clear eofblocks inodes
2012-11-08 15:34:59 -06:00
xfs_sysctl.h
xfs: add background scanning to clear eofblocks inodes
2012-11-08 15:34:59 -06:00
xfs_trace.c
xfs: add CRCs to dir2/da node blocks
2013-04-27 12:33:38 -05:00
xfs_trace.h
xfs: xfs_iomap_prealloc_size() tracepoint
2013-03-22 16:07:56 -05:00
xfs_trans.c
xfs: refactor space log reservation for XFS_TRANS_ATTR_SET
2013-02-01 14:56:31 -06:00
xfs_trans.h
xfs: introduce CONFIG_XFS_WARN
2013-05-07 18:45:36 -05:00
xfs_trans_ail.c
xfs remove the XFS_TRANS_DEBUG routines
2012-12-17 16:29:00 -06:00
xfs_trans_buf.c
xfs: buffer type overruns blf_flags field
2013-04-27 13:01:58 -05:00
xfs_trans_dquot.c
xfs: pass xfs_dquot to xfs_qm_adjust_dqlimits() instead of xfs_disk_dquot_t
2013-03-22 16:05:52 -05:00
xfs_trans_extfree.c
xfs_trans_inode.c
xfs remove the XFS_TRANS_DEBUG routines
2012-12-17 16:29:00 -06:00
xfs_trans_priv.h
xfs: re-enable xfsaild idle mode and fix associated races
2012-07-29 16:27:57 -05:00
xfs_trans_space.h
xfs_types.h
xfs: Remove boolean_t typedef completely.
2013-01-17 17:32:57 -06:00
xfs_utils.c
xfs: remove the alloc_done argument to xfs_dialloc
2012-07-29 16:00:31 -05:00
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: byte range granularity for XFS_IOC_ZERO_RANGE
2012-11-29 14:21:46 -06:00
xfs_xattr.c