···1778 tristate17791780config SUNRPC_XPRT_RDMA1781- tristate "RDMA transport for sunrpc (EXPERIMENTAL)"1782 depends on SUNRPC && INFINIBAND && EXPERIMENTAL1783- default m1784- help1785- Adds a client RPC transport for supporting kernel NFS over RDMA1786- mounts, including Infiniband and iWARP. Experimental.17871788config SUNRPC_BIND341789 bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
···697}698699/*00000000000700 * Update and possibly write a cached page of an NFS file.701 *702 * XXX: Keep an eye on generic_file_read to make sure it doesn't do bad···728 (long long)(page_offset(page) +offset));729730 /* If we're not using byte range locks, and we know the page731- * is entirely in cache, it may be more efficient to avoid732- * fragmenting write requests.0733 */734- if (PageUptodate(page) && inode->i_flock == NULL && !(file->f_mode & O_SYNC)) {00735 count = max(count + offset, nfs_page_length(page));736 offset = 0;737 }
···697}698699/*700+ * If the page cache is marked as unsafe or invalid, then we can't rely on701+ * the PageUptodate() flag. In this case, we will need to turn off702+ * write optimisations that depend on the page contents being correct.703+ */704+static int nfs_write_pageuptodate(struct page *page, struct inode *inode)705+{706+ return PageUptodate(page) &&707+ !(NFS_I(inode)->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_DATA));708+}709+710+/*711 * Update and possibly write a cached page of an NFS file.712 *713 * XXX: Keep an eye on generic_file_read to make sure it doesn't do bad···717 (long long)(page_offset(page) +offset));718719 /* If we're not using byte range locks, and we know the page720+ * is up to date, it may be more efficient to extend the write721+ * to cover the entire page in order to avoid fragmentation722+ * inefficiencies.723 */724+ if (nfs_write_pageuptodate(page, inode) &&725+ inode->i_flock == NULL &&726+ !(file->f_mode & O_SYNC)) {727 count = max(count + offset, nfs_page_length(page));728 offset = 0;729 }