linux_dsm_epyc7002/fs/ext4
Theodore Ts'o 8df9675f8b ext4: Avoid races caused by on-line resizing and SMP memory reordering
Ext4's on-line resizing adds a new block group and then, only at the
last step adjusts s_groups_count.  However, it's possible on SMP
systems that another CPU could see the updated the s_group_count and
not see the newly initialized data structures for the just-added block
group.  For this reason, it's important to insert a SMP read barrier
after reading s_groups_count and before reading any (for example) the
new block group descriptors allowed by the increased value of
s_groups_count.

Unfortunately, we rather blatently violate this locking protocol
documented in fs/ext4/resize.c.  Fortunately, (1) on-line resizes
happen relatively rarely, and (2) it seems rare that the filesystem
code will immediately try to use just-added block group before any
memory ordering issues resolve themselves.  So apparently problems
here are relatively hard to hit, since ext3 has been vulnerable to the
same issue for years with no one apparently complaining.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2009-05-01 08:50:38 -04:00
..
acl.c New helper - current_umask() 2009-03-31 23:00:26 -04:00
acl.h ext4: Rename ext4dev to ext4 2008-10-10 20:02:48 -04:00
balloc.c ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
bitmap.c ext4: Change unsigned long to unsigned int 2008-11-05 00:14:04 -05:00
dir.c ext4: New rec_len encoding for very large blocksizes 2009-02-14 23:01:36 -05:00
ext4_extents.h ext4: Validate extent details only when read from the disk 2009-03-27 16:39:58 -04:00
ext4_i.h ext4: New inode/block allocation algorithms for flex_bg filesystems 2009-03-12 12:18:34 -04:00
ext4_jbd2.c ext4: Allow ext4 to run without a journal 2009-01-07 00:06:22 -05:00
ext4_jbd2.h ext4: Remove "extents" mount option 2009-01-06 14:53:16 -05:00
ext4_sb.h ext4: Add sysfs support 2009-03-31 09:10:09 -04:00
ext4.h ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
extents.c ext4: Mark the unwritten buffer_head as mapped during write_begin 2009-05-12 16:30:27 -04:00
file.c ext4: Fix discard of inode prealloc space with delayed allocation. 2009-03-27 22:36:43 -04:00
fsync.c ext4: Add debugging markers that can be used by systemtap 2008-10-05 20:50:06 -04:00
group.h ext4: Rename read_block_bitmap() to ext4_read_block_bitmap() 2008-07-11 19:27:31 -04:00
hash.c ext4: Add support for non-native signed/unsigned htree hash algorithms 2008-10-28 13:21:44 -04:00
ialloc.c ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
inode.c ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
ioctl.c ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl 2009-02-26 01:04:07 -05:00
Kconfig trivial: fix typos/grammar errors in Kconfig texts 2009-03-30 15:22:01 +02:00
Makefile ext4: Rename ext4dev to ext4 2008-10-10 20:02:48 -04:00
mballoc.c ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
mballoc.h ext4: Rename pa_linear to pa_type 2009-03-27 17:16:58 -04:00
migrate.c ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling 2009-02-15 20:02:19 -05:00
namei.c ext4: Use lowercase names of quota functions 2009-03-26 02:18:36 +01:00
namei.h [PATCH] ext4: rename ext4 symbols to avoid duplication of ext3 symbols 2006-10-11 11:14:15 -07:00
resize.c ext4: Use atomic_t's in struct flex_groups 2009-03-04 19:09:10 -05:00
super.c ext4: Avoid races caused by on-line resizing and SMP memory reordering 2009-05-01 08:50:38 -04:00
symlink.c ext4: Rename ext4dev to ext4 2008-10-10 20:02:48 -04:00
xattr_security.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
xattr_trusted.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr_user.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr.c ext4: Use lowercase names of quota functions 2009-03-26 02:18:36 +01:00
xattr.h ext4: Rename ext4dev to ext4 2008-10-10 20:02:48 -04:00