Re: [PATCH RFC mdadm/master] mdadm: add support for new lockless bitmap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

在 2025/01/27 17:25, Mariusz Tkaczyk 写道:
On Sun, 26 Jan 2025 16:27:14 +0800
Yu Kuai <yukuai1@xxxxxxxxxxxxxxx> wrote:

From: Yu Kuai <yukuai3@xxxxxxxxxx>

A new major number 6 is used for the new bitmap.

Noted that for the kernel that doesn't support lockless bitmap, create
such array will fail:

md0: invalid bitmap file superblock: unrecognized superblock version.
Hi Kuai,

Please go ahead and create branch on mdadm repo for lockness bitmap
implementation and keep your changes there. This is for sure not ready
and cannot be merged yet to main so sending it is not needed.

What do you think?

Yes, of course, this is just an early RFC version, I'm sending this
for people if they want to test.

I think fork a mdadm repo in my git tree is enough for now. :)

BTW, I still need to send a patch at company before I apply the patch
at home. I can't access my git tree at company, and our company policy
only allow me to send patch to open source community. :( Things will be
easier later after I apply a laptop and skip company's network.

Thanks,
Kuai


Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
---
  Create.c | 5 ++++-
  Grow.c   | 3 ++-
  bitmap.h | 1 +
  mdadm.c  | 9 ++++++++-
  mdadm.h  | 1 +
  super1.c | 9 +++++++++
  6 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/Create.c b/Create.c
index fd6c9215..105d15e0 100644
--- a/Create.c
+++ b/Create.c
@@ -541,6 +541,8 @@ int Create(struct supertype *st, struct
mddev_ident *ident, int subdevs, pr_err("At least 2 nodes are needed
for cluster-md\n"); return 1;
  		}
+	} else if (s->btype == BitmapLockless) {
+		major_num = BITMAP_MAJOR_LOCKLESS;
  	}
memset(&info, 0, sizeof(info));
@@ -1182,7 +1184,8 @@ int Create(struct supertype *st, struct
mddev_ident *ident, int subdevs,
  	 * to stop another mdadm from finding and using those
devices. */
- if (s->btype == BitmapInternal || s->btype == BitmapCluster)
{
+	if (s->btype == BitmapInternal || s->btype == BitmapCluster
||
+	    s->btype == BitmapLockless) {

This is asking to be moved to common helper function. Is is repeated 3
times at least so please consider (not sure about naming):

bool is_bitmap_supported(int btype) {
	if (btype == BitmapInternal || btype == BitmapCluster ||
	    btype == BitmapLockless)
		return true;
	return false;
}
Just a nit.
.






[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux