GFS2: Fix bmap allocation corner-case bug
This patch solves a corner case during allocation which occurs if both metadata (indirect) and data blocks are required but there is an obstacle in the filesystem (e.g. a resource group header or another allocated block) such that when the allocation is requested only enough blocks for the metadata are returned. By changing the exit condition of this loop, we ensure that a minimum of one data block will always be returned. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
0e5a9fb042
commit
07ccb7bf2c
|
@ -541,7 +541,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
|
|||
*ptr++ = cpu_to_be64(bn++);
|
||||
break;
|
||||
}
|
||||
} while (state != ALLOC_DATA);
|
||||
} while ((state != ALLOC_DATA) || !dblock);
|
||||
|
||||
ip->i_height = height;
|
||||
gfs2_add_inode_blocks(&ip->i_inode, alloced);
|
||||
|
|
Loading…
Reference in New Issue