hc
2024-02-20 e636c8d336489bf3eed5878299e6cc045bbad077
kernel/fs/9p/vfs_file.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * linux/fs/9p/vfs_file.c
34 *
....@@ -5,22 +6,6 @@
56 *
67 * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
78 * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>
8
- *
9
- * This program is free software; you can redistribute it and/or modify
10
- * it under the terms of the GNU General Public License version 2
11
- * as published by the Free Software Foundation.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program; if not, write to:
20
- * Free Software Foundation
21
- * 51 Franklin Street, Fifth Floor
22
- * Boston, MA 02111-1301 USA
23
- *
249 */
2510
2611 #include <linux/module.h>
....@@ -228,7 +213,7 @@
228213 break;
229214 default:
230215 WARN_ONCE(1, "unknown lock status code: %d\n", status);
231
- /* fallthough */
216
+ fallthrough;
232217 case P9_LOCK_ERROR:
233218 case P9_LOCK_GRACE:
234219 res = -ENOLCK;
....@@ -403,7 +388,10 @@
403388 p9_debug(P9_DEBUG_VFS, "count %zu offset %lld\n",
404389 iov_iter_count(to), iocb->ki_pos);
405390
406
- ret = p9_client_read(fid, iocb->ki_pos, to, &err);
391
+ if (iocb->ki_filp->f_flags & O_NONBLOCK)
392
+ ret = p9_client_read_once(fid, iocb->ki_pos, to, &err);
393
+ else
394
+ ret = p9_client_read(fid, iocb->ki_pos, to, &err);
407395 if (!ret)
408396 return err;
409397
....@@ -637,7 +625,7 @@
637625
638626 inode = file_inode(vma->vm_file);
639627
640
- if (!mapping_cap_writeback_dirty(inode->i_mapping))
628
+ if (!mapping_can_writeback(inode->i_mapping))
641629 wbc.nr_to_write = 0;
642630
643631 might_sleep();
....@@ -667,6 +655,8 @@
667655 .release = v9fs_dir_release,
668656 .lock = v9fs_file_lock,
669657 .mmap = v9fs_file_mmap,
658
+ .splice_read = generic_file_splice_read,
659
+ .splice_write = iter_file_splice_write,
670660 .fsync = v9fs_file_fsync,
671661 };
672662
....@@ -679,6 +669,8 @@
679669 .lock = v9fs_file_lock_dotl,
680670 .flock = v9fs_file_flock_dotl,
681671 .mmap = v9fs_file_mmap,
672
+ .splice_read = generic_file_splice_read,
673
+ .splice_write = iter_file_splice_write,
682674 .fsync = v9fs_file_fsync_dotl,
683675 };
684676
....@@ -690,6 +682,8 @@
690682 .release = v9fs_dir_release,
691683 .lock = v9fs_file_lock,
692684 .mmap = generic_file_readonly_mmap,
685
+ .splice_read = generic_file_splice_read,
686
+ .splice_write = iter_file_splice_write,
693687 .fsync = v9fs_file_fsync,
694688 };
695689
....@@ -702,6 +696,8 @@
702696 .lock = v9fs_file_lock_dotl,
703697 .flock = v9fs_file_flock_dotl,
704698 .mmap = generic_file_readonly_mmap,
699
+ .splice_read = generic_file_splice_read,
700
+ .splice_write = iter_file_splice_write,
705701 .fsync = v9fs_file_fsync_dotl,
706702 };
707703
....@@ -713,6 +709,8 @@
713709 .release = v9fs_dir_release,
714710 .lock = v9fs_file_lock,
715711 .mmap = v9fs_mmap_file_mmap,
712
+ .splice_read = generic_file_splice_read,
713
+ .splice_write = iter_file_splice_write,
716714 .fsync = v9fs_file_fsync,
717715 };
718716
....@@ -725,5 +723,7 @@
725723 .lock = v9fs_file_lock_dotl,
726724 .flock = v9fs_file_flock_dotl,
727725 .mmap = v9fs_mmap_file_mmap,
726
+ .splice_read = generic_file_splice_read,
727
+ .splice_write = iter_file_splice_write,
728728 .fsync = v9fs_file_fsync_dotl,
729729 };