NFS client patches for Linux 2.6.17-rc3

The following set of patches fix known issues with the 2.6.17-rc3 NFS client code, and significantly enhance the support for NFSv4.

linux-2.6.17-001-check_borken_change_attr.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFSv4: Some NFSv4 servers have broken behaviour for the change attribute

The Linux NFSv4 server violates RFC3530 in that the change attribute is not guaranteed to be updated for every change to the inode. Our optimisation for checking whether or not the inode metadata has changed or not is broken too. Grr....

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-002-cleanup_update_inode.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Clean up inode metadata updates

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-003-nlm_sem_to_mutex.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NLM: sem to mutex conversion

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-004-fix_nlm_reclaim_races.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NLM: Fix reclaim races

Currently it is possible for a task to remove its locks at the same time as the NLM recovery thread is trying to recover them. This quickly leads to an Oops. Protect the locks using an rw semaphore while they are being recovered.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-005-F_UNLCK_test_for_existence.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Allow caller to determine if BSD or posix locks were actually freed

Change posix_lock_file_conf(), and flock_lock_file() so that if called with an F_UNLCK argument, and the FL_EXISTS flag they will indicate whether or not any locks were actually freed by returning 0 or -ENOENT.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-006-dont_unlock_unless_necessary.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NLM,NFSv4: Don't put UNLOCK requests on the wire unless we hold a lock

Use the new behaviour of {flock,posix}_file_lock(F_UNLCK) to determine if we held a lock, and only send the RPC request to the server if this was the case.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-007-make_reclaim_locks_cache.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFSv4: Ensure nfs4_lock_expired() caches delegated locks

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-008-use_net_random_portnumbers.dif:

From: Chuck Lever <cel@netapp.com>

SUNRPC: select privileged port numbers at random

Make the RPC client select privileged ephemeral source ports at random. This improves DRC behavior on the server by using the same port when reconnecting for the same mount point, but using a different port for fresh mounts.

The Linux TCP implementation already does this for nonprivileged ports. Note that TCP sockets in TIME_WAIT will prevent quick reuse of a random ephemeral port number by leaving the port INUSE until the connection transitions out of TIME_WAIT.

Test plan: Connectathon against every known server implementation using multiple mount points. Locking especially.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-009-use_net_random_xids.dif:

From: Chuck Lever <cel@netapp.com>

SUNRPC: NFS_ROOT always uses the same XIDs

The XID generator uses get_random_bytes to generate an initial XID. NFS_ROOT starts up before the random driver, though, so get_random_bytes doesn't set a random XID for NFS_ROOT. This causes NFS_ROOT mount points to reuse XIDs every time the client is booted. If the client boots often enough, the server will start serving old replies out of its DRC.

Use net_random() instead.

Test plan: I/O intensive workloads should perform well and generate no errors. Traces taken during client reboots should show that NFS_ROOT mounts use unique XIDs after every reboot.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-010-optimise_allocation_of_nfs_readwrite.dif:

From: Chuck Lever <cel@netapp.com>

NFS: Optimize allocation of nfs_read/write_data structures

Clean up use of page_array, and fix an off-by-one error noticed by Tom Talpey which causes kmalloc calls in cases where using the page_array is sufficient.

Test plan: Normal client functional testing with r/wsize=32768.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-011-nfs_clone_fs.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Add GPL_EXPORTED function vfs_kern_mount()

do_kern_mount() does not allow the kernel to use private mount interfaces without exposing the same interfaces to userland. The problem is that the filesystem is referenced by name, thus meaning that it and its mount interface must be registered in the global filesystem list.

vfs_kern_mount() passes the struct file_system_type as an explicit parameter in order to overcome this limitation.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-012-unexport_do_kern_mount.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Unexport do_kern_mount() and clean up simple_pin_fs()

Replace all module uses with the new vfs_kern_mount() interface, and fix up simple_pin_fs().

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-013-shrinkable_mounts.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Add shrink_submounts()

Allow a submount to be marked as being 'shrinkable' by means of the vfsmount->mnt_flags, and then add a function 'shrink_submounts()' which attempts to recursively unmount these submounts.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-014-make_umount_begin_unconditional.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Remove dependency of ->umount_begin() call on MNT_FORCE

Allow filesystems to decide to perform pre-umount processing whether or not MNT_FORCE is set.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-015-store_fsid.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Store the file system "fsid" value in the NFS super block.

