mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
udf: Push i_data_sem locking into udf_extend_file()
Push i_data_sem locking into udf_extend_file(). It somewhat simplifies the code around it. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -555,6 +555,7 @@ static int udf_extend_file(struct inode *inode, loff_t newsize)
|
||||
else
|
||||
BUG();
|
||||
|
||||
down_write(&iinfo->i_data_sem);
|
||||
/*
|
||||
* When creating hole in file, just don't bother with preserving
|
||||
* preallocation. It likely won't be very useful anyway.
|
||||
@@ -599,6 +600,7 @@ static int udf_extend_file(struct inode *inode, loff_t newsize)
|
||||
err = 0;
|
||||
out:
|
||||
brelse(epos.bh);
|
||||
up_write(&iinfo->i_data_sem);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1160,20 +1162,17 @@ int udf_setsize(struct inode *inode, loff_t newsize)
|
||||
(udf_file_entry_alloc_offset(inode) + newsize)) {
|
||||
down_write(&iinfo->i_data_sem);
|
||||
iinfo->i_lenAlloc = newsize;
|
||||
up_write(&iinfo->i_data_sem);
|
||||
goto set_size;
|
||||
}
|
||||
err = udf_expand_file_adinicb(inode);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
down_write(&iinfo->i_data_sem);
|
||||
err = udf_extend_file(inode, newsize);
|
||||
if (err) {
|
||||
up_write(&iinfo->i_data_sem);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
set_size:
|
||||
up_write(&iinfo->i_data_sem);
|
||||
truncate_setsize(inode, newsize);
|
||||
} else {
|
||||
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
|
||||
|
Reference in New Issue
Block a user