X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Fjbd%2Fcommit.c;h=17d29a83f3ed8eaf40a450231deef799b65372c0;hb=538e7bf8cfae29e1debcd16eb50f4fdfb5c5895d;hp=4bd882548c456bc496c9facab237e12445efaed1;hpb=d23b7b625ca72612b9d43b212783414e009bd5db;p=firefly-linux-kernel-4.4.55.git diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index 4bd882548c45..17d29a83f3ed 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c @@ -746,8 +746,13 @@ wait_for_iobuf: required. */ JBUFFER_TRACE(jh, "file as BJ_Forget"); journal_file_buffer(jh, commit_transaction, BJ_Forget); - /* Wake up any transactions which were waiting for this - IO to complete */ + /* + * Wake up any transactions which were waiting for this + * IO to complete. The barrier must be here so that changes + * by journal_file_buffer() take effect before wake_up_bit() + * does the waitqueue check. + */ + smp_mb(); wake_up_bit(&bh->b_state, BH_Unshadow); JBUFFER_TRACE(jh, "brelse shadowed buffer"); __brelse(bh);