mirror of https://gitee.com/openkylin/linux.git
ext4: make dioread_nolock the default
This fixes the direct I/O versus writeback race which can reveal stale data, and it improves the tail latency of commits on slow devices. Link: https://lore.kernel.org/r/20200125022254.1101588-1-tytso@mit.edu Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
4068664e3c
commit
244adf6426
|
@ -1592,6 +1592,7 @@ static const match_table_t tokens = {
|
||||||
{Opt_auto_da_alloc, "auto_da_alloc"},
|
{Opt_auto_da_alloc, "auto_da_alloc"},
|
||||||
{Opt_noauto_da_alloc, "noauto_da_alloc"},
|
{Opt_noauto_da_alloc, "noauto_da_alloc"},
|
||||||
{Opt_dioread_nolock, "dioread_nolock"},
|
{Opt_dioread_nolock, "dioread_nolock"},
|
||||||
|
{Opt_dioread_lock, "nodioread_nolock"},
|
||||||
{Opt_dioread_lock, "dioread_lock"},
|
{Opt_dioread_lock, "dioread_lock"},
|
||||||
{Opt_discard, "discard"},
|
{Opt_discard, "discard"},
|
||||||
{Opt_nodiscard, "nodiscard"},
|
{Opt_nodiscard, "nodiscard"},
|
||||||
|
@ -3764,6 +3765,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
set_opt(sb, NO_UID32);
|
set_opt(sb, NO_UID32);
|
||||||
/* xattr user namespace & acls are now defaulted on */
|
/* xattr user namespace & acls are now defaulted on */
|
||||||
set_opt(sb, XATTR_USER);
|
set_opt(sb, XATTR_USER);
|
||||||
|
set_opt(sb, DIOREAD_NOLOCK);
|
||||||
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
set_opt(sb, POSIX_ACL);
|
set_opt(sb, POSIX_ACL);
|
||||||
#endif
|
#endif
|
||||||
|
@ -3931,9 +3933,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
|
if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
|
||||||
printk_once(KERN_WARNING "EXT4-fs: Warning: mounting "
|
printk_once(KERN_WARNING "EXT4-fs: Warning: mounting with data=journal disables delayed allocation, dioread_nolock, and O_DIRECT support!\n");
|
||||||
"with data=journal disables delayed "
|
clear_opt(sb, DIOREAD_NOLOCK);
|
||||||
"allocation and O_DIRECT support!\n");
|
|
||||||
if (test_opt2(sb, EXPLICIT_DELALLOC)) {
|
if (test_opt2(sb, EXPLICIT_DELALLOC)) {
|
||||||
ext4_msg(sb, KERN_ERR, "can't mount with "
|
ext4_msg(sb, KERN_ERR, "can't mount with "
|
||||||
"both data=journal and delalloc");
|
"both data=journal and delalloc");
|
||||||
|
|
Loading…
Reference in New Issue