 include/asm-sparc/bitops.h |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff -puN include/asm-sparc/bitops.h~ext2-no-lock_super-fix-2 include/asm-sparc/bitops.h
--- 25-power4/include/asm-sparc/bitops.h~ext2-no-lock_super-fix-2	2003-03-13 18:27:00.000000000 -0800
+++ 25-power4-akpm/include/asm-sparc/bitops.h	2003-03-13 18:27:34.000000000 -0800
@@ -454,9 +454,26 @@ found_middle:
         find_next_zero_le_bit((addr), (size), 0)
 
 #define ext2_set_bit			__test_and_set_le_bit
-#define ext2_set_bit_atomic(l,n,a)      test_and_set_le_bit(n,a)
 #define ext2_clear_bit			__test_and_clear_le_bit
-#define ext2_clear_bit_atomic(l,n,a)    test_and_clear_le_bit(n,a)
+
+#define ext2_set_bit_atomic(lock, nr, addr)		\
+	({						\
+		int ret;				\
+		spin_lock(lock);			\
+		ret = ext2_set_bit((nr), (addr));	\
+		spin_unlock(lock);			\
+		ret;					\
+	})
+
+#define ext2_clear_bit_atomic(lock, nr, addr)		\
+	({						\
+		int ret;				\
+		spin_lock(lock);			\
+		ret = ext2_clear_bit((nr), (addr));	\
+		spin_unlock(lock);			\
+		ret;					\
+	})
+
 #define ext2_test_bit			test_le_bit
 #define ext2_find_first_zero_bit	find_first_zero_le_bit
 #define ext2_find_next_zero_bit		find_next_zero_le_bit

_
