39 lines
1.1 KiB
Diff
39 lines
1.1 KiB
Diff
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
|
|
--- a/fs/fuse/file.c
|
|
+++ b/fs/fuse/file.c
|
|
@@ -1219,8 +1219,7 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia,
|
|
struct file *file = iocb->ki_filp;
|
|
struct fuse_file *ff = file->private_data;
|
|
struct fuse_mount *fm = ff->fm;
|
|
- unsigned int offset, i;
|
|
- bool short_write;
|
|
+ unsigned int i;
|
|
int err;
|
|
|
|
for (i = 0; i < ap->num_folios; i++)
|
|
@@ -1235,24 +1234,9 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia,
|
|
if (!err && ia->write.out.size > count)
|
|
err = -EIO;
|
|
|
|
- short_write = ia->write.out.size < count;
|
|
- offset = ap->descs[0].offset;
|
|
- count = ia->write.out.size;
|
|
for (i = 0; i < ap->num_folios; i++) {
|
|
struct folio *folio = ap->folios[i];
|
|
|
|
- if (err) {
|
|
- folio_clear_uptodate(folio);
|
|
- } else {
|
|
- if (count >= folio_size(folio) - offset)
|
|
- count -= folio_size(folio) - offset;
|
|
- else {
|
|
- if (short_write)
|
|
- folio_clear_uptodate(folio);
|
|
- count = 0;
|
|
- }
|
|
- offset = 0;
|
|
- }
|
|
if (ia->write.folio_locked && (i == ap->num_folios - 1))
|
|
folio_unlock(folio);
|
|
folio_put(folio);
|