diff --git a/src/shared/blockdev-util.c b/src/shared/blockdev-util.c index 383df8bd8f..968ff6adc3 100644 --- a/src/shared/blockdev-util.c +++ b/src/shared/blockdev-util.c @@ -138,7 +138,7 @@ int block_device_get_originating(sd_device *dev, sd_device **ret) { return -ENOENT; *ret = TAKE_PTR(first_found); - return 1; /* found */ + return 0; } int block_device_new_from_fd(int fd, BlockDeviceLookupFlag flags, sd_device **ret) { @@ -166,10 +166,10 @@ int block_device_new_from_fd(int fd, BlockDeviceLookupFlag flags, sd_device **re return r; r = block_device_get_originating(dev_whole_disk, &dev_origin); - if (r < 0 && r != -ENOENT) - return r; - if (r > 0) + if (r >= 0) device_unref_and_replace(dev, dev_origin); + else if (r != -ENOENT) + return r; } if (FLAGS_SET(flags, BLOCK_DEVICE_LOOKUP_WHOLE_DISK)) { diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c index 1f1ebe2e8f..4bc6917887 100644 --- a/src/storagetm/storagetm.c +++ b/src/storagetm/storagetm.c @@ -842,7 +842,7 @@ static void device_track_back(sd_device *d, sd_device **ret) { _cleanup_(sd_device_unrefp) sd_device *d_originating = NULL; r = block_device_get_originating(d, &d_originating); - if (r < 0) + if (r < 0 && r != -ENOENT) log_device_debug_errno(d, r, "Failed to get originating device for '%s', ignoring: %m", strna(devname)); sd_device *d_whole = NULL;