This should enable us to detect if we are crossing a mountpoint in the case where the server is exporting "nohide" mounts.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-016-cross_mountpoints.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Ensure the client submounts, when it crosses a server mountpoint.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-017-expire_automounts.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Add timeout to submounts

Make automounted partitions expire using the mark_mounts_for_expiry() function. The timeout is controlled via a sysctl.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-018-enter_page.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

RPC: Allow struc xdr_stream to read the page section of an xdr_buf

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-019-fs_locations.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFSv4: Implement the fs_locations function call

NFSv4 allows for the fact that filesystems may be replicated across several servers or that they may be migrated to a backup server in case of failure of the primary server. fs_locations is an NFSv4 operation for retrieving information about the location of migrated and/or replicated filesystems.

Based on an initial implementation by Jiaying Zhang <jiayingz@citi.umich.edu>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-020-fs_locations_components.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: convert fs-locations-components to conform to RFC3530

Use component4-style formats for decoding list of servers and pathnames in fs_locations.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-021-decode_attr_mounted_on_fileid.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: Decode mounted_on_fileid attribute in getattr.

It is ignored if fileid is also requested. This will be used on referrals (fs_locations).

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-022-getattr_attributes_on_referral.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: GETATTR attributes on referral

Per referral draft, only fs_locations, fsid, and mounted_on_fileid can be requested in a GETATTR on referrals.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-023-fs_locations_bitmap.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: Define an fs_locations bitmap

This is (similar to getattr bitmap) but includes fs_locations and mounted_on_fileid attributes. Use this bitmap for encoding in fs_locations requests. Note: We can probably do better by requesting locations as part of fsinfo itself.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-024-nfs4_create_client.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: Create NFSv4 transport and client

Move existing code into a separate function so that it can be also used by referral code.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-025-nfs_clone_fs2.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFS: Expand clone mounts to include other servers

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-026-referral_mount.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: Ensure client submounts when following a referral

Set up mountpoint when hitting a referral on moved error by getting fs_locations.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-027-follow_referral.dif:

From: Manoj Naik <manoj@almaden.ibm.com>

NFSv4: Follow a referral

Respond to a moved error on NFS lookup by setting up the referral. Note: We don't actually follow the referral during lookup/getattr, but later when we detect fsid mismatch in inode revalidation (similar to the processing done for cloning submounts). Referrals will have fake attributes until they are actually followed or traversed.

Signed-off-by: Manoj Naik <manoj@almaden.ibm.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-028-decode_pathname_fix.dif:

From: Andy Adamson <andros@citi.umich.edu>

NFSv4: A root pathname is sent as a zero component4

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-029-referral_bind_resvport.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFSv4: Ensure that referral mounts bind to a reserved port

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-030-fix_compile_errors.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Fix compile errors introduced by referrals patches

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-031-fix_typo.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Fix typo in nfs_do_clone_mount()

Doh!

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-032-make_nfs_follow_referral_static.dif:

From: Adrian Bunk <bunk@stusta.de>

NFS: make nfs_follow_referral() static

This patch makes the needlessly global nfs_follow_referral() static.

Signed-off-by: Adrian Bunk <bunk@stusta.de>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-033-security_in_proc_mounts.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Display the chosen RPCSEC_GSS security flavour in /proc/mounts

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-034-fix_NFS_INO_REVAL_PAGECACHE.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Fix page cache revalidation

Fix up a bug in the handling of NFS_INO_REVAL_PAGECACHE: make sure that nfs_update_inode() clears it when we're sure we're not racing with other updates.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-035-fix_update_changeattr.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: More page cache revalidation fixups

Whenever the directory changes, we want to make sure that we always invalidate its page cache. Fix up update_changeattr() and nfs_mark_for_revalidate() so that they do so.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-036-reduce_number_invalidations.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Separate metadata and page cache revalidation mechanisms

Separate out the function of revalidating the inode metadata, and revalidating the mapping. The former may be called by lookup(), and only really needs to check that permissions, ctime, etc haven't changed whereas the latter needs only done when we want to read data from the page cache, and may need to sync and then invalidate the mapping.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-037-fixup_reval_accounting.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NFS: Fix up inode revalidation accounting

