[Pkg-lustre-svn-commit] updated: [65b13c9] Removed patchless support for 2.6.27 to get a cleaner diff for debian-release team
Patrick Winnertz
winnie at debian.org
Mon Oct 20 16:54:47 UTC 2008
The following commit has been merged in the master branch:
commit 65b13c9724ad947015862339a16318e10110ac2b
Author: Patrick Winnertz <winnie at debian.org>
Date: Mon Oct 20 18:53:20 2008 +0200
Removed patchless support for 2.6.27 to get a cleaner diff for debian-release team
diff --git a/debian/patches/patchless_support_2.6.27.dpatch b/debian/patches/patchless_support_2.6.27.dpatch
deleted file mode 100755
index f929390..0000000
--- a/debian/patches/patchless_support_2.6.27.dpatch
+++ /dev/null
@@ -1,4301 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## patchless_support_2.6.27.dpatch by Patrick Winnertz <winnie at debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Patch which will enable 2.6.24-2.6.27 patchless support for
-## DP: lustre, taken from #14250 and slightly modified for debian
-
- at DPATCH@
-diff -urNad lustre~/lnet/autoconf/lustre-lnet.m4 lustre/lnet/autoconf/lustre-lnet.m4
---- lustre~/lnet/autoconf/lustre-lnet.m4 2008-06-26 06:43:33.000000000 +0200
-+++ lustre/lnet/autoconf/lustre-lnet.m4 2008-10-10 14:58:52.000000000 +0200
-@@ -1263,6 +1263,55 @@
- ])
- ])
-
-+# 2.6.24 request not use real numbers for ctl_name
-+AC_DEFUN([LN_SYSCTL_UNNUMBERED],
-+[AC_MSG_CHECKING([for CTL_UNNUMBERED])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/sysctl.h>
-+],[
-+ #ifndef CTL_UNNUMBERED
-+ #error CTL_UNNUMBERED not exist in kernel
-+ #endif
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_SYSCTL_UNNUMBERED, 1,
-+ [sysctl has CTL_UNNUMBERED])
-+],[
-+ AC_MSG_RESULT(NO)
-+])
-+])
-+
-+# 2.6.24 lost scatterlist->page
-+AC_DEFUN([LN_SCATTERLIST_SETPAGE],
-+[AC_MSG_CHECKING([for exist sg_set_page])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/scatterlist.h>
-+],[
-+ sg_set_page(NULL,NULL,0,0);
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_SCATTERLIST_SETPAGE, 1,
-+ [struct scatterlist has page member])
-+],[
-+ AC_MSG_RESULT(NO)
-+])
-+])
-+
-+AC_DEFUN([LN_SOCKMAP_FD_EXTRA_FLAG],
-+[AC_MSG_CHECKING([if sock_map_fd accepts flags])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/net.h>
-+],[
-+ sock_map_fd(NULL,0);
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_EXTRA_SOCKMAP_FD_FLAG, 1,
-+ [sock_map_fd accepts two parameters])
-+],[
-+ AC_MSG_RESULT(NO)
-+])
-+])
-+
- #
- # LN_PROG_LINUX
- #
-@@ -1305,6 +1354,11 @@
- LN_KMEM_CACHE
- # 2.6.23
- LN_KMEM_CACHE_CREATE_DTOR
-+# 2.6.24
-+LN_SYSCTL_UNNUMBERED
-+LN_SCATTERLIST_SETPAGE
-+#2.6.27
-+LN_SOCKMAP_FD_EXTRA_FLAG
- ])
-
- #
-diff -urNad lustre~/lnet/include/libcfs/curproc.h lustre/lnet/include/libcfs/curproc.h
---- lustre~/lnet/include/libcfs/curproc.h 2007-02-10 01:04:30.000000000 +0100
-+++ lustre/lnet/include/libcfs/curproc.h 2008-10-10 14:58:53.000000000 +0200
-@@ -49,6 +49,11 @@
- */
- cfs_kernel_cap_t cfs_curproc_cap_get(void);
- void cfs_curproc_cap_set(cfs_kernel_cap_t cap);
-+
-+typedef __u32 cfs_cap_t;
-+
-+cfs_cap_t cfs_cap_convert_from_kernel(cfs_kernel_cap_t cap);
-+
- #endif
-
- /* __LIBCFS_CURPROC_H__ */
-diff -urNad lustre~/lnet/include/libcfs/linux/linux-prim.h lustre/lnet/include/libcfs/linux/linux-prim.h
---- lustre~/lnet/include/libcfs/linux/linux-prim.h 2008-01-14 02:12:18.000000000 +0100
-+++ lustre/lnet/include/libcfs/linux/linux-prim.h 2008-10-10 14:58:53.000000000 +0200
-@@ -68,6 +68,17 @@
- #endif
- #define cfs_unregister_sysctl_table(t) unregister_sysctl_table(t)
-
-+#define DECLARE_PROC_HANDLER(name) \
-+static int \
-+LL_PROC_PROTO(name) \
-+{ \
-+ DECLARE_LL_PROC_PPOS_DECL; \
-+ \
-+ return proc_call_handler(table->data, write, \
-+ ppos, buffer, lenp, \
-+ __##name); \
-+}
-+
- /*
- * Symbol register
- */
-diff -urNad lustre~/lnet/klnds/gmlnd/gmlnd_module.c lustre/lnet/klnds/gmlnd/gmlnd_module.c
---- lustre~/lnet/klnds/gmlnd/gmlnd_module.c 2007-09-27 04:30:24.000000000 +0200
-+++ lustre/lnet/klnds/gmlnd/gmlnd_module.c 2008-10-10 14:58:53.000000000 +0200
-@@ -62,9 +62,37 @@
- };
-
- #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
-+
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_GMLND 202
-+
-+enum {
-+ GMLND_PORT = 1,
-+ GMLND_NTX,
-+ GMLND_CREDITS,
-+ GMLND_PEERCREDITS,
-+ GMLND_NLARGE_TX_BUFS,
-+ GMLND_NRX_SMALL,
-+ GMLND_NRX_LARGE
-+};
-+
-+#else
-+#define CTL_GMLND CTL_UNNUMBERED
-+
-+#define GMLND_PORT CTL_UNNUMBERED
-+#define GMLND_NTX CTL_UNNUMBERED
-+#define GMLND_CREDITS CTL_UNNUMBERED
-+#define GMLND_PEERCREDITS CTL_UNNUMBERED
-+#define GMLND_NLARGE_TX_BUFS CTL_UNNUMBERED
-+#define GMLND_NRX_SMALL CTL_UNNUMBERED
-+#define GMLND_NRX_LARGE CTL_UNNUMBERED
-+
-+#endif
-+
- static cfs_sysctl_table_t gmnal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = GMLND_PORT,
- .procname = "port",
- .data = &port,
- .maxlen = sizeof (int),
-@@ -72,7 +100,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = GMLND_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof (int),
-@@ -80,7 +108,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = GMLND_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof (int),
-@@ -88,7 +116,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = GMLND_PEERCREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof (int),
-@@ -96,7 +124,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = GMLND_NLARGE_TX_BUFS,
- .procname = "nlarge_tx_bufs",
- .data = &nlarge_tx_bufs,
- .maxlen = sizeof (int),
-@@ -104,7 +132,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = GMLND_NRX_SMALL,
- .procname = "nrx_small",
- .data = &nrx_small,
- .maxlen = sizeof (int),
-@@ -112,7 +140,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = GMLND_NRX_LARGE,
- .procname = "nrx_large",
- .data = &nrx_large,
- .maxlen = sizeof (int),
-@@ -124,7 +152,7 @@
-
- static cfs_sysctl_table_t gmnal_top_ctl_table[] = {
- {
-- .ctl_name = 207,
-+ .ctl_name = CTL_GMLND,
- .procname = "gmnal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/iiblnd/iiblnd_modparams.c lustre/lnet/klnds/iiblnd/iiblnd_modparams.c
---- lustre~/lnet/klnds/iiblnd/iiblnd_modparams.c 2007-09-10 17:35:53.000000000 +0200
-+++ lustre/lnet/klnds/iiblnd/iiblnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -102,9 +102,50 @@
- * not to truncate the printout; it only needs to be the actual size of the
- * string buffer if we allow writes (and we don't) */
-
-+#ifdef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_IIBLND 203
-+
-+enum {
-+ IIBLND_IPIF_BASENAME = 1,
-+ IIBLND_SERVICE_NAME,
-+ IIBLND_SERVICE_NUMBER,
-+ IIBLND_RECONNECT_MIN,
-+ IIBLND_RECONNECT_MAX,
-+ IIBLND_CONCURRENT_PEERS,
-+ IIBLND_CKSUM,
-+ IIBLND_TIMEOUT,
-+ IIBLND_NTX,
-+ IIBLND_CREDITS,
-+ IIBLND_PEER_CREDITS,
-+ IIBLND_SD_RETRIES,
-+ IIBLND_KEEPALIVE,
-+ IIBLND_CONCURRENT_SENDS
-+};
-+
-+#else
-+#define CTL_IIBLND CTL_UNNUMBERED
-+
-+#define IIBLND_IPIF_BASENAME CTL_UNNUMBERED
-+#define IIBLND_SERVICE_NAME CTL_UNNUMBERED
-+#define IIBLND_SERVICE_NUMBER CTL_UNNUMBERED
-+#define IIBLND_RECONNECT_MIN CTL_UNNUMBERED
-+#define IIBLND_RECONNECT_MAX CTL_UNNUMBERED
-+#define IIBLND_CONCURRENT_PEERS CTL_UNNUMBERED
-+#define IIBLND_CKSUM CTL_UNNUMBERED
-+#define IIBLND_TIMEOUT CTL_UNNUMBERED
-+#define IIBLND_NTX CTL_UNNUMBERED
-+#define IIBLND_CREDITS CTL_UNNUMBERED
-+#define IIBLND_PEER_CREDITS CTL_UNNUMBERED
-+#define IIBLND_SD_RETRIES CTL_UNNUMBERED
-+#define IIBLND_KEEPALIVE CTL_UNNUMBERED
-+#define IIBLND_CONCURRENT_SENDS CTL_UNNUMBERED
-+
-+#endif
-+
- static cfs_sysctl_table_t kibnal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = IBLND_IPIF_BASENAME,
- .procname = "ipif_basename",
- .data = &ipif_basename,
- .maxlen = 1024,
-@@ -112,7 +153,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = IIBLND_SERVICE_NAME,
- .procname = "service_name",
- .data = &service_name,
- .maxlen = 1024,
-@@ -120,7 +161,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = IIBLND_SERVICE_NUMBER,
- .procname = "service_number",
- .data = &service_number,
- .maxlen = sizeof(int),
-@@ -128,7 +169,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = IIBLND_RECONNECT_MIN,
- .procname = "min_reconnect_interval",
- .data = &min_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -136,7 +177,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = IIBLND_RECONNECT_MAX,
- .procname = "max_reconnect_interval",
- .data = &max_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -144,7 +185,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = IIBLND_CONCURRENT_PEERS,
- .procname = "concurrent_peers",
- .data = &concurrent_peers,
- .maxlen = sizeof(int),
-@@ -152,7 +193,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = IIBLND_CKSUM,
- .procname = "cksum",
- .data = &cksum,
- .maxlen = sizeof(int),
-@@ -160,7 +201,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = IIBLND_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -168,7 +209,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = IIBLND_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -176,7 +217,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = IIBLND_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -184,7 +225,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 11,
-+ .ctl_name = IIBLND_PEER_CREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof(int),
-@@ -192,7 +233,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 12,
-+ .ctl_name = IIBLND_SD_RETRIES,
- .procname = "sd_retries",
- .data = &sd_retries,
- .maxlen = sizeof(int),
-@@ -200,7 +241,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 13,
-+ .ctl_name = IIBLND_KEEPALIVE,
- .procname = "keepalive",
- .data = &keepalive,
- .maxlen = sizeof(int),
-@@ -208,7 +249,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 14,
-+ .ctl_name = IIBLND_CONCURRENT_SENDS,
- .procname = "concurrent_sends",
- .data = &concurrent_sends,
- .maxlen = sizeof(int),
-@@ -220,7 +261,7 @@
-
- static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
- {
-- .ctl_name = 203,
-+ .ctl_name = CTL_IIBLND,
- .procname = "openibnal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/o2iblnd/o2iblnd.h lustre/lnet/klnds/o2iblnd/o2iblnd.h
---- lustre~/lnet/klnds/o2iblnd/o2iblnd.h 2008-03-14 19:18:05.000000000 +0100
-+++ lustre/lnet/klnds/o2iblnd/o2iblnd.h 2008-10-10 14:58:53.000000000 +0200
-@@ -759,3 +759,13 @@
-
-
-
-+/* compat macros */
-+#ifndef HAVE_SCATTERLIST_SETPAGE
-+static inline void sg_set_page(struct scatterlist *sg, struct page *page,
-+ unsigned int len, unsigned int offset)
-+{
-+ sg->page = page;
-+ sg->offset = offset;
-+ sg->length = len;
-+}
-+#endif
-diff -urNad lustre~/lnet/klnds/o2iblnd/o2iblnd_cb.c lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
---- lustre~/lnet/klnds/o2iblnd/o2iblnd_cb.c 2008-03-28 08:12:34.000000000 +0100
-+++ lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c 2008-10-10 14:58:53.000000000 +0200
-@@ -626,9 +626,7 @@
- fragnob = min((int)(iov->iov_len - offset), nob);
- fragnob = min(fragnob, (int)PAGE_SIZE - page_offset);
-
-- sg->page = page;
-- sg->offset = page_offset;
-- sg->length = fragnob;
-+ sg_set_page(sg, page, fragnob, page_offset);
- sg++;
-
- if (offset + fragnob < iov->iov_len) {
-@@ -691,11 +689,10 @@
- fragnob = min((int)(kiov->kiov_len - offset), nob);
-
- memset(sg, 0, sizeof(*sg));
-- sg->page = kiov->kiov_page;
-- sg->offset = kiov->kiov_offset + offset;
-- sg->length = fragnob;
-+ sg_set_page(sg, kiov->kiov_page, fragnob,
-+ kiov->kiov_offset + offset);
- sg++;
--
-+
- offset = 0;
- kiov++;
- nkiov--;
-diff -urNad lustre~/lnet/klnds/o2iblnd/o2iblnd_modparams.c lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c
---- lustre~/lnet/klnds/o2iblnd/o2iblnd_modparams.c 2007-09-10 17:35:53.000000000 +0200
-+++ lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -113,9 +113,51 @@
-
- static char ipif_basename_space[32];
-
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_O2IBLND 205
-+
-+enum {
-+ O2IBLND_SERVICE = 1,
-+ O2IBLND_CKSUM,
-+ O2IBLND_TIMEOUT,
-+ O2IBLND_NTX,
-+ O2IBLND_CREDITS,
-+ O2IBLND_PEER_CREDITS,
-+ O2IBLND_IPIF_BASENAME,
-+ O2IBLND_RETRY_COUNT,
-+ O2IBLND_RNR_RETRY_COUNT,
-+ O2IBLND_KEEPALIVE,
-+ O2IBLND_CONCURRENT_SENDS,
-+ O2IBLND_IB_MTU,
-+ O2IBLND_FMR_POOL_SIZE,
-+ O2IBLND_FMR_FLUSH_TRIGGER,
-+ O2IBLND_FMR_CACHE
-+};
-+#else
-+#define CTL_O2IBLND CTL_UNNUMBERED
-+
-+#define O2IBLND_SERVICE CTL_UNNUMBERED
-+#define O2IBLND_CKSUM CTL_UNNUMBERED
-+#define O2IBLND_TIMEOUT CTL_UNNUMBERED
-+#define O2IBLND_NTX CTL_UNNUMBERED
-+#define O2IBLND_CREDITS CTL_UNNUMBERED
-+#define O2IBLND_PEER_CREDITS CTL_UNNUMBERED
-+#define O2IBLND_IPIF_BASENAME CTL_UNNUMBERED
-+#define O2IBLND_RETRY_COUNT CTL_UNNUMBERED
-+#define O2IBLND_RNR_RETRY_COUNT CTL_UNNUMBERED
-+#define O2IBLND_KEEPALIVE CTL_UNNUMBERED
-+#define O2IBLND_CONCURRENT_SENDS CTL_UNNUMBERED
-+#define O2IBLND_IB_MTU CTL_UNNUMBERED
-+#define O2IBLND_FMR_POOL_SIZE CTL_UNNUMBERED
-+#define O2IBLND_FMR_FLUSH_TRIGGER CTL_UNNUMBERED
-+#define O2IBLND_FMR_CACHE CTL_UNNUMBERED
-+
-+#endif
-+
- static cfs_sysctl_table_t kiblnd_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = O2IBLND_SERVICE,
- .procname = "service",
- .data = &service,
- .maxlen = sizeof(int),
-@@ -123,7 +165,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = O2IBLND_CKSUM,
- .procname = "cksum",
- .data = &cksum,
- .maxlen = sizeof(int),
-@@ -131,7 +173,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = O2IBLND_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -139,7 +181,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = O2IBLND_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -147,7 +189,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = O2IBLND_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -155,7 +197,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = O2IBLND_PEER_CREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof(int),
-@@ -163,7 +205,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = O2IBLND_IPIF_BASENAME,
- .procname = "ipif_name",
- .data = ipif_basename_space,
- .maxlen = sizeof(ipif_basename_space),
-@@ -171,7 +213,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = O2IBLND_RETRY_COUNT,
- .procname = "retry_count",
- .data = &retry_count,
- .maxlen = sizeof(int),
-@@ -179,7 +221,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = O2IBLND_RNR_RETRY_COUNT,
- .procname = "rnr_retry_count",
- .data = &rnr_retry_count,
- .maxlen = sizeof(int),
-@@ -187,7 +229,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = O2IBLND_KEEPALIVE,
- .procname = "keepalive",
- .data = &keepalive,
- .maxlen = sizeof(int),
-@@ -195,7 +237,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 11,
-+ .ctl_name = O2IBLND_CONCURRENT_SENDS,
- .procname = "concurrent_sends",
- .data = &concurrent_sends,
- .maxlen = sizeof(int),
-@@ -203,7 +245,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 12,
-+ .ctl_name = O2IBLND_IB_MTU,
- .procname = "ib_mtu",
- .data = &ib_mtu,
- .maxlen = sizeof(int),
-@@ -212,7 +254,7 @@
- },
- #if IBLND_MAP_ON_DEMAND
- {
-- .ctl_name = 13,
-+ .ctl_name = O2IBLND_FMR_POOL_SIZE,
- .procname = "fmr_pool_size",
- .data = &fmr_pool_size,
- .maxlen = sizeof(int),
-@@ -220,7 +262,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 14,
-+ .ctl_name = O2IBLND_FMR_FLUSH_TRIGGER,
- .procname = "fmr_flush_trigger",
- .data = &fmr_flush_trigger,
- .maxlen = sizeof(int),
-@@ -228,7 +270,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 15,
-+ .ctl_name = O2IBLND_FMR_CACHE,
- .procname = "fmr_cache",
- .data = &fmr_cache,
- .maxlen = sizeof(int),
-@@ -241,7 +283,7 @@
-
- static cfs_sysctl_table_t kiblnd_top_ctl_table[] = {
- {
-- .ctl_name = 203,
-+ .ctl_name = CTL_O2IBLND,
- .procname = "o2iblnd",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/openiblnd/openiblnd_modparams.c lustre/lnet/klnds/openiblnd/openiblnd_modparams.c
---- lustre~/lnet/klnds/openiblnd/openiblnd_modparams.c 2007-09-10 17:35:54.000000000 +0200
-+++ lustre/lnet/klnds/openiblnd/openiblnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -83,9 +83,42 @@
-
- #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
-
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+#define CTL_KIBNAL 203
-+enum {
-+ KIBNAL_IPIF_BASENAME = 1,
-+ KIBNAL_N_CONND,
-+ KIBNAL_RECONNECT_MIN,
-+ KIBNAL_RECONNECT_MAX,
-+ KIBNAL_CONCURRENT_PEERS,
-+ KIBNAL_CKSUM,
-+ KIBNAL_TIMEOUT,
-+ KIBNAL_NTX,
-+ KIBNAL_CREDITS,
-+ KIBNAL_PEER_CREDITS,
-+ KIBNAL_KEEPALIVE
-+};
-+#else
-+
-+#define CTL_KIBNAL CTL_UNNUMBERED
-+
-+#define KIBNAL_IPIF_BASENAME CTL_UNNUMBERED
-+#define KIBNAL_N_CONND CTL_UNNUMBERED
-+#define KIBNAL_RECONNECT_MIN CTL_UNNUMBERED
-+#define KIBNAL_RECONNECT_MAX CTL_UNNUMBERED
-+#define KIBNAL_CONCURRENT_PEERS CTL_UNNUMBERED
-+#define KIBNAL_CKSUM CTL_UNNUMBERED
-+#define KIBNAL_TIMEOUT CTL_UNNUMBERED
-+#define kiBNAL_NTX CTL_UNNUMBERED
-+#define KIBNAL_CREDITS CTL_UNNUMBERED
-+#define KIBNAL_PEER_CREDITS CTL_UNNUMBERED
-+#define KIBNAL_KEEPALIVE CTL_UNNUMBERED
-+
-+#endif
-+
- static cfs_sysctl_table_t kibnal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = KIBNAL_IPIF_BASENAME,
- .procname = "ipif_basename",
- .data = &ipif_basename,
- .maxlen = 1024,
-@@ -93,7 +126,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = KIBNAL_N_CONND,
- .procname = "n_connd",
- .data = &n_connd,
- .maxlen = sizeof(int),
-@@ -101,7 +134,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = KIBNAL_RECONNECT_MIN,
- .procname = "min_reconnect_interval",
- .data = &min_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -109,7 +142,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = KIBNAL_RECONNECT_MAX,
- .procname = "max_reconnect_interval",
- .data = &max_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -117,7 +150,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = KIBNAL_CONCURRENT_PEERS,
- .procname = "concurrent_peers",
- .data = &concurrent_peers,
- .maxlen = sizeof(int),
-@@ -125,7 +158,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = KIBNAL_CKSUM,
- .procname = "cksum",
- .data = &cksum,
- .maxlen = sizeof(int),
-@@ -133,7 +166,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = KIBNAL_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -141,7 +174,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = KIBNAL_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -149,7 +182,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = KIBNAL_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -157,7 +190,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = KIBNAL_PEER_CREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof(int),
-@@ -165,7 +198,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 11,
-+ .ctl_name = KIBNAL_KEEPALIVE,
- .procname = "keepalive",
- .data = &keepalive,
- .maxlen = sizeof(int),
-@@ -177,7 +210,7 @@
-
- static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
- {
-- .ctl_name = 203,
-+ .ctl_name = CTL_KIBNAL,
- .procname = "openibnal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/ptllnd/ptllnd_modparams.c lustre/lnet/klnds/ptllnd/ptllnd_modparams.c
---- lustre~/lnet/klnds/ptllnd/ptllnd_modparams.c 2007-09-27 04:30:24.000000000 +0200
-+++ lustre/lnet/klnds/ptllnd/ptllnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -134,9 +134,54 @@
- }
- #endif
-
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_PTLLND 207
-+
-+enum {
-+ KPTLLND_NTX = 1,
-+ KPTLLND_MAX_NODES,
-+ KPTLLND_MAX_PROC_PER_NODE,
-+ KPTLLND_CHECKSUM,
-+ KPTLLND_TIMEOUT,
-+ KPTLLND_PORTAL,
-+ KPTLLND_PID,
-+ KPTLLND_RXB_PAGES,
-+ KPTLLND_CREDITS,
-+ KPTLLND_PEERCREDITS,
-+ KPTLLND_MAX_MSG_SIZE,
-+ KPTLLND_PEER_HASH_SIZE,
-+ KPTLLND_RESHEDULE_LOOPS,
-+ KPTLLND_ACK_PUTS,
-+ KPTLLND_TRACETIMEOUT,
-+ KPTLLND_TRACEBASENAME,
-+ KPTLLND_SIMULATION_BITMAP
-+};
-+#else
-+#define CTL_PTLLND CTL_UNNUMBERED
-+
-+#define KPTLLND_NTX CTL_UNNUMBERED
-+#define KPTLLND_MAX_NODES CTL_UNNUMBERED
-+#define KPTLLND_MAX_PROC_PER_NODE CTL_UNNUMBERED
-+#define KPTLLND_CHECKSUM CTL_UNNUMBERED
-+#define KPTLLND_TIMEOUT CTL_UNNUMBERED
-+#define KPTLLND_PORTAL CTL_UNNUMBERED
-+#define KPTLLND_PID CTL_UNNUMBERED
-+#define KPTLLND_RXB_PAGES CTL_UNNUMBERED
-+#define KPTLLND_CREDITS CTL_UNNUMBERED
-+#define KPTLLND_PEERCREDITS CTL_UNNUMBERED
-+#define KPTLLND_MAX_MSG_SIZE CTL_UNNUMBERED
-+#define KPTLLND_PEER_HASH_SIZE CTL_UNNUMBERED
-+#define KPTLLND_RESHEDULE_LOOPS CTL_UNNUMBERED
-+#define KPTLLND_ACK_PUTS CTL_UNNUMBERED
-+#define KPTLLND_TRACETIMEOUT CTL_UNNUMBERED
-+#define KPTLLND_TRACEBASENAME CTL_UNNUMBERED
-+#define KPTLLND_SIMULATION_BITMAP CTL_UNNUMBERED
-+#endif
-+
- static cfs_sysctl_table_t kptllnd_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = KPTLLND_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -144,15 +189,15 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = KPTLLND_MAX_NODES,
- .procname = "max_nodes",
- .data = &max_nodes,
- .maxlen = sizeof(int),
- .mode = 0444,
-- .proc_handler = &proc_dointvec
-+
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = KPTLLND_MAX_PROC_PER_NODE,
- .procname = "max_procs_per_node",
- .data = &max_procs_per_node,
- .maxlen = sizeof(int),
-@@ -160,7 +205,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = KPTLLND_CHECKSUM,
- .procname = "checksum",
- .data = &checksum,
- .maxlen = sizeof(int),
-@@ -168,7 +213,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = KPTLLND_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -176,7 +221,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = KPTLLND_PORTAL,
- .procname = "portal",
- .data = &portal,
- .maxlen = sizeof(int),
-@@ -184,7 +229,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = KPTLLND_PID,
- .procname = "pid",
- .data = &pid,
- .maxlen = sizeof(int),
-@@ -192,7 +237,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = KPTLLND_RXB_PAGES,
- .procname = "rxb_npages",
- .data = &rxb_npages,
- .maxlen = sizeof(int),
-@@ -200,7 +245,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = KPTLLND_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -208,7 +253,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = KPTLLND_PEERCREDITS,
- .procname = "peercredits",
- .data = &peercredits,
- .maxlen = sizeof(int),
-@@ -216,7 +261,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 11,
-+ .ctl_name = KPTLLND_MAX_MSG_SIZE,
- .procname = "max_msg_size",
- .data = &max_msg_size,
- .maxlen = sizeof(int),
-@@ -224,7 +269,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 12,
-+ .ctl_name = KPTLLND_PEER_HASH_SIZE,
- .procname = "peer_hash_table_size",
- .data = &peer_hash_table_size,
- .maxlen = sizeof(int),
-@@ -232,7 +277,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 13,
-+ .ctl_name = KPTLLND_RESHEDULE_LOOPS,
- .procname = "reschedule_loops",
- .data = &reschedule_loops,
- .maxlen = sizeof(int),
-@@ -240,7 +285,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 14,
-+ .ctl_name = KPTLLND_ACK_PUTS,
- .procname = "ack_puts",
- .data = &ack_puts,
- .maxlen = sizeof(int),
-@@ -249,7 +294,7 @@
- },
- #ifdef CRAY_XT3
- {
-- .ctl_name = 15,
-+ .ctl_name = KPTLLND_TRACETIMEOUT,
- .procname = "ptltrace_on_timeout",
- .data = &ptltrace_on_timeout,
- .maxlen = sizeof(int),
-@@ -257,7 +302,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 16,
-+ .ctl_name = KPTLLND_TRACEBASENAME,
- .procname = "ptltrace_basename",
- .data = ptltrace_basename_space,
- .maxlen = sizeof(ptltrace_basename_space),
-@@ -268,7 +313,7 @@
- #endif
- #ifdef PJK_DEBUGGING
- {
-- .ctl_name = 17,
-+ .ctl_name = KPTLLND_SIMULATION_BITMAP,
- .procname = "simulation_bitmap",
- .data = &simulation_bitmap,
- .maxlen = sizeof(int),
-@@ -282,7 +327,7 @@
-
- static cfs_sysctl_table_t kptllnd_top_ctl_table[] = {
- {
-- .ctl_name = 203,
-+ .ctl_name = CTL_PTLLND,
- .procname = "ptllnd",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/qswlnd/qswlnd_modparams.c lustre/lnet/klnds/qswlnd/qswlnd_modparams.c
---- lustre~/lnet/klnds/qswlnd/qswlnd_modparams.c 2007-09-10 17:35:55.000000000 +0200
-+++ lustre/lnet/klnds/qswlnd/qswlnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -1,4 +1,7 @@
- /*
-+ * -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
-+ * vim:expandtab:shiftwidth=8:tabstop=8:
-+ *
- * Copyright (C) 2002-2004 Cluster File Systems, Inc.
- * Author: Eric Barton <eric at bartonsoftware.com>
- *
-@@ -84,9 +87,45 @@
- };
-
- #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
-+
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_KQSWNAL 207
-+
-+enum
-+ KQSWNAL_TX_MAXCONTIG = 1,
-+ KQSWNAL_NTXMSG,
-+ KQSWNAL_CREDITS,
-+ KQSWNAL_PEERCREDITS,
-+ KQSWNAL_NRXMSGS_LARGE,
-+ KQSWNAL_EP_ENVELOPES_LARGE,
-+ KQSWNAL_NRXMSGS_SMALL,
-+ KQSWNAL_EP_ENVELOPES_SMALL,
-+ KQSWNAL_OPTIMIZED_PUTS,
-+ KQSWNAL_OPTIMIZED_GETS,
-+ KQSWNAL_INJECT_CSUM_ERROR
-+};
-+#else
-+
-+#define CTL_KQSWNAL CTL_UNNUMBERED
-+
-+#define KQSWNAL_TX_MAXCONTIG CTL_UNNUMBERED
-+#define KQSWNAL_NTXMSG CTL_UNNUMBERED
-+#define KQSWNAL_CREDITS CTL_UNNUMBERED
-+#define KQSWNAL_PEERCREDITS CTL_UNNUMBERED
-+#define KQSWNAL_NRXMSGS_LARGE CTL_UNNUMBERED
-+#define KQSWNAL_EP_ENVELOPES_LARGE CTL_UNNUMBERED
-+#define KQSWNAL_NRXMSGS_SMALL CTL_UNNUMBERED
-+#define KQSWNAL_EP_ENVELOPES_SMALL CTL_UNNUMBERED
-+#define KQSWNAL_OPTIMIZED_PUTS CTL_UNNUMBERED
-+#define KQSWNAL_OPTIMIZED_GETS CTL_UNNUMBERED
-+#define KQSWNAL_INJECT_CSUM_ERROR CTL_UNNUMBERED
-+
-+#endif
-+
- static cfs_sysctl_table_t kqswnal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = KQSWNAL_TX_MAXCONTIG,
- .procname = "tx_maxcontig",
- .data = &tx_maxcontig,
- .maxlen = sizeof (int),
-@@ -94,7 +133,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = KQSWNAL_NTXMSG,
- .procname = "ntxmsgs",
- .data = &ntxmsgs,
- .maxlen = sizeof (int),
-@@ -102,7 +141,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = KQSWNAL_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof (int),
-@@ -110,7 +149,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = KQSWNAL_PEERCREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof (int),
-@@ -118,7 +157,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = KQSWNAL_NRXMSGS_LARGE,
- .procname = "nrxmsgs_large",
- .data = &nrxmsgs_large,
- .maxlen = sizeof (int),
-@@ -126,7 +165,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = KQSWNAL_EP_ENVELOPES_LARGE,
- .procname = "ep_envelopes_large",
- .data = &ep_envelopes_large,
- .maxlen = sizeof (int),
-@@ -134,7 +173,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = KQSWNAL_NRXMSGS_SMALL,
- .procname = "nrxmsgs_small",
- .data = &nrxmsgs_small,
- .maxlen = sizeof (int),
-@@ -142,7 +181,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = KQSWNAL_EP_ENVELOPES_SMALL,
- .procname = "ep_envelopes_small",
- .data = &ep_envelopes_small,
- .maxlen = sizeof (int),
-@@ -150,7 +189,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = KQSWNAL_OPTIMIZED_PUTS,
- .procname = "optimized_puts",
- .data = &optimized_puts,
- .maxlen = sizeof (int),
-@@ -158,7 +197,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = KQSWNAL_OPTIMIZED_GETS,
- .procname = "optimized_gets",
- .data = &optimized_gets,
- .maxlen = sizeof (int),
-@@ -167,7 +206,7 @@
- },
- #if KQSW_CKSUM
- {
-- .ctl_name = 11,
-+ .ctl_name = KQSWNAL_INJECT_CSUM_ERROR,
- .procname = "inject_csum_error",
- .data = &inject_csum_error,
- .maxlen = sizeof (int),
-@@ -180,7 +219,7 @@
-
- static cfs_sysctl_table_t kqswnal_top_ctl_table[] = {
- {
-- .ctl_name = 201,
-+ .ctl_name = CTL_KQSWNAL,
- .procname = "qswnal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/ralnd/ralnd_modparams.c lustre/lnet/klnds/ralnd/ralnd_modparams.c
---- lustre~/lnet/klnds/ralnd/ralnd_modparams.c 2007-08-02 10:30:12.000000000 +0200
-+++ lustre/lnet/klnds/ralnd/ralnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -72,9 +72,37 @@
- };
-
- #if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM
-+
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+#define CTL_KRANAL 202
-+enum {
-+ KRANAL_N_CONND = 1,
-+ KRANAL_RECONNECT_MIN,
-+ KRANAL_RECONNECT_MAX,
-+ KRANAL_NTX,
-+ KRANAL_CREDITS,
-+ KRANAL_PEERCREDITS,
-+ KRANAL_FMA_CQ_SIZE,
-+ KRANAL_TIMEOUT,
-+ KRANAL_IMMEDIATE_MAX
-+};
-+#else
-+#define CTL_KRANAL CTL_UNNUMBERED
-+
-+#define KRANAL_N_CONND CTL_UNNUMBERED
-+#define KRANAL_RECONNECT_MIN CTL_UNNUMBERED
-+#define KRANAL_RECONNECT_MAX CTL_UNNUMBERED
-+#define KRANAL_NTX CTL_UNNUMBERED
-+#define KRANAL_CREDITS CTL_UNNUMBERED
-+#define KRANAL_PEERCREDITS CTL_UNNUMBERED
-+#define KRANAL_FMA_CQ_SIZE CTL_UNNUMBERED
-+#define KRANAL_TIMEOUT CTL_UNNUMBERED
-+#define KRANAL_IMMEDIATE_MAX CTL_UNNUMBERED
-+#endif
-+
- static cfs_sysctl_table_t kranal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = KRANAL_N_CONND,
- .procname = "n_connd",
- .data = &n_connd,
- .maxlen = sizeof(int),
-@@ -82,7 +110,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = KRANAL_RECONNECT_MIN,
- .procname = "min_reconnect_interval",
- .data = &min_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -90,7 +118,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = KRANAL_RECONNECT_MAX,
- .procname = "max_reconnect_interval",
- .data = &max_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -98,7 +126,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = KRANAL_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -106,7 +134,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = KRANAL_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -114,7 +142,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = KRANAL_PEERCREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof(int),
-@@ -122,7 +150,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = KRANAL_FMA_CQ_SIZE,
- .procname = "fma_cq_size",
- .data = &fma_cq_size,
- .maxlen = sizeof(int),
-@@ -130,7 +158,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = KRANAL_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -138,7 +166,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = KRANAL_IMMEDIATE_MAX,
- .procname = "max_immediate",
- .data = &max_immediate,
- .maxlen = sizeof(int),
-@@ -150,7 +178,7 @@
-
- static cfs_sysctl_table_t kranal_top_ctl_table[] = {
- {
-- .ctl_name = 202,
-+ .ctl_name = CTL_KRANAL,
- .procname = "ranal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/klnds/socklnd/socklnd_lib-linux.c lustre/lnet/klnds/socklnd/socklnd_lib-linux.c
---- lustre~/lnet/klnds/socklnd/socklnd_lib-linux.c 2007-09-11 21:39:20.000000000 +0200
-+++ lustre/lnet/klnds/socklnd/socklnd_lib-linux.c 2008-10-10 14:58:53.000000000 +0200
-@@ -5,197 +5,244 @@
- #include "socklnd.h"
-
- # if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
--static cfs_sysctl_table_t ksocknal_ctl_table[21];
-
--cfs_sysctl_table_t ksocknal_top_ctl_table[] = {
-- {
-- .ctl_name = 200,
-- .procname = "socknal",
-- .data = NULL,
-- .maxlen = 0,
-- .mode = 0555,
-- .child = ksocknal_ctl_table
-- },
-- { 0 }
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_SOCKLND 209
-+
-+enum {
-+ SOCKLND_TIMEOUT = 1,
-+ SOCKLND_CREDITS,
-+ SOCKLND_PEER_CREDITS,
-+ SOCKLND_NCONNDS,
-+ SOCKLND_RECONNECTS_MIN,
-+ SOCKLND_RECONNECTS_MAX,
-+ SOCKLND_EAGER_ACK,
-+ SOCKLND_ZERO_COPY,
-+ SOCKLND_TYPED,
-+ SOCKLND_BULK_MIN,
-+ SOCKLND_RX_BUFFER_SIZE,
-+ SOCKLND_TX_BUFFER_SIZE,
-+ SOCKLND_NAGLE,
-+ SOCKLND_IRQ_AFFINITY,
-+ SOCKLND_KEEPALIVE_IDLE,
-+ SOCKLND_KEEPALIVE_COUNT,
-+ SOCKLND_KEEPALIVE_INTVL,
-+ SOCKLND_BACKOFF_INIT,
-+ SOCKLND_BACKOFF_MAX,
-+ SOCKLND_PROTOCOL
- };
-+#else
-+#define CTL_SOCKLND CTL_UNNUMBERED
-
--int
--ksocknal_lib_tunables_init ()
--{
-- int i = 0;
-- int j = 1;
-+#define SOCKLND_TIMEOUT CTL_UNNUMBERED
-+#define SOCKLND_CREDITS CTL_UNNUMBERED
-+#define SOCKLND_PEER_CREDITS CTL_UNNUMBERED
-+#define SOCKLND_NCONNDS CTL_UNNUMBERED
-+#define SOCKLND_RECONNECTS_MIN CTL_UNNUMBERED
-+#define SOCKLND_RECONNECTS_MAX CTL_UNNUMBERED
-+#define SOCKLND_EAGER_ACK CTL_UNNUMBERED
-+#define SOCKLND_ZERO_COPY CTL_UNNUMBERED
-+#define SOCKLND_TYPED CTL_UNNUMBERED
-+#define SOCKLND_BULK_MIN CTL_UNNUMBERED
-+#define SOCKLND_RX_BUFFER_SIZE CTL_UNNUMBERED
-+#define SOCKLND_TX_BUFFER_SIZE CTL_UNNUMBERED
-+#define SOCKLND_NAGLE CTL_UNNUMBERED
-+#define SOCKLND_IRQ_AFFINITY CTL_UNNUMBERED
-+#define SOCKLND_KEEPALIVE_IDLE CTL_UNNUMBERED
-+#define SOCKLND_KEEPALIVE_COUNT CTL_UNNUMBERED
-+#define SOCKLND_KEEPALIVE_INTVL CTL_UNNUMBERED
-+#define SOCKLND_BACKOFF_INIT CTL_UNNUMBERED
-+#define SOCKLND_BACKOFF_MAX CTL_UNNUMBERED
-+#define SOCKLND_PROTOCOL CTL_UNNUMBERED
-+#endif
-
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+static cfs_sysctl_table_t ksocknal_ctl_table[] = {
-+ {
-+ .ctl_name = SOCKLND_TIMEOUT,
- .procname = "timeout",
- .data = ksocknal_tunables.ksnd_timeout,
- .maxlen = sizeof (int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_CREDITS,
- .procname = "credits",
- .data = ksocknal_tunables.ksnd_credits,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_PEER_CREDITS,
- .procname = "peer_credits",
- .data = ksocknal_tunables.ksnd_peercredits,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_NCONNDS,
- .procname = "nconnds",
- .data = ksocknal_tunables.ksnd_nconnds,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_RECONNECTS_MIN,
- .procname = "min_reconnectms",
- .data = ksocknal_tunables.ksnd_min_reconnectms,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_RECONNECTS_MAX,
- .procname = "max_reconnectms",
- .data = ksocknal_tunables.ksnd_max_reconnectms,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_EAGER_ACK,
- .procname = "eager_ack",
- .data = ksocknal_tunables.ksnd_eager_ack,
- .maxlen = sizeof (int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_ZERO_COPY,
- .procname = "zero_copy",
- .data = ksocknal_tunables.ksnd_zc_min_frag,
- .maxlen = sizeof (int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_TYPED,
- .procname = "typed",
- .data = ksocknal_tunables.ksnd_typed_conns,
- .maxlen = sizeof (int),
- .mode = 0444,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_BULK_MIN,
- .procname = "min_bulk",
- .data = ksocknal_tunables.ksnd_min_bulk,
- .maxlen = sizeof (int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_RX_BUFFER_SIZE,
- .procname = "rx_buffer_size",
- .data = ksocknal_tunables.ksnd_rx_buffer_size,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_TX_BUFFER_SIZE,
- .procname = "tx_buffer_size",
- .data = ksocknal_tunables.ksnd_tx_buffer_size,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_NAGLE,
- .procname = "nagle",
- .data = ksocknal_tunables.ksnd_nagle,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-+ },
- #ifdef CPU_AFFINITY
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ {
-+ .ctl_name = SOCKLND_IRQ_AFFINITY,
- .procname = "irq_affinity",
- .data = ksocknal_tunables.ksnd_irq_affinity,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-+ },
- #endif
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ {
-+ .ctl_name = SOCKLND_KEEPALIVE_IDLE,
- .procname = "keepalive_idle",
- .data = ksocknal_tunables.ksnd_keepalive_idle,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_KEEPALIVE_COUNT,
- .procname = "keepalive_count",
- .data = ksocknal_tunables.ksnd_keepalive_count,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_KEEPALIVE_INTVL,
- .procname = "keepalive_intvl",
- .data = ksocknal_tunables.ksnd_keepalive_intvl,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-+ },
- #ifdef SOCKNAL_BACKOFF
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ {
-+ .ctl_name = SOCKLND_BACKOFF_INIT,
- .procname = "backoff_init",
- .data = ksocknal_tunables.ksnd_backoff_init,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ },
-+ {
-+ .ctl_name = SOCKLND_BACKOFF_MAX,
- .procname = "backoff_max",
- .data = ksocknal_tunables.ksnd_backoff_max,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-+ }
- #endif
- #if SOCKNAL_VERSION_DEBUG
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
-- .ctl_name = j++,
-+ {
-+ .ctl_name = SOCKLND_PROTOCOL,
- .procname = "protocol",
- .data = ksocknal_tunables.ksnd_protocol,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = &proc_dointvec
-- };
-+ },
- #endif
-- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) { 0 };
-+ {0}
-+};
-
-- LASSERT (j == i);
-- LASSERT (i <= sizeof(ksocknal_ctl_table)/sizeof(ksocknal_ctl_table[0]));
-
-+cfs_sysctl_table_t ksocknal_top_ctl_table[] = {
-+ {
-+ .ctl_name = CTL_SOCKLND,
-+ .procname = "socknal",
-+ .data = NULL,
-+ .maxlen = 0,
-+ .mode = 0555,
-+ .child = ksocknal_ctl_table
-+ },
-+ { 0 }
-+};
-+
-+int
-+ksocknal_lib_tunables_init ()
-+{
- ksocknal_tunables.ksnd_sysctl =
- cfs_register_sysctl_table(ksocknal_top_ctl_table, 0);
-
-diff -urNad lustre~/lnet/klnds/viblnd/viblnd_modparams.c lustre/lnet/klnds/viblnd/viblnd_modparams.c
---- lustre~/lnet/klnds/viblnd/viblnd_modparams.c 2007-09-27 04:30:24.000000000 +0200
-+++ lustre/lnet/klnds/viblnd/viblnd_modparams.c 2008-10-10 14:58:53.000000000 +0200
-@@ -125,6 +125,56 @@
- #endif
- };
-
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_VIBLND 209
-+
-+enum {
-+ VIBLND_SERVICE = 1,
-+ VIBLND_RECONNECT_MIN,
-+ VIBLND_RECONNECT_MAX,
-+ VIBLND_CONCURRENT_PEERS,
-+ VIBLND_CHKSUM,
-+ VIBLND_TIMEOUT,
-+ VIBLND_NTX,
-+ VIBLND_CREDITS,
-+ VIBLND_PEER_CREDITS,
-+ VIBLND_ARP_RETRIES,
-+ VIBLND_HCA_BASENAME,
-+ VIBLND_IPIF_BASENAME,
-+ VIBLND_LOCAL_ACK_TIMEOUT,
-+ VIBLND_RETRY_CNT
-+ VIBLND_RNR_CNT,
-+ VIBLND_RNR_NAK_TIMER,
-+ VIBLND_KEEPALIVE,
-+ VIBLND_CONCURRENT_SENDS,
-+ VIBLND_FMR_REMAPS
-+};
-+#else
-+#define CTL_VIBLND CTL_UNNUMBERED
-+
-+#define VIBLND_SERVICE CTL_UNNUMBERED
-+#define VIBLND_RECONNECT_MIN CTL_UNNUMBERED
-+#define VIBLND_RECONNECT_MAX CTL_UNNUMBERED
-+#define VIBLND_CONCURRENT_PEERS CTL_UNNUMBERED
-+#define VIBLND_CHKSUM CTL_UNNUMBERED
-+#define VIBLND_TIMEOUT CTL_UNNUMBERED
-+#define VIBLND_NTX CTL_UNNUMBERED
-+#define VIBLND_CREDITS CTL_UNNUMBERED
-+#define VIBLND_PEER_CREDITS CTL_UNNUMBERED
-+#define VIBLND_ARP_RETRIES CTL_UNNUMBERED
-+#define VIBLND_HCA_BASENAME CTL_UNNUMBERED
-+#define VIBLND_IPIF_BASENAME CTL_UNNUMBERED
-+#define VIBLND_LOCAL_ACK_TIMEOUT CTL_UNNUMBERED
-+#define VIBLND_RETRY_CNT CTL_UNNUMBERED
-+#define VIBLND_RNR_CNT CTL_UNNUMBERED
-+#define VIBLND_RNR_NAK_TIMER CTL_UNNUMBERED
-+#define VIBLND_KEEPALIVE CTL_UNNUMBERED
-+#define VIBLND_CONCURRENT_SENDS CTL_UNNUMBERED
-+#define VIBLND_FMR_REMAPS CTL_UNNUMBERED
-+
-+#endif
-+
- #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
-
- static char hca_basename_space[32];
-@@ -132,7 +182,7 @@
-
- static cfs_sysctl_table_t kibnal_ctl_table[] = {
- {
-- .ctl_name = 1,
-+ .ctl_name = VIBLND_SERVICE,
- .procname = "service_number",
- .data = &service_number,
- .maxlen = sizeof(int),
-@@ -140,7 +190,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 2,
-+ .ctl_name = VIBLND_RECONNECT_MIN,
- .procname = "min_reconnect_interval",
- .data = &min_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -148,7 +198,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 3,
-+ .ctl_name = VIBLND_RECONNECT_MAX,
- .procname = "max_reconnect_interval",
- .data = &max_reconnect_interval,
- .maxlen = sizeof(int),
-@@ -156,7 +206,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 4,
-+ .ctl_name = VIBLND_CONCURRENT_PEERS,
- .procname = "concurrent_peers",
- .data = &concurrent_peers,
- .maxlen = sizeof(int),
-@@ -164,7 +214,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 5,
-+ .ctl_name = VIBLND_CHKSUM,
- .procname = "cksum",
- .data = &cksum,
- .maxlen = sizeof(int),
-@@ -172,7 +222,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 6,
-+ .ctl_name = VIBLND_TIMEOUT,
- .procname = "timeout",
- .data = &timeout,
- .maxlen = sizeof(int),
-@@ -180,7 +230,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 7,
-+ .ctl_name = VIBLND_NTX,
- .procname = "ntx",
- .data = &ntx,
- .maxlen = sizeof(int),
-@@ -188,7 +238,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 8,
-+ .ctl_name = VIBLND_CREDITS,
- .procname = "credits",
- .data = &credits,
- .maxlen = sizeof(int),
-@@ -196,7 +246,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 9,
-+ .ctl_name = VIBLND_PEER_CREDITS,
- .procname = "peer_credits",
- .data = &peer_credits,
- .maxlen = sizeof(int),
-@@ -204,7 +254,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 10,
-+ .ctl_name = VIBLND_ARP_RETRIES,
- .procname = "arp_retries",
- .data = &arp_retries,
- .maxlen = sizeof(int),
-@@ -212,7 +262,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 11,
-+ .ctl_name = VIBLND_HCA_BASENAME,
- .procname = "hca_basename",
- .data = hca_basename_space,
- .maxlen = sizeof(hca_basename_space),
-@@ -220,7 +270,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 12,
-+ .ctl_name = VIBLND_IPIF_BASENAME,
- .procname = "ipif_basename",
- .data = ipif_basename_space,
- .maxlen = sizeof(ipif_basename_space),
-@@ -228,7 +278,7 @@
- .proc_handler = &proc_dostring
- },
- {
-- .ctl_name = 13,
-+ .ctl_name = VIBLND_LOCAL_ACK_TIMEOUT,
- .procname = "local_ack_timeout",
- .data = &local_ack_timeout,
- .maxlen = sizeof(int),
-@@ -236,7 +286,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 14,
-+ .ctl_name = VIBLND_RETRY_CNT,
- .procname = "retry_cnt",
- .data = &retry_cnt,
- .maxlen = sizeof(int),
-@@ -244,7 +294,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 15,
-+ .ctl_name = VIBLND_RNR_CNT,
- .procname = "rnr_cnt",
- .data = &rnr_cnt,
- .maxlen = sizeof(int),
-@@ -252,7 +302,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 16,
-+ .ctl_name = VIBLND_RNR_NAK_TIMER,
- .procname = "rnr_nak_timer",
- .data = &rnr_nak_timer,
- .maxlen = sizeof(int),
-@@ -260,7 +310,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 17,
-+ .ctl_name = VIBLND_KEEPALIVE,
- .procname = "keepalive",
- .data = &keepalive,
- .maxlen = sizeof(int),
-@@ -268,7 +318,7 @@
- .proc_handler = &proc_dointvec
- },
- {
-- .ctl_name = 18,
-+ .ctl_name = VIBLND_CONCURRENT_SENDS,
- .procname = "concurrent_sends",
- .data = &concurrent_sends,
- .maxlen = sizeof(int),
-@@ -277,7 +327,7 @@
- },
- #if IBNAL_USE_FMR
- {
-- .ctl_name = 19,
-+ .ctl_name = VIBLND_FMR_REMAPS,
- .procname = "fmr_remaps",
- .data = &fmr_remaps,
- .maxlen = sizeof(int),
-@@ -290,7 +340,7 @@
-
- static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
- {
-- .ctl_name = 203,
-+ .ctl_name = CTL_VIBLND,
- .procname = "vibnal",
- .data = NULL,
- .maxlen = 0,
-diff -urNad lustre~/lnet/libcfs/linux/linux-curproc.c lustre/lnet/libcfs/linux/linux-curproc.c
---- lustre~/lnet/libcfs/linux/linux-curproc.c 2007-02-10 01:04:59.000000000 +0100
-+++ lustre/lnet/libcfs/linux/linux-curproc.c 2008-10-10 14:58:53.000000000 +0200
-@@ -109,6 +109,19 @@
- current->cap_effective = cap;
- }
-
-+cfs_cap_t cfs_cap_convert_from_kernel(cfs_kernel_cap_t cap)
-+{
-+#if _LINUX_CAPABILITY_VERSION_3 || _LINUX_CAPABILITY_VERSION == 0x20071026
-+ /* XXX lost high byte */
-+ return cap.cap[0];
-+#elif _LINUX_CAPABILITY_VERSION == 0x19980330
-+ return cap;
-+#else
-+ #error "need correct _LINUX_CAPABILITY_VERSION "
-+#endif
-+}
-+
-+
- EXPORT_SYMBOL(cfs_curproc_uid);
- EXPORT_SYMBOL(cfs_curproc_pid);
- EXPORT_SYMBOL(cfs_curproc_gid);
-@@ -121,7 +134,7 @@
- EXPORT_SYMBOL(cfs_curproc_is_in_groups);
- EXPORT_SYMBOL(cfs_curproc_cap_get);
- EXPORT_SYMBOL(cfs_curproc_cap_set);
--
-+EXPORT_SYMBOL(cfs_cap_convert_from_kernel);
- /*
- * Local variables:
- * c-indentation-style: "K&R"
-diff -urNad lustre~/lnet/libcfs/linux/linux-proc.c lustre/lnet/libcfs/linux/linux-proc.c
---- lustre~/lnet/libcfs/linux/linux-proc.c 2008-03-25 13:23:25.000000000 +0100
-+++ lustre/lnet/libcfs/linux/linux-proc.c 2008-10-10 14:58:53.000000000 +0200
-@@ -61,7 +61,8 @@
- static cfs_sysctl_table_header_t *lnet_table_header = NULL;
- extern char lnet_upcall[1024];
-
--#define PSDEV_LNET (0x100)
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+#define CTL_LNET (0x100)
- enum {
- PSDEV_DEBUG = 1, /* control debugging */
- PSDEV_SUBSYSTEM_DEBUG, /* control debugging */
-@@ -80,8 +81,27 @@
- PSDEV_LNET_DAEMON_FILE, /* spool kernel debug buffer to file */
- PSDEV_LNET_DEBUG_MB, /* size of debug buffer */
- };
-+#else
-+#define CTL_LNET CTL_UNNUMBERED
-+#define PSDEV_DEBUG CTL_UNNUMBERED
-+#define PSDEV_SUBSYSTEM_DEBUG CTL_UNNUMBERED
-+#define PSDEV_PRINTK CTL_UNNUMBERED
-+#define PSDEV_CONSOLE_RATELIMIT CTL_UNNUMBERED
-+#define PSDEV_CONSOLE_MAX_DELAY_CS CTL_UNNUMBERED
-+#define PSDEV_CONSOLE_MIN_DELAY_CS CTL_UNNUMBERED
-+#define PSDEV_CONSOLE_BACKOFF CTL_UNNUMBERED
-+#define PSDEV_DEBUG_PATH CTL_UNNUMBERED
-+#define PSDEV_DEBUG_DUMP_PATH CTL_UNNUMBERED
-+#define PSDEV_LNET_UPCALL CTL_UNNUMBERED
-+#define PSDEV_LNET_MEMUSED CTL_UNNUMBERED
-+#define PSDEV_LNET_CATASTROPHE CTL_UNNUMBERED
-+#define PSDEV_LNET_PANIC_ON_LBUG CTL_UNNUMBERED
-+#define PSDEV_LNET_DUMP_KERNEL CTL_UNNUMBERED
-+#define PSDEV_LNET_DAEMON_FILE CTL_UNNUMBERED
-+#define PSDEV_LNET_DEBUG_MB CTL_UNNUMBERED
-+#endif
-
--static int
-+int
- proc_call_handler(void *data, int write,
- loff_t *ppos, void *buffer, size_t *lenp,
- int (*handler)(void *data, int write,
-@@ -100,17 +120,7 @@
- }
- return 0;
- }
--
--#define DECLARE_PROC_HANDLER(name) \
--static int \
--LL_PROC_PROTO(name) \
--{ \
-- DECLARE_LL_PROC_PPOS_DECL; \
-- \
-- return proc_call_handler(table->data, write, \
-- ppos, buffer, lenp, \
-- __##name); \
--}
-+EXPORT_SYMBOL(proc_call_handler);
-
- static int __proc_dobitmasks(void *data, int write,
- loff_t pos, void *buffer, int nob)
-@@ -182,11 +192,12 @@
-
- DECLARE_PROC_HANDLER(proc_daemon_file)
-
-+char tmpstr[32];
-+
- static int __proc_debug_mb(void *data, int write,
- loff_t pos, void *buffer, int nob)
- {
- if (!write) {
-- char tmpstr[32];
- int len = snprintf(tmpstr, sizeof(tmpstr), "%d",
- trace_get_debug_mb());
-
-@@ -301,7 +312,8 @@
- .data = &libcfs_debug,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dobitmasks
-+ .proc_handler = &proc_dobitmasks,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_SUBSYSTEM_DEBUG,
-@@ -309,7 +321,8 @@
- .data = &libcfs_subsystem_debug,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dobitmasks
-+ .proc_handler = &proc_dobitmasks,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_PRINTK,
-@@ -317,7 +330,8 @@
- .data = &libcfs_printk,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dobitmasks
-+ .proc_handler = &proc_dobitmasks,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_CONSOLE_RATELIMIT,
-@@ -325,30 +339,36 @@
- .data = &libcfs_console_ratelimit,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_CONSOLE_MAX_DELAY_CS,
- .procname = "console_max_delay_centisecs",
-+ .data = &libcfs_console_max_delay,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_console_max_delay_cs
-+ .proc_handler = &proc_console_max_delay_cs,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_CONSOLE_MIN_DELAY_CS,
- .procname = "console_min_delay_centisecs",
- .maxlen = sizeof(int),
-+ .data = &libcfs_console_min_delay,
- .mode = 0644,
-- .proc_handler = &proc_console_min_delay_cs
-+ .proc_handler = &proc_console_min_delay_cs,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_CONSOLE_BACKOFF,
- .procname = "console_backoff",
- .maxlen = sizeof(int),
-+ .data = &libcfs_console_backoff,
- .mode = 0644,
-- .proc_handler = &proc_console_backoff
-+ .proc_handler = &proc_console_backoff,
-+ .strategy = &sysctl_intvec,
- },
--
- {
- .ctl_name = PSDEV_DEBUG_PATH,
- .procname = "debug_path",
-@@ -356,8 +376,8 @@
- .maxlen = sizeof(debug_file_path),
- .mode = 0644,
- .proc_handler = &proc_dostring,
-+ .strategy = &sysctl_string,
- },
--
- {
- .ctl_name = PSDEV_LNET_UPCALL,
- .procname = "upcall",
-@@ -365,6 +385,7 @@
- .maxlen = sizeof(lnet_upcall),
- .mode = 0644,
- .proc_handler = &proc_dostring,
-+ .strategy = &sysctl_string,
- },
- {
- .ctl_name = PSDEV_LNET_MEMUSED,
-@@ -372,7 +393,8 @@
- .data = (int *)&libcfs_kmemory.counter,
- .maxlen = sizeof(int),
- .mode = 0444,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_LNET_CATASTROPHE,
-@@ -380,7 +402,8 @@
- .data = &libcfs_catastrophe,
- .maxlen = sizeof(int),
- .mode = 0444,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_LNET_PANIC_ON_LBUG,
-@@ -388,39 +411,52 @@
- .data = &libcfs_panic_on_lbug,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = PSDEV_LNET_DUMP_KERNEL,
- .procname = "dump_kernel",
-+ .data = tmpstr,
-+ .maxlen = 256,
- .mode = 0200,
- .proc_handler = &proc_dump_kernel,
-+ .strategy = &sysctl_string,
- },
- {
- .ctl_name = PSDEV_LNET_DAEMON_FILE,
- .procname = "daemon_file",
-+ .data = tmpstr,
- .mode = 0644,
-+ .maxlen = 256,
- .proc_handler = &proc_daemon_file,
-+ .strategy = &sysctl_string,
- },
- {
- .ctl_name = PSDEV_LNET_DEBUG_MB,
- .procname = "debug_mb",
-+ .data = tmpstr,
-+ .maxlen = sizeof(tmpstr),
- .mode = 0644,
- .proc_handler = &proc_debug_mb,
-+ .strategy = &sysctl_string,
- },
- {0}
- };
-
--static cfs_sysctl_table_t top_table[2] = {
-+static cfs_sysctl_table_t top_table[] = {
- {
-- .ctl_name = PSDEV_LNET,
-+ .ctl_name = CTL_LNET,
- .procname = "lnet",
-- .data = NULL,
-- .maxlen = 0,
- .mode = 0555,
-- .child = lnet_table
-+ .child = lnet_table,
-+#ifdef HAVE_PARENT_IN_CTLTABLE
-+ .parent = NULL,
-+#endif
- },
-- {0}
-+ {
-+ .ctl_name = 0
-+ }
- };
-
- int insert_proc(void)
-diff -urNad lustre~/lnet/libcfs/linux/linux-tcpip.c lustre/lnet/libcfs/linux/linux-tcpip.c
---- lustre~/lnet/libcfs/linux/linux-tcpip.c 2007-09-06 07:23:17.000000000 +0200
-+++ lustre/lnet/libcfs/linux/linux-tcpip.c 2008-10-10 14:58:53.000000000 +0200
-@@ -47,8 +47,11 @@
- CERROR ("Can't create socket: %d\n", rc);
- return rc;
- }
--
-+#if HAVE_EXTRA_SOCKMAP_FD_FLAG
-+ fd = sock_map_fd(sock, 0);
-+#else
- fd = sock_map_fd(sock);
-+#endif
- if (fd < 0) {
- rc = fd;
- sock_release(sock);
-diff -urNad lustre~/lnet/lnet/router_proc.c lustre/lnet/lnet/router_proc.c
---- lustre~/lnet/lnet/router_proc.c 2007-11-29 14:35:39.000000000 +0100
-+++ lustre/lnet/lnet/router_proc.c 2008-10-10 14:58:53.000000000 +0200
-@@ -32,12 +32,13 @@
-
- /* this is really lnet_proc.c */
-
--#define LNET_PROC_STATS "sys/lnet/stats"
--#define LNET_PROC_ROUTES "sys/lnet/routes"
--#define LNET_PROC_ROUTERS "sys/lnet/routers"
--#define LNET_PROC_PEERS "sys/lnet/peers"
--#define LNET_PROC_BUFFERS "sys/lnet/buffers"
--#define LNET_PROC_NIS "sys/lnet/nis"
-+#define LNET_PROC_ROOT "sys/lnet"
-+#define LNET_PROC_STATS LNET_PROC_ROOT"/stats"
-+#define LNET_PROC_ROUTES LNET_PROC_ROOT"/routes"
-+#define LNET_PROC_ROUTERS LNET_PROC_ROOT"/routers"
-+#define LNET_PROC_PEERS LNET_PROC_ROOT"/peers"
-+#define LNET_PROC_BUFFERS LNET_PROC_ROOT"/buffers"
-+#define LNET_PROC_NIS LNET_PROC_ROOT"/nis"
-
- static int
- lnet_router_proc_stats_read (char *page, char **start, off_t off,
-@@ -1007,6 +1008,12 @@
- {
- struct proc_dir_entry *pde;
-
-+ pde = proc_mkdir(LNET_PROC_ROOT, NULL);
-+ if (pde == NULL) {
-+ CERROR("couldn't create "LNET_PROC_ROOT"\n");
-+ return;
-+ }
-+
- /* Initialize LNET_PROC_STATS */
- pde = create_proc_entry (LNET_PROC_STATS, 0644, NULL);
- if (pde == NULL) {
-@@ -1078,6 +1085,7 @@
- remove_proc_entry(LNET_PROC_PEERS, 0);
- remove_proc_entry(LNET_PROC_BUFFERS, 0);
- remove_proc_entry(LNET_PROC_NIS, 0);
-+ remove_proc_entry(LNET_PROC_ROOT, 0);
- }
-
- #else
-diff -urNad lustre~/lustre/autoconf/lustre-core.m4 lustre/lustre/autoconf/lustre-core.m4
---- lustre~/lustre/autoconf/lustre-core.m4 2008-06-26 05:05:21.000000000 +0200
-+++ lustre/lustre/autoconf/lustre-core.m4 2008-10-10 15:19:32.000000000 +0200
-@@ -1064,27 +1064,90 @@
- ])
- ])
-
-+# Older kernels (2.6.18) doesn't know about .parent in
-+# ctl_table
-+AC_DEFUN([CLT_TABLE_HAS_PARENT],
-+[AC_MSG_CHECKING([sysctl has .parent])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/module.h>
-+ #include <linux/sysctl.h>
-+],[
-+ struct ctl_table random_table[] = {
-+ {
-+ .ctl_name = 1,
-+ .procname = "poolsize",
-+ .data = NULL,
-+ .maxlen = sizeof(int),
-+ .parent = NULL,
-+ },
-+ { .ctl_name = 0 }
-+ };
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_PARENT_IN_CTLTABLE, 1,
-+ [ctl_table knows .parent])
-+],[
-+ AC_MSG_RESULT(NO)
-+])
-+])
-+
-+AC_DEFUN([IGET_CALL_IS_PRESENT],
-+[AC_MSG_CHECKING([iget() call is available])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/fs.h>
-+],[
-+ iget(NULL,0);
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_IGET_CALL, 1,
-+ [iget call is available, which is removed in 2.6.26])
-+],[
-+ AC_MSG_RESULT(NO)
-+])
-+])
-+
- # RHEL5 PageChecked and SetPageChecked defined
- AC_DEFUN([LC_PAGE_CHECKED],
- [AC_MSG_CHECKING([kernel has PageChecked and SetPageChecked])
- LB_LINUX_TRY_COMPILE([
-- #include <linux/page-flags.h>
-+ #include <linux/page-flags.h>
-+ #include <linux/autoconf.h>
-+ #include <linux/mm_types.h>
- ],[
-+ struct page *p;
-+
-+ /* 2.6.26 use function instead of define for it */
-+ SetPageChecked(p);
-+ PageChecked(p);
-+],[
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_PAGE_CHECKED, 1,
-+ [does kernel have PageChecked and SetPageChecked])
-+],[
-+ AC_MSG_CHECKING([kernel has PageChecked and SetPageChecked defined])
-+ LB_LINUX_TRY_COMPILE([
-+ #include <linux/page-flags.h>
-+ #include <linux/autoconf.h>
-+ #include <linux/mm.h>
-+ ],[
- #ifndef PageChecked
- #error PageChecked not defined in kernel
- #endif
- #ifndef SetPageChecked
- #error SetPageChecked not defined in kernel
- #endif
--],[
-+ ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_PAGE_CHECKED, 1,
- [does kernel have PageChecked and SetPageChecked])
--],[
-+ ],[
- AC_MSG_RESULT(NO)
-+ ])
- ])
- ])
-
-+
-+
- AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE],
- [LB_CHECK_SYMBOL_EXPORT([truncate_complete_page],
- [mm/truncate.c],[
-@@ -1230,11 +1293,219 @@
-
- # 2.6.23 extract nfs export related data into exportfs.h
- AC_DEFUN([LC_HAVE_EXPORTFS_H],
--[
--tmpfl="$CFLAGS"
--CFLAGS="$CFLAGS -I$LINUX_OBJ/include"
--AC_CHECK_HEADERS([linux/exportfs.h])
--CFLAGS="$tmpfl"
-+[LB_CHECK_FILE([$LINUX/include/linux/exportfs.h], [
-+ AC_DEFINE(HAVE_LINUX_EXPORTFS_H, 1,
-+ [kernel has include/exportfs.h])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.23 have new page fault handling API
-+AC_DEFUN([LC_VM_OP_FAULT],
-+[AC_MSG_CHECKING([if kernel has .fault in vm_operation_struct])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/mm.h>
-+],[
-+ struct vm_operations_struct op;
-+
-+ op.fault = NULL;
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_VM_OP_FAULT, 1,
-+ [if kernel has .fault in vm_operation_struct])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+#2.6.23 has new shrinker API
-+AC_DEFUN([LC_REGISTER_SHRINKER],
-+[AC_MSG_CHECKING([if kernel has register_shrinker])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/mm.h>
-+],[
-+ register_shrinker(NULL);
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_REGISTER_SHRINKER, 1,
-+ [if kernel has register_shrinker])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.24 has bio_endio with 2 args
-+AC_DEFUN([LC_BIO_ENDIO_2ARG],
-+[AC_MSG_CHECKING([if kernel has bio_endio with 2 args])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/bio.h>
-+],[
-+ bio_endio(NULL, 0);
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_BIO_ENDIO_2ARG, 1,
-+ [if kernel has bio_endio with 2 args])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.24 has new members in exports struct.
-+AC_DEFUN([LC_FH_TO_DENTRY],
-+[AC_MSG_CHECKING([if kernel has .fh_to_dentry member in export_operations struct])
-+LB_LINUX_TRY_COMPILE([
-+#ifdef HAVE_LINUX_EXPORTFS_H
-+ #include <linux/exportfs.h>
-+#else
-+ #include <linux/fs.h>
-+#endif
-+],[
-+ struct export_operations exp;
-+
-+ exp.fh_to_dentry = NULL;
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_FH_TO_DENTRY, 1,
-+ [kernel has .fh_to_dentry member in export_operations struct])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.24 remove long aged procfs entry -> deleted member
-+AC_DEFUN([LC_PROCFS_DELETED],
-+[AC_MSG_CHECKING([if kernel has deleted member in procfs entry struct])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/proc_fs.h>
-+],[
-+ struct proc_dir_entry pde;
-+
-+ pde.deleted = NULL;
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_PROCFS_DELETED, 1,
-+ [kernel has deleted member in procfs entry struct])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.26 isn't export set_fs_pwd and change paramter in fs struct
-+AC_DEFUN([LC_FS_STRUCT_USE_PATH],
-+[AC_MSG_CHECKING([fs_struct use path structure])
-+LB_LINUX_TRY_COMPILE([
-+ #include <asm/atomic.h>
-+ #include <linux/spinlock.h>
-+ #include <linux/fs_struct.h>
-+],[
-+ struct path path;
-+ struct fs_struct fs;
-+
-+ fs.pwd = path;
-+], [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE(HAVE_FS_STRUCT_USE_PATH, 1,
-+ [fs_struct use path structure])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.26 drop list_for_each_safe_rcu
-+AC_DEFUN([LC_RCU_LIST_SAFE],
-+[AC_MSG_CHECKING([if list_for_each_safe_rcu exist])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/list.h>
-+],[
-+ #ifndef list_for_each_safe_rcu
-+ #error list_for_each_safe not exist
-+ #endif
-+],[
-+ AC_DEFINE(HAVE_RCU_LIST_SAFE, 1, [list_for_each_safe_rcu exist])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# 2.6.26 remove path_release and use path_put instead
-+AC_DEFUN([LC_PATH_RELEASE],
-+[AC_MSG_CHECKING([if path_release exist])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/dcache.h>
-+ #include <linux/namei.h>
-+],[
-+ path_release(NULL);
-+],[
-+ AC_DEFINE(HAVE_PATH_RELEASE, 1, [path_release exist])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([no])
-+])
-+])
-+
-+# asm/semaphore.h is deprecated on 2.6.27
-+# include instead linux/semaphore.h
-+AC_DEFUN([LC_ASM_SEMAPHORE_H],
-+[AC_MSG_CHECKING([if asm/semaphore.h exists])
-+LB_LINUX_TRY_COMPILE([
-+ #include <asm/semaphore.h>
-+],[
-+ //do nothing here
-+],[
-+ AC_DEFINE(HAVE_ASM_SEMAPHORE_H, 1, [asm/semaphore.h exists])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([NO])
-+])
-+])
-+
-+# request_queue_t is deleted in 2.6.27, use
-+# instead the request_queue struct
-+AC_DEFUN([LC_REQUEST_QUEUE_T],
-+[AC_MSG_CHECKING([for request_queue_t])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/blkdev.h>
-+],[
-+ request_queue_t *test;
-+],[
-+ AC_DEFINE(HAVE_REQUEST_QUEUE_T, 1, [request_queue_t is available])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([NO])
-+])
-+])
-+
-+# TestSetPageLocked is replaced by !trylock_page
-+# in 2.6.27
-+AC_DEFUN([LC_HAVE_TESTSETPAGELOCKED],
-+[AC_MSG_CHECKING([if TestSetPageLocked is available])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/page-flags.h>
-+],[
-+ TestSetPageLocked(NULL);
-+],[
-+ AC_DEFINE(HAVE_TESTSETPAGELOCKED, 1, [TestSetPageLocked is available])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([NO])
-+])
-+])
-+
-+# remove_suid is replaces in 2.6.27 with file_removed_suid
-+AC_DEFUN([LC_HAVE_REMOVE_SUID],
-+[AC_MSG_CHECKING([if remove_suid is available])
-+LB_LINUX_TRY_COMPILE([
-+ #include <linux/fs.h>
-+],[
-+ remove_suid(NULL);
-+],[
-+ AC_DEFINE(HAVE_REMOVE_SUID, 1, [remove_suid is still available])
-+ AC_MSG_RESULT([yes])
-+],[
-+ AC_MSG_RESULT([NO])
-+])
- ])
-
- #
-@@ -1327,10 +1598,30 @@
-
- # 2.6.22
- LC_INVALIDATE_BDEV_2ARG
-+
- # 2.6.23
- LC_UNREGISTER_BLKDEV_RETURN_INT
- LC_KERNEL_SPLICE_READ
- LC_HAVE_EXPORTFS_H
-+ LC_VM_OP_FAULT
-+ LC_REGISTER_SHRINKER
-+
-+ # 2.6.24
-+ LC_BIO_ENDIO_2ARG
-+ LC_FH_TO_DENTRY
-+ LC_PROCFS_DELETED
-+
-+ # 2.6.26
-+ LC_FS_STRUCT_USE_PATH
-+ LC_RCU_LIST_SAFE
-+ LC_PATH_RELEASE
-+ IGET_CALL_IS_PRESENT
-+
-+ #2.6.27
-+ LC_ASM_SEMAPHORE_H
-+ LC_REQUEST_QUEUE_T
-+ LC_HAVE_TESTSETPAGELOCKED
-+ LC_HAVE_REMOVE_SUID
- ])
-
- #
-@@ -1511,6 +1802,7 @@
- ],[
- AC_MSG_RESULT([no])
- ])
-+
- ],[
- AC_MSG_RESULT([no])
- ])
-diff -urNad lustre~/lustre/include/liblustre.h lustre/lustre/include/liblustre.h
---- lustre~/lustre/include/liblustre.h 2008-04-24 09:07:44.000000000 +0200
-+++ lustre/lustre/include/liblustre.h 2008-10-10 14:58:53.000000000 +0200
-@@ -718,11 +718,13 @@
- struct _cap_struct;
- typedef struct _cap_struct *cap_t;
- typedef int cap_value_t;
-+
- typedef enum {
- CAP_EFFECTIVE=0,
- CAP_PERMITTED=1,
- CAP_INHERITABLE=2
- } cap_flag_t;
-+
- typedef enum {
- CAP_CLEAR=0,
- CAP_SET=1
-@@ -732,11 +734,33 @@
- #define CAP_DAC_READ_SEARCH 2
- #define CAP_FOWNER 3
- #define CAP_FSETID 4
--#define CAP_SYS_ADMIN 21
-+#define CAP_SYS_ADMIN 21
-+#define CAP_SYS_RESOURCE 24
-+
-+#define cap_raise(c, flag) do {} while(0)
-+
-
- cap_t cap_get_proc(void);
- int cap_get_flag(cap_t, cap_value_t, cap_flag_t, cap_flag_value_t *);
-
-+/* XXX should be move into licfs */
-+typedef __u32 cfs_cap_t;
-+
-+static inline cfs_kernel_cap_t cfs_curproc_cap_get(void)
-+{
-+ return current->cap_effective;
-+}
-+
-+static inline void cfs_curproc_cap_set(cfs_kernel_cap_t cap)
-+{
-+ current->cap_effective = cap;
-+}
-+
-+static inline cfs_cap_t cfs_cap_convert_from_kernel(cfs_kernel_cap_t data)
-+{
-+ return (cfs_cap_t)data;
-+}
-+
- static inline void libcfs_run_lbug_upcall(char *file, const char *fn,
- const int l){}
-
-diff -urNad lustre~/lustre/include/linux/lustre_compat25.h lustre/lustre/include/linux/lustre_compat25.h
---- lustre~/lustre/include/linux/lustre_compat25.h 2008-03-27 04:32:33.000000000 +0100
-+++ lustre/lustre/include/linux/lustre_compat25.h 2008-10-10 15:21:17.000000000 +0200
-@@ -43,6 +43,28 @@
- #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) */
-
- #ifndef HAVE_SET_FS_PWD
-+
-+#ifdef HAVE_FS_STRUCT_USE_PATH
-+static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
-+ struct dentry *dentry)
-+{
-+ struct path path;
-+ struct path old_pwd;
-+
-+ path.mnt = mnt;
-+ path.dentry = dentry;
-+ write_lock(&fs->lock);
-+ old_pwd = fs->pwd;
-+ path_get(&path);
-+ fs->pwd = path;
-+ write_unlock(&fs->lock);
-+
-+ if (old_pwd.dentry)
-+ path_put(&old_pwd);
-+}
-+
-+#else
-+
- static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
- struct dentry *dentry)
- {
-@@ -61,6 +83,7 @@
- mntput(old_pwdmnt);
- }
- }
-+#endif
- #else
- #define ll_set_fs_pwd set_fs_pwd
- #endif /* HAVE_SET_FS_PWD */
-@@ -141,7 +164,11 @@
- #endif
-
- /* XXX our code should be using the 2.6 calls, not the other way around */
-+#ifdef HAVE_TESTSETPAGELOCKED
- #define TryLockPage(page) TestSetPageLocked(page)
-+#else
-+#define TryLockPage(page) !trylock_page(page)
-+#endif
- #define Page_Uptodate(page) PageUptodate(page)
- #define ll_redirty_page(page) set_page_dirty(page)
-
-@@ -538,5 +565,56 @@
- #define ll_invalidate_bdev(a,b) invalidate_bdev((a))
- #endif
-
-+#ifdef HAVE_REGISTER_SHRINKER
-+typedef int (*shrinker_t)(int nr_to_scan, gfp_t gfp_mask);
-+
-+static inline
-+struct shrinker *set_shrinker(int seek, shrinker_t func)
-+{
-+ struct shrinker *s;
-+
-+ s = kmalloc(sizeof(*s), GFP_KERNEL);
-+ if (s == NULL)
-+ return (NULL);
-+
-+ s->shrink = func;
-+ s->seeks = seek;
-+
-+ register_shrinker(s);
-+
-+ return s;
-+}
-+
-+static inline
-+void remove_shrinker(struct shrinker *shrinker)
-+{
-+ if (shrinker == NULL)
-+ return;
-+
-+ unregister_shrinker(shrinker);
-+ kfree(shrinker);
-+}
-+#endif
-+
-+#ifdef HAVE_BIO_ENDIO_2ARG
-+#define cfs_bio_io_error(a,b) bio_io_error((a))
-+#define cfs_bio_endio(a,b,c) bio_endio((a),(c))
-+#else
-+#define cfs_bio_io_error(a,b) bio_io_error((a),(b))
-+#define cfs_bio_endio(a,b,c) bio_endio((a),(b),(c))
-+#endif
-+
-+#ifdef HAVE_FS_STRUCT_USE_PATH
-+#define cfs_fs_pwd(fs) ((fs)->pwd.dentry)
-+#define cfs_fs_mnt(fs) ((fs)->pwd.mnt)
-+#else
-+#define cfs_fs_pwd(fs) ((fs)->pwd)
-+#define cfs_fs_mnt(fs) ((fs)->pwdmnt)
-+#endif
-+
-+#ifndef HAVE_RCU_LIST_SAFE
-+#define list_for_each_safe_rcu(a,b,c) list_for_each_rcu(b, c)
-+#endif
-+
- #endif /* __KERNEL__ */
- #endif /* _COMPAT25_H */
-diff -urNad lustre~/lustre/include/linux/lustre_lib.h lustre/lustre/include/linux/lustre_lib.h
---- lustre~/lustre/include/linux/lustre_lib.h 2007-09-13 04:24:44.000000000 +0200
-+++ lustre/lustre/include/linux/lustre_lib.h 2008-10-10 14:58:53.000000000 +0200
-@@ -33,7 +33,11 @@
- # include <string.h>
- # include <sys/types.h>
- #else
--# include <asm/semaphore.h>
-+# ifdef HAVE_ASM_SEMAPHORE_H
-+# include <asm/semaphore.h>
-+# else
-+# include <linux/semaphore.h>
-+# endif
- # include <linux/rwsem.h>
- # include <linux/sched.h>
- # include <linux/signal.h>
-diff -urNad lustre~/lustre/include/linux/lvfs.h lustre/lustre/include/linux/lvfs.h
---- lustre~/lustre/include/linux/lvfs.h 2007-07-26 08:24:10.000000000 +0200
-+++ lustre/lustre/include/linux/lvfs.h 2008-10-10 14:58:53.000000000 +0200
-@@ -47,7 +47,7 @@
- struct upcall_cache_entry *luc_uce;
- __u32 luc_fsuid;
- __u32 luc_fsgid;
-- __u32 luc_cap;
-+ cfs_kernel_cap_t luc_cap;
- __u32 luc_suppgid1;
- __u32 luc_suppgid2;
- __u32 luc_umask;
-diff -urNad lustre~/lustre/include/lprocfs_status.h lustre/lustre/include/lprocfs_status.h
---- lustre~/lustre/include/lprocfs_status.h 2008-04-18 06:47:52.000000000 +0200
-+++ lustre/lustre/include/lprocfs_status.h 2008-10-10 14:58:53.000000000 +0200
-@@ -481,6 +481,8 @@
- #define LPROCFS_EXIT() do { \
- up_read(&_lprocfs_lock); \
- } while(0)
-+
-+#ifdef HAVE_PROCFS_DELETED
- #define LPROCFS_ENTRY_AND_CHECK(dp) do { \
- typecheck(struct proc_dir_entry *, dp); \
- LPROCFS_ENTRY(); \
-@@ -489,6 +491,13 @@
- return -ENODEV; \
- } \
- } while(0)
-+#define LPROCFS_CHECK_DELETED(dp) ((dp)->deleted)
-+#else
-+#define LPROCFS_ENTRY_AND_CHECK(dp) \
-+ LPROCFS_ENTRY();
-+#define LPROCFS_CHECK_DELETED(dp) (0)
-+#endif
-+
-
- /* You must use these macros when you want to refer to
- * the import in a client obd_device for a lprocfs entry */
-diff -urNad lustre~/lustre/include/lustre_log.h lustre/lustre/include/lustre_log.h
---- lustre~/lustre/include/lustre_log.h 2007-08-24 13:12:48.000000000 +0200
-+++ lustre/lustre/include/lustre_log.h 2008-10-10 14:58:53.000000000 +0200
-@@ -218,14 +218,6 @@
- void *llog_proc_cb;
- };
-
--#ifndef __KERNEL__
--
--#define cap_raise(c, flag) do {} while(0)
--
--#define CAP_SYS_RESOURCE 24
--
--#endif /* !__KERNEL__ */
--
- static inline void llog_gen_init(struct llog_ctxt *ctxt)
- {
- struct obd_device *obd = ctxt->loc_exp->exp_obd;
-@@ -329,7 +321,7 @@
- int numcookies, void *buf, int idx)
- {
- struct llog_operations *lop;
-- __u32 cap;
-+ cfs_kernel_cap_t cap;
- int rc, buflen;
- ENTRY;
-
-@@ -346,10 +338,10 @@
- buflen = rec->lrh_len;
- LASSERT(size_round(buflen) == buflen);
-
-- cap = current->cap_effective;
-- cap_raise(current->cap_effective, CAP_SYS_RESOURCE);
-+ cap = current->cap_effective;
-+ cap_raise(current->cap_effective, CAP_SYS_RESOURCE);
- rc = lop->lop_write_rec(handle, rec, logcookies, numcookies, buf, idx);
-- current->cap_effective = cap;
-+ current->cap_effective = cap;
- RETURN(rc);
- }
-
-@@ -445,7 +437,7 @@
- struct llog_logid *logid, char *name)
- {
- struct llog_operations *lop;
-- __u32 cap;
-+ cfs_kernel_cap_t cap;
- int rc;
- ENTRY;
-
-@@ -455,10 +447,10 @@
- if (lop->lop_create == NULL)
- RETURN(-EOPNOTSUPP);
-
-- cap = current->cap_effective;
-+ cap = current->cap_effective;
- cap_raise(current->cap_effective, CAP_SYS_RESOURCE);
- rc = lop->lop_create(ctxt, res, logid, name);
-- current->cap_effective = cap;
-+ current->cap_effective = cap;
- RETURN(rc);
- }
-
-diff -urNad lustre~/lustre/include/lustre_mds.h lustre/lustre/include/lustre_mds.h
---- lustre~/lustre/include/lustre_mds.h 2008-04-24 06:41:00.000000000 +0200
-+++ lustre/lustre/include/lustre_mds.h 2008-10-10 14:58:53.000000000 +0200
-@@ -177,7 +177,7 @@
- struct page *, struct ptlrpc_request **);
- int mdc_create(struct obd_export *exp, struct mdc_op_data *op_data,
- const void *data, int datalen, int mode, __u32 uid, __u32 gid,
-- __u32 cap_effective, __u64 rdev,struct ptlrpc_request **request);
-+ cfs_kernel_cap_t cap_effective, __u64 rdev,struct ptlrpc_request **request);
- int mdc_unlink(struct obd_export *exp, struct mdc_op_data *data,
- struct ptlrpc_request **request);
- int mdc_link(struct obd_export *exp, struct mdc_op_data *data,
-diff -urNad lustre~/lustre/llite/file.c lustre/lustre/llite/file.c
---- lustre~/lustre/llite/file.c 2008-10-10 14:58:52.000000000 +0200
-+++ lustre/lustre/llite/file.c 2008-10-10 14:58:53.000000000 +0200
-@@ -1681,9 +1681,17 @@
- /*
- * Send file content (through pagecache) somewhere with helper
- */
--#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
--static ssize_t ll_file_sendfile(struct file *in_file, loff_t *ppos,size_t count,
-- read_actor_t actor, void *target)
-+/* change based on
-+ * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f0930fffa99e7fe0a0c4b6c7d9a244dc88288c27
-+ */
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+static ssize_t ll_file_splice_read(struct file *in_file, loff_t *ppos,
-+ struct pipe_inode_info *pipe, size_t count,
-+ unsigned int flags)
-+#else
-+static ssize_t ll_file_sendfile(struct file *in_file, loff_t *ppos,
-+ size_t count, read_actor_t actor, void *target)
-+#endif
- {
- struct inode *inode = in_file->f_dentry->d_inode;
- struct ll_inode_info *lli = ll_i2info(inode);
-@@ -1692,8 +1700,7 @@
- struct ll_lock_tree_node *node;
- struct ost_lvb lvb;
- struct ll_ra_read bead;
-- int rc;
-- ssize_t retval;
-+ ssize_t rc;
- __u64 kms;
- ENTRY;
- CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),size="LPSZ",offset=%Ld\n",
-@@ -1709,8 +1716,14 @@
- in_file->f_ra.ra_pages = 0;
-
- /* File with no objects, nothing to lock */
-- if (!lsm)
-- RETURN(generic_file_sendfile(in_file, ppos, count, actor, target));
-+ if (!lsm) {
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+ rc = generic_file_splice_read(in_file, ppos, pipe, count, flags);
-+#else
-+ rc = generic_file_sendfile(in_file, ppos, count, actor, target);
-+#endif
-+ RETURN(rc);
-+ }
-
- node = ll_node_from_inode(inode, *ppos, *ppos + count - 1, LCK_PR);
- if (IS_ERR(node))
-@@ -1750,8 +1763,8 @@
- /* A glimpse is necessary to determine whether we return a
- * short read (B) or some zeroes at the end of the buffer (C) */
- ll_inode_size_unlock(inode, 1);
-- retval = ll_glimpse_size(inode, LDLM_FL_BLOCK_GRANTED);
-- if (retval)
-+ rc = ll_glimpse_size(inode, LDLM_FL_BLOCK_GRANTED);
-+ if (rc)
- goto out;
- } else {
- /* region is within kms and, hence, within real file size (A) */
-@@ -1767,14 +1780,17 @@
- ll_ra_read_in(in_file, &bead);
- /* BUG: 5972 */
- file_accessed(in_file);
-- retval = generic_file_sendfile(in_file, ppos, count, actor, target);
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+ rc = generic_file_splice_read(in_file, ppos, pipe, count, flags);
-+#else
-+ rc = generic_file_sendfile(in_file, ppos, count, actor, target);
-+#endif
- ll_ra_read_ex(in_file, &bead);
-
- out:
- ll_tree_unlock(&tree);
-- RETURN(retval);
-+ RETURN(rc);
- }
--#endif
-
- static int ll_lov_recreate_obj(struct inode *inode, struct file *file,
- unsigned long arg)
-@@ -2916,7 +2932,9 @@
- .release = ll_file_release,
- .mmap = ll_file_mmap,
- .llseek = ll_file_seek,
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+ .splice_read = ll_file_splice_read,
-+#else
- .sendfile = ll_file_sendfile,
- #endif
- .fsync = ll_fsync,
-@@ -2932,7 +2950,7 @@
- .write = ll_file_write,
- #ifdef HAVE_FILE_WRITEV
- .writev = ll_file_writev,
--#else
-+#else
- .aio_write = ll_file_aio_write,
- #endif
- .ioctl = ll_file_ioctl,
-@@ -2940,7 +2958,9 @@
- .release = ll_file_release,
- .mmap = ll_file_mmap,
- .llseek = ll_file_seek,
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+ .splice_read = ll_file_splice_read,
-+#else
- .sendfile = ll_file_sendfile,
- #endif
- .fsync = ll_fsync,
-@@ -2961,7 +2981,7 @@
- .write = ll_file_write,
- #ifdef HAVE_FILE_WRITEV
- .writev = ll_file_writev,
--#else
-+#else
- .aio_write = ll_file_aio_write,
- #endif
- .ioctl = ll_file_ioctl,
-@@ -2969,7 +2989,9 @@
- .release = ll_file_release,
- .mmap = ll_file_mmap,
- .llseek = ll_file_seek,
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#ifdef HAVE_KERNEL_SPLICE_READ
-+ .splice_read = ll_file_splice_read,
-+#else
- .sendfile = ll_file_sendfile,
- #endif
- .fsync = ll_fsync,
-diff -urNad lustre~/lustre/llite/llite_internal.h lustre/lustre/llite/llite_internal.h
---- lustre~/lustre/llite/llite_internal.h 2008-04-26 16:30:54.000000000 +0200
-+++ lustre/lustre/llite/llite_internal.h 2008-10-10 14:58:53.000000000 +0200
-@@ -681,9 +681,6 @@
- /* llite/llite_nfs.c */
- extern struct export_operations lustre_export_operations;
- __u32 get_uuid2int(const char *name, int len);
--struct dentry *ll_fh_to_dentry(struct super_block *sb, __u32 *data, int len,
-- int fhtype, int parent);
--int ll_dentry_to_fh(struct dentry *, __u32 *datap, int *lenp, int need_parent);
-
- /* llite/special.c */
- extern struct inode_operations ll_special_inode_operations;
-diff -urNad lustre~/lustre/llite/llite_lib.c lustre/lustre/llite/llite_lib.c
---- lustre~/lustre/llite/llite_lib.c 2008-05-28 21:15:40.000000000 +0200
-+++ lustre/lustre/llite/llite_lib.c 2008-10-10 14:58:53.000000000 +0200
-@@ -1347,7 +1347,7 @@
- rc = vmtruncate(inode, new_size);
- clear_bit(LLI_F_SRVLOCK, &lli->lli_flags);
- if (rc != 0) {
-- LASSERT(atomic_read(&lli->lli_size_sem.count) <= 0);
-+// LASSERT(atomic_read(&lli->lli_size_sem.count) <= 0);
- ll_inode_size_unlock(inode, 0);
- }
- }
-diff -urNad lustre~/lustre/llite/llite_mmap.c lustre/lustre/llite/llite_mmap.c
---- lustre~/lustre/llite/llite_mmap.c 2008-03-27 04:32:37.000000000 +0100
-+++ lustre/lustre/llite/llite_mmap.c 2008-10-10 14:58:53.000000000 +0200
-@@ -38,9 +38,6 @@
- #include <linux/mm.h>
- #include <linux/pagemap.h>
- #include <linux/smp_lock.h>
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
--#include <linux/iobuf.h>
--#endif
-
- #define DEBUG_SUBSYSTEM S_LLITE
-
-@@ -66,18 +63,11 @@
- struct inode *lt_inode;
- };
-
-+static struct vm_operations_struct ll_file_vm_ops;
-+
- int lt_get_mmap_locks(struct ll_lock_tree *tree,
- unsigned long addr, size_t count);
-
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
--struct page *ll_nopage(struct vm_area_struct *vma, unsigned long address,
-- int *type);
--#else
--
--struct page *ll_nopage(struct vm_area_struct *vma, unsigned long address,
-- int unused);
--#endif
--
- struct ll_lock_tree_node * ll_node_from_inode(struct inode *inode, __u64 start,
- __u64 end, ldlm_mode_t mode)
- {
-@@ -302,7 +292,7 @@
- spin_lock(&mm->page_table_lock);
- for(vma = find_vma(mm, addr);
- vma != NULL && vma->vm_start < (addr + count); vma = vma->vm_next) {
-- if (vma->vm_ops && vma->vm_ops->nopage == ll_nopage &&
-+ if (vma->vm_ops && vma->vm_ops == &ll_file_vm_ops &&
- vma->vm_flags & VM_SHARED) {
- ret = vma;
- break;
-@@ -350,53 +340,28 @@
- RETURN(0);
- }
-
--/* FIXME: there is a pagefault race goes as follow (only 2.4):
-- * 1. A user process on node A accesses a portion of a mapped file,
-- * resulting in a page fault. The pagefault handler invokes the
-- * ll_nopage function, which reads the page into memory.
-- * 2. A user process on node B writes to the same portion of the file
-- * (either via mmap or write()), that cause node A to cancel the
-- * lock and truncate the page.
-- * 3. Node A then executes the rest of do_no_page(), entering the
-- * now-invalid page into the PTEs.
-- *
-- * Make the whole do_no_page as a hook to cover both the page cache
-- * and page mapping installing with dlm lock would eliminate this race.
-- *
-- * In 2.6, the truncate_count of address_space can cover this race.
-- */
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
--struct page *ll_nopage(struct vm_area_struct *vma, unsigned long address,
-- int *type)
--#else
--struct page *ll_nopage(struct vm_area_struct *vma, unsigned long address,
-- int type /* unused */)
--#endif
-+static int ll_get_extent_lock(struct vm_area_struct *vma, unsigned long pgoff,
-+ int *save_flags, struct lustre_handle *lockh)
- {
- struct file *filp = vma->vm_file;
- struct ll_file_data *fd = LUSTRE_FPRIVATE(filp);
- struct inode *inode = filp->f_dentry->d_inode;
-- struct lustre_handle lockh = { 0 };
- ldlm_policy_data_t policy;
- ldlm_mode_t mode;
-- struct page *page = NULL;
- struct ll_inode_info *lli = ll_i2info(inode);
-- struct lov_stripe_md *lsm;
- struct ost_lvb lvb;
- __u64 kms, old_mtime;
-- unsigned long pgoff, size, rand_read, seq_read;
-- int rc = 0;
-- ENTRY;
-+ unsigned long size;
-+
-
- if (lli->lli_smd == NULL) {
- CERROR("No lsm on fault?\n");
-- RETURN(NULL);
-+ RETURN(0);
- }
--
- ll_clear_file_contended(inode);
-
- /* start and end the lock on the first and last bytes in the page */
-- policy_from_vma(&policy, vma, address, CFS_PAGE_SIZE);
-+ policy_from_vma(&policy, vma, pgoff, CFS_PAGE_SIZE);
-
- CDEBUG(D_MMAP, "nopage vma %p inode %lu, locking ["LPU64", "LPU64"]\n",
- vma, inode->i_ino, policy.l_extent.start, policy.l_extent.end);
-@@ -404,26 +369,23 @@
- mode = mode_from_vma(vma);
- old_mtime = LTIME_S(inode->i_mtime);
-
-- lsm = lli->lli_smd;
-- rc = ll_extent_lock(fd, inode, lsm, mode, &policy,
-- &lockh, LDLM_FL_CBPENDING | LDLM_FL_NO_LRU);
-- if (rc != 0)
-- RETURN(NULL);
-+ if(ll_extent_lock(fd, inode, lli->lli_smd, mode, &policy,
-+ lockh, LDLM_FL_CBPENDING | LDLM_FL_NO_LRU))
-+ RETURN(0);
-
- if (vma->vm_flags & VM_EXEC && LTIME_S(inode->i_mtime) != old_mtime)
- CWARN("binary changed. inode %lu\n", inode->i_ino);
-
-- lov_stripe_lock(lsm);
-+ lov_stripe_lock(lli->lli_smd);
- inode_init_lvb(inode, &lvb);
-- obd_merge_lvb(ll_i2obdexp(inode), lsm, &lvb, 1);
-+ obd_merge_lvb(ll_i2obdexp(inode), lli->lli_smd, &lvb, 1);
- kms = lvb.lvb_size;
-
-- pgoff = ((address - vma->vm_start) >> CFS_PAGE_SHIFT) + vma->vm_pgoff;
- size = (kms + CFS_PAGE_SIZE - 1) >> CFS_PAGE_SHIFT;
--
- if (pgoff >= size) {
-- lov_stripe_unlock(lsm);
-+ lov_stripe_unlock(lli->lli_smd);
- ll_glimpse_size(inode, LDLM_FL_BLOCK_GRANTED);
-+ lov_stripe_lock(lli->lli_smd);
- } else {
- /* XXX change inode size without ll_inode_size_lock() held!
- * there is a race condition with truncate path. (see
-@@ -445,38 +407,85 @@
- CDEBUG(D_INODE, "ino=%lu, updating i_size %llu\n",
- inode->i_ino, i_size_read(inode));
- }
-- lov_stripe_unlock(lsm);
- }
-
- /* If mapping is writeable, adjust kms to cover this page,
- * but do not extend kms beyond actual file size.
- * policy.l_extent.end is set to the end of the page by policy_from_vma
- * bug 10919 */
-- lov_stripe_lock(lsm);
- if (mode == LCK_PW)
-- obd_adjust_kms(ll_i2obdexp(inode), lsm,
-+ obd_adjust_kms(ll_i2obdexp(inode), lli->lli_smd,
- min_t(loff_t, policy.l_extent.end + 1,
- i_size_read(inode)), 0);
-- lov_stripe_unlock(lsm);
-+ lov_stripe_unlock(lli->lli_smd);
-
- /* disable VM_SEQ_READ and use VM_RAND_READ to make sure that
- * the kernel will not read other pages not covered by ldlm in
- * filemap_nopage. we do our readahead in ll_readpage.
- */
-- rand_read = vma->vm_flags & VM_RAND_READ;
-- seq_read = vma->vm_flags & VM_SEQ_READ;
-+ *save_flags = vma->vm_flags & (VM_RAND_READ | VM_SEQ_READ);
- vma->vm_flags &= ~ VM_SEQ_READ;
- vma->vm_flags |= VM_RAND_READ;
-
-+ RETURN(1);
-+}
-+
-+static void ll_put_extent_lock(struct vm_area_struct *vma, int save_flags,
-+ struct lustre_handle *lockh)
-+{
-+ struct file *filp = vma->vm_file;
-+ struct ll_file_data *fd = LUSTRE_FPRIVATE(filp);
-+ struct inode *inode = filp->f_dentry->d_inode;
-+ ldlm_mode_t mode;
-+
-+ mode = mode_from_vma(vma);
-+ vma->vm_flags &= ~(VM_RAND_READ | VM_SEQ_READ);
-+ vma->vm_flags |= save_flags;
-+
-+ ll_extent_unlock(fd, inode, ll_i2info(inode)->lli_smd, mode, lockh);
-+}
-+
-+#ifndef HAVE_VM_OP_FAULT
-+struct page *ll_nopage(struct vm_area_struct *vma, unsigned long address,
-+ int *type) {
-+ struct lustre_handle lockh = { 0 };
-+ int save_fags;
-+ unsigned long pgoff;
-+ struct page *page;
-+ ENTRY;
-+
-+ pgoff = ((address - vma->vm_start) >> CFS_PAGE_SHIFT) + vma->vm_pgoff;
-+ if(!ll_get_extent_lock(vma, pgoff, &save_fags, &lockh))
-+ RETURN(NOPAGE_SIGBUS);
-+
- page = filemap_nopage(vma, address, type);
- LL_CDEBUG_PAGE(D_PAGE, page, "got addr %lu type %lx\n", address,
- (long)type);
-- vma->vm_flags &= ~VM_RAND_READ;
-- vma->vm_flags |= (rand_read | seq_read);
-
-- ll_extent_unlock(fd, inode, ll_i2info(inode)->lli_smd, mode, &lockh);
-+ ll_put_extent_lock(vma, save_fags, &lockh);
-+
- RETURN(page);
- }
-+#else
-+/* New fault() API*/
-+int ll_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-+{
-+ struct lustre_handle lockh = { 0 };
-+ int save_fags;
-+ int rc;
-+ ENTRY;
-+
-+ if(!ll_get_extent_lock(vma, vmf->pgoff, &save_fags, &lockh))
-+ RETURN(VM_FAULT_SIGBUS);
-+
-+ rc = filemap_fault(vma, vmf);
-+ LL_CDEBUG_PAGE(D_PAGE, vmf->page, "got addr %p type NOPAGE\n",
-+ vmf->virtual_address);
-+ ll_put_extent_lock(vma, save_fags, &lockh);
-+
-+ RETURN(rc);
-+}
-+#endif
-
- /* To avoid cancel the locks covering mmapped region for lock cache pressure,
- * we track the mapped vma count by lli_mmap_cnt.
-@@ -542,9 +551,12 @@
- }
- }
-
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#ifndef HAVE_VM_OP_FAULT
- #ifndef HAVE_FILEMAP_POPULATE
--static int (*filemap_populate)(struct vm_area_struct * area, unsigned long address, unsigned long len, pgprot_t prot, unsigned long pgoff, int nonblock);
-+static int (*filemap_populate)(struct vm_area_struct * area,
-+ unsigned long address, unsigned long len,
-+ pgprot_t prot, unsigned long pgoff,
-+ int nonblock);
- #endif
- static int ll_populate(struct vm_area_struct *area, unsigned long address,
- unsigned long len, pgprot_t prot, unsigned long pgoff,
-@@ -566,47 +578,6 @@
-
- }
-
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
--/* [first, last] are the byte offsets affected.
-- * vm_{start, end} are user addresses of the first byte of the mapping and
-- * the next byte beyond it
-- * vm_pgoff is the page index of the first byte in the mapping */
--static void teardown_vmas(struct vm_area_struct *vma, __u64 first,
-- __u64 last)
--{
-- unsigned long address, len;
-- for (; vma ; vma = vma->vm_next_share) {
-- if (last >> CFS_PAGE_SHIFT < vma->vm_pgoff)
-- continue;
-- if (first >> CFS_PAGE_SHIFT >= (vma->vm_pgoff +
-- ((vma->vm_end - vma->vm_start) >> CFS_PAGE_SHIFT)))
-- continue;
--
-- /* XXX in case of unmap the cow pages of a running file,
-- * don't unmap these private writeable mapping here!
-- * though that will break private mappping a little.
-- *
-- * the clean way is to check the mapping of every page
-- * and just unmap the non-cow pages, just like
-- * unmap_mapping_range() with even_cow=0 in kernel 2.6.
-- */
-- if (!(vma->vm_flags & VM_SHARED) &&
-- (vma->vm_flags & VM_WRITE))
-- continue;
--
-- address = max((unsigned long)vma->vm_start,
-- file_to_user(vma, first));
-- len = min((unsigned long)vma->vm_end,
-- file_to_user(vma, last) + 1) - address;
--
-- VMA_DEBUG(vma, "zapping vma [first="LPU64" last="LPU64" "
-- "address=%ld len=%ld]\n", first, last, address, len);
-- LASSERT(len > 0);
-- ll_zap_page_range(vma, address, len);
-- }
--}
--#endif
--
- /* XXX put nice comment here. talk about __free_pte -> dirty pages and
- * nopage's reference passing to the pte */
- int ll_teardown_mmaps(struct address_space *mapping, __u64 first, __u64 last)
-@@ -615,32 +586,21 @@
- ENTRY;
-
- LASSERTF(last > first, "last "LPU64" first "LPU64"\n", last, first);
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
- if (mapping_mapped(mapping)) {
- rc = 0;
- unmap_mapping_range(mapping, first + CFS_PAGE_SIZE - 1,
- last - first + 1, 0);
- }
--#else
-- spin_lock(&mapping->i_shared_lock);
-- if (mapping->i_mmap != NULL) {
-- rc = 0;
-- teardown_vmas(mapping->i_mmap, first, last);
-- }
-- if (mapping->i_mmap_shared != NULL) {
-- rc = 0;
-- teardown_vmas(mapping->i_mmap_shared, first, last);
-- }
-- spin_unlock(&mapping->i_shared_lock);
--#endif
- RETURN(rc);
- }
-
- static struct vm_operations_struct ll_file_vm_ops = {
-- .nopage = ll_nopage,
- .open = ll_vm_open,
- .close = ll_vm_close,
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#ifdef HAVE_VM_OP_FAULT
-+ .fault = ll_fault,
-+#else
-+ .nopage = ll_nopage,
- .populate = ll_populate,
- #endif
- };
-@@ -653,8 +613,7 @@
- ll_stats_ops_tally(ll_i2sbi(file->f_dentry->d_inode), LPROC_LL_MAP, 1);
- rc = generic_file_mmap(file, vma);
- if (rc == 0) {
--#if !defined(HAVE_FILEMAP_POPULATE) && \
-- (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-+#if !defined(HAVE_FILEMAP_POPULATE) && !defined(HAVE_VM_OP_FAULT)
- if (!filemap_populate)
- filemap_populate = vma->vm_ops->populate;
- #endif
-diff -urNad lustre~/lustre/llite/llite_nfs.c lustre/lustre/llite/llite_nfs.c
---- lustre~/lustre/llite/llite_nfs.c 2008-04-24 06:41:05.000000000 +0200
-+++ lustre/lustre/llite/llite_nfs.c 2008-10-10 14:58:53.000000000 +0200
-@@ -40,11 +40,7 @@
- return (key0 << 1);
- }
-
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
--static int ll_nfs_test_inode(struct inode *inode, unsigned long ino, void *opaque)
--#else
- static int ll_nfs_test_inode(struct inode *inode, void *opaque)
--#endif
- {
- struct ll_fid *iid = opaque;
-
-@@ -56,12 +52,10 @@
-
- static struct inode * search_inode_for_lustre(struct super_block *sb,
- unsigned long ino,
-- unsigned long generation,
-- int mode)
-+ unsigned long generation)
- {
- struct ptlrpc_request *req = NULL;
- struct ll_sb_info *sbi = ll_s2sbi(sb);
-- struct ll_fid fid;
- unsigned long valid = 0;
- int eadatalen = 0, rc;
- struct inode *inode = NULL;
-@@ -72,17 +66,15 @@
-
- if (inode)
- RETURN(inode);
-- if (S_ISREG(mode)) {
-- rc = ll_get_max_mdsize(sbi, &eadatalen);
-- if (rc)
-- RETURN(ERR_PTR(rc));
-- valid |= OBD_MD_FLEASIZE;
-- }
-- fid.id = (__u64)ino;
-- fid.generation = generation;
-- fid.f_type = mode;
-
-- rc = mdc_getattr(sbi->ll_mdc_exp, &fid, valid, eadatalen, &req);
-+ rc = ll_get_max_mdsize(sbi, &eadatalen);
-+ if (rc)
-+ RETURN(ERR_PTR(rc));
-+
-+ valid |= OBD_MD_FLEASIZE;
-+
-+ /* mds_fid2dentry ignore f_type */
-+ rc = mdc_getattr(sbi->ll_mdc_exp, &iid, valid, eadatalen, &req);
- if (rc) {
- CERROR("failure %d inode %lu\n", rc, ino);
- RETURN(ERR_PTR(rc));
-@@ -98,20 +90,23 @@
- RETURN(inode);
- }
-
--static struct dentry *ll_iget_for_nfs(struct super_block *sb, unsigned long ino,
-- __u32 generation, umode_t mode)
-+extern struct dentry_operations ll_d_ops;
-+
-+#ifdef HAVE_FH_TO_DENTRY
-+static struct inode *ll_iget_for_nfs(struct super_block *sb, __u64 ino,
-+ __u32 generation)
-+#else
-+static struct inode *ll_iget_for_nfs(struct super_block *sb, unsigned long ino,
-+ __u32 generation)
-+#endif
- {
- struct inode *inode;
-- struct dentry *result;
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-- struct list_head *lp;
--#endif
- ENTRY;
-
- if (ino == 0)
- RETURN(ERR_PTR(-ESTALE));
-
-- inode = search_inode_for_lustre(sb, ino, generation, mode);
-+ inode = search_inode_for_lustre(sb, ino, generation);
- if (IS_ERR(inode)) {
- RETURN(ERR_PTR(PTR_ERR(inode)));
- }
-@@ -125,40 +120,24 @@
- iput(inode);
- RETURN(ERR_PTR(-ESTALE));
- }
-+ RETURN(inode);
-+}
-+
-+static struct dentry *ll_nfs_get_dentry(struct super_block *sb, void *data)
-+{
-+ __u32 *inump = (__u32*)data;
-+ struct inode *inode;
-+ struct dentry *result;
-+
-+ inode = ll_iget_for_nfs(sb, inump[0], inump[1]);
-+ if (IS_ERR(inode))
-+ RETURN((struct dentry *)inode);
-
--#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
- result = d_alloc_anon(inode);
- if (!result) {
- iput(inode);
- RETURN(ERR_PTR(-ENOMEM));
- }
--#else
-- /* now to find a dentry.
-- * If possible, get a well-connected one
-- */
-- spin_lock(&dcache_lock);
-- for (lp = inode->i_dentry.next; lp != &inode->i_dentry ; lp=lp->next) {
-- result = list_entry(lp,struct dentry, d_alias);
-- lock_dentry(result);
-- if (!(result->d_flags & DCACHE_DISCONNECTED)) {
-- dget_locked(result);
-- ll_set_dflags(result, DCACHE_REFERENCED);
-- unlock_dentry(result);
-- spin_unlock(&dcache_lock);
-- iput(inode);
-- RETURN(result);
-- }
-- unlock_dentry(result);
-- }
-- spin_unlock(&dcache_lock);
-- result = d_alloc_root(inode);
-- if (result == NULL) {
-- iput(inode);
-- RETURN(ERR_PTR(-ENOMEM));
-- }
-- result->d_flags |= DCACHE_DISCONNECTED;
--
--#endif
- ll_set_dd(result);
-
- lock_dentry(result);
-@@ -173,80 +152,63 @@
- }
-
- RETURN(result);
-+
- }
-
--struct dentry *ll_fh_to_dentry(struct super_block *sb, __u32 *data, int len,
-- int fhtype, int parent)
-+#ifdef HAVE_FH_TO_DENTRY
-+
-+static struct dentry *ll_fh_to_dentry(struct super_block *sb, struct fid *fid,
-+ int fh_len, int fh_type)
- {
-- switch (fhtype) {
-- case 2:
-- if (len < 5)
-- break;
-- if (parent)
-- return ll_iget_for_nfs(sb, data[3], 0, data[4]);
-- case 1:
-- if (len < 3)
-- break;
-- if (parent)
-- break;
-- return ll_iget_for_nfs(sb, data[0], data[1], data[2]);
-- default: break;
-+ struct dentry *result;
-+
-+ result = generic_fh_to_dentry(sb, fid, fh_len, fh_type,
-+ ll_iget_for_nfs);
-+ if(!IS_ERR(result)) {
-+ ll_set_dd(result);
-+ result->d_op = &ll_d_ops;
- }
-- return ERR_PTR(-EINVAL);
-+ RETURN(result);
- }
-
--int ll_dentry_to_fh(struct dentry *dentry, __u32 *datap, int *lenp,
-- int need_parent)
-+static struct dentry *ll_fh_to_parent(struct super_block *sb, struct fid *fid,
-+ int fh_len, int fh_type)
- {
-- if (*lenp < 3)
-- return 255;
-- *datap++ = dentry->d_inode->i_ino;
-- *datap++ = dentry->d_inode->i_generation;
-- *datap++ = (__u32)(S_IFMT & dentry->d_inode->i_mode);
--
-- if (*lenp == 3 || S_ISDIR(dentry->d_inode->i_mode)) {
-- *lenp = 3;
-- return 1;
-- }
-- if (dentry->d_parent) {
-- *datap++ = dentry->d_parent->d_inode->i_ino;
-- *datap++ = (__u32)(S_IFMT & dentry->d_parent->d_inode->i_mode);
-+ struct dentry *result;
-
-- *lenp = 5;
-- return 2;
-+ result = generic_fh_to_parent(sb, fid, fh_len, fh_type,
-+ ll_iget_for_nfs);
-+ if(!IS_ERR(result)) {
-+ ll_set_dd(result);
-+ result->d_op = &ll_d_ops;
- }
-- *lenp = 3;
-- return 1;
-+ RETURN(result);
- }
--
--#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
--struct dentry *ll_get_dentry(struct super_block *sb, void *data)
-+#else
-+static struct dentry *ll_get_dentry(struct super_block *sb, void *data)
- {
-- __u32 *inump = (__u32*)data;
-- return ll_iget_for_nfs(sb, inump[0], inump[1], S_IFREG);
-+ return ll_nfs_get_dentry(sb, data);
- }
-
--struct dentry *ll_get_parent(struct dentry *dchild)
-+#endif
-+
-+static struct dentry *ll_get_parent(struct dentry *dchild)
- {
- struct ptlrpc_request *req = NULL;
- struct inode *dir = dchild->d_inode;
-- struct ll_sb_info *sbi;
- struct dentry *result = NULL;
- struct ll_fid fid;
- struct mds_body *body;
- char dotdot[] = "..";
-+ __u32 idata[2];
- int rc = 0;
- ENTRY;
-
- LASSERT(dir && S_ISDIR(dir->i_mode));
--
-- sbi = ll_s2sbi(dir->i_sb);
-
- fid.id = (__u64)dir->i_ino;
- fid.generation = dir->i_generation;
-- fid.f_type = S_IFDIR;
--
-- rc = mdc_getattr_name(sbi->ll_mdc_exp, &fid, dotdot, strlen(dotdot) + 1,
-+ rc = mdc_getattr_name(ll_s2sbi(dir->i_sb)->ll_mdc_exp, &fid, dotdot, sizeof(dotdot),
- 0, 0, &req);
- if (rc) {
- CERROR("failure %d inode %lu get parent\n", rc, dir->i_ino);
-@@ -256,8 +218,9 @@
-
- LASSERT((body->valid & OBD_MD_FLGENER) && (body->valid & OBD_MD_FLID));
-
-- result = ll_iget_for_nfs(dir->i_sb, body->ino, body->generation, S_IFDIR);
--
-+ idata[0] = body->ino;
-+ idata[1] = body->generation;
-+ result = ll_nfs_get_dentry(dir->i_sb, &idata);
- if (IS_ERR(result))
- rc = PTR_ERR(result);
-
-@@ -268,7 +231,11 @@
- }
-
- struct export_operations lustre_export_operations = {
-- .get_parent = ll_get_parent,
-- .get_dentry = ll_get_dentry,
--};
-+#ifdef HAVE_FH_TO_DENTRY
-+ .fh_to_dentry = ll_fh_to_dentry,
-+ .fh_to_parent = ll_fh_to_parent,
-+#else
-+ .get_dentry = ll_get_dentry,
- #endif
-+ .get_parent = ll_get_parent,
-+};
-diff -urNad lustre~/lustre/llite/lloop.c lustre/lustre/llite/lloop.c
---- lustre~/lustre/llite/lloop.c 2007-11-21 13:11:10.000000000 +0100
-+++ lustre/lustre/llite/lloop.c 2008-10-10 14:58:53.000000000 +0200
-@@ -108,6 +108,10 @@
-
- #define LLOOP_MAX_SEGMENTS PTLRPC_MAX_BRW_PAGES
-
-+#ifndef HAVE_REQUEST_QUEUE_T
-+typedef struct request_queue request_queue_t;
-+#endif
-+
- /* Possible states of device */
- enum {
- LLOOP_UNBOUND,
-@@ -299,7 +303,7 @@
- if (atomic_dec_and_test(&lo->lo_pending))
- up(&lo->lo_bh_mutex);
- out:
-- bio_io_error(old_bio, old_bio->bi_size);
-+ cfs_bio_io_error(old_bio, old_bio->bi_size);
- return 0;
- inactive:
- spin_unlock_irq(&lo->lo_lock);
-@@ -321,7 +325,7 @@
- {
- int ret;
- ret = do_bio_filebacked(lo, bio);
-- bio_endio(bio, bio->bi_size, ret);
-+ cfs_bio_endio(bio, bio->bi_size, ret);
- }
-
- /*
-diff -urNad lustre~/lustre/llite/namei.c lustre/lustre/llite/namei.c
---- lustre~/lustre/llite/namei.c 2008-04-24 06:41:06.000000000 +0200
-+++ lustre/lustre/llite/namei.c 2008-10-10 14:58:53.000000000 +0200
-@@ -879,7 +879,7 @@
-
- err = mdc_create(sbi->ll_mdc_exp, &op_data, tgt, tgt_len,
- mode, current->fsuid, current->fsgid,
-- current->cap_effective, rdev, &request);
-+ cfs_curproc_cap_get(), rdev, &request);
- if (err)
- GOTO(err_exit, err);
-
-diff -urNad lustre~/lustre/llite/rw.c lustre/lustre/llite/rw.c
---- lustre~/lustre/llite/rw.c 2008-04-03 05:23:43.000000000 +0200
-+++ lustre/lustre/llite/rw.c 2008-10-10 15:22:17.000000000 +0200
-@@ -161,7 +161,7 @@
- GOTO(out_unlock, 0);
- }
-
-- LASSERT(atomic_read(&lli->lli_size_sem.count) <= 0);
-+// LASSERT(atomic_read(&lli->lli_size_sem.count) <= 0);
-
- if (!srvlock) {
- struct ost_lvb lvb;
-@@ -2092,7 +2092,11 @@
- rc = generic_write_checks(file, ppos, &count, 0);
- if (rc)
- GOTO(out, rc);
-+#ifdef HAVE_REMOVE_SUID
- rc = remove_suid(file->f_dentry);
-+#else
-+ rc = file_remove_suid(file);
-+#endif
- if (rc)
- GOTO(out, rc);
- }
-diff -urNad lustre~/lustre/llite/symlink.c lustre/lustre/llite/symlink.c
---- lustre~/lustre/llite/symlink.c 2007-10-25 04:14:35.000000000 +0200
-+++ lustre/lustre/llite/symlink.c 2008-10-10 14:58:53.000000000 +0200
-@@ -156,8 +156,12 @@
- rc = ll_readlink_internal(inode, &request, &symname);
- up(&lli->lli_size_sem);
- if (rc) {
-+#ifdef HAVE_PATH_RELEASE
- path_release(nd); /* Kernel assumes that ->follow_link()
- releases nameidata on error */
-+#else
-+ path_put(&nd->path);
-+#endif
- GOTO(out, rc);
- }
-
-diff -urNad lustre~/lustre/lvfs/lvfs_linux.c lustre/lustre/lvfs/lvfs_linux.c
---- lustre~/lustre/lvfs/lvfs_linux.c 2007-10-30 06:25:57.000000000 +0100
-+++ lustre/lustre/lvfs/lvfs_linux.c 2008-10-10 14:58:53.000000000 +0200
-@@ -133,10 +133,10 @@
- */
-
- save->fs = get_fs();
-- LASSERT(atomic_read(¤t->fs->pwd->d_count));
-+ LASSERT(atomic_read(&cfs_fs_pwd(current->fs)->d_count));
- LASSERT(atomic_read(&new_ctx->pwd->d_count));
-- save->pwd = dget(current->fs->pwd);
-- save->pwdmnt = mntget(current->fs->pwdmnt);
-+ save->pwd = dget(cfs_fs_pwd(current->fs));
-+ save->pwdmnt = mntget(cfs_fs_mnt(current->fs));
- save->luc.luc_umask = current->fs->umask;
-
- LASSERT(save->pwd);
-@@ -147,11 +147,11 @@
- if (uc) {
- save->luc.luc_fsuid = current->fsuid;
- save->luc.luc_fsgid = current->fsgid;
-- save->luc.luc_cap = current->cap_effective;
-+ save->luc.luc_cap = cfs_curproc_cap_get();
-
- current->fsuid = uc->luc_fsuid;
- current->fsgid = uc->luc_fsgid;
-- current->cap_effective = uc->luc_cap;
-+ cfs_curproc_cap_set(uc->luc_cap);
- push_group_info(save, uc->luc_uce);
- }
- current->fs->umask = 0; /* umask already applied on client */
-@@ -190,10 +190,10 @@
- atomic_read(¤t->fs->pwdmnt->mnt_count));
- */
-
-- LASSERTF(current->fs->pwd == new_ctx->pwd, "%p != %p\n",
-- current->fs->pwd, new_ctx->pwd);
-- LASSERTF(current->fs->pwdmnt == new_ctx->pwdmnt, "%p != %p\n",
-- current->fs->pwdmnt, new_ctx->pwdmnt);
-+ LASSERTF(cfs_fs_pwd(current->fs) == new_ctx->pwd, "%p != %p\n",
-+ cfs_fs_pwd(current->fs), new_ctx->pwd);
-+ LASSERTF(cfs_fs_mnt(current->fs) == new_ctx->pwdmnt, "%p != %p\n",
-+ cfs_fs_mnt(current->fs), new_ctx->pwdmnt);
-
- set_fs(saved->fs);
- ll_set_fs_pwd(current->fs, saved->pwdmnt, saved->pwd);
-@@ -204,7 +204,7 @@
- if (uc) {
- current->fsuid = saved->luc.luc_fsuid;
- current->fsgid = saved->luc.luc_fsgid;
-- current->cap_effective = saved->luc.luc_cap;
-+ cfs_curproc_cap_set(saved->luc.luc_cap);
- pop_group_info(saved, uc->luc_uce);
- }
-
-diff -urNad lustre~/lustre/mdc/mdc_internal.h lustre/lustre/mdc/mdc_internal.h
---- lustre~/lustre/mdc/mdc_internal.h 2008-01-17 14:00:30.000000000 +0100
-+++ lustre/lustre/mdc/mdc_internal.h 2008-10-10 14:58:53.000000000 +0200
-@@ -28,7 +28,7 @@
- void *ea2, int ea2len);
- void mdc_create_pack(struct ptlrpc_request *req, int offset,
- struct mdc_op_data *op_data, const void *data, int datalen,
-- __u32 mode, __u32 uid, __u32 gid, __u32 cap_effective,
-+ __u32 mode, __u32 uid, __u32 gid, cfs_kernel_cap_t cap_effective,
- __u64 rdev);
- void mdc_open_pack(struct ptlrpc_request *req, int offset,
- struct mdc_op_data *op_data, __u32 mode, __u64 rdev,
-diff -urNad lustre~/lustre/mdc/mdc_lib.c lustre/lustre/mdc/mdc_lib.c
---- lustre~/lustre/mdc/mdc_lib.c 2008-03-26 07:22:04.000000000 +0100
-+++ lustre/lustre/mdc/mdc_lib.c 2008-10-10 14:58:53.000000000 +0200
-@@ -46,7 +46,7 @@
- b = lustre_msg_buf(req->rq_reqmsg, offset, sizeof(*b));
- b->fsuid = current->fsuid;
- b->fsgid = current->fsgid;
-- b->capability = current->cap_effective;
-+ b->capability = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- b->fid1 = *fid;
- b->size = pg_off; /* !! */
- b->suppgid = -1;
-@@ -59,7 +59,7 @@
-
- b->fsuid = current->fsuid;
- b->fsgid = current->fsgid;
-- b->capability = current->cap_effective;
-+ b->capability = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- }
-
- void mdc_pack_req_body(struct ptlrpc_request *req, int offset,
-@@ -78,7 +78,7 @@
- /* packing of MDS records */
- void mdc_create_pack(struct ptlrpc_request *req, int offset,
- struct mdc_op_data *op_data, const void *data, int datalen,
-- __u32 mode, __u32 uid, __u32 gid, __u32 cap_effective,
-+ __u32 mode, __u32 uid, __u32 gid, cfs_kernel_cap_t cap_effective,
- __u64 rdev)
- {
- struct mds_rec_create *rec;
-@@ -88,7 +88,7 @@
- rec->cr_opcode = REINT_CREATE;
- rec->cr_fsuid = uid;
- rec->cr_fsgid = gid;
-- rec->cr_cap = cap_effective;
-+ rec->cr_cap = cfs_cap_convert_from_kernel(cap_effective);
- rec->cr_fid = op_data->fid1;
- memset(&rec->cr_replayfid, 0, sizeof(rec->cr_replayfid));
- rec->cr_mode = mode;
-@@ -156,7 +156,7 @@
- rec->cr_opcode = REINT_OPEN;
- rec->cr_fsuid = current->fsuid;
- rec->cr_fsgid = current->fsgid;
-- rec->cr_cap = current->cap_effective;
-+ rec->cr_cap = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- rec->cr_fid = op_data->fid1;
- memset(&rec->cr_replayfid, 0, sizeof(rec->cr_replayfid));
- rec->cr_mode = mode;
-@@ -230,7 +230,7 @@
- rec->sa_opcode = REINT_SETATTR;
- rec->sa_fsuid = current->fsuid;
- rec->sa_fsgid = current->fsgid;
-- rec->sa_cap = current->cap_effective;
-+ rec->sa_cap = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- rec->sa_fid = data->fid1;
- rec->sa_suppgid = -1;
-
-@@ -274,7 +274,7 @@
- rec->ul_opcode = REINT_UNLINK;
- rec->ul_fsuid = current->fsuid;
- rec->ul_fsgid = current->fsgid;
-- rec->ul_cap = current->cap_effective;
-+ rec->ul_cap = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- rec->ul_mode = data->create_mode;
- rec->ul_suppgid = data->suppgids[0];
- rec->ul_fid1 = data->fid1;
-@@ -297,7 +297,7 @@
- rec->lk_opcode = REINT_LINK;
- rec->lk_fsuid = current->fsuid;
- rec->lk_fsgid = current->fsgid;
-- rec->lk_cap = current->cap_effective;
-+ rec->lk_cap = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- rec->lk_suppgid1 = data->suppgids[0];
- rec->lk_suppgid2 = data->suppgids[1];
- rec->lk_fid1 = data->fid1;
-@@ -321,7 +321,7 @@
- rec->rn_opcode = REINT_RENAME;
- rec->rn_fsuid = current->fsuid;
- rec->rn_fsgid = current->fsgid;
-- rec->rn_cap = current->cap_effective;
-+ rec->rn_cap = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- rec->rn_suppgid1 = data->suppgids[0];
- rec->rn_suppgid2 = data->suppgids[1];
- rec->rn_fid1 = data->fid1;
-@@ -345,7 +345,7 @@
-
- b->fsuid = current->fsuid;
- b->fsgid = current->fsgid;
-- b->capability = current->cap_effective;
-+ b->capability = cfs_cap_convert_from_kernel(cfs_curproc_cap_get());
- b->valid = valid;
- b->flags = flags | MDS_BFLAG_EXT_FLAGS;
- /* skip MDS_BFLAG_EXT_FLAGS to verify the "client < 1.4.7" case
-diff -urNad lustre~/lustre/mdc/mdc_reint.c lustre/lustre/mdc/mdc_reint.c
---- lustre~/lustre/mdc/mdc_reint.c 2008-02-18 13:43:18.000000000 +0100
-+++ lustre/lustre/mdc/mdc_reint.c 2008-10-10 14:58:53.000000000 +0200
-@@ -164,7 +164,7 @@
-
- int mdc_create(struct obd_export *exp, struct mdc_op_data *op_data,
- const void *data, int datalen, int mode, __u32 uid, __u32 gid,
-- __u32 cap_effective, __u64 rdev, struct ptlrpc_request **request)
-+ cfs_kernel_cap_t cap_effective, __u64 rdev, struct ptlrpc_request **request)
- {
- CFS_LIST_HEAD(cancels);
- struct obd_device *obd = exp->exp_obd;
-diff -urNad lustre~/lustre/mgc/mgc_request.c lustre/lustre/mgc/mgc_request.c
---- lustre~/lustre/mgc/mgc_request.c 2008-04-24 13:54:15.000000000 +0200
-+++ lustre/lustre/mgc/mgc_request.c 2008-10-10 14:58:53.000000000 +0200
-@@ -395,7 +395,7 @@
- obd->obd_lvfs_ctxt.fs = get_ds();
-
- push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
-- dentry = lookup_one_len(MOUNT_CONFIGS_DIR, current->fs->pwd,
-+ dentry = lookup_one_len(MOUNT_CONFIGS_DIR, cfs_fs_pwd(current->fs),
- strlen(MOUNT_CONFIGS_DIR));
- pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
- if (IS_ERR(dentry)) {
-diff -urNad lustre~/lustre/obdclass/linux/linux-module.c lustre/lustre/obdclass/linux/linux-module.c
---- lustre~/lustre/obdclass/linux/linux-module.c 2007-11-13 21:43:24.000000000 +0100
-+++ lustre/lustre/obdclass/linux/linux-module.c 2008-10-10 14:58:53.000000000 +0200
-@@ -386,7 +386,7 @@
- ENTRY;
-
- obd_sysctl_init();
-- proc_lustre_root = proc_mkdir("lustre", proc_root_fs);
-+ proc_lustre_root = proc_mkdir("fs/lustre", NULL);
- if (!proc_lustre_root) {
- printk(KERN_ERR
- "LustreError: error registering /proc/fs/lustre\n");
-diff -urNad lustre~/lustre/obdclass/linux/linux-sysctl.c lustre/lustre/obdclass/linux/linux-sysctl.c
---- lustre~/lustre/obdclass/linux/linux-sysctl.c 2008-03-25 13:25:41.000000000 +0100
-+++ lustre/lustre/obdclass/linux/linux-sysctl.c 2008-10-10 14:58:53.000000000 +0200
-@@ -48,7 +48,9 @@
-
- cfs_sysctl_table_header_t *obd_table_header = NULL;
-
--#define OBD_SYSCTL 300
-+#ifndef HAVE_SYSCTL_UNNUMBERED
-+
-+#define CTL_LUSTRE 300
-
- enum {
- OBD_FAIL_LOC = 1, /* control test failures instrumentation */
-@@ -65,6 +67,22 @@
- OBD_DEBUG_PEER_ON_TIMEOUT, /* dump peer debug when RPC times out */
- OBD_ALLOC_FAIL_RATE, /* memory allocation random failure rate */
- };
-+#else
-+#define CTL_LUSTRE CTL_UNNUMBERED
-+#define OBD_FAIL_LOC CTL_UNNUMBERED
-+#define OBD_FAIL_VAL CTL_UNNUMBERED
-+#define OBD_TIMEOUT CTL_UNNUMBERED
-+#define OBD_DUMP_ON_TIMEOUT CTL_UNNUMBERED
-+#define OBD_MEMUSED CTL_UNNUMBERED
-+#define OBD_PAGESUSED CTL_UNNUMBERED
-+#define OBD_MAXMEMUSED CTL_UNNUMBERED
-+#define OBD_MAXPAGESUSED CTL_UNNUMBERED
-+#define OBD_SYNCFILTER CTL_UNNUMBERED
-+#define OBD_LDLM_TIMEOUT CTL_UNNUMBERED
-+#define OBD_DUMP_ON_EVICTION CTL_UNNUMBERED
-+#define OBD_DEBUG_PEER_ON_TIMEOUT CTL_UNNUMBERED
-+#define OBD_ALLOC_FAIL_RATE CTL_UNNUMBERED
-+#endif
-
- int LL_PROC_PROTO(proc_fail_loc)
- {
-@@ -98,11 +116,12 @@
- return 0;
- }
- if (write) {
-- rc = lprocfs_write_frac_helper(buffer, *lenp,
-+ rc = lprocfs_write_frac_helper(buffer, *lenp,
- (unsigned int*)table->data,
- OBD_ALLOC_FAIL_MULT);
- } else {
-- char buf[21];
-+ char buf[22];
-+ struct ctl_table dummy;
- int len;
-
- len = lprocfs_read_frac_helper(buf, sizeof(buf),
-@@ -111,7 +130,13 @@
- if (len > *lenp)
- len = *lenp;
- buf[len] = '\0';
-- if (copy_to_user(buffer, buf, len))
-+
-+ dummy = *table;
-+ dummy.data = buf;
-+ dummy.maxlen = sizeof(buf);
-+
-+ rc = ll_proc_dostring(&dummy,write,filp,buffer,lenp, ppos);
-+ if (rc)
- return -EFAULT;
- *lenp = len;
- }
-@@ -122,100 +147,117 @@
-
- int LL_PROC_PROTO(proc_memory_alloc)
- {
-- char buf[22];
- int len;
-+ char buf[22];
-+ struct ctl_table dummy;
- DECLARE_LL_PROC_PPOS_DECL;
-
-- if (!*lenp || (*ppos && !write)) {
-+ if (write)
-+ return -EINVAL;
-+
-+ if (!*lenp || *ppos) {
- *lenp = 0;
- return 0;
- }
-- if (write)
-- return -EINVAL;
--
-- len = snprintf(buf, sizeof(buf), LPU64"\n", obd_memory_sum());
-+
-+ dummy = *table;
-+ dummy.data = buf;
-+ dummy.maxlen = sizeof(buf);
-+
-+ len = snprintf(buf, sizeof(buf), LPU64,
-+ obd_memory_sum());
-+
- if (len > *lenp)
- len = *lenp;
- buf[len] = '\0';
-- if (copy_to_user(buffer, buf, len))
-- return -EFAULT;
-- *lenp = len;
-- *ppos += *lenp;
-- return 0;
-+
-+ return ll_proc_dostring(&dummy,write,filp,buffer,lenp, ppos);
- }
-
- int LL_PROC_PROTO(proc_pages_alloc)
- {
-- char buf[22];
- int len;
-+ char buf[22];
-+ struct ctl_table dummy;
- DECLARE_LL_PROC_PPOS_DECL;
-
-- if (!*lenp || (*ppos && !write)) {
-+ if (write)
-+ return -EINVAL;
-+
-+ if (!*lenp || *ppos) {
- *lenp = 0;
- return 0;
- }
-- if (write)
-- return -EINVAL;
-
-- len = snprintf(buf, sizeof(buf), LPU64"\n", obd_pages_sum());
-+ dummy = *table;
-+ dummy.data = buf;
-+ dummy.maxlen = sizeof(buf);
-+
-+ len = snprintf(buf, sizeof(buf), LPU64,
-+ obd_pages_sum());
- if (len > *lenp)
- len = *lenp;
- buf[len] = '\0';
-- if (copy_to_user(buffer, buf, len))
-- return -EFAULT;
-- *lenp = len;
-- *ppos += *lenp;
-- return 0;
-+
-+ return ll_proc_dostring(&dummy,write,filp,buffer,lenp, ppos);
- }
-
- int LL_PROC_PROTO(proc_mem_max)
- {
-- char buf[22];
- int len;
-+ char buf[22];
-+ struct ctl_table dummy;
- DECLARE_LL_PROC_PPOS_DECL;
-
-- if (!*lenp || (*ppos && !write)) {
-+ if (write)
-+ return -EINVAL;
-+
-+ if (!*lenp || *ppos) {
- *lenp = 0;
- return 0;
- }
-- if (write)
-- return -EINVAL;
-
-- len = snprintf(buf, sizeof(buf), LPU64"\n", obd_memory_max());
-+ dummy = *table;
-+ dummy.data = buf;
-+ dummy.maxlen = sizeof(buf);
-+
-+ len = snprintf(buf, sizeof(buf), LPU64,
-+ obd_memory_max());
- if (len > *lenp)
- len = *lenp;
- buf[len] = '\0';
-- if (copy_to_user(buffer, buf, len))
-- return -EFAULT;
-- *lenp = len;
-- *ppos += *lenp;
-- return 0;
-+
-+ return ll_proc_dostring(&dummy,write,filp,buffer,lenp, ppos);
- }
-
- int LL_PROC_PROTO(proc_pages_max)
- {
-- char buf[22];
- int len;
-+ char buf[22];
-+ struct ctl_table dummy;
- DECLARE_LL_PROC_PPOS_DECL;
-
-- if (!*lenp || (*ppos && !write)) {
-+ if (write)
-+ return -EINVAL;
-+
-+ if (!*lenp || *ppos) {
- *lenp = 0;
- return 0;
- }
-- if (write)
-- return -EINVAL;
-+ dummy = *table;
-+ dummy.data = buf;
-+ dummy.maxlen = sizeof(buf);
-+ len = snprintf(buf, sizeof(buf), LPU64,
-+ obd_pages_max());
-
-- len = snprintf(buf, sizeof(buf), LPU64"\n", obd_pages_max());
- if (len > *lenp)
- len = *lenp;
- buf[len] = '\0';
-- if (copy_to_user(buffer, buf, len))
-- return -EFAULT;
-- *lenp = len;
-- *ppos += *lenp;
-- return 0;
-+
-+ return ll_proc_dostring(&dummy,write,filp,buffer,lenp, ppos);
- }
-
-+
- static cfs_sysctl_table_t obd_table[] = {
- {
- .ctl_name = OBD_FAIL_LOC,
-@@ -231,7 +273,8 @@
- .data = &obd_fail_val,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
-+ .strategy = &sysctl_intvec,
- },
- {
- .ctl_name = OBD_TIMEOUT,
-@@ -247,7 +290,7 @@
- .data = &obd_debug_peer_on_timeout,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
- },
- {
- .ctl_name = OBD_DUMP_ON_TIMEOUT,
-@@ -255,7 +298,7 @@
- .data = &obd_dump_on_timeout,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
- },
- {
- .ctl_name = OBD_DUMP_ON_EVICTION,
-@@ -263,7 +306,7 @@
- .data = &obd_dump_on_eviction,
- .maxlen = sizeof(int),
- .mode = 0644,
-- .proc_handler = &proc_dointvec
-+ .proc_handler = &proc_dointvec,
- },
- {
- .ctl_name = OBD_MEMUSED,
-@@ -271,7 +314,8 @@
- .data = NULL,
- .maxlen = 0,
- .mode = 0444,
-- .proc_handler = &proc_memory_alloc
-+ .proc_handler = &proc_memory_alloc,
-+// .strategy = &sysctl_memory_alloc,
- },
- {
- .ctl_name = OBD_PAGESUSED,
-@@ -279,7 +323,8 @@
- .data = NULL,
- .maxlen = 0,
- .mode = 0444,
-- .proc_handler = &proc_pages_alloc
-+ .proc_handler = &proc_pages_alloc,
-+// .strategy = &sysctl_pages_alloc,
- },
- {
- .ctl_name = OBD_MAXMEMUSED,
-@@ -287,7 +332,8 @@
- .data = NULL,
- .maxlen = 0,
- .mode = 0444,
-- .proc_handler = &proc_mem_max
-+ .proc_handler = &proc_mem_max,
-+// .strategy = &sysctl_mem_max,
- },
- {
- .ctl_name = OBD_MAXPAGESUSED,
-@@ -295,7 +341,8 @@
- .data = NULL,
- .maxlen = 0,
- .mode = 0444,
-- .proc_handler = &proc_pages_max
-+ .proc_handler = &proc_pages_max,
-+// .strategy = &sysctl_pages_max,
- },
- {
- .ctl_name = OBD_LDLM_TIMEOUT,
-@@ -319,15 +366,13 @@
- };
-
- static cfs_sysctl_table_t parent_table[] = {
-- {
-- .ctl_name = OBD_SYSCTL,
-- .procname = "lustre",
-- .data = NULL,
-- .maxlen = 0,
-- .mode = 0555,
-- .child = obd_table
-- },
-- {0}
-+ {
-+ .ctl_name = CTL_LUSTRE,
-+ .procname = "lustre",
-+ .mode = 0555,
-+ .child = obd_table
-+ },
-+ { 0 }
- };
-
- void obd_sysctl_init (void)
-diff -urNad lustre~/lustre/obdclass/llog_obd.c lustre/lustre/obdclass/llog_obd.c
---- lustre~/lustre/obdclass/llog_obd.c 2007-12-24 21:15:32.000000000 +0100
-+++ lustre/lustre/obdclass/llog_obd.c 2008-10-10 14:58:53.000000000 +0200
-@@ -178,7 +178,7 @@
- struct lov_stripe_md *lsm, struct llog_cookie *logcookies,
- int numcookies)
- {
-- __u32 cap;
-+ cfs_kernel_cap_t cap;
- int rc;
- ENTRY;
-
-@@ -188,10 +188,10 @@
- }
-
- CTXT_CHECK_OP(ctxt, add, -EOPNOTSUPP);
-- cap = current->cap_effective;
-+ cap = current->cap_effective;
- cap_raise(current->cap_effective, CAP_SYS_RESOURCE);
- rc = CTXTP(ctxt, add)(ctxt, rec, lsm, logcookies, numcookies);
-- current->cap_effective = cap;
-+ current->cap_effective = cap;
- RETURN(rc);
- }
- EXPORT_SYMBOL(llog_add);
-diff -urNad lustre~/lustre/obdclass/lprocfs_status.c lustre/lustre/obdclass/lprocfs_status.c
---- lustre~/lustre/obdclass/lprocfs_status.c 2008-05-20 04:03:20.000000000 +0200
-+++ lustre/lustre/obdclass/lprocfs_status.c 2008-10-10 14:58:53.000000000 +0200
-@@ -117,6 +117,8 @@
- proc->read_proc = read_proc;
- proc->write_proc = write_proc;
- proc->data = data;
-+ proc->owner = THIS_MODULE;
-+
- return 0;
- }
-
-@@ -136,7 +138,7 @@
-
- LPROCFS_ENTRY();
- OBD_FAIL_TIMEOUT(OBD_FAIL_LPROC_REMOVE, 10);
-- if (!dp->deleted && dp->read_proc)
-+ if (!LPROCFS_CHECK_DELETED(dp) && dp->read_proc)
- rc = dp->read_proc(page, &start, *ppos, PAGE_SIZE,
- &eof, dp->data);
- LPROCFS_EXIT();
-@@ -175,7 +177,7 @@
- int rc = -EIO;
-
- LPROCFS_ENTRY();
-- if (!dp->deleted && dp->write_proc)
-+ if (!LPROCFS_CHECK_DELETED(dp) && dp->write_proc)
- rc = dp->write_proc(f, buf, size, dp->data);
- LPROCFS_EXIT();
- return rc;
-diff -urNad lustre~/lustre/ptlrpc/service.c lustre/lustre/ptlrpc/service.c
---- lustre~/lustre/ptlrpc/service.c 2008-05-13 07:10:50.000000000 +0200
-+++ lustre/lustre/ptlrpc/service.c 2008-10-10 14:58:53.000000000 +0200
-@@ -1244,7 +1244,7 @@
- cfs_daemonize(name);
- exit_fs(cfs_current());
- current->fs = fs;
-- ll_set_fs_pwd(current->fs, init_task.fs->pwdmnt, init_task.fs->pwd);
-+ ll_set_fs_pwd(current->fs, cfs_fs_mnt(init_task.fs), cfs_fs_pwd(init_task.fs));
- }
-
- static void
-diff -urNad lustre~/lustre/quota/quotacheck_test.c lustre/lustre/quota/quotacheck_test.c
---- lustre~/lustre/quota/quotacheck_test.c 2008-01-03 07:31:16.000000000 +0100
-+++ lustre/lustre/quota/quotacheck_test.c 2008-10-10 14:58:53.000000000 +0200
-@@ -70,7 +70,14 @@
- if (ext3_test_bit(index, bitmap_bh->b_data)) {
- CERROR("i: %d, ino: %lu\n", index, ino);
- ll_sleep(1);
-+#if HAVE_IGET_CALL
- inode = iget(sb, ino);
-+#else
-+ inode = iget_locked(sb, ino);
-+ if (inode && (inode->i_state & I_NEW)) {
-+ unlock_new_inode(inode);
-+ }
-+#endif
- }
-
- return inode;
--
Lustre Debian Packaging
More information about the Pkg-lustre-svn-commit
mailing list