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
2 changed files with 4 additions and 6 deletions
|
@ -52,7 +52,7 @@ static ext4_fsblk_t ext_pblock(struct ext4_extent *ex)
|
||||||
{
|
{
|
||||||
ext4_fsblk_t block;
|
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;
|
block |= ((ext4_fsblk_t) le16_to_cpu(ex->ee_start_hi) << 31) << 1;
|
||||||
return block;
|
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)
|
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);
|
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);
|
eh->eh_entries = cpu_to_le16(le16_to_cpu(eh->eh_entries)+1);
|
||||||
nearex = path[depth].p_ext;
|
nearex = path[depth].p_ext;
|
||||||
nearex->ee_block = newext->ee_block;
|
nearex->ee_block = newext->ee_block;
|
||||||
nearex->ee_start = newext->ee_start;
|
ext4_ext_store_pblock(nearex, ext_pblock(newext));
|
||||||
nearex->ee_start_hi = newext->ee_start_hi;
|
|
||||||
nearex->ee_len = newext->ee_len;
|
nearex->ee_len = newext->ee_len;
|
||||||
|
|
||||||
merge:
|
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: iblock to iblock + maxblocks-1 : initialised */
|
||||||
ex2->ee_block = cpu_to_le32(iblock);
|
ex2->ee_block = cpu_to_le32(iblock);
|
||||||
ex2->ee_start = cpu_to_le32(newblock);
|
|
||||||
ext4_ext_store_pblock(ex2, newblock);
|
ext4_ext_store_pblock(ex2, newblock);
|
||||||
ex2->ee_len = cpu_to_le16(allocated);
|
ex2->ee_len = cpu_to_le16(allocated);
|
||||||
if (ex2 != ex)
|
if (ex2 != ex)
|
||||||
|
|
|
@ -74,7 +74,7 @@ struct ext4_extent {
|
||||||
__le32 ee_block; /* first logical block extent covers */
|
__le32 ee_block; /* first logical block extent covers */
|
||||||
__le16 ee_len; /* number of blocks covered by extent */
|
__le16 ee_len; /* number of blocks covered by extent */
|
||||||
__le16 ee_start_hi; /* high 16 bits of physical block */
|
__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…
Add table
Reference in a new issue