diff options
Diffstat (limited to 'fs/jbd/recovery.c')
| -rw-r--r-- | fs/jbd/recovery.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/jbd/recovery.c b/fs/jbd/recovery.c index 5b43e96788e..a748fe21465 100644 --- a/fs/jbd/recovery.c +++ b/fs/jbd/recovery.c @@ -20,6 +20,7 @@ #include <linux/fs.h> #include <linux/jbd.h> #include <linux/errno.h> +#include <linux/blkdev.h> #endif /* @@ -263,6 +264,12 @@ int journal_recover(journal_t *journal) err2 = sync_blockdev(journal->j_fs_dev); if (!err) err = err2; + /* Flush disk caches to get replayed data on the permanent storage */ + if (journal->j_flags & JFS_BARRIER) { + err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL); + if (!err) + err = err2; + } return err; } |
