All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v0 0/3] mdadm: Use kernel raid headers
@ 2025-03-19 17:10 mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 1/3] mdadm: Remove klibc and uclibc support mtkaczyk
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: mtkaczyk @ 2025-03-19 17:10 UTC (permalink / raw)
  To: linux-raid; +Cc: Mariusz Tkaczyk, Xiao Ni, Nigel Croxon, Song Liu, Yu Kuai

From: Mariusz Tkaczyk <mtkaczyk@kernel.org>

Sending on ML for wider audience. I would like to confirm that there
are no objections to remove klibc support.

Kernel is exporting md_p.h and md_u.h which were newer used by mdadm. This
patchset integrates them with mdadm. There are some missing defines in kernel
headers, so they are redefined in ifndef blocks.

md_p.h includes asm/byteorder.h and it provides endianess casting functions.
These functions are also provided by klibc. To fix this, I removed klibc
support because I determined that mdadm is not compiling with klibc
for at least 3 years.

I also removed uclibc because it is not actively maintained, on other hand we
are working to enable musl:
https://github.com/md-raid-utilities/mdadm/issues/76

Thanks for review and feedback.

CC: Xiao Ni <xni@redhat.com>
CC: Nigel Croxon <ncroxon@redhat.com>
CC: Song Liu <song@kernel.org>
CC: Yu Kuai <yukuai@kernel.org>
Link: https://github.com/md-raid-utilities/mdadm/pull/149

Mariusz Tkaczyk (3):
  mdadm: Remove klibc and uclibc support
  mdadm: include asm/byteorder.h
  mdadm: use kernel raid headers

 Create.c    |   2 -
 Detail.c    |   2 -
 Examine.c   |   2 -
 Grow.c      |   6 ---
 Kill.c      |   2 -
 Makefile    |  34 ++------------
 Manage.c    |   2 -
 Query.c     |   2 -
 README.md   |   3 --
 mdadm.h     | 108 +++++++-------------------------------------
 mdmonitor.c |   2 -
 super1.c    | 126 ++--------------------------------------------------
 udev.c      |   2 -
 13 files changed, 22 insertions(+), 271 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v0 1/3] mdadm: Remove klibc and uclibc support
  2025-03-19 17:10 [PATCH v0 0/3] mdadm: Use kernel raid headers mtkaczyk
