linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
From: Chao Yu <yuchao0@huawei.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>,
	<linux-f2fs-devel@lists.sourceforge.net>
Subject: Re: [f2fs-dev] [PATCH v2] mkfs.f2fs: check zeros in first 16MB for Android
Date: Mon, 12 Aug 2019 10:19:15 +0800	[thread overview]
Message-ID: <9e3ccdf8-6280-ac8d-30b7-e89d54f5b6c9@huawei.com> (raw)
In-Reply-To: <20190809151253.GA93481@jaegeuk-macbookpro.roam.corp.google.com>

On 2019/8/9 23:12, Jaegeuk Kim wrote:
> We actually don't need to issue trim on entire disk by checking first
> blocks having zeros.

In heap mode, we locate node log header to tail end of device, should we
consider to check block contain according to heap option?

BTW, if we changed cp_ver whenever mkfs, why should we still issue trim to
obsolete old data in node remained in image?

Thanks,

> 
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> v2 from v1:
>  - clean up
> 
>  mkfs/f2fs_format_utils.c | 53 ++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 51 insertions(+), 2 deletions(-)
> 
> diff --git a/mkfs/f2fs_format_utils.c b/mkfs/f2fs_format_utils.c
> index 8bf128c..f2d55ad 100644
> --- a/mkfs/f2fs_format_utils.c
> +++ b/mkfs/f2fs_format_utils.c
> @@ -25,6 +25,7 @@
>  #include <stdio.h>
>  #include <unistd.h>
>  #include <stdlib.h>
> +#include <stdbool.h>
>  #ifndef ANDROID_WINDOWS_HOST
>  #include <sys/ioctl.h>
>  #endif
> @@ -110,13 +111,61 @@ static int trim_device(int i)
>  	return 0;
>  }
>  
> +static bool is_wiped_device(int i)
> +{
> +#ifdef WITH_ANDROID
> +	struct device_info *dev = c.devices + i;
> +	int fd = dev->fd;
> +	char *buf, *zero_buf;
> +	bool wiped = true;
> +	int nblocks = 4096;	/* 16MB size */
> +	int j;
> +
> +	buf = malloc(F2FS_BLKSIZE);
> +	if (buf == NULL) {
> +		MSG(1, "\tError: Malloc Failed for buf!!!\n");
> +		return false;
> +	}
> +	zero_buf = calloc(1, F2FS_BLKSIZE);
> +	if (zero_buf == NULL) {
> +		MSG(1, "\tError: Calloc Failed for zero buf!!!\n");
> +		free(buf);
> +		return false;
> +	}
> +
> +	if (lseek(fd, 0, SEEK_SET) < 0) {
> +		free(zero_buf);
> +		free(buf);
> +		return false;
> +	}
> +
> +	/* check first n blocks */
> +	for (j = 0; j < nblocks; j++) {
> +		if (read(fd, buf, F2FS_BLKSIZE) != F2FS_BLKSIZE ||
> +				memcmp(buf, zero_buf, F2FS_BLKSIZE)) {
> +			wiped = false;
> +			break;
> +		}
> +	}
> +	free(zero_buf);
> +	free(buf);
> +
> +	if (wiped)
> +		MSG(0, "Info: Found all zeros in first %d blocks\n", nblocks);
> +	return wiped;
> +#else
> +	return false;
> +#endif
> +}
> +
>  int f2fs_trim_devices(void)
>  {
>  	int i;
>  
> -	for (i = 0; i < c.ndevs; i++)
> -		if (trim_device(i))
> +	for (i = 0; i < c.ndevs; i++) {
> +		if (!is_wiped_device(i) && trim_device(i))
>  			return -1;
> +	}
>  	c.trimmed = 1;
>  	return 0;
>  }
> 


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

  parent reply	other threads:[~2019-08-12  2:19 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-08 23:11 [f2fs-dev] [PATCH] mkfs.f2fs: check zeros in first 16MB for Android Jaegeuk Kim
2019-08-09 15:12 ` [f2fs-dev] [PATCH v2] " Jaegeuk Kim
     [not found]   ` <CAD14+f2V=j8o=0sUGMgmJHmwKgm80WyzJC5yW7qmyffL=CBJhw@mail.gmail.com>
2019-08-09 15:39     ` Jaegeuk Kim
2019-08-12  3:26       ` Chao Yu
2019-08-12  2:19   ` Chao Yu [this message]
2019-08-15 22:21     ` Jaegeuk Kim
2019-08-16  1:00       ` Chao Yu
2019-08-16  1:02         ` Jaegeuk Kim
2019-08-16  1:23           ` Chao Yu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9e3ccdf8-6280-ac8d-30b7-e89d54f5b6c9@huawei.com \
    --to=yuchao0@huawei.com \
    --cc=jaegeuk@kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).