mpage_writepages — walk the list of dirty pages of the given
int mpage_writepages ( | struct address_space * | mapping, |
struct writeback_control * | wbc, | |
get_block_t | get_block) ; |
mapping
address space structure to write
wbc
subtract the number of written pages from *wbc
->nr_to_write
get_block
the filesystem's block mapper function. If this is NULL then use a_ops->writepage. Otherwise, go direct-to-BIO.
This is a library function, which implements the writepages
address_space_operation.
If a page is already under I/O, generic_writepages
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.
This is a library function, which implements the writepages
address_space_operation.
If a page is already under I/O, generic_writepages
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.