Package: e2fsprogs
Version: 1.44.1-2
Trying to mkfs.ext4 from initramfs (so with klibc) inside QEMU, it gets
stuck on getrandom syscall. Running it with strace:
uname({sysname="Linux", nodename="(none)", ...}) = 0
access("/sys/fs/ext4/features/lazy_itable_init", R_OK) = -1 ENOENT (No
such file or directory)
openat(AT_FDCWD, "/dev/sda", O_RDONLY|O_EXCL) = 3
getuid() = 0
geteuid() = 0
getgid() = 0
getegid() = 0
prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER)
fstat(3, {st_mode=S_IFBLK|0600, st_rdev=makedev(8, 0), ...}) = 0
ioctl(3, BLKDISCARDZEROES, [0]) = 0
pread64(3, "\0\0\10\0\0\0
\0\231\231\1\0q\33\37\0\365\377\7\0\0\0\0\0\2\0\0\0\2\0\0\0"..., 1024,
1024) = 1024
close(3) = 0
access("/var/lib/e2fsprogs", W_OK) = -1 ENOENT (No such file or
directory)
openat(AT_FDCWD, "/dev/sda", O_RDWR|O_EXCL) = 3
getuid() = 0
geteuid() = 0
getgid() = 0
getegid() = 0
prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER)
fstat(3, {st_mode=S_IFBLK|0600, st_rdev=makedev(8, 0), ...}) = 0
ioctl(3, BLKDISCARDZEROES, [0]) = 0
ioctl(3, BLKROGET, [0]) = 0
uname({sysname="Linux", nodename="(none)", ...}) = 0
ioctl(3, BLKDISCARD, [0, 16777216]) = 0
write(1, "Discarding device blocks: ", 26Discarding device blocks: ) = 26
write(1, " 4096/2097152", 15 4096/2097152) = 15
write(1, "\10\10\10\10\10\10\10\10\10\10\10\1) = 150\10", 15
ioctl(3, BLKDISCARD, [16777216, 2147483648]) = 0
ioctl(3, BLKDISCARD, [2164260864, 2147483648]) = 0
ioctl(3, BLKDISCARD, [4311744512, 2147483648]) = 0
ioctl(3, BLKDISCARD, [6459228160, 2130706432]) = 0
write(1, " ", 15 ) = 15
write(1, "\10\10\10\10\10\10\10\10\10\10\10\1) = 150\10", 15
write(1, "done "..., 33done
) = 33
pwrite64(3,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
3072, 1024) = 3072
access("/dev/random", R_OK) = 0
getrandom(
I wasn't experiencing such a behavior one month before, but I don't know
what caused it: kernel update from 4.15 to 4.16 or e2fsprogs update.
Workaround is to run mke2fs with explicitly specified uuid and hash seed:
mkfs.ext4 -U 08365ab2-bf18-43eb-9035-ce947f4a7565 -E hash_seed=08365a
b2-bf18-43eb-9035-ce947f4a7565 /dev/sda
I don't think mke2fs should do blocking random calls. /dev/urandom is
present and works fine (I checked it).