linux/fs/xfs/libxfs
Jan Kara 533f267763 xfs: Fix file type directory corruption for btree directories
commit 037542345a upstream.

Users have occasionally reported that file type for some directory
entries is wrong. This mostly happened after updating libraries some
libraries. After some debugging the problem was traced down to
xfs_dir2_node_replace(). The function uses args->filetype as a file type
to store in the replaced directory entry however it also calls
xfs_da3_node_lookup_int() which will store file type of the current
directory entry in args->filetype. Thus we fail to change file type of a
directory entry to a proper type.

Fix the problem by storing new file type in a local variable before
calling xfs_da3_node_lookup_int().

Reported-by: Giacomo Comes <comes@naic.edu>
Signed-off-by: Jan Kara <jack@suse.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-09-21 10:05:37 -07:00
..
xfs_alloc.c xfs: xfs_alloc_fix_minleft can underflow near ENOSPC 2015-02-24 10:16:04 +11:00
xfs_alloc.h xfs: merge xfs_ag.h into xfs_format.h 2014-11-28 14:25:04 +11:00
xfs_alloc_btree.c xfs: merge xfs_ag.h into xfs_format.h 2014-11-28 14:25:04 +11:00
xfs_alloc_btree.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_attr.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_attr_leaf.c xfs: xfs_attr_inactive leaves inconsistent attr fork state behind 2015-05-29 07:40:08 +10:00
xfs_attr_leaf.h xfs: xfs_attr_inactive leaves inconsistent attr fork state behind 2015-05-29 07:40:08 +10:00
xfs_attr_remote.c xfs: remote attributes need to be considered data 2015-08-10 12:21:59 -07:00
xfs_attr_remote.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_attr_sf.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_bit.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_bmap.c xfs: extent size hints can round up extents past MAXEXTLEN 2015-05-29 07:40:06 +10:00
xfs_bmap.h xfs: Add support FALLOC_FL_INSERT_RANGE for fallocate 2015-03-25 15:08:56 +11:00
xfs_bmap_btree.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_bmap_btree.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_btree.c xfs: pass mp to XFS_WANT_CORRUPTED_RETURN 2015-02-23 22:39:13 +11:00
xfs_btree.h xfs: require 64-bit sector_t 2014-07-30 09:12:05 +10:00
xfs_cksum.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_da_btree.c xfs: fix shadow warning in xfs_da3_root_split() 2015-03-25 14:55:25 +11:00
xfs_da_btree.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_da_format.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_da_format.h xfs: Fix xfs_attr_leafblock definition 2015-09-21 10:05:37 -07:00
xfs_dir2.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_block.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2_data.c libxfs: readahead of dir3 data blocks should use the read verifier 2015-09-21 10:05:36 -07:00
xfs_dir2_leaf.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dir2_node.c xfs: Fix file type directory corruption for btree directories 2015-09-21 10:05:37 -07:00
xfs_dir2_priv.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_sf.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dquot_buf.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_format.h xfs: remove xfs_mod_incore_sb API 2015-02-23 21:24:37 +11:00
xfs_fs.h xfs: move xfs_fs.h to libxfs 2015-01-09 10:45:13 +11:00
xfs_ialloc.c xfs: use percpu_counter_read_positive for mp->m_icount 2015-05-29 07:39:34 +10:00
xfs_ialloc.h xfs: merge xfs_ag.h into xfs_format.h 2014-11-28 14:25:04 +11:00
xfs_ialloc_btree.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_ialloc_btree.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_inode_buf.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_inode_buf.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_inode_fork.c xfs: merge xfs_inum.h into xfs_format.h 2014-11-28 14:27:10 +11:00
xfs_inode_fork.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_log_format.h xfs: merge xfs_dinode.h into xfs_format.h 2014-11-28 14:24:06 +11:00
xfs_log_recover.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_log_rlimit.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_quota_defs.h xfs: remove XFS_IS_OQUOTA_ON macros 2014-07-24 21:27:16 +10:00
xfs_rtbitmap.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_sb.c Merge branch 'xfs-generic-sb-counters' into for-next 2015-02-24 10:27:28 +11:00
xfs_sb.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_shared.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_symlink_remote.c xfs: set buf types when converting extent formats 2015-01-22 09:30:06 +11:00
xfs_trans_resv.c xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_trans_resv.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_trans_space.h libxfs: move header files 2014-06-25 14:57:36 +10:00
xfs_types.h xfs: move xfs_types.h to libxfs 2015-01-09 10:46:31 +11:00