• C
    bcache: return error immediately in bch_journal_replay() · 68d10e69
    Coly Li 提交于
    When failure happens inside bch_journal_replay(), calling
    cache_set_err_on() and handling the failure in async way is not a good
    idea. Because after bch_journal_replay() returns, registering code will
    continue to execute following steps, and unregistering code triggered
    by cache_set_err_on() is running in same time. First it is unnecessary
    to handle failure and unregister cache set in an async way, second there
    might be potential race condition to run register and unregister code
    for same cache set.
    
    So in this patch, if failure happens in bch_journal_replay(), we don't
    call cache_set_err_on(), and just print out the same error message to
    kernel message buffer, then return -EIO immediately caller. Then caller
    can detect such failure and handle it in synchrnozied way.
    Signed-off-by: NColy Li <colyli@suse.de>
    Reviewed-by: NHannes Reinecke <hare@suse.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    68d10e69
journal.c 19.7 KB