@ 2025-03-19 17:10 ` mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 2/3] mdadm: include asm/byteorder.h mtkaczyk
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: mtkaczyk @ 2025-03-19 17:10 UTC (permalink / raw)
  To: linux-raid; +Cc: Mariusz Tkaczyk, Xiao Ni, Nigel Croxon, Song Liu, Yu Kuai

From: Mariusz Tkaczyk <mtkaczyk@kernel.org>

Klibc compilation is not working for at least 3 years because of
following error:
mdadm.h:1912:15: error: unknown type name 'sighandler_t'

It will have a conflict with le/be_to_cpu() functions family provided by
asm/byteorder.h which will be included with raid/md_p.h. Therefore we
need to remove support for it. Also, remove uclibc because it is not actively
maintained.

Remove klibc and uclibc targets from Makefile and special klibc code.
Targets can be removed safely because using CC is recommended.

Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
---
 Makefile  | 34 +++-------------------------------
 README.md |  3 ---
 mdadm.h   | 37 +------------------------------------
 3 files changed, 4 insertions(+), 70 deletions(-)

diff --git a/Makefile b/Makefile
index bcd092de50c7..387e4a56f519 100644
--- a/Makefile
+++ b/Makefile
@@ -31,16 +31,6 @@
 # define "CXFLAGS" to give extra flags to CC.
 # e.g.  make CXFLAGS=-O to optimise
 CXFLAGS ?=-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE
-TCC = tcc
-UCLIBC_GCC = $(shell for nm in i386-uclibc-linux-gcc i386-uclibc-gcc; do which $$nm > /dev/null && { echo $$nm ; exit; } ; done; echo false No uclibc found )
-#DIET_GCC = diet gcc
-# sorry, but diet-libc doesn't know about posix_memalign,
-# so we cannot use it any more.
-DIET_GCC = gcc -DHAVE_STDINT_H
-
-KLIBC=/home/src/klibc/klibc-0.77
-
-KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32
 
 ifdef COVERITY
 COVERITY_FLAGS=-include coverity-gcc-hack.h
@@ -225,8 +215,6 @@ everything: all swap_super test_stripe raid6check \
 	mdadm.Os mdadm.O2 man
 everything-test: all swap_super test_stripe \
 	mdadm.Os mdadm.O2 man
-# mdadm.uclibc doesn't work on x86-64
-# mdadm.tcc doesn't work..
 
 %.o: %.c
 	$(CC) $(CFLAGS) $(CPPFLAGS) $(COVERITY_FLAGS) -o $@ -c $<
@@ -237,13 +225,6 @@ mdadm : $(OBJS) | check_rundir
 mdadm.static : $(OBJS) $(STATICOBJS)
 	$(CC) $(CFLAGS) $(LDFLAGS) -static -o mdadm.static $(OBJS) $(STATICOBJS) $(LDLIBS)
 
-mdadm.tcc : $(SRCS) $(INCL)
-	$(TCC) -o mdadm.tcc $(SRCS)
-
-mdadm.klibc : $(SRCS) $(INCL)
-	rm -f $(OBJS)
-	$(CC) -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32 $(CFLAGS) $(SRCS)
-
 mdadm.Os : $(SRCS) $(INCL)
 	$(CC) -o mdadm.Os $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -DHAVE_STDINT_H -Os $(SRCS) $(LDLIBS)
 
@@ -298,15 +279,6 @@ install : install-bin install-man install-udev
 install-static : mdadm.static install-man
 	$(INSTALL) -D $(STRIP) -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm
 
-install-tcc : mdadm.tcc install-man
-	$(INSTALL) -D $(STRIP) -m 755 mdadm.tcc $(DESTDIR)$(BINDIR)/mdadm
-
-install-uclibc : mdadm.uclibc install-man
-	$(INSTALL) -D $(STRIP) -m 755 mdadm.uclibc $(DESTDIR)$(BINDIR)/mdadm
-
-install-klibc : mdadm.klibc install-man
-	$(INSTALL) -D $(STRIP) -m 755 mdadm.klibc $(DESTDIR)$(BINDIR)/mdadm
-
 install-man: mdadm.8 md.4 mdadm.conf.5 mdmon.8
 	$(INSTALL) -D -m 644 mdadm.8 $(DESTDIR)$(MAN8DIR)/mdadm.8
 	$(INSTALL) -D -m 644 mdmon.8 $(DESTDIR)$(MAN8DIR)/mdmon.8
@@ -354,9 +326,9 @@ test: mdadm mdmon test_stripe swap_super raid6check
 
 clean :
 	rm -f mdadm mdmon $(OBJS) $(MON_OBJS) $(STATICOBJS) core *.man \
-	mdadm.tcc mdadm.uclibc mdadm.static *.orig *.porig *.rej *.alt \
-	.merge_file_* mdadm.Os mdadm.O2 mdmon.O2 swap_super init.cpio.gz \
-	mdadm.uclibc.static test_stripe raid6check raid6check.o mdmon mdadm.8
+	mdadm.static *.orig *.porig *.rej *.alt merge_file_* \
+	mdadm.Os mdadm.O2 mdmon.O2 swap_super init.cpio.gz \
+	test_stripe raid6check raid6check.o mdmon mdadm.8
 	rm -rf cov-int
 
 dist : clean
diff --git a/README.md b/README.md
index 0c299a9a26a2..12a26353e7e9 100644
--- a/README.md
+++ b/README.md
@@ -138,9 +138,6 @@ List of installation targets:
 
 The following targets are deprecated and should not be used:
 - `install-static`
-- `install-tcc`
-- `install-uclibc`
-- `install-klibc`
 
 # License
 
diff --git a/mdadm.h b/mdadm.h
index e84c341c3040..0b86e4849d33 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -43,6 +43,7 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #include	<sys/time.h>
 #include	<getopt.h>
 #include	<fcntl.h>
+#include	<ftw.h>
 #include	<stdio.h>
 #include	<errno.h>
 #include	<string.h>
@@ -189,7 +190,6 @@ struct dlm_lksb {
 			     ((x) & 0x00000000ff000000ULL) << 8 |  \
 			     ((x) & 0x000000ff00000000ULL) >> 8)
 
-#if !defined(__KLIBC__)
 #if BYTE_ORDER == LITTLE_ENDIAN
 #define	__cpu_to_le16(_x) (unsigned int)(_x)
 #define __cpu_to_le32(_x) (unsigned int)(_x)
@@ -221,7 +221,6 @@ struct dlm_lksb {
 #else
 #  error "unknown endianness."
 #endif
-#endif /* __KLIBC__ */
 
 /*
  * Partially stolen from include/linux/unaligned/packed_struct.h
@@ -1530,40 +1529,6 @@ extern void sysfsline(char *line);
 struct stat64;
 #endif
 
-#define HAVE_NFTW  we assume
-#define HAVE_FTW
-
-#ifdef __UCLIBC__
-# include <features.h>
-# ifndef __UCLIBC_HAS_LFS__
-#  define lseek64 lseek
-# endif
-# ifndef  __UCLIBC_HAS_FTW__
-#  undef HAVE_FTW
-#  undef HAVE_NFTW
-# endif
-#endif
-
-#ifdef __dietlibc__
-# undef HAVE_NFTW
-#endif
-
-#if defined(__KLIBC__)
-# undef HAVE_NFTW
-# undef HAVE_FTW
-#endif
-
-#ifndef HAVE_NFTW
-# define FTW_PHYS 1
-# ifndef HAVE_FTW
-  struct FTW {};
-# endif
-#endif
-
-#ifdef HAVE_FTW
-# include <ftw.h>
-#endif
-
 extern int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s);
 
 extern int Manage_ro(char *devname, int fd, int readonly);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v0 2/3] mdadm: include asm/byteorder.h
  2025-03-19 17:10 [PATCH v0 0/3] mdadm: Use kernel raid headers mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 1/3] mdadm: Remove klibc and uclibc support mtkaczyk
@ 2025-03-19 17:10 ` mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 3/3] mdadm: use kernel raid headers mtkaczyk
  2025-03-20  5:45 ` [PATCH v0 0/3] mdadm: Use " Xiao Ni
  3 siblings, 0 replies; 5+ messages in thread
From: mtkaczyk @ 2025-03-19 17:10 UTC (permalink / raw)
  To: linux-raid; +Cc: Mariusz Tkaczyk, Xiao Ni, Nigel Croxon, Song Liu, Yu Kuai

From: Mariusz Tkaczyk <mtkaczyk@kernel.org>

It will be included by raid/md_p.h anyway. Include it directly and
remove custom functions. It is not a problem now.

Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
---
 mdadm.h | 55 +------------------------------------------------------
 1 file changed, 1 insertion(+), 54 deletions(-)

diff --git a/mdadm.h b/mdadm.h
index 0b86e4849d33..d2c2a4dac11b 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -34,6 +34,7 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #endif
 
 #include	<assert.h>
+#include	<asm/byteorder.h>
 #include	<sys/types.h>
 #include	<sys/stat.h>
 #include	<stdarg.h>
@@ -85,7 +86,6 @@ struct dlm_lksb {
 #endif
 
 #include	<linux/kdev_t.h>
-/*#include	<linux/fs.h> */
 #include	<sys/mount.h>
 #include	<asm/types.h>
 #include	<sys/ioctl.h>
@@ -169,59 +169,6 @@ struct dlm_lksb {
 #include	"msg.h"
 #include	"mdadm_status.h"
 
-#include <endian.h>
-/* Redhat don't like to #include <asm/byteorder.h>, and
- * some time include <linux/byteorder/xxx_endian.h> isn't enough,
- * and there is no standard conversion function so... */
-/* And dietlibc doesn't think byteswap is ok, so.. */
-/*  #include <byteswap.h> */
-#define __mdadm_bswap_16(x) (((x) & 0x00ffU) << 8 | \
-			     ((x) & 0xff00U) >> 8)
-#define __mdadm_bswap_32(x) (((x) & 0x000000ffU) << 24 | \
-			     ((x) & 0xff000000U) >> 24 | \
-			     ((x) & 0x0000ff00U) << 8  | \
-			     ((x) & 0x00ff0000U) >> 8)
-#define __mdadm_bswap_64(x) (((x) & 0x00000000000000ffULL) << 56 | \
-			     ((x) & 0xff00000000000000ULL) >> 56 | \
-			     ((x) & 0x000000000000ff00ULL) << 40 | \
-			     ((x) & 0x00ff000000000000ULL) >> 40 | \
-			     ((x) & 0x0000000000ff0000ULL) << 24 | \
-			     ((x) & 0x0000ff0000000000ULL) >> 24 | \
-			     ((x) & 0x00000000ff000000ULL) << 8 |  \
-			     ((x) & 0x000000ff00000000ULL) >> 8)
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define	__cpu_to_le16(_x) (unsigned int)(_x)
-#define __cpu_to_le32(_x) (unsigned int)(_x)
-#define __cpu_to_le64(_x) (unsigned long long)(_x)
-#define	__le16_to_cpu(_x) (unsigned int)(_x)
-#define __le32_to_cpu(_x) (unsigned int)(_x)
-#define __le64_to_cpu(_x) (unsigned long long)(_x)
-
-#define	__cpu_to_be16(_x) __mdadm_bswap_16(_x)
-#define __cpu_to_be32(_x) __mdadm_bswap_32(_x)
-#define __cpu_to_be64(_x) __mdadm_bswap_64(_x)
-#define	__be16_to_cpu(_x) __mdadm_bswap_16(_x)
-#define __be32_to_cpu(_x) __mdadm_bswap_32(_x)
-#define __be64_to_cpu(_x) __mdadm_bswap_64(_x)
-#elif BYTE_ORDER == BIG_ENDIAN
-#define	__cpu_to_le16(_x) __mdadm_bswap_16(_x)
-#define __cpu_to_le32(_x) __mdadm_bswap_32(_x)
-#define __cpu_to_le64(_x) __mdadm_bswap_64(_x)
-#define	__le16_to_cpu(_x) __mdadm_bswap_16(_x)
-#define __le32_to_cpu(_x) __mdadm_bswap_32(_x)
-#define __le64_to_cpu(_x) __mdadm_bswap_64(_x)
-
-#define	__cpu_to_be16(_x) (unsigned int)(_x)
-#define __cpu_to_be32(_x) (unsigned int)(_x)
-#define __cpu_to_be64(_x) (unsigned long long)(_x)
-#define	__be16_to_cpu(_x) (unsigned int)(_x)
-#define __be32_to_cpu(_x) (unsigned int)(_x)
-#define __be64_to_cpu(_x) (unsigned long long)(_x)
-#else
-#  error "unknown endianness."
-#endif
-
 /*
  * Partially stolen from include/linux/unaligned/packed_struct.h
  */
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v0 3/3] mdadm: use kernel raid headers
  2025-03-19 17:10 [PATCH v0 0/3] mdadm: Use kernel raid headers mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 1/3] mdadm: Remove klibc and uclibc support mtkaczyk
  2025-03-19 17:10 ` [PATCH v0 2/3] mdadm: include asm/byteorder.h mtkaczyk
