mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 22:51:35 +00:00
ext4: Convert ext4_extent.ee_start to ext4_extent.ee_start_lo
Convert ext4_extent.ee_start to ext4_extent.ee_start_lo This helps in finding BUGs due to direct partial access of these split 48 bit values Also fix direct partial access in ext4 code Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
308ba3ece7
commit
b377611d11
@ -52,7 +52,7 @@ static ext4_fsblk_t ext_pblock(struct ext4_extent *ex)
|
||||
{
|
||||
ext4_fsblk_t block;
|
||||
|
||||
block = le32_to_cpu(ex->ee_start);
|
||||
block = le32_to_cpu(ex->ee_start_lo);
|
||||
block |= ((ext4_fsblk_t) le16_to_cpu(ex->ee_start_hi) << 31) << 1;
|
||||
return block;
|
||||
}
|
||||
@ -77,7 +77,7 @@ static ext4_fsblk_t idx_pblock(struct ext4_extent_idx *ix)
|
||||
*/
|
||||
static void ext4_ext_store_pblock(struct ext4_extent *ex, ext4_fsblk_t pb)
|
||||
{
|
||||
ex->ee_start = cpu_to_le32((unsigned long) (pb & 0xffffffff));
|
||||
ex->ee_start_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff));
|
||||
ex->ee_start_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & 0xffff);
|
||||
}
|
||||
|
||||
@ -1409,8 +1409,7 @@ has_space:
|
||||
eh->eh_entries = cpu_to_le16(le16_to_cpu(eh->eh_entries)+1);
|
||||
nearex = path[depth].p_ext;
|
||||
nearex->ee_block = newext->ee_block;
|
||||
nearex->ee_start = newext->ee_start;
|
||||
nearex->ee_start_hi = newext->ee_start_hi;
|
||||
ext4_ext_store_pblock(nearex, ext_pblock(newext));
|
||||
nearex->ee_len = newext->ee_len;
|
||||
|
||||
merge:
|
||||
@ -2177,7 +2176,6 @@ int ext4_ext_convert_to_initialized(handle_t *handle, struct inode *inode,
|
||||
}
|
||||
/* ex2: iblock to iblock + maxblocks-1 : initialised */
|
||||
ex2->ee_block = cpu_to_le32(iblock);
|
||||
ex2->ee_start = cpu_to_le32(newblock);
|
||||
ext4_ext_store_pblock(ex2, newblock);
|
||||
ex2->ee_len = cpu_to_le16(allocated);
|
||||
if (ex2 != ex)
|
||||
|
@ -74,7 +74,7 @@ struct ext4_extent {
|
||||
__le32 ee_block; /* first logical block extent covers */
|
||||
__le16 ee_len; /* number of blocks covered by extent */
|
||||
__le16 ee_start_hi; /* high 16 bits of physical block */
|
||||
__le32 ee_start; /* low 32 bits of physical block */
|
||||
__le32 ee_start_lo; /* low 32 bits of physical block */
|
||||
};
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user