Messages in this thread | | | From | Peng Tao <> | Date | Thu, 18 Nov 2010 18:53:54 +0800 | Subject | Question about nfs_page_async_flush assertion |
| |
Hi, all,
nfs_writepages calls into write_cache_pages()->nfs_writepages_callback()->nfs_do_writepage()->nfs_page_async_flush(), where it asserts BUG_ON(test_bit(PG_CLEAN, &req->wb_flags)). My question is: how do we guarantee the request has PG_CLEAN flag set?
nfs_writepages calls: 356 nfs_pageio_init_write(&pgio, inode, wb_priority(wbc)); 357 err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio); 358 nfs_pageio_complete(&pgio);
IIUC, the request will only be issued in nfs_pageio_complete() and there nfs_write_rpcsetup() will call nfs_writeback_release_full()->nfs_mark_request_commit() to set the PG_CLEAN flag. If the request has not ever been issued before entering nfs_writepages, the PG_CLEAN flag will not be set and the BUG_ON will be triggered. Am I missing something?
-- Thanks, -Bergwolf
| |