Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=20d698db67059a63d217030dfd02872cb5f88dfb
Commit:     20d698db67059a63d217030dfd02872cb5f88dfb
Parent:     17374ff1aa9ce2a0597416a16729474b538af443
Author:     Jens Axboe <[EMAIL PROTECTED]>
AuthorDate: Tue Jun 5 11:05:11 2007 +0200
Committer:  Jens Axboe <[EMAIL PROTECTED]>
CommitDate: Fri Jun 8 08:33:59 2007 +0200

    splice: move balance_dirty_pages_ratelimited() outside of splice actor
    
    I've seen inode related deadlocks, so move this call outside of the
    actor itself, which may hold the inode lock.
    
    Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
---
 fs/splice.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/splice.c b/fs/splice.c
index b78a7f0..6349d31 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -652,7 +652,6 @@ find_page:
         * accessed, we are now done!
         */
        mark_page_accessed(page);
-       balance_dirty_pages_ratelimited(mapping);
 out:
        page_cache_release(page);
        unlock_page(page);
@@ -823,6 +822,7 @@ generic_file_splice_write_nolock(struct pipe_inode_info 
*pipe, struct file *out,
                        if (err)
                                ret = err;
                }
+               balance_dirty_pages_ratelimited(mapping);
        }
 
        return ret;
@@ -876,6 +876,7 @@ generic_file_splice_write(struct pipe_inode_info *pipe, 
struct file *out,
                        if (err)
                                ret = err;
                }
+               balance_dirty_pages_ratelimited(mapping);
        }
 
        return ret;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to