• Tejun Heo's avatar
    writeback: implement [locked_]inode_to_wb_and_lock_list() · 87e1d789
    Tejun Heo authored
    cgroup writeback currently assumes that inode to wb association
    doesn't change; however, with the planned foreign inode wb switching
    mechanism, the association will change dynamically.
    
    When an inode needs to be put on one of the IO lists of its wb, the
    current code simply calls inode_to_wb() and locks the returned wb;
    however, with the planned wb switching, the association may change
    before locking the wb and may even get released.
    
    This patch implements [locked_]inode_to_wb_and_lock_list() which pins
    the associated wb while holding i_lock, releases it, acquires
    wb->list_lock and verifies that the association hasn't changed
    inbetween.  As the association will be protected by both locks among
    other things, this guarantees that the wb is the inode's associated wb
    until the list_lock is released.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Greg Thelen <gthelen@google.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    87e1d789
fs-writeback.c 61.1 KB