ext4: Return unwritten buffer head when trying to read from prealloc space.
ext4_ext_get_blocks() returns the number of blocks allocated with buffer head unmapped for a read from prealloc space. This is needed so that delayed allocation doesn't do block reservation for prealloc space since the blocks are already reserved on disk. Mark the buffer head unwritten. Some code paths try to read the block if the buffer_head is not new and no uptodate. Marking the buffer head unwritten avoids this reading. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
e067ba0078
commit
1a89734d40
1 changed files with 2 additions and 0 deletions
|
@ -2580,6 +2580,8 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
|
|||
*/
|
||||
if (allocated > max_blocks)
|
||||
allocated = max_blocks;
|
||||
/* mark the buffer unwritten */
|
||||
__set_bit(BH_Unwritten, &bh_result->b_state);
|
||||
goto out2;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue