Hey Vlad,
This is the 2.6.25 backport of the NFS-RDMA code. It 100% passes my
connectathon tests.
Thanks,
Jon
diff --git a/kernel_addons/backport/2.6.25/include/linux/backing-dev.h b/kernel_addons/backport/2.6.25/include/linux/backing-dev.h
new file mode 100644
index 000..6374cde
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/backing-dev.h
@@ -0,0 +1,22 @@
+#ifndef BACKPORT_LINUX_BACK_DEV_H
+#define BACKPORT_LINUX_BACK_DEV_H
+
+#include_next linux/backing-dev.h
+
+static inline int bdi_register(struct backing_dev_info *bdi, struct device *parent,
+const char *fmt, ...)
+{
+ return 0;
+}
+
+static inline int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev)
+{
+ return bdi_register(bdi, NULL, %u:%u, MAJOR(dev), MINOR(dev));
+}
+
+static inline void bdi_unregister(struct backing_dev_info *bdi)
+{
+ return;
+}
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/linux/file.h b/kernel_addons/backport/2.6.25/include/linux/file.h
new file mode 100644
index 000..7c6eacf
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/file.h
@@ -0,0 +1,12 @@
+#ifndef BACKPORT_LINUX_FILE_H
+#define BACKPORT_LINUX_FILE_H
+
+#include_next linux/file.h
+#include linux/fs.h
+
+static inline void drop_file_write_access(struct file *filp)
+{
+ put_write_access(filp-f_path.dentry-d_inode);
+}
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/linux/fs.h b/kernel_addons/backport/2.6.25/include/linux/fs.h
new file mode 100644
index 000..07c1352
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/fs.h
@@ -0,0 +1,34 @@
+#ifndef BACKPORT_LINUX_FS_H
+#define BACKPORT_LINUX_FS_H
+
+#include_next linux/fs.h
+
+#define __locks_copy_lock locks_copy_lock
+#define FILE_LOCK_DEFERRED -EINPROGRESS
+
+
+static inline int inode_permission(struct inode *inode, int flags)
+{
+ return permission(inode, flags, NULL);
+}
+
+static inline int backport_vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
+{
+ return vfs_symlink(dir, dentry, oldname, 0);
+}
+
+#ifdef CONFIG_DEBUG_WRITECOUNT
+static inline void file_take_write(struct file *f)
+{
+ WARN_ON(f-f_mnt_write_state != 0);
+ f-f_mnt_write_state = FILE_MNT_WRITE_TAKEN;
+}
+#else
+static inline void file_take_write(struct file *filp) {}
+#endif
+
+
+#define vfs_symlink(_dir, _dentry, _oldname) backport_vfs_symlink(_dir, _dentry, _oldname)
+
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/linux/kernel.h b/kernel_addons/backport/2.6.25/include/linux/kernel.h
new file mode 100644
index 000..213ce11
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/kernel.h
@@ -0,0 +1,8 @@
+#ifndef BACKPORT_KERNEL_H_2_6_25
+#define BACKPORT_KERNEL_H_2_6_25
+
+#include_next linux/kernel.h
+
+#define USHORT_MAX ((u16)(~0U))
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/linux/mount.h b/kernel_addons/backport/2.6.25/include/linux/mount.h
new file mode 100644
index 000..978c502
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/mount.h
@@ -0,0 +1,17 @@
+#ifndef BACKPORT_LINUX_MOUNT_H
+#define BACKPORT_LINUX_MOUNT_H
+
+#include_next linux/mount.h
+#include linux/fs.h
+
+static inline int __mnt_is_readonly(struct vfsmount *mnt)
+{
+ if (mnt-mnt_sb-s_flags MS_RDONLY)
+ return 1;
+ return 0;
+}
+
+extern int mnt_want_write(struct vfsmount *mnt);
+extern void mnt_drop_write(struct vfsmount *mnt);
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/linux/proc_fs.h b/kernel_addons/backport/2.6.25/include/linux/proc_fs.h
new file mode 100644
index 000..79d788a
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/linux/proc_fs.h
@@ -0,0 +1,20 @@
+#ifndef BACKPORT_LINUX_PROC_FS_H
+#define BACKPORT_LINUX_PROC_FS_H
+
+#include_next linux/proc_fs.h
+
+static inline struct proc_dir_entry *proc_create_data(const char *name, mode_t mode,
+struct proc_dir_entry *parent,
+const struct file_operations *proc_fops,
+void *data)
+{
+ struct proc_dir_entry *pde;
+
+ pde = proc_create(name, mode, parent, proc_fops);
+ if (pde)
+ pde-data = data;
+
+ return pde;
+}
+
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/net/ipv6.h b/kernel_addons/backport/2.6.25/include/net/ipv6.h
new file mode 100644
index 000..b6123d4
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/net/ipv6.h
@@ -0,0 +1,14 @@
+#ifndef BACKPORT_LINUX_IPV6_H
+#define BACKPORT_LINUX_IPV6_H
+
+#include_next net/ipv6.h
+
+static inline void ipv6_addr_set_v4mapped(const __be32 addr,
+ struct in6_addr *v4mapped)
+{
+ ipv6_addr_set(v4mapped,
+ 0, 0,
+ htonl(0x),
+ addr);
+}
+#endif
diff --git a/kernel_addons/backport/2.6.25/include/src/namespace.c b/kernel_addons/backport/2.6.25/include/src/namespace.c
new file mode 100644
index 000..d86d118
--- /dev/null
+++ b/kernel_addons/backport/2.6.25/include/src/namespace.c
@@ -0,0 +1,83 @@
+#include linux/spinlock_types.h
+#include linux/percpu.h
+#include linux/mount.h
+#include linux/module.h
+