diff mbox series

[f2fs-dev,4/9] f2fs: Allow sbi to be NULL in f2fs_printk

Message ID 20240814023912.3959299-5-lihongbo22@huawei.com (mailing list archive)
State New
Headers show
Series f2fs: new mount API conversion | expand

Commit Message

Hongbo Li Aug. 14, 2024, 2:39 a.m. UTC
At the parsing phase of the new mount api, sbi will not be
available. So here allows sbi to be NULL in f2fs log helpers
and use that in handle_mount_opt().

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 fs/f2fs/super.c | 106 ++++++++++++++++++++++++++----------------------
 1 file changed, 57 insertions(+), 49 deletions(-)
diff mbox series

Patch

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 8c8cd06a6d9c..2a06444e7e02 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -364,11 +364,19 @@  void f2fs_printk(struct f2fs_sb_info *sbi, bool limit_rate,
 	vaf.fmt = printk_skip_level(fmt);
 	vaf.va = &args;
 	if (limit_rate)
-		printk_ratelimited("%c%cF2FS-fs (%s): %pV\n",
-			KERN_SOH_ASCII, level, sbi->sb->s_id, &vaf);
+		if (sbi)
+			printk_ratelimited("%c%cF2FS-fs (%s): %pV\n",
+				KERN_SOH_ASCII, level, sbi->sb->s_id, &vaf);
+		else
+			printk_ratelimited("%c%cF2FS-fs: %pV\n",
+				KERN_SOH_ASCII, level, &vaf);
 	else
-		printk("%c%cF2FS-fs (%s): %pV\n",
-			KERN_SOH_ASCII, level, sbi->sb->s_id, &vaf);
+		if (sbi)
+			printk("%c%cF2FS-fs (%s): %pV\n",
+				KERN_SOH_ASCII, level, sbi->sb->s_id, &vaf);
+		else
+			printk("%c%cF2FS-fs: %pV\n",
+				KERN_SOH_ASCII, level, &vaf);
 
 	va_end(args);
 }
@@ -796,21 +804,21 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_discard:
 		if (!f2fs_hw_support_discard(sbi)) {
-			f2fs_warn(sbi, "device does not support discard");
+			f2fs_warn(NULL, "device does not support discard");
 			return 0;
 		}
 		set_opt(sbi, DISCARD);
 		return 0;
 	case Opt_nodiscard:
 		if (f2fs_hw_should_discard(sbi)) {
-			f2fs_warn(sbi, "discard is required for zoned block devices");
+			f2fs_warn(NULL, "discard is required for zoned block devices");
 			return -EINVAL;
 		}
 		clear_opt(sbi, DISCARD);
 		return 0;
 	case Opt_noheap:
 	case Opt_heap:
-		f2fs_warn(sbi, "heap/no_heap options were deprecated");
+		f2fs_warn(NULL, "heap/no_heap options were deprecated");
 		return 0;
 #ifdef CONFIG_F2FS_FS_XATTR
 	case Opt_user_xattr:
@@ -831,16 +839,16 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 #else
 	case Opt_user_xattr:
-		f2fs_info(sbi, "user_xattr options not supported");
+		f2fs_info(NULL, "user_xattr options not supported");
 		return 0;
 	case Opt_nouser_xattr:
-		f2fs_info(sbi, "nouser_xattr options not supported");
+		f2fs_info(NULL, "nouser_xattr options not supported");
 		return 0;
 	case Opt_inline_xattr:
-		f2fs_info(sbi, "inline_xattr options not supported");
+		f2fs_info(NULL, "inline_xattr options not supported");
 		return 0;
 	case Opt_noinline_xattr:
-		f2fs_info(sbi, "noinline_xattr options not supported");
+		f2fs_info(NULL, "noinline_xattr options not supported");
 		return 0;
 #endif
 #ifdef CONFIG_F2FS_FS_POSIX_ACL
@@ -852,10 +860,10 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 #else
 	case Opt_acl:
