Unverified Commit bab2755e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!10864 v3 ext4: flexibly control whether to enable dioread_nolock by default

parents cdd5f5aa f7f9f1ba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6207,6 +6207,7 @@ CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
# CONFIG_EXT4_DIOREAD_NOLOCK_PARAM is not set
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
+1 −0
Original line number Diff line number Diff line
@@ -7292,6 +7292,7 @@ CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
# CONFIG_EXT4_DIOREAD_NOLOCK_PARAM is not set
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
+8 −0
Original line number Diff line number Diff line
@@ -117,3 +117,11 @@ config EXT4_KUNIT_TESTS
	  to the KUnit documentation in Documentation/dev-tools/kunit/.

	  If unsure, say N.

config EXT4_DIOREAD_NOLOCK_PARAM
	bool "Ext4 default_dioread_nolock module param support"
	depends on EXT4_FS
	default n
	help
	  Support to enable default_dioread_nolock module param, be attention to
          that we default disable dioread_nolock with this config set to Y.
+19 −0
Original line number Diff line number Diff line
@@ -62,6 +62,20 @@
#define CREATE_TRACE_POINTS
#include <trace/events/ext4.h>

#ifdef CONFIG_EXT4_DIOREAD_NOLOCK_PARAM
/*
 * After 244adf6426ee ("ext4: make dioread_nolock the default"), we will enable
 * dioread_nolock by default, but this options may lead data lose combine with
 * poweroff(Since we may first update i_size, and then unwritten extent convert
 * to written extent). For this case, we give a param to help control does we
 * really default enable dioread_nolock and we default disable dioread_nolock,
 * enable it with ext4.default_dioread_nolock=1 if you want.
 */
int default_dioread_nolock;
module_param_named(default_dioread_nolock, default_dioread_nolock, int, 0644);
MODULE_PARM_DESC(default_dioread_nolock, "Default enable dioread_nolock");
#endif

static struct ext4_lazy_init *ext4_li_info;
static struct mutex ext4_li_mtx;
static struct ratelimit_state ext4_mount_msg_ratelimit;
@@ -4272,8 +4286,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)

	blocksize = EXT4_MIN_BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);

#ifdef CONFIG_EXT4_DIOREAD_NOLOCK_PARAM
	if (blocksize == PAGE_SIZE && default_dioread_nolock)
		set_opt(sb, DIOREAD_NOLOCK);
#else
	if (blocksize == PAGE_SIZE)
		set_opt(sb, DIOREAD_NOLOCK);
#endif

	if (le32_to_cpu(es->s_rev_level) == EXT4_GOOD_OLD_REV) {
		sbi->s_inode_size = EXT4_GOOD_OLD_INODE_SIZE;