md/bitmap: remove some pointless locking.
authorNeilBrown <neilb@suse.de>
Mon, 19 Mar 2012 01:46:40 +0000 (12:46 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 19 Mar 2012 01:46:40 +0000 (12:46 +1100)
There is nothing gained by holding a lock while we check if a pointer
is NULL or not.  If there could be a race, then it could become NULL
immediately after the unlock - but there is no race here.

So just remove the locking.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/bitmap.c

index fcf3c94..e12b515 100644 (file)
@@ -446,18 +446,13 @@ out:
 void bitmap_update_sb(struct bitmap *bitmap)
 {
        bitmap_super_t *sb;
-       unsigned long flags;
 
        if (!bitmap || !bitmap->mddev) /* no bitmap for this array */
                return;
        if (bitmap->mddev->bitmap_info.external)
                return;
-       spin_lock_irqsave(&bitmap->lock, flags);
-       if (!bitmap->sb_page) { /* no superblock */
-               spin_unlock_irqrestore(&bitmap->lock, flags);
+       if (!bitmap->sb_page) /* no superblock */
                return;
-       }
-       spin_unlock_irqrestore(&bitmap->lock, flags);
        sb = kmap_atomic(bitmap->sb_page, KM_USER0);
        sb->events = cpu_to_le64(bitmap->mddev->events);
        if (bitmap->mddev->events < bitmap->events_cleared)
@@ -683,15 +678,10 @@ static int bitmap_mask_state(struct bitmap *bitmap, enum bitmap_state bits,
                             enum bitmap_mask_op op)
 {
        bitmap_super_t *sb;
-       unsigned long flags;
        int old;
 
-       spin_lock_irqsave(&bitmap->lock, flags);
-       if (!bitmap->sb_page) { /* can't set the state */
-               spin_unlock_irqrestore(&bitmap->lock, flags);
+       if (!bitmap->sb_page) /* can't set the state */
                return 0;
-       }
-       spin_unlock_irqrestore(&bitmap->lock, flags);
        sb = kmap_atomic(bitmap->sb_page, KM_USER0);
        old = le32_to_cpu(sb->state) & bits;
        switch (op) {