mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
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 <[email protected]> Conflicts: fs/ext4/file.c
This commit is contained in:
parent
90320251db
commit
3309dd04cb
14 changed files with 99 additions and 166 deletions
|
|
@ -170,20 +170,15 @@ ncp_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
|||
struct file *file = iocb->ki_filp;
|
||||
struct inode *inode = file_inode(file);
|
||||
size_t already_written = 0;
|
||||
loff_t pos = iocb->ki_pos;
|
||||
size_t count = iov_iter_count(from);
|
||||
size_t bufsize;
|
||||
int errno;
|
||||
void *bouncebuffer;
|
||||
off_t pos;
|
||||
|
||||
ncp_dbg(1, "enter %pD2\n", file);
|
||||
errno = generic_write_checks(file, &pos, &count);
|
||||
if (errno)
|
||||
errno = generic_write_checks(iocb, from);
|
||||
if (errno <= 0)
|
||||
return errno;
|
||||
iov_iter_truncate(from, count);
|
||||
|
||||
if (!count)
|
||||
return 0;
|
||||
|
||||
errno = ncp_make_open(inode, O_WRONLY);
|
||||
if (errno) {
|
||||
|
|
@ -201,10 +196,11 @@ ncp_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
|||
errno = -EIO; /* -ENOMEM */
|
||||
goto outrel;
|
||||
}
|
||||
pos = iocb->ki_pos;
|
||||
while (iov_iter_count(from)) {
|
||||
int written_this_time;
|
||||
size_t to_write = min_t(size_t,
|
||||
bufsize - ((off_t)pos % bufsize),
|
||||
bufsize - (pos % bufsize),
|
||||
iov_iter_count(from));
|
||||
|
||||
if (copy_from_iter(bouncebuffer, to_write, from) != to_write) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue