udf: Propagate errors from udf_truncate_extents()
Make udf_truncate_extents() properly propagate errors to its callers and let udf_setsize() handle the error properly as well. This lets userspace know in case there's some error when truncating blocks. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -199,7 +199,7 @@ static void udf_update_alloc_ext_desc(struct inode *inode,
|
||||
* for making file shorter. For making file longer, udf_extend_file() has to
|
||||
* be used.
|
||||
*/
|
||||
void udf_truncate_extents(struct inode *inode)
|
||||
int udf_truncate_extents(struct inode *inode)
|
||||
{
|
||||
struct extent_position epos;
|
||||
struct kernel_lb_addr eloc, neloc = {};
|
||||
@@ -224,7 +224,7 @@ void udf_truncate_extents(struct inode *inode)
|
||||
if (etype == -1) {
|
||||
/* We should extend the file? */
|
||||
WARN_ON(byte_offset);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
epos.offset -= adsize;
|
||||
extent_trunc(inode, &epos, &eloc, etype, elen, byte_offset);
|
||||
@@ -262,7 +262,7 @@ void udf_truncate_extents(struct inode *inode)
|
||||
udf_get_lb_pblock(sb, &eloc, 0));
|
||||
/* Error reading indirect block? */
|
||||
if (!epos.bh)
|
||||
return;
|
||||
return -EIO;
|
||||
if (elen)
|
||||
indirect_ext_len =
|
||||
(elen + sb->s_blocksize - 1) >>
|
||||
@@ -286,4 +286,5 @@ void udf_truncate_extents(struct inode *inode)
|
||||
iinfo->i_lenExtents = inode->i_size;
|
||||
|
||||
brelse(epos.bh);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user