Hi,
i am just staring at the bitops as it seems they are the culprit for
the non working ext2 currently - While staring and comparing i found
that the mips ext2_set_bit and co do an save_and_cli/restore_flags
which is very obscure. I cant find any similar in other archs - I guess
the above is due to a possible "atomic" requirement which ext2 doesnt
seem to have (upper layer locking ?)
IMHO the patch cleans this:
Index: include/asm-mips/bitops.h
===================================================================
RCS file: /cvs/linux/include/asm-mips/bitops.h,v
retrieving revision 1.16
diff -u -r1.16 bitops.h
--- include/asm-mips/bitops.h 2001/06/14 05:33:12 1.16
+++ include/asm-mips/bitops.h 2001/06/19 14:21:58
@@ -797,28 +797,24 @@
#ifdef __MIPSEB__
extern __inline__ int ext2_set_bit(int nr,void * addr)
{
- int mask, retval, flags;
+ int mask, retval;
unsigned char *ADDR = (unsigned char *) addr;
mask = 1 << (nr & 0x07);
- save_and_cli(flags);
retval = (mask & *ADDR) != 0;
*ADDR |= mask;
- restore_flags(flags);
return retval;
}
extern __inline__ int ext2_clear_bit(int nr, void * addr)
{
- int mask, retval, flags;
+ int mask, retval;
unsigned char *ADDR = (unsigned char *) addr;
ADDR += nr >> 3;
mask = 1 << (nr & 0x07);
- save_and_cli(flags);
retval = (mask & *ADDR) != 0;
*ADDR &= ~mask;
- restore_flags(flags);
return retval;
}
Comments ?
Flo
--
Florian Lohoff flo@rfc822.org +49-5201-669912
Why is it called "common sense" when nobody seems to have any?
|