linux/include
Frank Filz 406a7ea97d nfsd: Allow AIX client to read dir containing mountpoints
This patch addresses a compatibility issue with a Linux NFS server and
AIX NFS client.

I have exported /export as fsid=0 with sec=krb5:krb5i
I have mount --bind /home onto /export/home
I have exported /export/home with sec=krb5i

The AIX client mounts / -o sec=krb5:krb5i onto /mnt

If I do an ls /mnt, the AIX client gets a permission error. Looking at
the network traceIwe see a READDIR looking for attributes
FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID. The response gives a
NFS4ERR_WRONGSEC which the AIX client is not expecting.

Since the AIX client is only asking for an attribute that is an
attribute of the parent file system (pseudo root in my example), it
seems reasonable that there should not be an error.

In discussing this issue with Bruce Fields, I initially proposed
ignoring the error in nfsd4_encode_dirent_fattr() if all that was being
asked for was FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID, however,
Bruce suggested that we avoid calling cross_mnt() if only these
attributes are requested.

The following patch implements bypassing cross_mnt() if only
FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID are called. Since there
is some complexity in the code in nfsd4_encode_fattr(), I didn't want to
duplicate code (and introduce a maintenance nightmare), so I added a
parameter to nfsd4_encode_fattr() that indicates whether it should
ignore cross mounts and simply fill in the attribute using the passed in
dentry as opposed to it's parent.

Signed-off-by: Frank Filz <ffilzlnx@us.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2008-02-01 16:42:06 -05:00
..
acpi x86: dummy placeholder for acpi/reboot.h 2008-01-30 13:31:17 +01:00
asm-alpha [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-arm [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-avr32 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-blackfin [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-cris [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-frv [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-generic asm-generic/tlb.h: build fix 2008-01-31 22:05:48 +01:00
asm-h8300 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-ia64 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-m32r [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-m68k [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-m68knommu m68knommu: remove unused CONFIG_DISKtel symbol 2008-02-01 21:00:01 +11:00
asm-mips [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-parisc [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-powerpc [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-ppc [PPC] Remove 85xx from arch/ppc 2008-01-28 08:33:10 -06:00
asm-s390 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-sh [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-sparc [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-sparc64 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-um git-x86: unbreak UML 2008-01-30 13:32:38 +01:00
asm-v850 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-x86 [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
asm-xtensa [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
crypto [CRYPTO] api: Include sched.h for cond_resched in scatterwalk.h 2008-01-11 08:16:59 +11:00
keys
linux nfsd: Allow AIX client to read dir containing mountpoints 2008-02-01 16:42:06 -05:00
math-emu
media i2c: Constify client address data 2008-01-27 18:14:46 +01:00
mtd
net [NETNS]: Lookup in FIB semantic hashes taking into account the namespace. 2008-01-31 19:28:41 -08:00
pcmcia
rdma RDMA/cma: add support for rdma_migrate_id() 2008-01-25 14:15:32 -08:00
rxrpc
scsi [SCSI] scsi_debug: add XDWRITEREAD_10 support 2008-01-30 13:14:25 -06:00
sound [ALSA] version 1.0.16rc2 2008-01-31 17:40:18 +01:00
video
xen x86: page.h: make pte_t a union to always include 2008-01-30 13:32:57 +01:00
Kbuild