-		f2fs_info(sbi, "acl options not supported");
+		f2fs_info(NULL, "acl options not supported");
 		return 0;
 	case Opt_noacl:
-		f2fs_info(sbi, "noacl options not supported");
+		f2fs_info(NULL, "noacl options not supported");
 		return 0;
 #endif
 	case Opt_active_logs:
@@ -905,7 +913,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_reserve_root:
 		if (test_opt(sbi, RESERVE_ROOT)) {
-			f2fs_info(sbi, "Preserve previous reserve_root=%u",
+			f2fs_info(NULL, "Preserve previous reserve_root=%u",
 				  F2FS_OPTION(sbi).root_reserved_blocks);
 		} else {
 			F2FS_OPTION(sbi).root_reserved_blocks = result.uint_32;
@@ -915,7 +923,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 	case Opt_resuid:
 		uid = make_kuid(current_user_ns(), result.uint_32);
 		if (!uid_valid(uid)) {
-			f2fs_err(sbi, "Invalid uid value %u", result.uint_32);
+			f2fs_err(NULL, "Invalid uid value %u", result.uint_32);
 			return -EINVAL;
 		}
 		F2FS_OPTION(sbi).s_resuid = uid;
@@ -923,7 +931,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 	case Opt_resgid:
 		gid = make_kgid(current_user_ns(), result.uint_32);
 		if (!gid_valid(gid)) {
-			f2fs_err(sbi, "Invalid gid value %u", result.uint_32);
+			f2fs_err(NULL, "Invalid gid value %u", result.uint_32);
 			return -EINVAL;
 		}
 		F2FS_OPTION(sbi).s_resgid = gid;
@@ -962,11 +970,11 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 #else
 	case Opt_fault_injection:
-		f2fs_info(sbi, "fault_injection options not supported");
+		f2fs_info(NULL, "fault_injection options not supported");
 		return 0;
 
 	case Opt_fault_type:
-		f2fs_info(sbi, "fault_type options not supported");
+		f2fs_info(NULL, "fault_type options not supported");
 		return 0;
 #endif
 #ifdef CONFIG_QUOTA
@@ -1028,7 +1036,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 	case Opt_jqfmt_vfsv0:
 	case Opt_jqfmt_vfsv1:
 	case Opt_noquota:
-		f2fs_info(sbi, "quota operations not supported");
+		f2fs_info(NULL, "quota operations not supported");
 		return 0;
 #endif
 	case Opt_alloc:
@@ -1072,7 +1080,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 #ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT
 		sb->s_flags |= SB_INLINECRYPT;
 #else
-		f2fs_info(sbi, "inline encryption not supported");
+		f2fs_info(NULL, "inline encryption not supported");
 #endif
 		return 0;
 	case Opt_checkpoint:
@@ -1126,7 +1134,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 	case Opt_compress_algorithm:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		name = kmemdup_nul(param->string, param->size, GFP_KERNEL);
@@ -1138,7 +1146,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 			F2FS_OPTION(sbi).compress_algorithm =
 							COMPRESS_LZO;
 #else
-			f2fs_info(sbi, "kernel doesn't support lzo compression");
+			f2fs_info(NULL, "kernel doesn't support lzo compression");
 #endif
 		} else if (!strncmp(name, "lz4", 3)) {
 #ifdef CONFIG_F2FS_FS_LZ4
@@ -1150,7 +1158,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 			F2FS_OPTION(sbi).compress_algorithm =
 							COMPRESS_LZ4;
 #else
-			f2fs_info(sbi, "kernel doesn't support lz4 compression");
+			f2fs_info(NULL, "kernel doesn't support lz4 compression");
 #endif
 		} else if (!strncmp(name, "zstd", 4)) {
 #ifdef CONFIG_F2FS_FS_ZSTD
@@ -1162,7 +1170,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 			F2FS_OPTION(sbi).compress_algorithm =
 							COMPRESS_ZSTD;
 #else
-			f2fs_info(sbi, "kernel doesn't support zstd compression");
+			f2fs_info(NULL, "kernel doesn't support zstd compression");
 #endif
 		} else if (!strcmp(name, "lzo-rle")) {
 #ifdef CONFIG_F2FS_FS_LZORLE
@@ -1170,7 +1178,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 			F2FS_OPTION(sbi).compress_algorithm =
 							COMPRESS_LZORLE;
 #else
-			f2fs_info(sbi, "kernel doesn't support lzorle compression");
+			f2fs_info(NULL, "kernel doesn't support lzorle compression");
 #endif
 		} else {
 			kfree(name);
@@ -1180,12 +1188,12 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_compress_log_size:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		if (result.int_32 < MIN_COMPRESS_LOG_SIZE ||
 			result.int_32 > MAX_COMPRESS_LOG_SIZE) {
-			f2fs_err(sbi,
+			f2fs_err(NULL,
 				"Compress cluster log size is out of range");
 			return -EINVAL;
 		}
@@ -1193,7 +1201,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_compress_extension:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			break;
 		}
 		name = kmemdup_nul(param->string, param->size, GFP_KERNEL);
@@ -1205,7 +1213,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 
 		if (strlen(name) >= F2FS_EXTENSION_LEN ||
 			ext_cnt >= COMPRESS_EXT_NUM) {
-			f2fs_err(sbi,
+			f2fs_err(NULL,
 				"invalid extension length/number");
 			kfree(name);
 			return -EINVAL;
@@ -1226,7 +1234,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_nocompress_extension:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		name = kmemdup_nul(param->string, param->size, GFP_KERNEL);
@@ -1238,7 +1246,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 
 		if (strlen(name) >= F2FS_EXTENSION_LEN ||
 			noext_cnt >= COMPRESS_EXT_NUM) {
-			f2fs_err(sbi,
+			f2fs_err(NULL,
 				"invalid extension length/number");
 			kfree(name);
 			return -EINVAL;
@@ -1259,14 +1267,14 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_compress_chksum:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		F2FS_OPTION(sbi).compress_chksum = true;
 		return 0;
 	case Opt_compress_mode:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		name = kmemdup_nul(param->string, param->size, GFP_KERNEL);
@@ -1284,7 +1292,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		return 0;
 	case Opt_compress_cache:
 		if (!f2fs_sb_has_compression(sbi)) {
-			f2fs_info(sbi, "Image doesn't support compression");
+			f2fs_info(NULL, "Image doesn't support compression");
 			return 0;
 		}
 		set_opt(sbi, COMPRESS_CACHE);
@@ -1297,7 +1305,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 	case Opt_compress_chksum:
 	case Opt_compress_mode:
 	case Opt_compress_cache:
-		f2fs_info(sbi, "compression options not supported");
+		f2fs_info(NULL, "compression options not supported");
 		return 0;
 #endif
 	case Opt_atgc:
@@ -1367,7 +1375,7 @@  static int handle_mount_opt(struct fs_context *fc, struct fs_parameter *param)
 		kfree(name);
 		return 0;
 	default:
-		f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value",
+		f2fs_err(NULL, "Unrecognized mount option \"%s\" or missing value",
 			 param->key);
 		return -EINVAL;
 	}
@@ -1434,17 +1442,17 @@  static int f2fs_validate_options(struct super_block *sb)
 		return -EINVAL;
 #else
 	if (f2fs_sb_has_quota_ino(sbi) && !f2fs_readonly(sbi->sb)) {
-		f2fs_info(sbi, "Filesystem with quota feature cannot be mounted RDWR without CONFIG_QUOTA");
+		f2fs_info(NULL, "Filesystem with quota feature cannot be mounted RDWR without CONFIG_QUOTA");
 		return -EINVAL;
 	}
 	if (f2fs_sb_has_project_quota(sbi) && !f2fs_readonly(sbi->sb)) {
-		f2fs_err(sbi, "Filesystem with project quota feature cannot be mounted RDWR without CONFIG_QUOTA");
+		f2fs_err(NULL, "Filesystem with project quota feature cannot be mounted RDWR without CONFIG_QUOTA");
 		return -EINVAL;
 	}
 #endif
 #if !IS_ENABLED(CONFIG_UNICODE)
 	if (f2fs_sb_has_casefold(sbi)) {
-		f2fs_err(sbi,
+		f2fs_err(NULL,
 			"Filesystem with casefold feature cannot be mounted without CONFIG_UNICODE");
 		return -EINVAL;
 	}
@@ -1458,24 +1466,24 @@  static int f2fs_validate_options(struct super_block *sb)
 #ifdef CONFIG_BLK_DEV_ZONED
 		if (F2FS_OPTION(sbi).discard_unit !=
 						DISCARD_UNIT_SECTION) {
-			f2fs_info(sbi, "Zoned block device doesn't need small discard, set discard_unit=section by default");
+			f2fs_info(NULL, "Zoned block device doesn't need small discard, set discard_unit=section by default");
 			F2FS_OPTION(sbi).discard_unit =
 					DISCARD_UNIT_SECTION;
 		}
 
 		if (F2FS_OPTION(sbi).fs_mode != FS_MODE_LFS) {
-			f2fs_info(sbi, "Only lfs mode is allowed with zoned block device feature");
+			f2fs_info(NULL, "Only lfs mode is allowed with zoned block device feature");
 			return -EINVAL;
 		}
 #else
-			f2fs_err(sbi, "Zoned block device support is not enabled");
+			f2fs_err(NULL, "Zoned block device support is not enabled");
 			return -EINVAL;
 #endif
 		}
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 	if (f2fs_test_compress_extension(sbi)) {
-		f2fs_err(sbi, "invalid compress or nocompress extension");
+		f2fs_err(NULL, "invalid compress or nocompress extension");
 		return -EINVAL;
 	}
 #endif
@@ -1485,11 +1493,11 @@  static int f2fs_validate_options(struct super_block *sb)
 
 		if (!f2fs_sb_has_extra_attr(sbi) ||
 			!f2fs_sb_has_flexible_inline_xattr(sbi)) {
-			f2fs_err(sbi, "extra_attr or flexible_inline_xattr feature is off");
+			f2fs_err(NULL, "extra_attr or flexible_inline_xattr feature is off");
 			return -EINVAL;
 		}
 		if (!test_opt(sbi, INLINE_XATTR)) {
-			f2fs_err(sbi, "inline_xattr_size option should be set with inline_xattr option");
+			f2fs_err(NULL, "inline_xattr_size option should be set with inline_xattr option");
 			return -EINVAL;
 		}
 
@@ -1498,24 +1506,24 @@  static int f2fs_validate_options(struct super_block *sb)
 
 		if (F2FS_OPTION(sbi).inline_xattr_size < min_size ||
 				F2FS_OPTION(sbi).inline_xattr_size > max_size) {
-			f2fs_err(sbi, "inline xattr size is out of range: %d ~ %d",
+			f2fs_err(NULL, "inline xattr size is out of range: %d ~ %d",
 				 min_size, max_size);
 			return -EINVAL;
 		}
 	}
 
 	if (test_opt(sbi, ATGC) && f2fs_lfs_mode(sbi)) {
-		f2fs_err(sbi, "LFS is not compatible with ATGC");
+		f2fs_err(NULL, "LFS is not compatible with ATGC");
 		return -EINVAL;
 	}
 
 	if (f2fs_is_readonly(sbi) && test_opt(sbi, FLUSH_MERGE)) {
-		f2fs_err(sbi, "FLUSH_MERGE not compatible with readonly mode");
+		f2fs_err(NULL, "FLUSH_MERGE not compatible with readonly mode");
 		return -EINVAL;
 	}
 
 	if (f2fs_sb_has_readonly(sbi) && !f2fs_readonly(sbi->sb)) {
-		f2fs_err(sbi, "Allow to mount readonly mode only");
+		f2fs_err(NULL, "Allow to mount readonly mode only");
 		return -EROFS;
 	}
 	return 0;