mirror of https://gitee.com/openkylin/linux.git
ext4: Get journal write access before modifying the extent tree
When the user was writing into an unitialized extent, ext4_ext_convert_to_initialize() was not requesting journal write access before it started to modify the extent tree. Fix this oversight. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Mingming Cao <cmm@us.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
b35905c16a
commit
9df5643ad1
|
@ -2168,6 +2168,10 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
|
|||
newblock = iblock - ee_block + ext_pblock(ex);
|
||||
ex2 = ex;
|
||||
|
||||
err = ext4_ext_get_access(handle, inode, path + depth);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
/* ex1: ee_block to iblock - 1 : uninitialized */
|
||||
if (iblock > ee_block) {
|
||||
ex1 = ex;
|
||||
|
@ -2210,6 +2214,10 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
|
|||
ex = path[depth].p_ext;
|
||||
if (ex2 != &newex)
|
||||
ex2 = ex;
|
||||
|
||||
err = ext4_ext_get_access(handle, inode, path + depth);
|
||||
if (err)
|
||||
goto out;
|
||||
}
|
||||
allocated = max_blocks;
|
||||
}
|
||||
|
@ -2230,9 +2238,6 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
|
|||
ex2->ee_len = cpu_to_le16(allocated);
|
||||
if (ex2 != ex)
|
||||
goto insert;
|
||||
err = ext4_ext_get_access(handle, inode, path + depth);
|
||||
if (err)
|
||||
goto out;
|
||||
/*
|
||||
* New (initialized) extent starts from the first block
|
||||
* in the current extent. i.e., ex2 == ex
|
||||
|
|
Loading…
Reference in New Issue