Bob Peterson
d14e1ca305
gfs2: Warn when a journal replay overwrites a rgrp with buffers
...
This patch adds some instrumentation in gfs2's journal replay that
indicates when we're about to overwrite a rgrp for which we already
have a valid buffer_head.
When this problem occurs, it's a situation in which this node has
been granted a rgrp glock and subsequently read in buffer_heads for
it, and possibly even made changes to the rgrp bits and/or
allocation values. But now another node has failed and forced us to
replay its journal, but its journal contains a copy of the same
rgrp, without a revoke, which means we're about to overwrite a
rgrp that we now rightfully own, with an obsolete copy. That is
always a problem. It means the other node (which failed and left
its journal to be replayed) failed to flush out its rgrp buffers,
write out the revoke, and invalidate its copy before it released
the glock to our possession.
No node should ever release a glock until its metadata has been
written to the journal and revoked and invalidated..
We also kludge around the problem and refuse to replace our good
copy with the journals bad copy by not marking the buffer dirty,
but never do it silently. That's wallpapering over a larger problem
that still exists. IOW, if this situation can happen to this node,
it can also happen to a different node and we wouldn't even know it
or be able to circumvent it: Suppose we have a 3-node cluster:
Node 1 fails, leaving an obsolete rgrp block in its journal without
a revoke. Node 2 grabs the rgrp as soon as the rgrp glock is
released and starts making changes, allocating and freeing blocks
from the rgrp, etc. Node 3 replays the journal from node 1,
oblivious and unaware that it's about to overwrite node 2's changes.
So we still need to be vocal and log the error to make it apparent
that a corruption path still exists in gfs2.
Signed-off-by: Bob Peterson <[email protected] >
Signed-off-by: Andreas Gruenbacher <[email protected] >
2019-06-27 21:04:07 +02:00
..
9p
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 188
2019-05-30 11:29:21 -07:00
adfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
affs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
afs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
autofs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 83
2019-05-24 17:37:52 +02:00
befs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
bfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
btrfs
for-5.2-rc5-tag
2019-06-18 11:20:24 -07:00
cachefiles
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36
2019-05-24 17:27:11 +02:00
ceph
ceph: fix error handling in ceph_get_caps()
2019-06-05 20:34:39 +02:00
cifs
SPDX update for 5.2-rc6
2019-06-21 09:58:42 -07:00
coda
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
configfs
SPDX update for 5.2-rc3, round 1
2019-05-31 08:34:32 -07:00
cramfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
crypto
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
debugfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
devpts
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 83
2019-05-24 17:37:52 +02:00
dlm
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398
2019-06-05 17:37:12 +02:00
ecryptfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
2019-06-05 17:37:06 +02:00
efivarfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
efs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
exportfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
ext2
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
ext4
Bug fixes (including a regression fix) for ext4.
2019-05-25 15:03:12 -07:00
f2fs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
fat
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
2019-06-05 17:36:37 +02:00
freevxfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
fscache
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
fuse
Revert "fuse: require /dev/fuse reads to have enough buffer capacity"
2019-06-11 13:35:22 +02:00
gfs2
gfs2: Warn when a journal replay overwrites a rgrp with buffers
2019-06-27 21:04:07 +02:00
hfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
hfsplus
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
hostfs
This pull request contains the following changes for UML:
2019-05-12 17:52:13 -04:00
hpfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
hugetlbfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
isofs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 142
2019-05-30 11:25:17 -07:00
jbd2
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
jffs2
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
jfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
kernfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
2019-06-05 17:37:16 +02:00
lockd
Revert "lockd: Show pid of lockd for remote locks"
2019-05-31 09:43:26 -04:00
minix
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
nfs
NFS4: Only set creation opendata if O_CREAT
2019-06-21 14:43:25 -04:00
nfs_common
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
nfsd
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1
2019-05-21 11:28:39 +02:00
nilfs2
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
nls
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
notify
fanotify: update connector fsid cache on add mark
2019-06-19 15:53:58 +02:00
ntfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 97
2019-05-24 17:37:53 +02:00
ocfs2
fs/ocfs2: fix race in ocfs2_dentry_attach_lock()
2019-06-13 17:34:56 -10:00
omfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 209
2019-05-30 11:29:53 -07:00
openpromfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
orangefs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
overlayfs
SPDX update for 5.2-rc6
2019-06-21 09:58:42 -07:00
proc
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 191
2019-05-30 11:29:21 -07:00
pstore
SPDX update for 5.2-rc4
2019-06-08 12:52:42 -07:00
qnx4
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
qnx6
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
quota
quota: fix a problem about transfer quota
2019-06-19 15:25:41 +02:00
ramfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
reiserfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
romfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
squashfs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
2019-06-19 17:09:53 +02:00
sysfs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
sysv
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
tracefs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
ubifs
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
2019-06-05 17:37:07 +02:00
udf
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
ufs
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
unicode
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 294
2019-06-05 17:36:38 +02:00
xfs
block: return from __bio_try_merge_page if merging occured in the same page
2019-06-17 09:33:02 -06:00
aio.c
anon_inodes.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
attr.c
bad_inode.c
binfmt_aout.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
binfmt_elf.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
binfmt_elf_fdpic.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
binfmt_em86.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
binfmt_flat.c
binfmt_misc.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
binfmt_script.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
block_dev.c
block: Don't revalidate bdev of hidden gendisk
2019-05-27 07:35:02 -06:00
buffer.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
char_dev.c
compat.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
compat_binfmt_elf.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 193
2019-05-30 11:29:21 -07:00
compat_ioctl.c
coredump.c
d_path.c
dax.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288
2019-06-05 17:36:37 +02:00
dcache.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
dcookies.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
direct-io.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
drop_caches.c
eventfd.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
eventpoll.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
exec.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
fcntl.c
fhandle.c
file.c
file_table.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
filesystems.c
fs-writeback.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
fs_context.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36
2019-05-24 17:27:11 +02:00
fs_parser.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36
2019-05-24 17:27:11 +02:00
fs_pin.c
fs_struct.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
fs_types.c
fsopen.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36
2019-05-24 17:27:11 +02:00
inode.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
internal.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
io_uring.c
io_uring: fix memory leak of UNIX domain socket inode
2019-06-13 03:00:30 -06:00
ioctl.c
iomap.c
block: return from __bio_try_merge_page if merging occured in the same page
2019-06-17 09:33:02 -06:00
Kconfig
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
Kconfig.binfmt
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
libfs.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
locks.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
Makefile
Add as a feature case-insensitive directories (the casefold feature)
2019-05-07 21:12:44 -07:00
mbcache.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
mount.h
mpage.c
block: remove the i argument to bio_for_each_segment_all
2019-04-30 09:26:13 -06:00
namei.c
Clean up fscrypt's dcache revalidation support, and other
2019-05-07 21:28:04 -07:00
namespace.c
fs/namespace: fix unprivileged mount propagation
2019-06-17 17:36:09 -04:00
no-block.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
nsfs.c
open.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
pipe.c
pnode.c
fs/namespace: fix unprivileged mount propagation
2019-06-17 17:36:09 -04:00
pnode.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 209
2019-05-30 11:29:53 -07:00
posix_acl.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
proc_namespace.c
read_write.c
vfs: pass ppos=NULL to .read()/.write() of FMODE_STREAM files
2019-05-06 17:46:52 +03:00
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
stack.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
stat.c
statfs.c
super.c
sync.c
fs/sync.c: sync_file_range(2) may use WB_SYNC_ALL writeback
2019-05-14 09:47:50 -07:00
timerfd.c
userfaultfd.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
2019-06-19 17:09:53 +02:00
utimes.c
xattr.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00