Dave Chinner
df150ed102
xfs: remote attributes need to be considered data
...
We don't log remote attribute contents, and instead write them
synchronously before we commit the block allocation and attribute
tree update transaction. As a result we are writing to the allocated
space before the allcoation has been made permanent.
As a result, we cannot consider this allocation to be a metadata
allocation. Metadata allocation can take blocks from the free list
and so reuse them before the transaction that freed the block is
committed to disk. This behaviour is perfectly fine for journalled
metadata changes as log recovery will ensure the free operation is
replayed before the overwrite, but for remote attribute writes this
is not the case.
Hence we have to consider the remote attribute blocks to contain
data and allocate accordingly. We do this by dropping the
XFS_BMAPI_METADATA flag from the block allocation. This means the
allocation will not use blocks that are on the busy list without
first ensuring that the freeing transaction has been committed to
disk and the blocks removed from the busy list. This ensures we will
never overwrite a freed block without first ensuring that it is
really free.
cc: <[email protected] >
Signed-off-by: Dave Chinner <[email protected] >
Reviewed-by: Brian Foster <[email protected] >
Signed-off-by: Dave Chinner <[email protected] >
2015-07-29 11:48:02 +10:00
..
libxfs
xfs: remote attributes need to be considered data
2015-07-29 11:48:02 +10:00
Kconfig
kmem.c
xfs: change kmem_free to use generic kvfree()
2015-02-02 09:54:18 +11:00
kmem.h
xfs: change kmem_free to use generic kvfree()
2015-02-02 09:54:18 +11:00
Makefile
xfs: implement pNFS export operations
2015-02-16 11:49:23 +11:00
mrlock.h
uuid.c
uuid.h
xfs.h
xfs_acl.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_acl.h
xfs: move acl structures to xfs_format.h
2014-11-28 14:24:37 +11:00
xfs_aops.c
xfs: update for 4.2-rc1
2015-06-30 20:16:08 -07:00
xfs_aops.h
xfs: add DAX file operations support
2015-06-04 09:18:53 +10:00
xfs_attr.h
xfs_attr_inactive.c
Merge branch 'xfs-misc-fixes-for-4.2-3' into for-next
2015-06-23 08:49:01 +10:00
xfs_attr_list.c
xfs: pass attr geometry to attr leaf header conversion functions
2015-04-13 11:26:02 +10:00
xfs_bit.c
xfs_bmap_util.c
Merge branch 'xfs-commit-cleanup' into for-next
2015-06-04 13:55:48 +10:00
xfs_bmap_util.h
xfs: Add support FALLOC_FL_INSERT_RANGE for fallocate
2015-03-25 15:08:56 +11:00
xfs_buf.c
xfs: return a void pointer from xfs_buf_offset
2015-06-22 09:44:29 +10:00
xfs_buf.h
xfs: return a void pointer from xfs_buf_offset
2015-06-22 09:44:29 +10:00
xfs_buf_item.c
xfs: clarify async write failure ratelimit message
2015-02-24 10:14:04 +11:00
xfs_buf_item.h
xfs_dir2_readdir.c
Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next
2014-12-04 09:46:17 +11:00
xfs_discard.c
xfs: pass mp to XFS_WANT_CORRUPTED_GOTO
2015-02-23 22:39:08 +11:00
xfs_discard.h
xfs_dquot.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_dquot.h
xfs: fix implicit bool to int conversion
2015-01-09 10:48:58 +11:00
xfs_dquot_item.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_dquot_item.h
xfs_error.c
xfs: remove inst_t
2015-06-22 09:44:02 +10:00
xfs_error.h
xfs: remove inst_t
2015-06-22 09:44:02 +10:00
xfs_export.c
VFS: normal filesystems (and lustre): d_inode() annotations
2015-04-15 15:06:57 -04:00
xfs_export.h
xfs_extent_busy.c
xfs: merge xfs_ag.h into xfs_format.h
2014-11-28 14:25:04 +11:00
xfs_extent_busy.h
xfs_extfree_item.c
xfs: remove __psint_t and __psunsigned_t
2015-06-22 09:43:32 +10:00
xfs_extfree_item.h
xfs_file.c
xfs: call dax_fault on read page faults for DAX
2015-07-29 11:48:00 +10:00
xfs_filestream.c
xfs: clean up XFS_MIN_FREELIST macros
2015-06-22 10:13:30 +10:00
xfs_filestream.h
xfs_fsops.c
Merge branch 'xfs-commit-cleanup' into for-next
2015-06-04 13:55:48 +10:00
xfs_fsops.h
xfs_globals.c
xfs: export log_recovery_delay to delay mount time log recovery
2014-09-09 11:56:13 +10:00
xfs_icache.c
xfs: inodes are new until the dentry cache is set up
2015-02-23 22:38:08 +11:00
xfs_icache.h
xfs: merge xfs_ag.h into xfs_format.h
2014-11-28 14:25:04 +11:00
xfs_icreate_item.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_icreate_item.h
xfs_inode.c
Merge branch 'xfs-misc-fixes-for-4.2-3' into for-next
2015-06-23 08:49:01 +10:00
xfs_inode.h
Merge branch 'xfs-mmap-lock' into for-next
2015-02-24 10:27:47 +11:00
xfs_inode_item.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_inode_item.h
xfs_ioctl.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_ioctl.h
xfs_ioctl32.c
VFS: normal filesystems (and lustre): d_inode() annotations
2015-04-15 15:06:57 -04:00
xfs_ioctl32.h
xfs: compat_xfs_bstat does not have forkoff
2014-10-02 09:17:58 +10:00
xfs_iomap.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_iomap.h
xfs: pass a 64-bit count argument to xfs_iomap_write_unwritten
2015-01-09 10:48:12 +11:00
xfs_iops.c
xfs: update for 4.2-rc1
2015-06-30 20:16:08 -07:00
xfs_iops.h
xfs: inodes are new until the dentry cache is set up
2015-02-23 22:38:08 +11:00
xfs_itable.c
xfs: use actual inode count for sparse records in bulkstat/inumbers
2015-05-29 09:04:19 +10:00
xfs_itable.h
xfs: bulkstat chunk formatting cursor is broken
2014-11-07 08:30:30 +11:00
xfs_linux.h
xfs: remove xfs_caddr_t
2015-06-22 09:45:10 +10:00
xfs_log.c
Merge branch 'xfs-misc-fixes-for-4.2-3' into for-next
2015-06-23 08:49:01 +10:00
xfs_log.h
xfs: fix xfs_log_done interface
2015-06-04 13:48:20 +10:00
xfs_log_cil.c
xfs: fix xfs_log_done interface
2015-06-04 13:48:20 +10:00
xfs_log_priv.h
xfs: use void pointers in log validation helpers
2015-06-22 09:44:47 +10:00
xfs_log_recover.c
xfs: remote attribute headers contain an invalid LSN
2015-07-29 11:48:01 +10:00
xfs_message.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_message.h
xfs_mount.c
Merge branch 'xfs-sparse-inode' into for-next
2015-06-01 10:51:38 +10:00
xfs_mount.h
Merge branch 'xfs-dax-support' into for-next
2015-06-04 13:01:49 +10:00
xfs_mru_cache.c
xfs: xfs_mru_cache_insert() should use GFP_NOFS
2015-03-25 14:57:53 +11:00
xfs_mru_cache.h
xfs_pnfs.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_pnfs.h
xfs: unlock i_mutex in xfs_break_layouts
2015-04-13 11:38:29 +10:00
xfs_qm.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_qm.h
xfs: Convert to using ->get_state callback
2015-03-04 16:06:36 +01:00
xfs_qm_bhv.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_qm_syscalls.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_quota.h
xfs: fix quota block reservation leak when tp allocates and frees blocks
2015-06-01 07:15:37 +10:00
xfs_quotaops.c
xfs: Add support for Q_SETINFO
2015-03-04 16:06:38 +01:00
xfs_rtalloc.c
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_rtalloc.h
xfs: combine xfs_rtmodify_summary and xfs_rtget_summary
2014-09-09 11:58:42 +10:00
xfs_stats.c
xfs_stats.h
xfs_super.c
xfs: add initial DAX support
2015-06-04 09:19:18 +10:00
xfs_super.h
xfs: Remove icsb infrastructure
2015-02-23 21:22:31 +11:00
xfs_symlink.c
Merge branch 'xfs-misc-fixes-for-4.2-3' into for-next
2015-06-23 08:49:01 +10:00
xfs_symlink.h
xfs_sysctl.c
xfs: remove deprecated sysctls
2015-01-09 10:47:43 +11:00
xfs_sysctl.h
xfs: export log_recovery_delay to delay mount time log recovery
2014-09-09 11:56:13 +10:00
xfs_sysfs.c
xfs: export log_recovery_delay to delay mount time log recovery
2014-09-09 11:56:13 +10:00
xfs_sysfs.h
xfs: add debug sysfs attribute set
2014-09-09 11:52:42 +10:00
xfs_trace.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_trace.h
xfs: allocate sparse inode chunks on full chunk allocation failure
2015-05-29 09:18:32 +10:00
xfs_trans.c
xfs: fix xfs_log_done interface
2015-06-04 13:48:20 +10:00
xfs_trans.h
xfs: saner xfs_trans_commit interface
2015-06-04 13:48:08 +10:00
xfs_trans_ail.c
xfs: remove __psint_t and __psunsigned_t
2015-06-22 09:43:32 +10:00
xfs_trans_buf.c
xfs: only trace buffer items if they exist
2015-02-10 09:23:40 +11:00
xfs_trans_dquot.c
xfs: Clean up xfs_trans_dup_dqinfo
2015-06-01 10:50:00 +10:00
xfs_trans_extfree.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_trans_inode.c
xfs: move most of xfs_sb.h to xfs_format.h
2014-11-28 14:27:09 +11:00
xfs_trans_priv.h
xfs: pass a boolean flag to xfs_trans_free_items
2015-06-04 13:47:43 +10:00
xfs_xattr.c
VFS: normal filesystems (and lustre): d_inode() annotations
2015-04-15 15:06:57 -04:00