diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-05 16:05:15 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-05 16:05:15 -0400 |
| commit | a942b57b9577f30da46a9f16ea0ef2c372cb15a4 (patch) | |
| tree | e62017f1b154dc1ffe0c2a95fc654fb16e98fe5c /net/sunrpc | |
| parent | 887e5d5fcc96e3a7c91e19d9bb419c10196ffdc1 (diff) | |
| parent | 72dbac37e3a0acf8e8f07fc65e34e83de83e0b28 (diff) | |
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6:
NLM,NFSv4: Wait on local locks before we put RPC calls on the wire
VFS: Add support for the FL_ACCESS flag to flock_lock_file()
NFSv4: Ensure nfs4_lock_expired() caches delegated locks
NLM,NFSv4: Don't put UNLOCK requests on the wire unless we hold a lock
VFS: Allow caller to determine if BSD or posix locks were actually freed
NFS: Optimise away an excessive GETATTR call when a file is symlinked
This fixes a panic doing the first READDIR or READDIRPLUS call when:
NFS: Fix NFS page_state usage
Revert "Merge branch 'odirect'"
Diffstat (limited to 'net/sunrpc')
| -rw-r--r-- | net/sunrpc/xdr.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index 49174f0d0a3e..6ac45103a272 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c | |||
| @@ -191,7 +191,6 @@ _shift_data_right_pages(struct page **pages, size_t pgto_base, | |||
| 191 | do { | 191 | do { |
| 192 | /* Are any pointers crossing a page boundary? */ | 192 | /* Are any pointers crossing a page boundary? */ |
| 193 | if (pgto_base == 0) { | 193 | if (pgto_base == 0) { |
| 194 | flush_dcache_page(*pgto); | ||
| 195 | pgto_base = PAGE_CACHE_SIZE; | 194 | pgto_base = PAGE_CACHE_SIZE; |
| 196 | pgto--; | 195 | pgto--; |
| 197 | } | 196 | } |
| @@ -211,11 +210,11 @@ _shift_data_right_pages(struct page **pages, size_t pgto_base, | |||
| 211 | vto = kmap_atomic(*pgto, KM_USER0); | 210 | vto = kmap_atomic(*pgto, KM_USER0); |
| 212 | vfrom = kmap_atomic(*pgfrom, KM_USER1); | 211 | vfrom = kmap_atomic(*pgfrom, KM_USER1); |
| 213 | memmove(vto + pgto_base, vfrom + pgfrom_base, copy); | 212 | memmove(vto + pgto_base, vfrom + pgfrom_base, copy); |
| 213 | flush_dcache_page(*pgto); | ||
| 214 | kunmap_atomic(vfrom, KM_USER1); | 214 | kunmap_atomic(vfrom, KM_USER1); |
| 215 | kunmap_atomic(vto, KM_USER0); | 215 | kunmap_atomic(vto, KM_USER0); |
| 216 | 216 | ||
| 217 | } while ((len -= copy) != 0); | 217 | } while ((len -= copy) != 0); |
| 218 | flush_dcache_page(*pgto); | ||
| 219 | } | 218 | } |
| 220 | 219 | ||
| 221 | /* | 220 | /* |
