diff mbox

[RFC,2/2] fs: Disable interrupts after acquiring bit_spin_lock

Message ID 1444318308-27560-2-git-send-email-kernel@kyup.com (mailing list archive)
State New, archived
Headers show

Commit Message

kernel@kyup.com Oct. 8, 2015, 3:31 p.m. UTC
Signed-off-by: Nikolay Borisov <kernel@kyup.com>
---
 fs/buffer.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
diff mbox

Patch

diff --git a/fs/buffer.c b/fs/buffer.c
index 82283ab..7109d6a 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -305,8 +305,8 @@  static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
 	 * decide that the page is now completely done.
 	 */
 	first = page_buffers(page);
-	local_irq_save(flags);
 	bit_spin_lock(BH_Uptodate_Lock, &first->b_state);
+	local_irq_save(flags);
 	clear_buffer_async_read(bh);
 	unlock_buffer(bh);
 	tmp = bh;
@@ -319,8 +319,8 @@  static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
 		}
 		tmp = tmp->b_this_page;
 	} while (tmp != bh);
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	local_irq_restore(flags);
+	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 
 	/*
 	 * If none of the buffers had errors and they are all
@@ -332,8 +332,8 @@  static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
 	return;
 
 still_busy:
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	local_irq_restore(flags);
+	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	return;
 }
 
@@ -362,8 +362,8 @@  void end_buffer_async_write(struct buffer_head *bh, int uptodate)
 	}
 
 	first = page_buffers(page);
-	local_irq_save(flags);
 	bit_spin_lock(BH_Uptodate_Lock, &first->b_state);
+	local_irq_save(flags);
 
 	clear_buffer_async_write(bh);
 	unlock_buffer(bh);
@@ -375,14 +375,14 @@  void end_buffer_async_write(struct buffer_head *bh, int uptodate)
 		}
 		tmp = tmp->b_this_page;
 	}
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	local_irq_restore(flags);
+	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	end_page_writeback(page);
 	return;
 
 still_busy:
-	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	local_irq_restore(flags);
+	bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
 	return;
 }
 EXPORT_SYMBOL(end_buffer_async_write);