Skip to content

Commit 6c4d03c

Browse files
YHNdnzjyuwata
authored andcommitted
shared/hibernate-util: don't attempt to fiemap fd if no backing dev available
Prompted by #35798 Co-authored-by: Yu Watanabe <[email protected]> (cherry picked from commit 6d3b227) (cherry picked from commit 74d673d) (cherry picked from commit e717b75)
1 parent e8bd67d commit 6c4d03c

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/shared/hibernate-util.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ static int swap_entry_get_resume_config(SwapEntry *swap) {
234234
r = get_block_device_fd(fd, &swap->devno);
235235
if (r < 0)
236236
return r;
237+
if (r == 0)
238+
return -EMEDIUMTYPE;
237239

238240
r = fd_is_fs_type(fd, BTRFS_SUPER_MAGIC);
239241
if (r < 0)
@@ -361,14 +363,16 @@ int find_suitable_hibernation_device_full(HibernationDevice *ret_device, uint64_
361363

362364
FOREACH_ARRAY(swap, entries.swaps, entries.n_swaps) {
363365
r = swap_entry_get_resume_config(swap);
364-
if (r < 0)
365-
return log_debug_errno(r, "Failed to get devno and offset for swap '%s': %m", swap->path);
366-
if (swap->devno == 0) {
366+
if (r == -EMEDIUMTYPE) {
367367
assert(swap->swapfile);
368368

369-
log_debug("Swap file '%s' is not backed by block device, ignoring: %m", swap->path);
369+
log_debug_errno(r, "Unable to acquire backing block device for swap file '%s' (maybe on a RAID btrfs?), ignoring.",
370+
swap->path);
370371
continue;
371372
}
373+
if (r < 0)
374+
return log_debug_errno(r, "Failed to get devno and offset for swap '%s': %m", swap->path);
375+
assert(swap->devno > 0);
372376

373377
if (resume_config_devno > 0) {
374378
if (swap->devno == resume_config_devno &&

0 commit comments

Comments
 (0)