vfs_file.c (a0292f3ebe63f8ed7ea28de57751f6bfb9416242) vfs_file.c (eb497943fa215897f2f60fd28aa6fe52da27ca6c)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/fs/9p/vfs_file.c
4 *
5 * This file contians vfs file ops for 9P2000.
6 *
7 * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
8 * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>

--- 523 unchanged lines hidden (view full) ---

532 struct page *page = vmf->page;
533 struct file *filp = vmf->vma->vm_file;
534 struct inode *inode = file_inode(filp);
535
536
537 p9_debug(P9_DEBUG_VFS, "page %p fid %lx\n",
538 page, (unsigned long)filp->private_data);
539
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/fs/9p/vfs_file.c
4 *
5 * This file contians vfs file ops for 9P2000.
6 *
7 * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
8 * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>

--- 523 unchanged lines hidden (view full) ---

532 struct page *page = vmf->page;
533 struct file *filp = vmf->vma->vm_file;
534 struct inode *inode = file_inode(filp);
535
536
537 p9_debug(P9_DEBUG_VFS, "page %p fid %lx\n",
538 page, (unsigned long)filp->private_data);
539
540 v9inode = V9FS_I(inode);
541
542 /* Wait for the page to be written to the cache before we allow it to
543 * be modified. We then assume the entire page will need writing back.
544 */
545#ifdef CONFIG_9P_FSCACHE
546 if (PageFsCache(page) &&
547 wait_on_page_fscache_killable(page) < 0)
548 return VM_FAULT_RETRY;
549#endif
550
540 /* Update file times before taking page lock */
541 file_update_time(filp);
542
551 /* Update file times before taking page lock */
552 file_update_time(filp);
553
543 v9inode = V9FS_I(inode);
544 /* make sure the cache has finished storing the page */
545 v9fs_fscache_wait_on_page_write(inode, page);
546 BUG_ON(!v9inode->writeback_fid);
554 BUG_ON(!v9inode->writeback_fid);
547 lock_page(page);
555 if (lock_page_killable(page) < 0)
556 return VM_FAULT_RETRY;
548 if (page->mapping != inode->i_mapping)
549 goto out_unlock;
550 wait_for_stable_page(page);
551
552 return VM_FAULT_LOCKED;
553out_unlock:
554 unlock_page(page);
555 return VM_FAULT_NOPAGE;

--- 148 unchanged lines hidden ---
557 if (page->mapping != inode->i_mapping)
558 goto out_unlock;
559 wait_for_stable_page(page);
560
561 return VM_FAULT_LOCKED;
562out_unlock:
563 unlock_page(page);
564 return VM_FAULT_NOPAGE;

--- 148 unchanged lines hidden ---