fallocate swapfile has holes on 5.8 ext4, causes: swapon failed: Invalid argument

Bug #1894910 reported by Ryan Harper on 2020-09-08
20
This bug affects 4 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Undecided
Unassigned

Bug Description

1) Groovy
2)
root@ubuntu:/home/ubuntu# apt-cache policy linux-image-generic
linux-image-generic:
  Installed: 5.8.0.18.22
  Candidate: 5.8.0.18.22
  Version table:
 *** 5.8.0.18.22 500
        500 http://archive.ubuntu.com/ubuntu groovy/main amd64 Packages
        100 /var/lib/dpkg/status
3) swapon --verbose /swap.img enables swap file successfully
4) swapon returns error, says swapfile has holes.

----
Curtin creates file-based swap files with fallocate:

fallocate -l XXXM /swap.img

When booting Groovy (5.8 kernel), the swapfile fails to load, complains it has holes

root@ubuntu:/home/ubuntu# swapon --verbose /swap.img
swapon: /swap.img: found signature [pagesize=4096, signature=swap]
swapon: /swap.img: pagesize=4096, swapsize=1251999744, devsize=1251999744
swapon /swap.img
[ 178.283022] swapon: swapfile has holes
swapon: /swap.img: swapon failed: Invalid argument
root@ubuntu:/home/ubuntu# uname -r
5.8.0-18-generic

This configuration works fine on Focal (5.4) and older. Previous Groovy kernels, (5.7) also worked.

It may be related to:

https://lkml.org/lkml/2020/9/4/259

ProblemType: Bug
DistroRelease: Ubuntu 20.10
Package: linux-image-generic 5.8.0.18.22
ProcVersionSignature: Ubuntu 5.8.0-18.19-generic 5.8.4
Uname: Linux 5.8.0-18-generic x86_64
AlsaDevices:
 total 0
 crw-rw---- 1 root audio 116, 1 Sep 8 21:38 seq
 crw-rw---- 1 root audio 116, 33 Sep 8 21:38 timer
AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
ApportVersion: 2.20.11-0ubuntu44
Architecture: amd64
ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1:
CasperMD5CheckResult: skip
Date: Tue Sep 8 21:44:13 2020
IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig'
Lsusb: Error: command ['lsusb'] failed with exit code 1:
Lsusb-t:

Lsusb-v: Error: command ['lsusb', '-v'] failed with exit code 1:
MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
PciMultimedia:

ProcEnviron:
 TERM=vt220
 PATH=(custom, no user)
 LANG=C.UTF-8
 SHELL=/bin/bash
ProcFB: 0 bochs-drmdrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-5.8.0-18-generic root=UUID=ce45bbaf-5a44-4487-b89e-035c2dd40657 ro console=ttyS0 systemd.mask=snapd.seeded.service systemd.mask=snapd.service panic=-1 softlockup_panic=1 hung_task_panic=1 nmi_watchdog=panic,1 ip=:::::BOOTIF:dhcp
RelatedPackageVersions:
 linux-restricted-modules-5.8.0-18-generic N/A
 linux-backports-modules-5.8.0-18-generic N/A
 linux-firmware 1.190
RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 04/01/2014
dmi.bios.release: 0.0
dmi.bios.vendor: SeaBIOS
dmi.bios.version: 1.13.0-1ubuntu1
dmi.chassis.type: 1
dmi.chassis.vendor: QEMU
dmi.chassis.version: pc-i440fx-focal
dmi.modalias: dmi:bvnSeaBIOS:bvr1.13.0-1ubuntu1:bd04/01/2014:br0.0:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-focal:cvnQEMU:ct1:cvrpc-i440fx-focal:
dmi.product.name: Standard PC (i440FX + PIIX, 1996)
dmi.product.version: pc-i440fx-focal
dmi.sys.vendor: QEMU

Related branches

Ryan Harper (raharper) wrote :

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Ryan Harper (raharper) on 2020-09-08
summary: - fallocate swapfile has holes on 5.8 ext4 over bcache
+ fallocate swapfile has holes on 5.8 ext4

Turns out it's unrelated to bcache; it is trivially reproducible:

lxc launch ubuntu-daily:groovy g1 --vm
lxc exec g1 bash
fallocate -l 1024M /swap.img
mkswap /swap.img
swapon --verbose /swap.img
cat /proc/swaps

On the 5.4 kernel that groovy had a few weeks back this works, on daily (5.8) this fails:

root@g2vm:/home/ubuntu# uname -r
5.8.0-18-generic
root@g2vm:/home/ubuntu# fallocate -l 1024M /swap.img
root@g2vm:/home/ubuntu# mkswap /swap.img
mkswap: /swap.img: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=dafabd56-1137-459c-8e61-b6335eac1d1a
root@g2vm:/home/ubuntu# swapon --verbose /swap.img
swapon: /swap.img: insecure permissions 0644, 0600 suggested.
swapon: /swap.img: found signature [pagesize=4096, signature=swap]
swapon: /swap.img: pagesize=4096, swapsize=1073741824, devsize=1073741824
swapon /swap.img
swapon: /swap.img: swapon failed: Invalid argument
root@g2vm:/home/ubuntu# cat /proc/swaps
Filename Type Size Used Priority
root@g2vm:/home/ubuntu# dmesg | tail -n 2
[ 7.778887] EXT4-fs (sda1): resized filesystem to 2412985
[ 32.766796] swapon: swapfile has holes

Here's groovy from a few weeks back

root@g1fat:/home/ubuntu# cat /etc/cloud/build.info
build_name: server
serial: 20200819.1
root@g1fat:/home/ubuntu# uname -r
5.4.0-42-generic
root@g1fat:/home/ubuntu# cat /proc/swaps
Filename Type Size Used Priority
root@g1fat:/home/ubuntu# fallocate -l 1024M /swap.img
root@g1fat:/home/ubuntu# mkswap /swap.img
mkswap: /swap.img: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=aef79113-dd6b-4029-b558-f5269150d853
root@g1fat:/home/ubuntu# swapon --verbose /swap.img
swapon: /swap.img: insecure permissions 0644, 0600 suggested.
swapon: /swap.img: found signature [pagesize=4096, signature=swap]
swapon: /swap.img: pagesize=4096, swapsize=1073741824, devsize=1073741824
swapon /swap.img
root@g1fat:/home/ubuntu# dmesg | tail -n 2
[431543.292314] Adding 1048572k swap on /swap.img. Priority:-2 extents:5 across:1187840k FS
root@g1fat:/home/ubuntu# cat /proc/swaps
Filename Type Size Used Priority
/swap.img file 1048572 0 -2

Paride Legovini (paride) on 2020-09-09
tags: added: rls-gg-incoming
summary: - fallocate swapfile has holes on 5.8 ext4
+ fallocate swapfile has holes on 5.8 ext4, causes: swapon failed: Invalid
+ argument
Paride Legovini (paride) wrote :

Can't be reproduced with the latest 5.8 kernel; likely fixed upstream by:

https://lkml.org/lkml/2020/9/4/259

Changed in linux (Ubuntu):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers