linux/fs/nfs
Stanislav Kinsbursky eee17325f1 NFS: idmap PipeFS notifier introduced
v2:
1) Added "nfs_idmap_init" and "nfs_idmap_quit" definitions for kernels built
without CONFIG_NFS_V4 option set.

This patch subscribes NFS clients to RPC pipefs notifications. Idmap notifier
is registering on NFS module load. This notifier callback is responsible for
creation/destruction of PipeFS idmap pipe dentry for NFS4 clients.

Since ipdmap pipe is created in rpc client pipefs directory, we have make sure,
that this directory has been created already. IOW RPC client notifier callback
has been called already. To achive this, PipeFS notifier priorities has been
introduced (RPC clients notifier priority is greater than NFS idmap one).
But this approach gives another problem: unlink for RPC client directory will
be called before NFS idmap pipe unlink on UMOUNT event and will fail, because
directory is not empty.
The solution, introduced in this patch, is to try to remove client directory
once again after idmap pipe was unlinked. This looks like ugly hack, so
probably it should be replaced in some more elegant way.

Note that no locking required in notifier callback because PipeFS superblock
pointer is passed as an argument from it's creation or destruction routine and
thus we can be sure about it's validity.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2012-01-31 18:20:27 -05:00
..
blocklayout SUNRPC: split SUNPRC PipeFS dentry and private pipe data creation 2012-01-31 18:20:25 -05:00
objlayout pnfs-obj: Must return layout on IO error 2012-01-06 08:55:33 -05:00
cache_lib.c NFS: remove RPC PipeFS mount point references from NFS cache routines 2012-01-31 18:20:26 -05:00
cache_lib.h NFS: DNS resolver PipeFS notifier introduced 2012-01-31 18:20:26 -05:00
callback.c NFS: create callback transports in parent transport network namespace 2012-01-31 18:20:27 -05:00
callback.h NFS: add an endian notation 2012-01-12 16:29:51 -05:00
callback_proc.c NFSv4.1: fix backchannel slotid off-by-one bug 2012-01-05 10:42:40 -05:00
callback_xdr.c nfs: check for integer overflow in decode_devicenotify_args() 2012-01-12 16:30:07 -05:00
client.c NFS: idmap PipeFS notifier introduced 2012-01-31 18:20:27 -05:00
delegation.c NFS: Use the inode->i_version to cache NFSv4 change attribute information 2011-10-18 09:14:34 -07:00
delegation.h NFS: Move cl_delegations to the nfs_server struct 2011-01-06 14:57:46 -05:00
dir.c switch ->mknod() to umode_t 2012-01-03 22:54:54 -05:00
direct.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dns_resolve.c NFS: DNS resolver PipeFS notifier introduced 2012-01-31 18:20:26 -05:00
dns_resolve.h NFS: DNS resolver cache per network namespace context introduced 2012-01-31 18:20:26 -05:00
file.c NFS - fix recent breakage to NFS error handling. 2012-01-05 10:42:39 -05:00
fscache-index.c NFS: Use the inode->i_version to cache NFSv4 change attribute information 2011-10-18 09:14:34 -07:00
fscache.c FS-Cache: Add a helper to bulk uncache pages on an inode 2011-07-07 13:21:56 -07:00
fscache.h
getroot.c Merge branch 'nfs-for-2.6.39' into nfs-for-next 2011-03-24 17:03:14 -04:00
idmap.c NFS: idmap PipeFS notifier introduced 2012-01-31 18:20:27 -05:00
inode.c NFS: DNS resolver cache per network namespace context introduced 2012-01-31 18:20:26 -05:00
internal.h NFS: idmap PipeFS notifier introduced 2012-01-31 18:20:27 -05:00
iostat.h
Kconfig pnfs: Automatically select blocks & objects layouts 2011-08-11 17:51:27 -07:00
Makefile pnfsblock: add blocklayout Kconfig option, Makefile, and stubs 2011-07-31 12:18:15 -04:00
mount_clnt.c NFS: pass NFS client owner network namespace to RPC client creation routine 2012-01-31 18:20:27 -05:00
namespace.c NFS: Add SECINFO_NO_NAME procedure 2011-07-12 13:40:27 -04:00
netns.h NFS: DNS resolver cache per network namespace context introduced 2012-01-31 18:20:26 -05:00
nfs2xdr.c Merge branch 'bugfixes' into nfs-for-2.6.38 2011-01-10 14:48:02 -05:00
nfs3acl.c switch posix_acl_create() to umode_t * 2011-08-01 02:09:42 -04:00
nfs3proc.c Freezer / sunrpc / NFS: don't allow TASK_KILLABLE sleeps to block the freezer 2011-12-06 22:12:27 +01:00
nfs3xdr.c NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!" 2011-01-25 15:24:47 -05:00
nfs4_fs.h NFS: Cache state owners after files are closed 2012-01-05 11:59:18 -05:00
nfs4filelayout.c nfs: fix a minor do_div portability issue 2012-01-05 10:42:42 -05:00
nfs4filelayout.h NFSv4.1: do not use deviceids after MDS clientid invalidation 2011-07-12 13:40:29 -04:00
nfs4filelayoutdev.c NFS: cleanup endian type in decode_ds_addr() 2012-01-12 16:30:03 -05:00
nfs4namespace.c NFS: DNS resolver cache per network namespace context introduced 2012-01-31 18:20:26 -05:00
nfs4proc.c NFS4: fix compile warnings in nfs4proc.c 2012-01-12 16:31:51 -05:00
nfs4renewd.c NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation 2011-08-24 15:07:37 -04:00
nfs4state.c NFS: Cache state owners after files are closed 2012-01-05 11:59:18 -05:00
nfs4xdr.c NFSv4: Save the owner/group name string when doing open 2012-01-07 13:22:46 -05:00
nfsroot.c NFS: Revert NFSROOT default mount options 2011-05-27 17:42:47 -04:00
pagelist.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
pnfs.c NFS: Remove pNFS bloat from the generic write path 2012-01-06 08:57:46 -05:00
pnfs.h pnfs-obj: Must return layout on IO error 2012-01-06 08:55:33 -05:00
pnfs_dev.c fs: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros 2011-10-31 19:30:31 -04:00
proc.c Freezer / sunrpc / NFS: don't allow TASK_KILLABLE sleeps to block the freezer 2011-12-06 22:12:27 +01:00
read.c NFS: Revert pnfs ugliness from the generic NFS read code path 2011-11-10 14:50:26 -05:00
super.c NFS: pass NFS client owner network namespace to RPC client creation routine 2012-01-31 18:20:27 -05:00
symlink.c
sysctl.c NFS: new idmapper 2010-10-07 18:48:49 -04:00
unlink.c NFS: Get rid of nfs_restart_rpc() 2011-10-19 13:58:30 -07:00
write.c mm: compaction: introduce sync-light migration for use by compaction 2012-01-12 20:13:09 -08:00