Jon,
The transition to kernel 2.6.30-rc8 evidently caused this patch to break in 2 
places
(files dir.c and super.c).
I've indicated the problem below (conflict between patch and base code).
Please fix and resend.

Thanks!
-Jack
On Wednesday 03 June 2009 02:41, Jon Mason wrote:
> This patch provides the NFS backport for 2.6.22.  Since the RDMA
> infrastructure does not work for this kernel release, only TCP
> support has been tested.  It passes Connectathon as a client and server.
> 
> Signed-Off-By: Jon Mason <[email protected]>
> ---
> 
....
> +diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
> +index 370b190..55877c8 100644
> +--- a/fs/nfs/dir.c
> ++++ b/fs/nfs/dir.c
...
> +@@ -1943,7 +1943,8 @@ int nfs_permission(struct inode *inode, int mask)
> +             case S_IFREG:
> +                     /* NFSv4 has atomic_open... */
> +                     if (nfs_server_capable(inode, NFS_CAP_ATOMIC_OPEN)
> +-                                    && (mask & MAY_OPEN))
> ++                                    && nd != NULL
> ++                                    && (nd->flags & LOOKUP_OPEN))
> +                             goto out;
> +                     break;
> +             case S_IFDIR:

file dir.c, reads at the above point:
                case S_IFREG:
                        /* NFSv4 has atomic_open... */
                        if (nfs_server_capable(inode, NFS_CAP_ATOMIC_OPEN)
***====>                                && (mask & MAY_OPEN)
***====>                                && !(mask & MAY_EXEC))
                                goto out;
                        break;
                case S_IFDIR:
        
> +diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> +index 6717200..b8dd762 100644
> +--- a/fs/nfs/super.c
> ++++ b/fs/nfs/super.c
...
> +@@ -681,11 +679,14 @@ static int nfs_show_stats(struct seq_file *m, struct 
> vfsmount *mnt)
> +  * Begin unmount by attempting to remove all automounted mountpoints we 
> added
> +  * in response to xdev traversals and referrals
> +  */
> +-static void nfs_umount_begin(struct super_block *sb)
> ++static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags)
> + {
> +-    struct nfs_server *server = NFS_SB(sb);
> ++    struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb);
> +     struct rpc_clnt *rpc;
> + 
> ++    if (!(flags & MNT_FORCE))
> ++            return;
> ++
> +     /* -EIO all pending I/O */
> +     rpc = server->client_acl;
> +     if (!IS_ERR(rpc))

file super.c reads at this point:
static void nfs_umount_begin(struct super_block *sb)
{
        struct nfs_server *server;
        struct rpc_clnt *rpc;

        lock_kernel();

        server = NFS_SB(sb);
        /* -EIO all pending I/O */
        rpc = server->client_acl;
        if (!IS_ERR(rpc))
                rpc_killall_tasks(rpc);
        rpc = server->client;
        if (!IS_ERR(rpc))
                rpc_killall_tasks(rpc);

        unlock_kernel();
}

Ple
_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to