1
0
Fork 0

Merging upstream version 4.2+20231121.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-14 06:32:38 +01:00
parent ae2c938e82
commit 5ba18aa35e
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
9 changed files with 307 additions and 150 deletions

42
lib.c
View file

@ -204,35 +204,6 @@ char *fd2devnm(int fd)
return NULL;
}
/* When we create a new array, we don't want the content to
* be immediately examined by udev - it is probably meaningless.
* So create /run/mdadm/creating-mdXXX and expect that a udev
* rule will noticed this and act accordingly.
*/
static char block_path[] = "/run/mdadm/creating-%s";
static char *unblock_path = NULL;
void udev_block(char *devnm)
{
int fd;
char *path = NULL;
xasprintf(&path, block_path, devnm);
fd = open(path, O_CREAT|O_RDWR, 0600);
if (fd >= 0) {
close(fd);
unblock_path = path;
} else
free(path);
}
void udev_unblock(void)
{
if (unblock_path)
unlink(unblock_path);
free(unblock_path);
unblock_path = NULL;
}
/*
* convert a major/minor pair for a block device into a name in /dev, if possible.
* On the first call, walk /dev collecting name.
@ -539,19 +510,6 @@ int check_env(char *name)
return 0;
}
int use_udev(void)
{
static int use = -1;
struct stat stb;
if (use < 0) {
use = ((stat("/dev/.udev", &stb) == 0 ||
stat("/run/udev", &stb) == 0) &&
check_env("MDADM_NO_UDEV") == 0);
}
return use;
}
unsigned long GCD(unsigned long a, unsigned long b)
{
while (a != b) {