@ 2025-03-19 17:10 ` mtkaczyk
  2025-03-20  5:45 ` [PATCH v0 0/3] mdadm: Use " Xiao Ni
  3 siblings, 0 replies; 5+ messages in thread
From: mtkaczyk @ 2025-03-19 17:10 UTC (permalink / raw)
  To: linux-raid; +Cc: Mariusz Tkaczyk, Xiao Ni, Nigel Croxon, Song Liu, Yu Kuai

From: Mariusz Tkaczyk <mtkaczyk@kernel.org>

For a years we redefined these headers in mdadm. We should reuse headers
exported by kernel to integrate driver and mdadm better.
Include them and remove mdadm owned headers.

There are 3 defines not available in kernel headers, so define them
directly but put them in ifndef guard to make them transparent later.

Use MD_FEATURE_CLUSTERED instead of MD_FEATURE_BITMAP_VERSIONED. The
value is same, kernel define has different name.

Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
---
 Create.c    |   2 -
 Detail.c    |   2 -
 Examine.c   |   2 -
 Grow.c      |   6 ---
 Kill.c      |   2 -
 Manage.c    |   2 -
 Query.c     |   2 -
 mdadm.h     |  16 ++++++-
 mdmonitor.c |   2 -
 super1.c    | 126 ++--------------------------------------------------
 udev.c      |   2 -
 11 files changed, 17 insertions(+), 147 deletions(-)

