Commit b377611d authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Theodore Ts'o

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: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
parent 308ba3ec
...@@ -52,7 +52,7 @@ static ext4_fsblk_t ext_pblock(struct ext4_extent *ex) ...@@ -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) ...@@ -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 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -1409,8 +1409,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
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, ...@@ -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 { ...@@ -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 */
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment