Skip to contentSkip to conversation

Add 'overwrite' mode back as 'flight' mode.

RFC PATCH In review Tom Zanussi 1 participant 1 message Oct 16, 2008

lore
Share & tools
lore
#0 lore raw

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
index 12378e5..91ad16b 100644
@@ -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