diff --git a/Create.c b/Create.c
index fd6c92152021..4d5c15531df1 100644
--- a/Create.c
+++ b/Create.c
@@ -23,8 +23,6 @@
  */
 
 #include	"mdadm.h"
-#include	"md_u.h"
-#include	"md_p.h"
 #include	"udev.h"
 #include	"xmalloc.h"
 
diff --git a/Detail.c b/Detail.c
index b804a624574c..3802ef8fa6fc 100644
--- a/Detail.c
+++ b/Detail.c
@@ -23,8 +23,6 @@
  */
 
 #include	"mdadm.h"
-#include	"md_p.h"
-#include	"md_u.h"
 #include	"xmalloc.h"
 
 #include	<ctype.h>
diff --git a/Examine.c b/Examine.c
index 036b7a5634ad..9c8564be90d4 100644
--- a/Examine.c
+++ b/Examine.c
@@ -24,8 +24,6 @@
 
 #include	"dlink.h"
 #include	"mdadm.h"
-#include	"md_u.h"
-#include	"md_p.h"
 #include	"xmalloc.h"
 
 #if ! defined(__BIG_ENDIAN) && ! defined(__LITTLE_ENDIAN)
diff --git a/Grow.c b/Grow.c
index 53b0b3876b26..30eaa3c6a654 100644
--- a/Grow.c
+++ b/Grow.c
@@ -30,12 +30,6 @@
 #include	<stdint.h>
 #include	<sys/wait.h>
 
