diff options
| -rw-r--r-- | fs/udf/inode.c | 4 | ||||
| -rw-r--r-- | fs/udf/truncate.c | 7 | ||||
| -rw-r--r-- | fs/udf/udfdecl.h | 2 | 
3 files changed, 8 insertions, 5 deletions
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index ae796e10f68b..e7276932e433 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -1242,8 +1242,10 @@ set_size:  		truncate_setsize(inode, newsize);  		down_write(&iinfo->i_data_sem);  		udf_clear_extent_cache(inode); -		udf_truncate_extents(inode); +		err = udf_truncate_extents(inode);  		up_write(&iinfo->i_data_sem); +		if (err) +			return err;  	}  update_time:  	inode->i_mtime = inode->i_ctime = current_time(inode); diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c index 94220ba85628..63a47f1e1d52 100644 --- a/fs/udf/truncate.c +++ b/fs/udf/truncate.c @@ -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;  } diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h index ee246769dee4..d89ef71887fc 100644 --- a/fs/udf/udfdecl.h +++ b/fs/udf/udfdecl.h @@ -235,7 +235,7 @@ extern struct inode *udf_new_inode(struct inode *, umode_t);  /* truncate.c */  extern void udf_truncate_tail_extent(struct inode *);  extern void udf_discard_prealloc(struct inode *); -extern void udf_truncate_extents(struct inode *); +extern int udf_truncate_extents(struct inode *);  /* balloc.c */  extern void udf_free_blocks(struct super_block *, struct inode *,  | 
