]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
gfs2: check for live vs. read-only file system in gfs2_fitrim
authorBob Peterson <rpeterso@redhat.com>
Wed, 28 Oct 2020 18:42:18 +0000 (13:42 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Nov 2020 18:22:10 +0000 (19:22 +0100)
commited0983e84f21e4d5fc58210b1f2839d438732b21
treec79d5f55b45e151a8982c9519ca077f8f7dd63ed
parent8c8a35635c7f48caae9d6e93f01f0e909bf07285
gfs2: check for live vs. read-only file system in gfs2_fitrim

[ Upstream commit c5c68724696e7d2f8db58a5fce3673208d35c485 ]

Before this patch, gfs2_fitrim was not properly checking for a "live" file
system. If the file system had something to trim and the file system
was read-only (or spectator) it would start the trim, but when it starts
the transaction, gfs2_trans_begin returns -EROFS (read-only file system)
and it errors out. However, if the file system was already trimmed so
there's no work to do, it never called gfs2_trans_begin. That code is
bypassed so it never returns the error. Instead, it returns a good
return code with 0 work. All this makes for inconsistent behavior:
The same fstrim command can return -EROFS in one case and 0 in another.
This tripped up xfstests generic/537 which reports the error as:

    +fstrim with unrecovered metadata just ate your filesystem

This patch adds a check for a "live" (iow, active journal, iow, RW)
file system, and if not, returns the error properly.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/gfs2/rgrp.c