switch generic_write_checks() to iocb and iter
... returning -E... upon error and amount of data left in iter after (possible) truncation upon success. Note, that normal case gives a non-zero (positive) return value, so any tests for != 0 _must_ be updated. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Conflicts: fs/ext4/file.c
This commit is contained in:
@@ -120,21 +120,15 @@ static ssize_t udf_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
||||
ssize_t retval;
|
||||
struct file *file = iocb->ki_filp;
|
||||
struct inode *inode = file_inode(file);
|
||||
size_t count = iov_iter_count(from);
|
||||
struct udf_inode_info *iinfo = UDF_I(inode);
|
||||
int err;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
|
||||
retval = generic_write_checks(file, &iocb->ki_pos, &count);
|
||||
if (retval)
|
||||
retval = generic_write_checks(iocb, from);
|
||||
if (retval <= 0)
|
||||
goto out;
|
||||
|
||||
if (count == 0)
|
||||
goto out;
|
||||
|
||||
iov_iter_truncate(from, count);
|
||||
|
||||
down_write(&iinfo->i_data_sem);
|
||||
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
|
||||
loff_t end = iocb->ki_pos + iov_iter_count(from);
|
||||
|
Reference in New Issue
Block a user