Vlad,

Please pull from:

ssh://v...@sofa.openfabrics.org/~swise/scm/ofed_kernel ofed_1_5

This commit fixes bug 1699.

Thanks,

Steve.


----

From: Tom Tucker <t...@opengridcomputing.com>

The code that supports this flag is core fs code that is not and cannot
be shipped as part of NFSRDMA.  Use the old flags from the nameidata
structure if LOOKUP_EXCL is not defined.

Signed-off-by: Tom Tucker <t...@opengridcomputing.com>
---

fs/nfs/dir.c                                       |   10 ++++++++++
.../2.6.16_sles10_sp2/include/linux/namei.h        |    2 --
.../backport/2.6.18-EL5.2/include/linux/namei.h    |    2 --
.../backport/2.6.18-EL5.3/include/linux/namei.h    |    2 --
.../backport/2.6.18-EL5.4/include/linux/namei.h    |    2 --
.../backport/2.6.22/include/linux/namei.h          |    2 --
.../backport/2.6.25/include/linux/namei.h          |    2 --
.../backport/2.6.25_suse11/include/linux/namei.h   |    2 --
.../backport/2.6.27_sles11/include/linux/namei.h   |    2 --
9 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 89f98e9..88c61a8 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -707,7 +707,13 @@ static int nfs_is_exclusive_create(struct inode *dir, 
struct nameidata *nd)
{
        if (NFS_PROTO(dir)->version == 2)
                return 0;
+#ifdef LOOKUP_EXCL
        return nd && nfs_lookup_check_intent(nd, LOOKUP_EXCL);
+#else
+       if (nd == NULL || nfs_lookup_check_intent(nd, LOOKUP_CREATE) == 0)
+               return 0;
+       return (nd->intent.open.flags & O_EXCL) != 0;
+#endif
}

/*
@@ -1011,7 +1017,11 @@ static struct dentry *nfs_atomic_lookup(struct inode 
*dir, struct dentry *dentry

        /* Let vfs_create() deal with O_EXCL. Instantiate, but don't hash
         * the dentry. */
+#ifdef LOOKUP_EXCL
        if (nd->flags & LOOKUP_EXCL) {
+#else
+       if (nd->intent.open.flags & O_EXCL) {
+#endif
                d_instantiate(dentry, NULL);
                goto out;
        }
diff --git a/kernel_addons/backport/2.6.16_sles10_sp2/include/linux/namei.h 
b/kernel_addons/backport/2.6.16_sles10_sp2/include/linux/namei.h
index 77de824..3260aed 100644
--- a/kernel_addons/backport/2.6.16_sles10_sp2/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.16_sles10_sp2/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL 0x0400
-
struct path {
        struct vfsmount *mnt;
        struct dentry *dentry;
diff --git a/kernel_addons/backport/2.6.18-EL5.2/include/linux/namei.h 
b/kernel_addons/backport/2.6.18-EL5.2/include/linux/namei.h
index 77de824..3260aed 100644
--- a/kernel_addons/backport/2.6.18-EL5.2/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.18-EL5.2/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL 0x0400
-
struct path {
        struct vfsmount *mnt;
        struct dentry *dentry;
diff --git a/kernel_addons/backport/2.6.18-EL5.3/include/linux/namei.h 
b/kernel_addons/backport/2.6.18-EL5.3/include/linux/namei.h
index 77de824..3260aed 100644
--- a/kernel_addons/backport/2.6.18-EL5.3/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.18-EL5.3/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL 0x0400
-
struct path {
        struct vfsmount *mnt;
        struct dentry *dentry;
diff --git a/kernel_addons/backport/2.6.18-EL5.4/include/linux/namei.h 
b/kernel_addons/backport/2.6.18-EL5.4/include/linux/namei.h
index 77de824..3260aed 100644
--- a/kernel_addons/backport/2.6.18-EL5.4/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.18-EL5.4/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL 0x0400
-
struct path {
        struct vfsmount *mnt;
        struct dentry *dentry;
diff --git a/kernel_addons/backport/2.6.22/include/linux/namei.h 
b/kernel_addons/backport/2.6.22/include/linux/namei.h
index 9ede722..dcaae42 100644
--- a/kernel_addons/backport/2.6.22/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.22/include/linux/namei.h
@@ -4,8 +4,6 @@
#include_next <linux/namei.h>
#include <linux/path.h>

-#define LOOKUP_EXCL             0x0400
-
static inline int kern_path(const char *name, unsigned int flags, struct path 
*path)
{
        struct nameidata nd;
diff --git a/kernel_addons/backport/2.6.25/include/linux/namei.h 
b/kernel_addons/backport/2.6.25/include/linux/namei.h
index ef46b08..1e5b451 100644
--- a/kernel_addons/backport/2.6.25/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.25/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL             0x0400
-
static inline int kern_path(const char *name, unsigned int flags, struct path 
*path)
{
        struct nameidata nd;
diff --git a/kernel_addons/backport/2.6.25_suse11/include/linux/namei.h 
b/kernel_addons/backport/2.6.25_suse11/include/linux/namei.h
index ef46b08..1e5b451 100644
--- a/kernel_addons/backport/2.6.25_suse11/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.25_suse11/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL             0x0400
-
static inline int kern_path(const char *name, unsigned int flags, struct path 
*path)
{
        struct nameidata nd;
diff --git a/kernel_addons/backport/2.6.27_sles11/include/linux/namei.h 
b/kernel_addons/backport/2.6.27_sles11/include/linux/namei.h
index ef46b08..1e5b451 100644
--- a/kernel_addons/backport/2.6.27_sles11/include/linux/namei.h
+++ b/kernel_addons/backport/2.6.27_sles11/include/linux/namei.h
@@ -3,8 +3,6 @@

#include_next <linux/namei.h>

-#define LOOKUP_EXCL             0x0400
-
static inline int kern_path(const char *name, unsigned int flags, struct path 
*path)
{
        struct nameidata nd;

_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to