-
Notifications
You must be signed in to change notification settings - Fork 341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] Unable to add new disk #6531
Comments
@lanfon72 Is this happening on 1.3.2 also? Is this regression? |
From the screenshot it looks like node-disk-manager has picked up a dm device, which we actually don't want it to be doing. This is probably because multipath is enabled in the initrd, which has since been fixed by harvester/harvester-installer#831, but even so, we still need to make sure NDM doesn't use dm devices. I'm working in this area ATM anyway, so I'll take this for further investigation /cc @Vicente-Cheng @ibrokethecloud |
Pre Ready-For-Testing Checklist
|
As @tserong mentioned, this regression is introduced with external root disk support (because we need the multipath) and fixed by the PR harvester/harvester-installer#831. However, for the NDM side, we could improve by skipping the dm device. We could create another issue for this enhancement. |
Yeah, the issue is to do with how we map WWNs back through @lanfon72 if you've still got that system running, I'd be interested to see the output of
...which indicates that it picked up the device originally from This won't be a problem for the next sprint release (because of the fix @Vicente-Cheng mentioned), but I will still do some work to improve |
I think the problem is:
The output of but |
Thanks @lanfon72. The WWN would have been there originally, but it gets wiped in a subsequent update when |
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]>
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]>
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]>
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]> (cherry picked from commit cefcc3d)
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]> (cherry picked from commit cefcc3d)
Verified this bug has been fixed. Test Information
Verify Steps
|
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]> (cherry picked from commit cefcc3d) Conflicts: pkg/controller/blockdevice/controller.go - move the corresponding logic back to blockdevice/controller pkg/provisioner/common.go - remove provisioner because we did not introduce it on v0.6.x
If multipathd is running and has taken over a device, ResolvePersistentDevPath() will end up returning a "/dev/dm-*" device path, which we don't want. We want the real underyling device (e.g. "/dev/sda"). If we take a "/dev/dm-*" path and later update the blockdevice CR with it, we lose all the interesting DeviceStatus information, like the WWN. Happily, in this case, we can figure out the right path to use by checking "/dev/disk/by-path/" + the device's bus path. This has the added advantage of also working for block devices that have no WWN. Related issue: harvester/harvester#6531 Signed-off-by: Tim Serong <[email protected]> (cherry picked from commit cefcc3d) Conflicts: pkg/controller/blockdevice/controller.go - move the corresponding logic back to blockdevice/controller pkg/provisioner/common.go - remove provisioner because we did not introduce it on v0.6.x
Describe the bug
Unable to add new disk
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Disk should added successfully
Environment:
Additional context
The screenshot in
v1.3.2
(same configuration in qemu/KVM)The text was updated successfully, but these errors were encountered: