Dave Chinner
74e2d06521
Long btree pointers are still 64 bit on disk
...
[XFS] Long btree pointers are still 64 bit on disk
On 32 bit machines with CONFIG_LBD=n, XFS reduces the
in memory size of xfs_fsblock_t to 32 bits so that it
will fit within 32 bit addressing. However, the disk format
for long btree pointers are still 64 bits in size.
The recent btree rewrite failed to take this into account
when initialising new btree blocks, setting sibling pointers
to NULL and checking if they are NULL. Hence checking whether
a 64 bit NULL was the same as a 32 bit NULL was failingi
resulting in NULL sibling pointers failing to be detected
correctly. This showed up as WANT_CORRUPTED_GOTO shutdowns
in xfs_btree_delrec.
Fix this by making all the comparisons and setting of long
pointer btree NULL blocks to the disk format, not the
in memory format. i.e. use NULLDFSBNO.
Reported-by: Alexander Beregalov <a.beregalov@gmail.com>
Reported-by: Jacek Luczak <difrost.kernel@gmail.com>
Reported-by: Danny ter Haar <dth@dth.net>
Tested-by: Jacek Luczak <difrost.kernel@gmail.com>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Felix Blyakher <felixb@sgi.com>
2009-01-22 01:23:11 -06:00
..
linux-2.6
xfs: fix bad_features2 fixups for the root filesystem
2009-01-19 14:45:04 +11:00
quota
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
support
[XFS] avoid memory allocations in xfs_fs_vcmn_err
2008-12-22 18:02:01 +11:00
Kconfig
xfs: fix dentry aliasing issues in open_by_handle
2009-01-19 14:43:18 +11:00
Makefile
move inode tracing out of xfs_vnode.
2008-12-04 15:39:25 +11:00
xfs.h
[XFS] make btree tracing generic
2008-10-30 16:55:13 +11:00
xfs_acl.c
CRED: Wrap task credential accesses in the XFS filesystem
2008-11-14 10:39:04 +11:00
xfs_acl.h
[XFS] Remove several unused typedefs.
2009-01-09 15:46:16 +11:00
xfs_ag.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_alloc.c
[XFS] factor out xfs_read_agf helper
2008-12-01 11:37:20 +11:00
xfs_alloc.h
[XFS] Sync up kernel and user-space headers
2008-10-30 17:05:38 +11:00
xfs_alloc_btree.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_alloc_btree.h
[XFS] Always use struct xfs_btree_block instead of short / longform
2008-10-30 17:14:34 +11:00
xfs_arch.h
[XFS] Sync up kernel and user-space headers
2008-10-30 17:05:38 +11:00
xfs_attr.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_attr.h
[XFS] Move attr log alloc size calculator to another function.
2008-08-13 16:03:35 +10:00
xfs_attr_leaf.c
[XFS] Remove macro-to-function indirections in attr code
2009-01-09 15:46:44 +11:00
xfs_attr_leaf.h
[XFS] Remove macro-to-function indirections in attr code
2009-01-09 15:46:44 +11:00
xfs_attr_sf.h
[XFS]
2008-07-28 16:58:35 +10:00
xfs_bit.c
[XFS] Use the generic bitops rather than implementing them ourselves.
2008-08-13 15:41:12 +10:00
xfs_bit.h
[XFS] Remove macro-to-function indirections in the mask code
2009-01-09 15:53:54 +11:00
xfs_bmap.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_bmap.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_bmap_btree.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_bmap_btree.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_btree.c
Long btree pointers are still 64 bit on disk
2009-01-22 01:23:11 -06:00
xfs_btree.h
[XFS] Always use struct xfs_btree_block instead of short / longform
2008-10-30 17:14:34 +11:00
xfs_btree_trace.c
[XFS] make btree tracing generic
2008-10-30 16:58:50 +11:00
xfs_btree_trace.h
[XFS] make btree tracing generic
2008-10-30 16:58:50 +11:00
xfs_buf_item.c
[XFS] Remove XFS_BUF_SHUT() and friends
2008-12-22 17:52:58 +11:00
xfs_buf_item.h
[XFS] Fix up sparse warnings.
2008-02-07 18:14:38 +11:00
xfs_da_btree.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_da_btree.h
[XFS] Sync up kernel and user-space headers
2008-10-30 17:05:38 +11:00
xfs_dfrag.c
[XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch.
2008-12-02 17:08:01 +11:00
xfs_dfrag.h
[XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch.
2008-12-02 17:08:01 +11:00
xfs_dinode.h
[XFS] kill XFS_DINODE_VERSION_ defines
2008-12-01 11:37:42 +11:00
xfs_dir2.c
[XFS] Account for allocated blocks when expanding directories
2008-11-10 17:51:14 +11:00
xfs_dir2.h
[XFS] Return case-insensitive match for dentry cache
2008-07-28 16:58:40 +10:00
xfs_dir2_block.c
[XFS] truncate readdir offsets to signed 32 bit values
2009-01-09 16:18:24 +11:00
xfs_dir2_block.h
[XFS] use filldir internally
2007-10-15 16:49:49 +10:00
xfs_dir2_data.c
[XFS] Name operation vector for hash and compare
2008-07-28 16:58:36 +10:00
xfs_dir2_data.h
[XFS] Reduce shouting by removing unnecessary macros from dir2 code.
2007-07-14 15:37:02 +10:00
xfs_dir2_leaf.c
[XFS] truncate readdir offsets to signed 32 bit values
2009-01-09 16:18:24 +11:00
xfs_dir2_leaf.h
[XFS] use filldir internally
2007-10-15 16:49:49 +10:00
xfs_dir2_node.c
[XFS] Fix returning case-preserved name with CI node form directories
2008-07-28 16:59:01 +10:00
xfs_dir2_node.h
[XFS] Reduce shouting by removing unnecessary macros from dir2 code.
2007-07-14 15:37:02 +10:00
xfs_dir2_sf.c
[XFS] truncate readdir offsets to signed 32 bit values
2009-01-09 16:18:24 +11:00
xfs_dir2_sf.h
[XFS] kill xfs_dinode_core_t
2008-12-01 11:37:35 +11:00
xfs_dir2_trace.c
[XFS] Add op_flags field and helpers to xfs_da_args
2008-07-28 16:58:37 +10:00
xfs_dir2_trace.h
[XFS] Update license/copyright notices to match the prefered SGI
2005-11-02 14:58:39 +11:00
xfs_dmapi.h
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
xfs_dmops.c
[XFS] kill struct xfs_mount_args
2008-10-30 17:53:24 +11:00
xfs_error.c
[XFS] avoid memory allocations in xfs_fs_vcmn_err
2008-12-22 18:02:01 +11:00
xfs_error.h
[XFS] avoid memory allocations in xfs_fs_vcmn_err
2008-12-22 18:02:01 +11:00
xfs_extfree_item.c
[XFS] Finish removing the mount pointer from the AIL API
2008-10-30 17:39:58 +11:00
xfs_extfree_item.h
[XFS] cleanup the field types of some item format structures
2006-09-28 10:55:43 +10:00
xfs_filestream.c
[XFS] Use KM_NOFS for debug trace buffers
2008-08-13 16:51:57 +10:00
xfs_filestream.h
[XFS] Concurrent Multi-File Data Streams
2007-07-14 15:40:53 +10:00
xfs_fs.h
filesystem freeze: remove XFS specific ioctl interfaces for freeze feature
2009-01-09 16:54:42 -08:00
xfs_fsops.c
filesystem freeze: add error handling of write_super_lockfs/unlockfs
2009-01-09 16:54:42 -08:00
xfs_fsops.h
filesystem freeze: add error handling of write_super_lockfs/unlockfs
2009-01-09 16:54:42 -08:00
xfs_ialloc.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_ialloc.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_ialloc_btree.c
[XFS] Always use struct xfs_btree_block instead of short / longform
2008-10-30 17:14:34 +11:00
xfs_ialloc_btree.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_iget.c
move inode tracing out of xfs_vnode.
2008-12-04 15:39:25 +11:00
xfs_inode.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_inode.h
[XFS] Fix merge failures
2008-12-29 16:47:18 +11:00
xfs_inode_item.c
[XFS] embededd struct xfs_imap into xfs_inode
2008-12-01 11:38:08 +11:00
xfs_inode_item.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_inum.h
[XFS] Update license/copyright notices to match the prefered SGI
2005-11-02 14:58:39 +11:00
xfs_iomap.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_iomap.h
[XFS] kill unnessecary ioops indirection
2008-02-07 16:44:14 +11:00
xfs_itable.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_itable.h
[XFS] Fix xfs_bulkstat_one size checks & error handling
2008-12-02 17:16:03 +11:00
xfs_log.c
reduce l_icloglock roundtrips
2008-12-04 15:39:21 +11:00
xfs_log.h
[XFS] Fix double free of log tickets
2008-11-17 17:37:10 +11:00
xfs_log_priv.h
[XFS] sanitize xlog_in_core_t definition
2008-12-01 11:37:25 +11:00
xfs_log_recover.c
[XFS] replace b_fspriv with b_mount
2008-12-11 13:13:33 +11:00
xfs_log_recover.h
[XFS] Update license/copyright notices to match the prefered SGI
2005-11-02 14:58:39 +11:00
xfs_mount.c
xfs: fix bad_features2 fixups for the root filesystem
2009-01-19 14:45:04 +11:00
xfs_mount.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_mru_cache.c
[XFS] streamline init/exit path
2008-07-28 16:59:25 +10:00
xfs_mru_cache.h
[XFS] On-demand reaping of the MRU cache
2007-09-17 16:42:02 +10:00
xfs_qmops.c
[XFS] kill struct xfs_mount_args
2008-10-30 17:53:24 +11:00
xfs_quota.h
kill dead quota flags
2008-12-04 15:39:22 +11:00
xfs_refcache.h
[XFS] Cleanup cosmetic differences between source trees.
2005-11-03 16:14:31 +11:00
xfs_rename.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_rtalloc.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_rtalloc.h
[XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config
2008-02-07 18:16:43 +11:00
xfs_rw.c
[XFS] replace b_fspriv with b_mount
2008-12-11 13:13:33 +11:00
xfs_rw.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_sb.h
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_trans.c
[XFS] Fix double free of log tickets
2008-11-17 17:37:10 +11:00
xfs_trans.h
[XFS] Finish removing the mount pointer from the AIL API
2008-10-30 17:39:58 +11:00
xfs_trans_ail.c
[XFS] correctly select first log item to push
2008-10-30 18:26:51 +11:00
xfs_trans_buf.c
[XFS] Finish removing the mount pointer from the AIL API
2008-10-30 17:39:58 +11:00
xfs_trans_extfree.c
[XFS] Radix tree based inode caching
2007-10-15 16:50:50 +10:00
xfs_trans_inode.c
use xfs_trans_ijoin in xfs_trans_iget
2008-12-04 15:39:23 +11:00
xfs_trans_item.c
[XFS] Add ail pointer into log items
2008-10-30 17:39:46 +11:00
xfs_trans_priv.h
[XFS] Finish removing the mount pointer from the AIL API
2008-10-30 17:39:58 +11:00
xfs_trans_space.h
[XFS] Remove version 1 directory code. Never functioned on Linux, just
2006-06-20 13:04:51 +10:00
xfs_types.h
[XFS] make xfs_ino_t an unsigned long long
2009-01-09 16:19:14 +11:00
xfs_utils.c
[XFS] kill XFS_DINODE_VERSION_ defines
2008-12-01 11:37:42 +11:00
xfs_utils.h
[XFS] implement IHOLD/IRELE directly
2008-08-13 16:13:45 +10:00
xfs_vnodeops.c
[XFS] Remove the rest of the macro-to-function indirections.
2009-01-19 14:45:55 +11:00
xfs_vnodeops.h
[XFS] Fix merge failures
2008-12-29 16:47:18 +11:00