Re: [PATCH 7/7] fs-writeback: only allow one inflight and pending full flush
From: Jan Kara <jack@suse.cz>
Date: 2017-09-25 09:35:32
Also in:
linux-fsdevel, lkml
On Thu 21-09-17 10:00:25, Jens Axboe wrote:
On 09/21/2017 09:36 AM, Jens Axboe wrote:quoted
quoted
But more importantly once we are not guaranteed that we only have a single global wb_writeback_work per bdi_writeback we should just embedd that into struct bdi_writeback instead of dynamically allocating it.We could do this as a followup. But right now the logic is that we can have on started (inflight), and still have one new queued.Something like the below would fit on top to do that. Gets rid of the allocation and embeds the work item for global start-all in the bdi_writeback structure.
Hum, so when we consider stuff like embedded work item, I would somewhat prefer to handle this like we do for for_background and for_kupdate style writeback so that we don't have another special case. For these don't queue any item, we just queue writeback work into the workqueue (via wb_wakeup()). When flusher work gets processed wb_do_writeback() checks (after processing all normal writeback requests) whether conditions for these special writeback styles are met and if yes, it creates on-stack work item and processes it (see wb_check_old_data_flush() and wb_check_background_flush()). So in this case we would just set some flag in bdi_writeback when memory reclaim needs help and wb_do_writeback() would check for this flag and create and process writeback-all style writeback work. Granted this does not preserve ordering of requests (basically any specific request gets priority over writeback-whole-world request) but memory gets cleaned in either case so flusher should be doing what is needed. Honza -- Jan Kara [off-list ref] SUSE Labs, CR -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>