NFS client patches for Linux 2.6.17-rc2

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

linux-2.6.17-001-fix_krb5_memleak.dif:

From: J. Bruce Fields <bfields@fieldses.org>

RPCSEC_GSS: fix leak in krb5 code caused by superfluous kmalloc

I was sloppy when generating a previous patch; I modified the callers of krb5_make_checksum() to allocate memory for the buffer where the result is returned, then forgot to modify krb5_make_checksum to stop allocating that memory itself. The result is a per-packet memory leak. This fixes the problem by removing the now-superfluous kmalloc().

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

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

linux-2.6.17-002-fix_intent_oops.dif:

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

VFS: Fix another open intent Oops

If the call to nfs_intent_set_file() fails to open a file in nfs4_proc_create(), we should return an error.

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

linux-2.6.17-003-sunrpc_fix_no_procfs.dif:

From: Adrian Bunk <bunk@stusta.de>

NFS: fix PROC_FS=n compile error

fs/built-in.o: In function `nfs_show_stats':inode.c:(.text+0x15481a): undefined reference to `rpc_print_iostats' net/built-in.o: In function `rpc_destroy_client': undefined reference to `rpc_free_iostats' net/built-in.o: In function `rpc_clone_client': undefined reference to `rpc_alloc_iostats' net/built-in.o: In function `rpc_new_client': undefined reference to `rpc_alloc_iostats' net/built-in.o: In function `xprt_release': undefined reference to `rpc_count_iostats' make: *** [.tmp_vmlinux1] Error 1

Signed-off-by: Adrian Bunk <bunk@stusta.de> Cc: Trond Myklebust <trond.myklebust@fys.uio.no>

Signed-off-by: Andrew Morton <akpm@osdl.org>

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

linux-2.6.17-004-config_proc_fs_fixes.dif:

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

NFS,SUNRPC: Fix compiler warnings if CONFIG_PROC_FS & CONFIG_SYSCTL are unset

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

linux-2.6.17-005-lockd_sunrpc_make_static.dif:

From: Adrian Bunk <bunk@stusta.de>

NFS: make 2 functions static

Signed-off-by: Adrian Bunk <bunk@stusta.de> Cc: Trond Myklebust <trond.myklebust@fys.uio.no>

Signed-off-by: Andrew Morton <akpm@osdl.org>

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

linux-2.6.17-006-show_stats_for_each_possible_cpu.dif:

From: John Hawkes <hawkes@sgi.com>

NFS: nfs_show_stats; for_each_possible_cpu(), not NR_CPUS

Convert a for-loop that explicitly references "NR_CPUS" into the potentially more efficient for_each_possible_cpu() construct.

Signed-off-by: John Hawkes <hawkes@sgi.com>

Signed-off-by: Andrew Morton <akpm@osdl.org>

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

linux-2.6.17-007-remove_redundant_nfs_opendir_check.dif:

From: Carsten Otte <cotte@de.ibm.com>

NFS: remove needless check in nfs_opendir()

Local variable res was initialized to 0 - no check needed here.

Signed-off-by: Carsten Otte <cotte@de.ibm.com> Cc: Trond Myklebust <trond.myklebust@fys.uio.no>

Signed-off-by: Andrew Morton <akpm@osdl.org>

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

linux-2.6.17-008-remove_gss_dead_code.dif:

From: Eric Sesterhenn <snakebyte@gmx.de>

SUNRPC: Dead code in net/sunrpc/auth_gss/auth_gss.c

Hi,

the coverity checker spotted that cred is always NULL when we jump to out_err ( there is just one case, when we fail to allocate the memory for cred ) This is Coverity ID #79

Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de>

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

linux-2.6.17-009-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-010-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-011-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-012-fix_nlm_reclaim_races.dif:

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

NLM: Fix reclaim races

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

linux-2.6.17-013-F_UNLCK_sets_fl_type.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, they will indicate whether or not any locks were actually freed by either setting or clearing request->fl_type.

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

linux-2.6.17-014-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-015-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-016-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-017-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-018-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-019-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-020-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-021-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-022-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-023-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-024-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-025-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-026-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-027-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-028-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-029-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-030-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-031-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-032-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-033-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-034-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-035-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-036-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-037-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-NFS_ALL.dif:

All of the above

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.17-001-fix..>2006-04-18 21:45 2.0K 
[TXT]linux-2.6.17-002-fix..>2006-04-18 21:45 1.4K 
[TXT]linux-2.6.17-003-sun..>2006-04-18 21:45 1.8K 
[TXT]linux-2.6.17-004-con..>2006-04-18 21:45 2.3K 
[TXT]linux-2.6.17-005-loc..>2006-04-18 21:45 1.2K 
[TXT]linux-2.6.17-006-sho..>2006-04-19 16:39 864  
[TXT]linux-2.6.17-007-rem..>2006-04-18 21:45 957  
[TXT]linux-2.6.17-008-rem..>2006-04-18 21:45 878  
[TXT]linux-2.6.17-009-che..>2006-04-19 16:39 2.4K 
[TXT]linux-2.6.17-010-cle..>2006-04-19 16:40 2.4K 
[TXT]linux-2.6.17-011-nlm..>2006-04-18 21:45 1.9K 
[TXT]linux-2.6.17-012-fix..>2006-04-18 21:45 5.5K 
[TXT]linux-2.6.17-013-F_U..>2006-04-18 21:45 2.1K 
[TXT]linux-2.6.17-014-don..>2006-04-18 21:45 2.9K 
[TXT]linux-2.6.17-015-mak..>2006-04-26 21:26 1.1K 
[TXT]linux-2.6.17-016-use..>2006-04-18 21:45 2.1K 
[TXT]linux-2.6.17-017-use..>2006-04-18 21:45 1.5K 
[TXT]linux-2.6.17-018-opt..>2006-05-10 16:29 3.2K 
[TXT]linux-2.6.17-019-nfs..>2006-04-18 21:45 2.6K 
[TXT]linux-2.6.17-020-une..>2006-04-25 03:03 7.7K 
[TXT]linux-2.6.17-021-shr..>2006-04-18 21:45 5.5K 
[TXT]linux-2.6.17-022-mak..>2006-04-26 21:26 4.3K 
[TXT]linux-2.6.17-023-sto..>2006-04-18 21:45 6.1K 
[TXT]linux-2.6.17-024-cro..>2006-04-26 21:26 17K 
[TXT]linux-2.6.17-025-exp..>2006-04-26 21:26 4.0K 
[TXT]linux-2.6.17-026-ent..>2006-04-18 21:45 2.5K 
[TXT]linux-2.6.17-027-fs_..>2006-04-26 21:26 8.7K 
[TXT]linux-2.6.17-028-fs_..>2006-04-26 21:26 6.9K 
[TXT]linux-2.6.17-029-dec..>2006-04-18 21:45 1.8K 
[TXT]linux-2.6.17-030-get..>2006-04-26 21:26 916  
[TXT]linux-2.6.17-031-fs_..>2006-04-26 21:26 3.1K 
[TXT]linux-2.6.17-032-nfs..>2006-04-18 21:45 5.7K 
[TXT]linux-2.6.17-033-nfs..>2006-04-18 21:45 6.4K 
[TXT]linux-2.6.17-034-ref..>2006-04-18 21:45 9.5K 
[TXT]linux-2.6.17-035-fol..>2006-04-26 21:26 5.1K 
[TXT]linux-2.6.17-036-dec..>2006-04-18 21:45 1.0K 
[TXT]linux-2.6.17-037-ref..>2006-04-18 21:45 669  
[TXT]linux-2.6.17-NFS_ALL..>2006-04-19 16:41 97K 

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