lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20170428091631.56063-1-yuchao0@huawei.com>
Date:   Fri, 28 Apr 2017 17:16:31 +0800
From:   Chao Yu <yuchao0@...wei.com>
To:     <jaegeuk@...nel.org>
CC:     <linux-f2fs-devel@...ts.sourceforge.net>,
        <linux-kernel@...r.kernel.org>, <chao@...nel.org>,
        Chao Yu <yuchao0@...wei.com>
Subject: [PATCH] f2fs-tools: support to set and recognize CP_TRIMMED_FLAG

During mkfs, once we have issued discard for all device, we can set
CP_TRIMMED_FLAG in cp pack, this can make kernel module to record
undiscard blocks correctly, it will help to avoid unneeded discard.

Also this patch makes f2fs-tools be with the ability of recognizing
that new flag.

Signed-off-by: Chao Yu <yuchao0@...wei.com>
---
 fsck/mount.c             | 2 ++
 include/f2fs_fs.h        | 2 ++
 lib/libf2fs.c            | 1 +
 mkfs/f2fs_format.c       | 4 ++++
 mkfs/f2fs_format_utils.c | 1 +
 5 files changed, 10 insertions(+)

diff --git a/fsck/mount.c b/fsck/mount.c
index 6350ad626bda..a0b0beadad70 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -259,6 +259,8 @@ void print_cp_state(u32 flag)
 		MSG(0, "%s", " fastboot");
 	if (flag & CP_NAT_BITS_FLAG)
 		MSG(0, "%s", " nat_bits");
+	if (flag & CP_TRIMMED_FLAG)
+		MSG(0, "%s", " trimmed");
 	if (flag & CP_UMOUNT_FLAG)
 		MSG(0, "%s", " unmount");
 	else
diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
index fa9d5365961a..43760d4359b0 100644
--- a/include/f2fs_fs.h
+++ b/include/f2fs_fs.h
@@ -287,6 +287,7 @@ struct f2fs_configuration {
 	int dbg_lv;
 	int show_dentry;
 	int trim;
+	int trimmed;
 	int func;
 	void *private;
 	int fix_on;
@@ -515,6 +516,7 @@ struct f2fs_super_block {
 /*
  * For checkpoint
  */
+#define CP_TRIMMED_FLAG		0x00000100
 #define CP_NAT_BITS_FLAG	0x00000080
 #define CP_CRC_RECOVERY_FLAG	0x00000040
 #define CP_FASTBOOT_FLAG	0x00000020
diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index 7352837f8924..c96506aa81da 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -571,6 +571,7 @@ void f2fs_init_configuration(void)
 	c.heap = 0;
 	c.vol_label = "";
 	c.trim = 1;
+	c.trimmed = 0;
 	c.ro = 0;
 	c.kd = -1;
 }
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index d354c881fbef..2e9c19a07fc2 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -579,6 +579,10 @@ static int f2fs_write_check_point_pack(void)
 	if (get_cp(cp_pack_total_block_count) <=
 			(1 << get_sb(log_blocks_per_seg)) - nat_bits_blocks)
 		flags |= CP_NAT_BITS_FLAG;
+
+	if (c.trimmed)
+		flags |= CP_TRIMMED_FLAG;
+
 	set_cp(ckpt_flags, flags);
 	set_cp(cp_pack_start_sum, 1 + get_sb(cp_payload));
 	set_cp(valid_node_count, 1);
diff --git a/mkfs/f2fs_format_utils.c b/mkfs/f2fs_format_utils.c
index fc80ec6ab06f..558684d45909 100644
--- a/mkfs/f2fs_format_utils.c
+++ b/mkfs/f2fs_format_utils.c
@@ -90,5 +90,6 @@ int f2fs_trim_devices(void)
 	for (i = 0; i < c.ndevs; i++)
 		if (trim_device(i))
 			return -1;
+	c.trimmed = 1;
 	return 0;
 }
-- 
2.12.2.510.ge1104a5ee539

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