udf: Convert UDF_SB(sb)->s_flags to use bitops
authorJan Kara <jack@suse.cz>
Wed, 20 Oct 2010 15:25:59 +0000 (17:25 +0200)
committerJan Kara <jack@suse.cz>
Thu, 6 Jan 2011 16:03:54 +0000 (17:03 +0100)
Use atomic bitops to manipulate with sb flags to make manipulation safe
without any locking.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/udf_sb.h

index d113b72c2768318cc9401175479515d8557bf387..9f38a6ca4fd5ad866f209f4fb68212d751d4428a 100644 (file)
@@ -2,6 +2,7 @@
 #define __LINUX_UDF_SB_H
 
 #include <linux/mutex.h>
+#include <linux/bitops.h>
 
 /* Since UDF 2.01 is ISO 13346 based... */
 #define UDF_SUPER_MAGIC                        0x15013346
@@ -139,7 +140,7 @@ struct udf_sb_info {
        __u16                   s_udfrev;
 
        /* Miscellaneous flags */
-       __u32                   s_flags;
+       unsigned long           s_flags;
 
        /* Encoding info */
        struct nls_table        *s_nls_map;
@@ -161,8 +162,19 @@ struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct udf_sb_info *sbi);
 
 int udf_compute_nr_groups(struct super_block *sb, u32 partition);
 
-#define UDF_QUERY_FLAG(X,Y)                    ( UDF_SB(X)->s_flags & ( 1 << (Y) ) )
-#define UDF_SET_FLAG(X,Y)                      ( UDF_SB(X)->s_flags |= ( 1 << (Y) ) )
-#define UDF_CLEAR_FLAG(X,Y)                    ( UDF_SB(X)->s_flags &= ~( 1 << (Y) ) )
+static inline int UDF_QUERY_FLAG(struct super_block *sb, int flag)
+{
+       return test_bit(flag, &UDF_SB(sb)->s_flags);
+}
+
+static inline void UDF_SET_FLAG(struct super_block *sb, int flag)
+{
+       set_bit(flag, &UDF_SB(sb)->s_flags);
+}
+
+static inline void UDF_CLEAR_FLAG(struct super_block *sb, int flag)
+{
+       clear_bit(flag, &UDF_SB(sb)->s_flags);
+}
 
 #endif /* __LINUX_UDF_SB_H */