repart: Reuse the backing fd for fdisk
Because fdisk_assign_device tries to open block devices with O_EXCL, when it does it blocks cryptsetup from using partition block devices for the same disk. Since we already have a file descriptor for the device, we can just share it and use fdisk_assign_device_by_fd instead. This requires at least libfdisk 2.35 (part of util-linux) which was released in 2020.
This commit is contained in:
@@ -23,6 +23,7 @@ DLSYM_PROTOTYPE(fdisk_apply_table) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_ask_get_type) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_ask_string_set_result) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_assign_device) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_assign_device_by_fd) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_create_disklabel) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_delete_partition) = NULL;
|
||||
DLSYM_PROTOTYPE(fdisk_get_devfd) = NULL;
|
||||
@@ -97,6 +98,7 @@ int dlopen_fdisk(int log_level) {
|
||||
DLSYM_ARG(fdisk_ask_get_type),
|
||||
DLSYM_ARG(fdisk_ask_string_set_result),
|
||||
DLSYM_ARG(fdisk_assign_device),
|
||||
DLSYM_ARG(fdisk_assign_device_by_fd),
|
||||
DLSYM_ARG(fdisk_create_disklabel),
|
||||
DLSYM_ARG(fdisk_delete_partition),
|
||||
DLSYM_ARG(fdisk_get_devfd),
|
||||
|
||||
@@ -14,6 +14,7 @@ extern DLSYM_PROTOTYPE(fdisk_apply_table);
|
||||
extern DLSYM_PROTOTYPE(fdisk_ask_get_type);
|
||||
extern DLSYM_PROTOTYPE(fdisk_ask_string_set_result);
|
||||
extern DLSYM_PROTOTYPE(fdisk_assign_device);
|
||||
extern DLSYM_PROTOTYPE(fdisk_assign_device_by_fd);
|
||||
extern DLSYM_PROTOTYPE(fdisk_create_disklabel);
|
||||
extern DLSYM_PROTOTYPE(fdisk_delete_partition);
|
||||
extern DLSYM_PROTOTYPE(fdisk_get_devfd);
|
||||
|
||||
Reference in New Issue
Block a user