aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/glock.c
diff options
context:
space:
mode:
authorBob Peterson <rpeterso@redhat.com>2019-11-15 09:42:46 -0500
committerAndreas Gruenbacher <agruenba@redhat.com>2019-11-15 17:57:30 +0100
commit52b1cdcb7a84a4a3cec0093eaf390bf2e11e4278 (patch)
treea683c3b2fe2844f04f41a14046e0b9152f2d5439 /fs/gfs2/glock.c
parentgfs2: Don't loop forever in gfs2_freeze if withdrawn (diff)
downloadlinux-dev-52b1cdcb7a84a4a3cec0093eaf390bf2e11e4278.tar.xz
linux-dev-52b1cdcb7a84a4a3cec0093eaf390bf2e11e4278.zip
gfs2: Abort gfs2_freeze if io error is seen
Before this patch, an io error, such as -EIO writing to the journal would cause function gfs2_freeze to go into an infinite loop, continuously retrying the freeze operation. But nothing ever clears the -EIO except unmount after withdraw, which is impossible if the freeze operation never ends (fails). Instead you get: [ 6499.767994] gfs2: fsid=dm-32.0: error freezing FS: -5 [ 6499.773058] gfs2: fsid=dm-32.0: retrying... [ 6500.791957] gfs2: fsid=dm-32.0: error freezing FS: -5 [ 6500.797015] gfs2: fsid=dm-32.0: retrying... This patch adds a check for -EIO in gfs2_freeze, and if seen, it dequeues the freeze glock, aborts the loop and returns the error. Also, there's no need to pass the freeze holder to function gfs2_lock_fs_check_clean since it's only called in one place and it's a well-known superblock pointer, so this simplifies that. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'fs/gfs2/glock.c')
0 files changed, 0 insertions, 0 deletions