···17781778 tristate1779177917801780config SUNRPC_XPRT_RDMA17811781- tristate "RDMA transport for sunrpc (EXPERIMENTAL)"17811781+ tristate17821782 depends on SUNRPC && INFINIBAND && EXPERIMENTAL17831783- default m17841784- help17851785- Adds a client RPC transport for supporting kernel NFS over RDMA17861786- mounts, including Infiniband and iWARP. Experimental.17831783+ default SUNRPC && INFINIBAND1787178417881785config SUNRPC_BIND3417891786 bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
+17-3
fs/nfs/write.c
···697697}698698699699/*700700+ * If the page cache is marked as unsafe or invalid, then we can't rely on701701+ * the PageUptodate() flag. In this case, we will need to turn off702702+ * write optimisations that depend on the page contents being correct.703703+ */704704+static int nfs_write_pageuptodate(struct page *page, struct inode *inode)705705+{706706+ return PageUptodate(page) &&707707+ !(NFS_I(inode)->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_DATA));708708+}709709+710710+/*700711 * Update and possibly write a cached page of an NFS file.701712 *702713 * XXX: Keep an eye on generic_file_read to make sure it doesn't do bad···728717 (long long)(page_offset(page) +offset));729718730719 /* If we're not using byte range locks, and we know the page731731- * is entirely in cache, it may be more efficient to avoid732732- * fragmenting write requests.720720+ * is up to date, it may be more efficient to extend the write721721+ * to cover the entire page in order to avoid fragmentation722722+ * inefficiencies.733723 */734734- if (PageUptodate(page) && inode->i_flock == NULL && !(file->f_mode & O_SYNC)) {724724+ if (nfs_write_pageuptodate(page, inode) &&725725+ inode->i_flock == NULL &&726726+ !(file->f_mode & O_SYNC)) {735727 count = max(count + offset, nfs_page_length(page));736728 offset = 0;737729 }