Thread (10 messages) 10 messages, 3 authors, 2022-10-13

Re: [PATCH 2/2] md/bitmap: Add chunk-count-based bitmap flushing

From: Song Liu <song@kernel.org>
Date: 2022-10-07 17:51:00
Also in: lkml

On Thu, Oct 6, 2022 at 3:09 PM Jonathan Derrick
[off-list ref] wrote:

[...]
quoted hunk ↗ jump to hunk
diff --git a/drivers/md/md-bitmap.h b/drivers/md/md-bitmap.h
index cfd7395de8fd..e0aeedbdde17 100644
--- a/drivers/md/md-bitmap.h
+++ b/drivers/md/md-bitmap.h
@@ -11,10 +11,12 @@
 /* version 4 insists the bitmap is in little-endian order
  * with version 3, it is host-endian which is non-portable
  * Version 5 is currently set only for clustered devices
++ * Version 6 supports the flush-chunks threshold
  */
 #define BITMAP_MAJOR_HI 4
 #define BITMAP_MAJOR_CLUSTERED 5
 #define        BITMAP_MAJOR_HOSTENDIAN 3
+#define BITMAP_MAJOR_CHUNKFLUSH 6

 /*
  * in-memory bitmap:
@@ -135,7 +137,8 @@ typedef struct bitmap_super_s {
                                  * reserved for the bitmap. */
        __le32 nodes;        /* 68 the maximum number of nodes in cluster. */
        __u8 cluster_name[64]; /* 72 cluster name to which this md belongs */
-       __u8  pad[256 - 136]; /* set to zero */
+       __le32 daemon_flush_chunks; /* 136 dirty chunks between flushes */
+       __u8  pad[256 - 140]; /* set to zero */
 } bitmap_super_t;
Do we really need this to be persistent? How about we configure it at run
time via a sysfs file?

Also, please share more data on the performance benefit of the set.

Thanks,
Song
quoted hunk ↗ jump to hunk
 /* notes:
diff --git a/drivers/md/md.h b/drivers/md/md.h
index b4e2d8b87b61..d25574e46283 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -497,6 +497,7 @@ struct mddev {
                struct mutex            mutex;
                unsigned long           chunksize;
                unsigned long           daemon_sleep; /* how many jiffies between updates? */
+               unsigned int            daemon_flush_chunks; /* how many dirty chunks between updates */
                unsigned long           max_write_behind; /* write-behind mode */
                int                     external;
                int                     nodes; /* Maximum number of nodes in the cluster */
--
2.31.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help