]> git.ipfire.org Git - thirdparty/linux.git/commit
btrfs: allow swap activation to be interruptible
authorFilipe Manana <fdmanana@suse.com>
Mon, 9 Dec 2024 16:31:41 +0000 (16:31 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Dec 2024 21:04:38 +0000 (22:04 +0100)
commit9a45022a0efadd99bcc58f7f1cc2b6fb3b808c40
treedc7bfc94b966ba8a75e1571b7e62a644dec1629b
parent03018e5d8508254534511d40fb57bc150e6a87f2
btrfs: allow swap activation to be interruptible

During swap activation we iterate over the extents of a file, then do
several checks for each extent, some of which may take some significant
time such as checking if an extent is shared. Since a file can have
many thousands of extents, this can be a very slow operation and it's
currently not interruptible. I had a bug during development of a previous
patch that resulted in an infinite loop when iterating the extents, so
a core was busy looping and I couldn't cancel the operation, which is very
annoying and requires a reboot. So make the loop interruptible by checking
for fatal signals at the end of each iteration and stopping immediately if
there is one.

CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c