linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* PATCH: fix FAT32 filesystems on 64-bit platforms
@ 2000-12-15  0:09 Bill Nottingham
  2000-12-15  7:08 ` Albert D. Cahalan
  0 siblings, 1 reply; 2+ messages in thread
From: Bill Nottingham @ 2000-12-15  0:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: torvalds, chaffee

[-- Attachment #1: Type: text/plain, Size: 161 bytes --]

This fixes FAT32 on 64-bit platforms (notably, IA-64 and Alpha);
without this you can't mount any FAT32 filesystems. A similar patch
is already in 2.2.18.

Bill

[-- Attachment #2: linux-2.4.0-test12-vfat.patch --]
[-- Type: text/plain, Size: 1606 bytes --]

--- linux/fs/fat/cache.c.foo	Sat Nov 25 16:30:47 2000
+++ linux/fs/fat/cache.c	Sat Nov 25 16:32:29 2000
@@ -70,7 +70,7 @@
 	}
 	if (MSDOS_SB(sb)->fat_bits == 32) {
 		p_first = p_last = NULL; /* GCC needs that stuff */
-		next = CF_LE_L(((unsigned long *) bh->b_data)[(first &
+		next = CF_LE_L(((__u32 *) bh->b_data)[(first &
 		    (SECTOR_SIZE-1)) >> 2]);
 		/* Fscking Microsoft marketing department. Their "32" is 28. */
 		next &= 0xfffffff;
@@ -79,12 +79,12 @@
 
 	} else if (MSDOS_SB(sb)->fat_bits == 16) {
 		p_first = p_last = NULL; /* GCC needs that stuff */
-		next = CF_LE_W(((unsigned short *) bh->b_data)[(first &
+		next = CF_LE_W(((__u16 *) bh->b_data)[(first &
 		    (SECTOR_SIZE-1)) >> 1]);
 		if (next >= 0xfff7) next = -1;
 	} else {
-		p_first = &((unsigned char *) bh->b_data)[first & (SECTOR_SIZE-1)];
-		p_last = &((unsigned char *) bh2->b_data)[(first+1) &
+		p_first = &((__u8 *) bh->b_data)[first & (SECTOR_SIZE-1)];
+		p_last = &((__u8 *) bh2->b_data)[(first+1) &
 		    (SECTOR_SIZE-1)];
 		if (nr & 1) next = ((*p_first >> 4) | (*p_last << 4)) & 0xfff;
 		else next = (*p_first+(*p_last << 8)) & 0xfff;
@@ -92,10 +92,10 @@
 	}
 	if (new_value != -1) {
 		if (MSDOS_SB(sb)->fat_bits == 32) {
-			((unsigned long *) bh->b_data)[(first & (SECTOR_SIZE-1)) >>
+			((__u32 *) bh->b_data)[(first & (SECTOR_SIZE-1)) >>
 			    2] = CT_LE_L(new_value);
 		} else if (MSDOS_SB(sb)->fat_bits == 16) {
-			((unsigned short *) bh->b_data)[(first & (SECTOR_SIZE-1)) >>
+			((__u16 *) bh->b_data)[(first & (SECTOR_SIZE-1)) >>
 			    1] = CT_LE_W(new_value);
 		} else {
 			if (nr & 1) {

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: PATCH: fix FAT32 filesystems on 64-bit platforms
  2000-12-15  0:09 PATCH: fix FAT32 filesystems on 64-bit platforms Bill Nottingham
@ 2000-12-15  7:08 ` Albert D. Cahalan
  0 siblings, 0 replies; 2+ messages in thread
From: Albert D. Cahalan @ 2000-12-15  7:08 UTC (permalink / raw)
  To: Bill Nottingham; +Cc: linux-kernel, torvalds, chaffee

> This fixes FAT32 on 64-bit platforms (notably, IA-64 and Alpha);
> without this you can't mount any FAT32 filesystems. A similar patch
> is already in 2.2.18.
...
> -		next = CF_LE_L(((unsigned long *) bh->b_data)[(first &
> +		next = CF_LE_L(((__u32 *) bh->b_data)[(first &
...
> -		next = CF_LE_W(((unsigned short *) bh->b_data)[(first &
> +		next = CF_LE_W(((__u16 *) bh->b_data)[(first &


These macros really ought to be replaced with the standard
le32_to_cpu() and le16_to_cpu() ones.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2000-12-15  7:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-12-15  0:09 PATCH: fix FAT32 filesystems on 64-bit platforms Bill Nottingham
2000-12-15  7:08 ` Albert D. Cahalan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).