lkml.org 
[lkml]   [2017]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/7] jbd2: make the whole kjournald2 kthread NOFS safe
    Date
    From: Michal Hocko <mhocko@suse.com>

    kjournald2 is central to the transaction commit processing. As such any
    potential allocation from this kernel thread has to be GFP_NOFS. Make
    sure to mark the whole kernel thread GFP_NOFS by the memalloc_nofs_save.

    Suggested-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    ---
    fs/jbd2/journal.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
    index a1a359bfcc9c..78433ce1db40 100644
    --- a/fs/jbd2/journal.c
    +++ b/fs/jbd2/journal.c
    @@ -43,6 +43,7 @@
    #include <linux/backing-dev.h>
    #include <linux/bitops.h>
    #include <linux/ratelimit.h>
    +#include <linux/sched/mm.h>

    #define CREATE_TRACE_POINTS
    #include <trace/events/jbd2.h>
    @@ -206,6 +207,13 @@ static int kjournald2(void *arg)
    wake_up(&journal->j_wait_done_commit);

    /*
    + * Make sure that no allocations from this kernel thread will ever recurse
    + * to the fs layer because we are responsible for the transaction commit
    + * and any fs involvement might get stuck waiting for the trasn. commit.
    + */
    + memalloc_nofs_save();
    +
    + /*
    * And now, wait forever for commit wakeup events.
    */
    write_lock(&journal->j_state_lock);
    --
    2.11.0
    \
     
     \ /
      Last update: 2017-03-06 14:49    [W:4.187 / U:0.824 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site