Currently, we are accounting for all calls to nfs_revalidate_inode(), but not to nfs_revalidate_mapping(), or nfs_lookup_verify_inode(), etc...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-038-flock_file_supports_FL_ACCESS.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

VFS: Add support for the FL_ACCESS flag to flock_lock_file()

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-039-reduce_on_the_wire_locks.dif:

From: Trond Myklebust <Trond.Myklebust@netapp.com>

NLM,NFSv4: Wait on local locks before we put RPC calls on the wire

Use FL_ACCESS flag to test and/or wait for local locks before we try requesting a lock from the server

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.17-NFS_ALL.dif:

All of the above

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.17-001-che..>2006-04-19 16:39 2.4K 
[TXT]linux-2.6.17-002-cle..>2006-04-19 16:40 2.4K 
[TXT]linux-2.6.17-003-nlm..>2006-04-18 21:45 1.9K 
[TXT]linux-2.6.17-004-fix..>2006-04-22 21:01 5.8K 
[TXT]linux-2.6.17-005-F_U..>2006-05-10 16:29 2.6K 
[TXT]linux-2.6.17-006-don..>2006-04-26 21:26 3.9K 
[TXT]linux-2.6.17-007-mak..>2006-04-26 21:26 1.1K 
[TXT]linux-2.6.17-008-use..>2006-04-18 21:45 2.1K 
[TXT]linux-2.6.17-009-use..>2006-04-18 21:45 1.5K 
[TXT]linux-2.6.17-010-opt..>2006-05-10 16:29 3.2K 
[TXT]linux-2.6.17-011-nfs..>2006-04-18 21:45 2.6K 
[TXT]linux-2.6.17-012-une..>2006-04-25 03:03 7.7K 
[TXT]linux-2.6.17-013-shr..>2006-04-18 21:45 5.5K 
[TXT]linux-2.6.17-014-mak..>2006-04-26 21:26 4.3K 
[TXT]linux-2.6.17-015-sto..>2006-04-18 21:45 6.1K 
[TXT]linux-2.6.17-016-cro..>2006-04-26 21:26 17K 
[TXT]linux-2.6.17-017-exp..>2006-04-26 21:26 4.0K 
[TXT]linux-2.6.17-018-ent..>2006-04-18 21:45 2.5K 
[TXT]linux-2.6.17-019-fs_..>2006-04-26 21:26 8.7K 
[TXT]linux-2.6.17-020-fs_..>2006-04-26 21:26 6.9K 
[TXT]linux-2.6.17-021-dec..>2006-04-18 21:45 1.8K 
[TXT]linux-2.6.17-022-get..>2006-04-26 21:26 916  
[TXT]linux-2.6.17-023-fs_..>2006-04-26 21:26 3.1K 
[TXT]linux-2.6.17-024-nfs..>2006-04-18 21:45 5.7K 
[TXT]linux-2.6.17-025-nfs..>2006-04-18 21:45 6.4K 
[TXT]linux-2.6.17-026-ref..>2006-04-18 21:45 9.5K 
[TXT]linux-2.6.17-027-fol..>2006-04-26 21:26 5.1K 
[TXT]linux-2.6.17-028-dec..>2006-04-18 21:45 1.0K 
[TXT]linux-2.6.17-029-ref..>2006-04-18 21:45 669  
[TXT]linux-2.6.17-030-fix..>2006-04-22 21:01 2.4K 
[TXT]linux-2.6.17-031-fix..>2006-04-26 23:05 1.0K 
[TXT]linux-2.6.17-032-mak..>2006-04-27 18:10 956  
[TXT]linux-2.6.17-033-sec..>2006-04-27 18:08 2.5K 
[TXT]linux-2.6.17-034-fix..>2006-04-27 18:08 2.5K 
[TXT]linux-2.6.17-035-fix..>2006-04-26 21:29 1.9K 
[TXT]linux-2.6.17-036-red..>2006-04-27 18:08 6.3K 
[TXT]linux-2.6.17-037-fix..>2006-04-27 18:08 1.1K 
[TXT]linux-2.6.17-038-flo..>2006-05-10 16:29 1.0K 
[TXT]linux-2.6.17-039-red..>2006-04-27 03:02 3.4K 
[TXT]linux-2.6.17-NFS_ALL..>2006-04-28 00:01 105K 

Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.11 Perl/v5.16.3 Server at linux-nfs.org Port 80