Re: [PATCH] sparc32: wrong type of nlink_t

From: Tomas Szepe (szepe@pinerecords.com)
Date: Sun Sep 01 2002 - 04:44:16 EST


> From: Tomas Szepe <szepe@pinerecords.com>
> Date: Sun, 1 Sep 2002 10:55:24 +0200
>
> Against 2.4.20-pre5 - fix up the type of nlink_t. This makes jfs and
> reiserfs stop complaining about comparisons always turning up false
> due to limited range of data type.
>
> If you change this, you change the types exported to userspace
> which will break everything.

Right. Here's a corresponding reiserfs/jfs fix, then. I've checked the
constants aren't used for anything else except nlink overflow alerts.

T.

diff -urN linux-2.4.20-pre5/fs/jfs/jfs_filsys.h linux-2.4.20-pre5.n/fs/jfs/jfs_filsys.h
--- linux-2.4.20-pre5/fs/jfs/jfs_filsys.h 2002-09-01 11:31:44.000000000 +0200
+++ linux-2.4.20-pre5.n/fs/jfs/jfs_filsys.h 2002-09-01 11:30:13.000000000 +0200
@@ -125,7 +125,8 @@
 #define MAXBLOCKSIZE 4096
 #define MAXFILESIZE ((s64)1 << 52)
 
-#define JFS_LINK_MAX 65535 /* nlink_t is unsigned short */
+/* the shortest nlink_t there is is sparc's signed short */
+#define JFS_LINK_MAX 32767
 
 /* Minimum number of bytes supported for a JFS partition */
 #define MINJFS (0x1000000)
diff -urN linux-2.4.20-pre5/include/linux/reiserfs_fs.h linux-2.4.20-pre5.n/include/linux/reiserfs_fs.h
--- linux-2.4.20-pre5/include/linux/reiserfs_fs.h 2002-09-01 11:31:45.000000000 +0200
+++ linux-2.4.20-pre5.n/include/linux/reiserfs_fs.h 2002-09-01 11:23:30.000000000 +0200
@@ -1185,10 +1185,12 @@
 #define MAX_B_NUM MAX_UL_INT
 #define MAX_FC_NUM MAX_US_INT
 
-
-/* the purpose is to detect overflow of an unsigned short */
-#define REISERFS_LINK_MAX (MAX_US_INT - 1000)
-
+/* the original purpose was to detect a possible overflow
+ * of an unsigned short nlink_t. However, there are archs
+ * that only provide a signed short nlink_t, so this will
+ * have to start ringing a wee bit earlier.
+ */
+#define REISERFS_LINK_MAX (0x7fff - 1000)
 
 /* The following defines are used in reiserfs_insert_item and reiserfs_append_item */
 #define REISERFS_KERNEL_MEM 0 /* reiserfs kernel memory mode */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 07 2002 - 22:00:13 EST