linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* question on sync()
@ 2010-03-31 16:29 Surbhi Palande
  2010-04-01 19:54 ` Jan Kara
  0 siblings, 1 reply; 2+ messages in thread
From: Surbhi Palande @ 2010-03-31 16:29 UTC (permalink / raw)
  To: ext4 development

Hie,

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?

Thanks!

Warm Regards,
Surbhi.





^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: question on sync()
  2010-03-31 16:29 question on sync() Surbhi Palande
@ 2010-04-01 19:54 ` Jan Kara
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kara @ 2010-04-01 19:54 UTC (permalink / raw)
  To: Surbhi Palande; +Cc: ext4 development

  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@suse.cz>
SuSE CR Labs

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-04-01 19:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-31 16:29 question on sync() Surbhi Palande
2010-04-01 19:54 ` Jan Kara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).