diff --git a/fs/ext3/fsync.c b/fs/ext3/fsync.c
index 09b13bb..1e8de9c 100644
--- a/fs/ext3/fsync.c
+++ b/fs/ext3/fsync.c
@@ -82,7 +82,10 @@ int ext3_sync_file(struct file *file, int datasync)
 	    !journal_trans_will_send_data_barrier(journal, commit_tid))
 		needs_barrier = 1;
 	log_start_commit(journal, commit_tid);
+	blk_set_depends_on_task(journal->j_dev->bd_disk->queue,
+				journal->j_task);
 	ret = log_wait_commit(journal, commit_tid);
+	blk_reset_depends_on_task(journal->j_dev->bd_disk->queue);
 
 	/*
 	 * In case we didn't commit a transaction, we have to flush
