--- ./fs/nfs/dir.c.orig 2005-07-29 12:11:47.000000000 +0200 +++ ./fs/nfs/dir.c 2005-07-29 13:51:50.000000000 +0200 @@ -1120,6 +1120,7 @@ struct iattr attr; int error; int open_flags = 0; + struct rpc_groups fsg = { 1, { dir->i_gid } }; dfprintk(VFS, "NFS: create(%s/%ld, %s\n", dir->i_sb->s_id, dir->i_ino, dentry->d_name.name); @@ -1132,7 +1133,7 @@ lock_kernel(); nfs_begin_data_update(dir); - error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags); + error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, &fsg); nfs_end_data_update(dir); if (error != 0) goto out_err; --- ./fs/nfs/nfs3proc.c.orig 2005-07-29 13:50:13.000000000 +0200 +++ ./fs/nfs/nfs3proc.c 2005-07-29 13:51:50.000000000 +0200 @@ -283,7 +283,7 @@ */ static int nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, - int flags) + int flags, struct rpc_groups *fsg) { struct nfs_fh fhandle; struct nfs_fattr fattr; @@ -315,7 +315,7 @@ again: dir_attr.valid = 0; fattr.valid = 0; - status = nfs3_rpc(NFS_CLIENT(dir), NFS3PROC_CREATE, &arg, &res); + status = nfs3_rpc(NFS_CLIENT(dir), NFS3PROC_CREATE, &arg, &res, fsg); nfs_refresh_inode(dir, &dir_attr); /* If the server doesn't support the exclusive creation semantics, --- ./fs/nfs/nfs4proc.c.orig 2005-07-29 12:27:45.000000000 +0200 +++ ./fs/nfs/nfs4proc.c 2005-07-29 13:51:50.000000000 +0200 @@ -1427,7 +1427,7 @@ static int nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, - int flags) + int flags, struct rpc_groups *fsg) { struct nfs4_state *state; struct rpc_cred *cred; --- ./fs/nfs/proc.c.orig 2005-07-29 13:50:13.000000000 +0200 +++ ./fs/nfs/proc.c 2005-07-29 13:51:50.000000000 +0200 @@ -231,7 +231,7 @@ static int nfs_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, - int flags) + int flags, struct rpc_groups *fsg) { struct nfs_fh fhandle; struct nfs_fattr fattr; @@ -249,7 +249,7 @@ fattr.valid = 0; dprintk("NFS call create %s\n", dentry->d_name.name); - status = nfs2_rpc(NFS_CLIENT(dir), NFSPROC_CREATE, &arg, &res); + status = nfs2_rpc(NFS_CLIENT(dir), NFSPROC_CREATE, &arg, &res, fsg); if (status == 0) status = nfs_instantiate(dentry, &fhandle, &fattr); dprintk("NFS reply create: %d\n", status); --- ./include/linux/nfs_xdr.h.orig 2005-07-29 11:59:08.000000000 +0200 +++ ./include/linux/nfs_xdr.h 2005-07-29 13:51:50.000000000 +0200 @@ -722,7 +722,7 @@ int (*write) (struct nfs_write_data *); int (*commit) (struct nfs_write_data *); int (*create) (struct inode *, struct dentry *, - struct iattr *, int); + struct iattr *, int, struct rpc_groups *); int (*remove) (struct inode *, struct qstr *); int (*unlink_setup) (struct rpc_message *, struct dentry *, struct qstr *);