core: Fix resolution of nested DM devices for cgroups
When using the cgroups IO controller, the device that is controlled should always be the toplevel block device. This did not get resolved correctly for an LVM volume inside a LUKS device, because the code would only resolve one level of indirection. Fix this by recursively looking up the originating block device for DM devices. Resolves: #15008
This commit is contained in:
committed by
Chris Down
parent
57680ddd40
commit
b7cf4b4ef5
+2
-2
@@ -678,8 +678,8 @@ static int lookup_block_device(const char *p, dev_t *ret) {
|
||||
return log_warning_errno(r, "Failed to determine block device backing btrfs file system '%s': %m", p);
|
||||
}
|
||||
|
||||
/* If this is a LUKS device, try to get the originating block device */
|
||||
(void) block_get_originating(*ret, ret);
|
||||
/* If this is a LUKS/DM device, recursively try to get the originating block device */
|
||||
while (block_get_originating(*ret, ret) > 0);
|
||||
|
||||
/* If this is a partition, try to get the originating block device */
|
||||
(void) block_get_whole_disk(*ret, ret);
|
||||
|
||||
Reference in New Issue
Block a user