On Tue, 2012-03-20 at 16:41 +0200, Artem Bityutskiy wrote: > + INIT_DELAYED_WORK(&sbwork->dwork, write_super); > + sbwork->sb = sb; > + delay = msecs_to_jiffies(dirty_writeback_interval * 10); > + queue_delayed_work(sbi->dio_unwritten_wq, &sbwork->dwork, delay); I've just realized that the side-effect of using DIO workqueue is that 'syncfs()' will also synchronize the superblock because it flushes the workqueue: static int ext4_sync_fs(struct super_block *sb, int wait) { ... flush_workqueue(sbi->dio_unwritten_wq); ... } But before my change, it seems the superblock was not flushed on 'syncfs()', at least I do no see how this would be done. However, I think it is OK because I think it is correct to write the dirty superblock out on 'syncfs()', right? -- Best Regards, Artem Bityutskiy