[XFS] Catch errors returned from xfs_bmap_last_offset().
xfs_bmap_last_offset() can fail and return an error. xfs_iomap_write_allocate() fails to detect and propagate the error. SGI-PV: 980084 SGI-Modid: xfs-linux-melb:xfs-kern:30802a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Niv Sardi <xaiki@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
parent
fc6149d8d9
commit
7c9ef85c56
1 changed files with 5 additions and 2 deletions
|
@ -802,8 +802,11 @@ xfs_iomap_write_allocate(
|
||||||
*/
|
*/
|
||||||
nimaps = 1;
|
nimaps = 1;
|
||||||
end_fsb = XFS_B_TO_FSB(mp, ip->i_size);
|
end_fsb = XFS_B_TO_FSB(mp, ip->i_size);
|
||||||
xfs_bmap_last_offset(NULL, ip, &last_block,
|
error = xfs_bmap_last_offset(NULL, ip, &last_block,
|
||||||
XFS_DATA_FORK);
|
XFS_DATA_FORK);
|
||||||
|
if (error)
|
||||||
|
goto trans_cancel;
|
||||||
|
|
||||||
last_block = XFS_FILEOFF_MAX(last_block, end_fsb);
|
last_block = XFS_FILEOFF_MAX(last_block, end_fsb);
|
||||||
if ((map_start_fsb + count_fsb) > last_block) {
|
if ((map_start_fsb + count_fsb) > last_block) {
|
||||||
count_fsb = last_block - map_start_fsb;
|
count_fsb = last_block - map_start_fsb;
|
||||||
|
|
Loading…
Reference in a new issue