Hi, > While looking at fs/sync.c :: sync(), I found out that: > > 1) sync() first calls wakeup_flusher_threads() which ultimately calls > bdi_alloc_queue_work() with WB_SYNC_NONE for every bdi in the bdi_list. > > 2) sync() immediate then calls sync_filesystems(0) which does the same > thing - it calls writeback_inodes_sb() which finally calls > bdi_alloc_queue_work() with WB_SYNC_NONE for every bdi corresponding to > every filesystem. > > If it is possible, then I wanted to know why there are effectively two > calls which ultimately call bdi_alloc_queue_work() with WB_SYNC_NONE > twice? It's mostly a leftover from times when pdflush did background writing and sync_filesystem() was submitting IO on it's own (i.e., not leaving the work on flusher threads). Currently, you are right that wakeup_flusher_threads() is superfluous. But the whole sync code would need a cleanup to properly reflect the fact that know *all* the writes are done in background flusher threads. For example __sync_filesystem() in wait=0 case doesn't make much sense currently. Honza -- Jan Kara <jack@xxxxxxx> SuSE CR Labs -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html