Add 'overwrite' mode back as 'flight' mode.
RFC PATCH 19/21 Add 'overwrite' mode back as 'flight' mode.
Uses per-cpu page pools as flight buffers, recycling pages and adding pagewriter_save_flight_data() to dump it all to relay.
--- include/linux/relay_pagewriter.h | 3 ++ kernel/relay_pagewriter.c | 71 +++++++++++++++++++++++++++++++++++--- 2 files changed, 69 insertions(+), 5 deletions(-)
include/linux/relay_pagewriter.h +3 -0
@@ -25,6 +25,7 @@* pagewriter flags */ #define PAGEWRITER_PAD_WRITES 0x00010000/* don't cross pages */ +#define PAGEWRITER_FLIGHT_MODE 0x00020000/* n_pages page ring */ /* * Per-cpu pagewriter buffer
@@ -37,6 +38,7 @@ struct pagewriter_buf {struct kref kref;/* channel buffer refcount */ struct list_head pool;/* current set of unused pages */ struct list_head empty_rpage_structs;/* cached rpage structs */ +size_t n_pages_flight;/* number full flight pages written */ unsigned int cpu;/* this buf's cpu */ }____cacheline_aligned ;
@@ -283,5 +285,6 @@ extern struct pagewriter *pagewriter_open(const char *base_filename,extern void pagewriter_flush (struct pagewriter *pagewriter);extern void pagewriter_close (struct pagewriter *pagewriter);extern void pagewriter_reset (struct pagewriter *pagewriter); +extern void pagewriter_save_flight_data (struct pagewriter *pagewriter);#endif /* _LINUX_RELAY_PAGEWRITER_H */
kernel/relay_pagewriter.c +66 -5
99 lines not on this page · raw message
Signature · 1 line
1.5.3.5