-#if ! defined(__BIG_ENDIAN) && ! defined(__LITTLE_ENDIAN)
-#error no endian defined
-#endif
-#include	"md_u.h"
-#include	"md_p.h"
-
 int restore_backup(struct supertype *st,
 		   struct mdinfo *content,
 		   int working_disks,
diff --git a/Kill.c b/Kill.c
index 43c9abed3b42..9f05a1ace8e1 100644
--- a/Kill.c
+++ b/Kill.c
@@ -26,8 +26,6 @@
  */
 
 #include	"mdadm.h"
-#include	"md_u.h"
-#include	"md_p.h"
 
 int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl)
 {
diff --git a/Manage.c b/Manage.c
index 034eb00c7f7d..22b1f52b7dc7 100644
--- a/Manage.c
+++ b/Manage.c
@@ -23,8 +23,6 @@
  */
 
 #include "mdadm.h"
-#include "md_u.h"
-#include "md_p.h"
 #include "udev.h"
 #include "xmalloc.h"
 
diff --git a/Query.c b/Query.c
index aedb4ce77d83..72f49a4e6e54 100644
--- a/Query.c
+++ b/Query.c
@@ -23,8 +23,6 @@
  */
 
 #include	"mdadm.h"
-#include	"md_p.h"
-#include	"md_u.h"
 
 int Query(char *dev)
 {
diff --git a/mdadm.h b/mdadm.h
index d2c2a4dac11b..a34a3ec2c472 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -163,8 +163,20 @@ struct dlm_lksb {
 #define GROW_SERVICE "mdadm-grow-continue"
 #endif /* GROW_SERVICE */
 
-#include	"md_u.h"
-#include	"md_p.h"
+#include	<linux/raid/md_u.h>
+#include	<linux/raid/md_p.h>
+
+/* These defines might be missing in raid headers*/
+#ifndef MD_SB_BLOCK_CONTAINER_RESHAPE
+#define MD_SB_BLOCK_CONTAINER_RESHAPE	3
+#endif
+#ifndef MD_SB_BLOCK_VOLUME
+#define MD_SB_BLOCK_VOLUME		4
+#endif
+#ifndef MD_DISK_REPLACEMENT
+#define MD_DISK_REPLACEMENT		17
+#endif
+
 #include	"bitmap.h"
 #include	"msg.h"
 #include	"mdadm_status.h"
diff --git a/mdmonitor.c b/mdmonitor.c
index d1cfbf947191..d51617cd0981 100644
--- a/mdmonitor.c
+++ b/mdmonitor.c
@@ -23,8 +23,6 @@
  */
 
 #include	"mdadm.h"
-#include	"md_p.h"
-#include	"md_u.h"
 #include	"udev.h"
 #include	"xmalloc.h"
 
diff --git a/super1.c b/super1.c
index fe3c4c64c66b..0db2544f18f4 100644
--- a/super1.c
+++ b/super1.c
@@ -26,92 +26,6 @@
 #include "mdadm.h"
 #include "xmalloc.h"
 
-/*
- * The version-1 superblock :
- * All numeric fields are little-endian.
- *
- * total size: 256 bytes plus 2 per device.
- *  1K allows 384 devices.
- */
-struct mdp_superblock_1 {
-	/* constant array information - 128 bytes */
-	__u32	magic;		/* MD_SB_MAGIC: 0xa92b4efc - little endian */
-	__u32	major_version;	/* 1 */
-	__u32	feature_map;	/* 0 for now */
-	__u32	pad0;		/* always set to 0 when writing */
-
-	__u8	set_uuid[16];	/* user-space generated. */
-	char	set_name[32];	/* set and interpreted by user-space */
-
-	__u64	ctime;		/* lo 40 bits are seconds, top 24 are microseconds or 0*/
-	__u32	level;		/* -4 (multipath), -1 (linear), 0,1,4,5 */
-	__u32	layout;		/* used for raid5, raid6, raid10, and raid0 */
-	__u64	size;		/* used size of component devices, in 512byte sectors */
-
-	__u32	chunksize;	/* in 512byte sectors */
-	__u32	raid_disks;
-	union {
-		__u32	bitmap_offset;	/* sectors after start of superblock that bitmap starts
-					 * NOTE: signed, so bitmap can be before superblock
-					 * only meaningful of feature_map[0] is set.
-					 */
-
-		/* only meaningful when feature_map[MD_FEATURE_PPL] is set */
-		struct {
-			__s16 offset; /* sectors from start of superblock that ppl starts */
-			__u16 size; /* ppl size in sectors */
-		} ppl;
-	};
-
-	/* These are only valid with feature bit '4' */
-	__u32	new_level;	/* new level we are reshaping to		*/
-	__u64	reshape_position;	/* next address in array-space for reshape */
-	__u32	delta_disks;	/* change in number of raid_disks		*/
-	__u32	new_layout;	/* new layout					*/
-	__u32	new_chunk;	/* new chunk size (sectors)			*/
-	__u32	new_offset;	/* signed number to add to data_offset in new
-				 * layout.  0 == no-change.  This can be
-				 * different on each device in the array.
-				 */
-
-	/* constant this-device information - 64 bytes */
-	__u64	data_offset;	/* sector start of data, often 0 */
-	__u64	data_size;	/* sectors in this device that can be used for data */
-	__u64	super_offset;	/* sector start of this superblock */
-	union {
-		__u64	recovery_offset;/* sectors before this offset (from data_offset) have been recovered */
-		__u64	journal_tail;/* journal tail of journal device (from data_offset) */
-	};
-	__u32	dev_number;	/* permanent identifier of this  device - not role in raid */
-	__u32	cnt_corrected_read; /* number of read errors that were corrected by re-writing */
-	__u8	device_uuid[16]; /* user-space setable, ignored by kernel */
-	__u8    devflags;        /* per-device flags.  Only one defined...*/
-#define WriteMostly1    1        /* mask for writemostly flag in above */
-#define FailFast1	2        /* Device should get FailFast requests */
-	/* bad block log.  If there are any bad blocks the feature flag is set.
-	 * if offset and size are non-zero, that space is reserved and available.
-	 */
-	__u8	bblog_shift;	/* shift from sectors to block size for badblock list */
-	__u16	bblog_size;	/* number of sectors reserved for badblock list */
-	__u32	bblog_offset;	/* sector offset from superblock to bblog, signed */
-
-	/* array state information - 64 bytes */
-	__u64	utime;		/* 40 bits second, 24 bits microseconds */
-	__u64	events;		/* incremented when superblock updated */
-	__u64	resync_offset;	/* data before this offset (from data_offset) known to be in sync */
-	__u32	sb_csum;	/* checksum upto dev_roles[max_dev] */
-	__u32	max_dev;	/* size of dev_roles[] array to consider */
-	__u8	pad3[64-32];	/* set to 0 when writing */
-
-	/* device state information. Indexed by dev_number.
-	 * 2 bytes per device
-	 * Note there are no per-device state flags. State information is rolled
-	 * into the 'roles' value.  If a device is spare or faulty, then it doesn't
-	 * have a meaningful role.
-	 */
-	__u16	dev_roles[0];	/* role in array, or 0xffff for a spare, or 0xfffe for faulty */
-};
-
 #define MAX_SB_SIZE 4096
 /* bitmap super size is 256, but we round up to a sector for alignment */
 #define BM_SUPER_SIZE 512
@@ -126,40 +40,6 @@ struct misc_dev_info {
 #define MULTIPLE_PPL_AREA_SIZE_SUPER1 (1024 * 1024) /* Size of the whole
 						     * mutliple PPL area
 						     */
-/* feature_map bits */
-#define MD_FEATURE_BITMAP_OFFSET	1
-#define	MD_FEATURE_RECOVERY_OFFSET	2 /* recovery_offset is present and
-					   * must be honoured
-					   */
-#define	MD_FEATURE_RESHAPE_ACTIVE	4
-#define	MD_FEATURE_BAD_BLOCKS		8 /* badblock list is not empty */
-#define	MD_FEATURE_REPLACEMENT		16 /* This device is replacing an
-					    * active device with same 'role'.
-					    * 'recovery_offset' is also set.
-					    */
-#define	MD_FEATURE_RESHAPE_BACKWARDS	32 /* Reshape doesn't change number
-					    * of devices, but is going
-					    * backwards anyway.
-					    */
-#define	MD_FEATURE_NEW_OFFSET		64 /* new_offset must be honoured */
-#define	MD_FEATURE_BITMAP_VERSIONED	256 /* bitmap version number checked properly */
-#define	MD_FEATURE_JOURNAL		512 /* support write journal */
-#define	MD_FEATURE_PPL			1024 /* support PPL */
-#define	MD_FEATURE_MUTLIPLE_PPLS	2048 /* support for multiple PPLs */
-#define	MD_FEATURE_RAID0_LAYOUT		4096 /* layout is meaningful in RAID0 */
-#define	MD_FEATURE_ALL			(MD_FEATURE_BITMAP_OFFSET	\
-					|MD_FEATURE_RECOVERY_OFFSET	\
-					|MD_FEATURE_RESHAPE_ACTIVE	\
-					|MD_FEATURE_BAD_BLOCKS		\
-					|MD_FEATURE_REPLACEMENT		\
-					|MD_FEATURE_RESHAPE_BACKWARDS	\
-					|MD_FEATURE_NEW_OFFSET		\
-					|MD_FEATURE_BITMAP_VERSIONED	\
-					|MD_FEATURE_JOURNAL		\
-					|MD_FEATURE_PPL			\
-					|MD_FEATURE_MULTIPLE_PPLS	\
-					|MD_FEATURE_RAID0_LAYOUT	\
-					)
 
 static int role_from_sb(struct mdp_superblock_1 *sb)
 {
@@ -319,7 +199,7 @@ static int awrite(struct align_fd *afd, void *buf, int len)
 static inline unsigned int md_feature_any_ppl_on(__u32 feature_map)
 {
 	return ((__cpu_to_le32(feature_map) &
-	    (MD_FEATURE_PPL | MD_FEATURE_MUTLIPLE_PPLS)));
+	    (MD_FEATURE_PPL | MD_FEATURE_MULTIPLE_PPLS)));
 }
 
 static inline unsigned int choose_ppl_space(int chunk)
@@ -1483,7 +1363,7 @@ static int update_super1(struct supertype *st, struct mdinfo *info,
 	}
 	case UOPT_NO_PPL:
 		sb->feature_map &= ~__cpu_to_le32(MD_FEATURE_PPL |
-						   MD_FEATURE_MUTLIPLE_PPLS);
+						  MD_FEATURE_MULTIPLE_PPLS);
 		break;
 	case UOPT_DEVICESIZE:
 		if (__le64_to_cpu(sb->super_offset) >=
@@ -2643,7 +2523,7 @@ add_internal_bitmap1(struct supertype *st,
 	bms->nodes = __cpu_to_le32(st->nodes);
 	if (st->nodes)
 		sb->feature_map = __cpu_to_le32(__le32_to_cpu(sb->feature_map) |
-						MD_FEATURE_BITMAP_VERSIONED);
+						MD_FEATURE_CLUSTERED);
 	if (st->cluster_name) {
 		len = sizeof(bms->cluster_name);
 		strncpy((char *)bms->cluster_name, st->cluster_name, len);
diff --git a/udev.c b/udev.c
index 88a997818115..961ca970d460 100644
--- a/udev.c
+++ b/udev.c
@@ -20,8 +20,6 @@
 
 #include	"mdadm.h"
 #include	"udev.h"
-#include	"md_p.h"
-#include	"md_u.h"
 #include	"xmalloc.h"
 
 #include	<sys/wait.h>
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v0 0/3] mdadm: Use kernel raid headers
  2025-03-19 17:10 [PATCH v0 0/3] mdadm: Use kernel raid headers mtkaczyk
                   ` (2 preceding siblings ...)
  2025-03-19 17:10 ` [PATCH v0 3/3] mdadm: use kernel raid headers mtkaczyk
@ 2025-03-20  5:45 ` Xiao Ni
  3 siblings, 0 replies; 5+ messages in thread
From: Xiao Ni @ 2025-03-20  5:45 UTC (permalink / raw)
  To: mtkaczyk; +Cc: linux-raid, Nigel Croxon, Song Liu, Yu Kuai

On Thu, Mar 20, 2025 at 1:11 AM <mtkaczyk@kernel.org> wrote:
>
> From: Mariusz Tkaczyk <mtkaczyk@kernel.org>
>
> Sending on ML for wider audience. I would like to confirm that there
> are no objections to remove klibc support.
>
> Kernel is exporting md_p.h and md_u.h which were newer used by mdadm. This
> patchset integrates them with mdadm. There are some missing defines in kernel
> headers, so they are redefined in ifndef blocks.
>
> md_p.h includes asm/byteorder.h and it provides endianess casting functions.
> These functions are also provided by klibc. To fix this, I removed klibc
> support because I determined that mdadm is not compiling with klibc
> for at least 3 years.
>
> I also removed uclibc because it is not actively maintained, on other hand we
> are working to enable musl:
> https://github.com/md-raid-utilities/mdadm/issues/76
>
> Thanks for review and feedback.
>
> CC: Xiao Ni <xni@redhat.com>
> CC: Nigel Croxon <ncroxon@redhat.com>
> CC: Song Liu <song@kernel.org>
> CC: Yu Kuai <yukuai@kernel.org>
> Link: https://github.com/md-raid-utilities/mdadm/pull/149
>
> Mariusz Tkaczyk (3):
>   mdadm: Remove klibc and uclibc support
>   mdadm: include asm/byteorder.h
>   mdadm: use kernel raid headers
>
>  Create.c    |   2 -
>  Detail.c    |   2 -
>  Examine.c   |   2 -
>  Grow.c      |   6 ---
>  Kill.c      |   2 -
>  Makefile    |  34 ++------------
>  Manage.c    |   2 -
>  Query.c     |   2 -
>  README.md   |   3 --
>  mdadm.h     | 108 +++++++-------------------------------------
>  mdmonitor.c |   2 -
>  super1.c    | 126 ++--------------------------------------------------
>  udev.c      |   2 -
>  13 files changed, 22 insertions(+), 271 deletions(-)
>
> --
> 2.43.0
>

Hi Mariusz

This patch set looks good to me.  You need to re-submit the PR based
on the latest version of https://github.com/md-raid-utilities/mdadm.
So we can know if regression tests can run successfully.

Acked-by: Xiao Ni <xni@redhat.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-03-20  5:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-19 17:10 [PATCH v0 0/3] mdadm: Use kernel raid headers mtkaczyk
2025-03-19 17:10 ` [PATCH v0 1/3] mdadm: Remove klibc and uclibc support mtkaczyk
2025-03-19 17:10 ` [PATCH v0 2/3] mdadm: include asm/byteorder.h mtkaczyk
2025-03-19 17:10 ` [PATCH v0 3/3] mdadm: use kernel raid headers mtkaczyk
2025-03-20  5:45 ` [PATCH v0 0/3] mdadm: Use " Xiao Ni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.