|
@@ -2884,12 +2884,9 @@ int ext4_force_commit(struct super_block *sb)
|
|
/*
|
|
/*
|
|
* Ext4 always journals updates to the superblock itself, so we don't
|
|
* Ext4 always journals updates to the superblock itself, so we don't
|
|
* have to propagate any other updates to the superblock on disk at this
|
|
* have to propagate any other updates to the superblock on disk at this
|
|
- * point. Just start an async writeback to get the buffers on their way
|
|
|
|
- * to the disk.
|
|
|
|
- *
|
|
|
|
- * This implicitly triggers the writebehind on sync().
|
|
|
|
|
|
+ * point. (We can probably nuke this function altogether, and remove
|
|
|
|
+ * any mention to sb->s_dirt in all of fs/ext4; eventual cleanup...)
|
|
*/
|
|
*/
|
|
-
|
|
|
|
static void ext4_write_super(struct super_block *sb)
|
|
static void ext4_write_super(struct super_block *sb)
|
|
{
|
|
{
|
|
if (mutex_trylock(&sb->s_lock) != 0)
|
|
if (mutex_trylock(&sb->s_lock) != 0)
|
|
@@ -2899,15 +2896,15 @@ static void ext4_write_super(struct super_block *sb)
|
|
|
|
|
|
static int ext4_sync_fs(struct super_block *sb, int wait)
|
|
static int ext4_sync_fs(struct super_block *sb, int wait)
|
|
{
|
|
{
|
|
- tid_t target;
|
|
|
|
|
|
+ int ret = 0;
|
|
|
|
|
|
trace_mark(ext4_sync_fs, "dev %s wait %d", sb->s_id, wait);
|
|
trace_mark(ext4_sync_fs, "dev %s wait %d", sb->s_id, wait);
|
|
sb->s_dirt = 0;
|
|
sb->s_dirt = 0;
|
|
- if (jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, &target)) {
|
|
|
|
- if (wait)
|
|
|
|
- jbd2_log_wait_commit(EXT4_SB(sb)->s_journal, target);
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
|
|
+ if (wait)
|
|
|
|
+ ret = ext4_force_commit(sb);
|
|
|
|
+ else
|
|
|
|
+ jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, NULL);
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|