write_cache_pages — walk the list of dirty pages of the given address space and write all of them.
int write_cache_pages ( | struct address_space * | mapping, |
| struct writeback_control * | wbc, | |
| writepage_t | writepage, | |
| void * | data); |
mappingaddress space structure to write
wbc
subtract the number of written pages from *wbc->nr_to_write
writepagefunction called for each page
datadata passed to writepage function
If a page is already under I/O, write_cache_pages skips it, even
if it's dirty. This is desirable behaviour for memory-cleaning writeback,
but it is INCORRECT for data-integrity system calls such as fsync. fsync
and msync need to guarantee that all the data which was dirty at the time
the call was made get new I/O started against them. If wbc->sync_mode is
WB_SYNC_ALL then we were called for data integrity and we must wait for
existing IO to complete.