From 05250b116ba3d9e488e52dfeeddbaab929fbd751 Mon Sep 17 00:00:00 2001
From: neilbrown <neilbrown>
Date: Thu, 3 Jul 2003 02:09:15 +0000
Subject: [PATCH] allow compilation against 2.5 headers

---
 ChangeLog                 |  7 +++++++
 support/include/nfs/nfs.h | 15 +++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5ea42f9..6287766 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
+
+	* support/include/nfs/nfs.h: Make sure correct __kernel_dev_t is
+	used as the size was changed somewhere in 2.5.60-2.5.70.  Without
+	this nfs-utils compiles against 2.6 headers will not work on a
+	2.4 kernel.	
+	
 2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
 
 	* support/nfs/nfssvc.c(nfssvc): If /proc/fs/nfs/threads exists,
diff --git a/support/include/nfs/nfs.h b/support/include/nfs/nfs.h
index 937c1be..c7fc42c 100644
--- a/support/include/nfs/nfs.h
+++ b/support/include/nfs/nfs.h
@@ -58,11 +58,22 @@ struct nfsctl_client {
 	unsigned char		cl_fhkey[NFSCLNT_KEYMAX];
 };
 
+/* IN 2.5.6? __kernel_dev_t changed size, and __kernel_old_dev_t was left
+ * with the old value.  We need to make sure we use the right one.
+ *
+ */
+#include <linux/version.h>
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,70)
+# define __nfsd_dev_t  __kernel_old_dev_t
+#else
+# define __nfsd_dev_t  __kernel_dev_t
+#endif
+
 /* EXPORT/UNEXPORT */
 struct nfsctl_export {
 	char			ex_client[NFSCLNT_IDMAX+1];
 	char			ex_path[NFS_MAXPATHLEN+1];
-	__kernel_dev_t		ex_dev;
+	__nfsd_dev_t		ex_dev;
 	__kernel_ino_t		ex_ino;
 	int			ex_flags;
 	__kernel_uid_t		ex_anon_uid;
@@ -83,7 +94,7 @@ struct nfsctl_uidmap {
 /* GETFH */
 struct nfsctl_fhparm {
 	struct sockaddr		gf_addr;
-	__kernel_dev_t		gf_dev;
+	__nfsd_dev_t		gf_dev;
 	__kernel_ino_t		gf_ino;
 	int			gf_version;
 };
-- 
2.39.5