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)
|
void bitmap_update_sb(struct bitmap *bitmap)
|
||||||
{
|
{
|
||||||
bitmap_super_t *sb;
|
bitmap_super_t *sb;
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
if (!bitmap || !bitmap->mddev) /* no bitmap for this array */
|
if (!bitmap || !bitmap->mddev) /* no bitmap for this array */
|
||||||
return;
|
return;
|
||||||
if (bitmap->mddev->bitmap_info.external)
|
if (bitmap->mddev->bitmap_info.external)
|
||||||
return;
|
return;
|
||||||
spin_lock_irqsave(&bitmap->lock, flags);
|
if (!bitmap->sb_page) /* no superblock */
|
||||||
if (!bitmap->sb_page) { /* no superblock */
|
|
||||||
spin_unlock_irqrestore(&bitmap->lock, flags);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
spin_unlock_irqrestore(&bitmap->lock, flags);
|
|
||||||
sb = kmap_atomic(bitmap->sb_page, KM_USER0);
|
sb = kmap_atomic(bitmap->sb_page, KM_USER0);
|
||||||
sb->events = cpu_to_le64(bitmap->mddev->events);
|
sb->events = cpu_to_le64(bitmap->mddev->events);
|
||||||
if (bitmap->mddev->events < bitmap->events_cleared)
|
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)
|
enum bitmap_mask_op op)
|
||||||
{
|
{
|
||||||
bitmap_super_t *sb;
|
bitmap_super_t *sb;
|
||||||
unsigned long flags;
|
|
||||||
int old;
|
int old;
|
||||||
|
|
||||||
spin_lock_irqsave(&bitmap->lock, flags);
|
if (!bitmap->sb_page) /* can't set the state */
|
||||||
if (!bitmap->sb_page) { /* can't set the state */
|
|
||||||
spin_unlock_irqrestore(&bitmap->lock, flags);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
spin_unlock_irqrestore(&bitmap->lock, flags);
|
|
||||||
sb = kmap_atomic(bitmap->sb_page, KM_USER0);
|
sb = kmap_atomic(bitmap->sb_page, KM_USER0);
|
||||||
old = le32_to_cpu(sb->state) & bits;
|
old = le32_to_cpu(sb->state) & bits;
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
|
Loading…
Reference in New Issue