From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikolay Borisov Subject: [RFC PATCH 2/2] fs: Disable interrupts after acquiring bit_spin_lock Date: Thu, 8 Oct 2015 18:31:48 +0300 Message-ID: <1444318308-27560-2-git-send-email-kernel@kyup.com> References: <1444318308-27560-1-git-send-email-kernel@kyup.com> Cc: operations@siteground.com, mm@1h.com To: tytso@mit.edu, adilger.kernel@dilger.ca, viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Return-path: In-Reply-To: <1444318308-27560-1-git-send-email-kernel@kyup.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Signed-off-by: Nikolay Borisov --- fs/buffer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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); -- 2.5.0