mirror of https://gitee.com/openkylin/linux.git
md/bitmap: remove some pointless locking.
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>
This commit is contained in:
parent
278c1ca2f2
commit
5a6c824ebb
|
@ -446,18 +446,13 @@ static struct page *read_page(struct file *file, unsigned long index,
|
|||
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) {
|
||||
|
|
Loading…
Reference in New Issue