linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
From: He YunLei <heyunlei@huawei.com>
To: Chao Yu <chao2.yu@samsung.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH] mkfs.f2fs: introduce -b option to support specified fs size formating
Date: Sat, 14 Nov 2015 13:32:29 +0800	[thread overview]
Message-ID: <5646C76D.3010802@huawei.com> (raw)
In-Reply-To: <01ab01d11b94$a3231470$e9693d50$@samsung.com>

hi,

We can specify fs size in function f2fs_parse_options as follow:
     if ((optind + 1) < argc) {
         /* We have a sector count. */
         config.total_sectors = atoll(argv[optind+1]);
which one is better?

Thanks

On 2015/11/10 16:48, Chao Yu wrote:
> This patch introduces a new option '-b', with this option user can specify
> required fs size for formating. _scratch_mkfs_sized in xfstest is one of
> user cases.
>
> Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> ---
>   include/f2fs_fs.h       | 1 +
>   lib/libf2fs.c           | 9 +++++++--
>   mkfs/f2fs_format_main.c | 6 +++++-
>   3 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> index 359deec..dedc143 100644
> --- a/include/f2fs_fs.h
> +++ b/include/f2fs_fs.h
> @@ -223,6 +223,7 @@ enum f2fs_config_func {
>   };
>
>   struct f2fs_configuration {
> +	u_int64_t fs_size;
>   	u_int32_t sector_size;
>   	u_int32_t reserved_segments;
>   	double overprovision;
> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> index 33a82aa..e755f20 100644
> --- a/lib/libf2fs.c
> +++ b/lib/libf2fs.c
> @@ -347,6 +347,7 @@ int f2fs_crc_valid(u_int32_t blk_crc, void *buf, int len)
>    */
>   void f2fs_init_configuration(struct f2fs_configuration *c)
>   {
> +	c->fs_size = 0;
>   	c->total_sectors = 0;
>   	c->sector_size = DEFAULT_SECTOR_SIZE;
>   	c->sectors_per_blk = DEFAULT_SECTORS_PER_BLOCK;
> @@ -473,15 +474,19 @@ int f2fs_get_device_info(struct f2fs_configuration *c)
>   			MSG(0, "\tError: Cannot get the device size\n");
>   			return -1;
>   		}
> -		c->total_sectors /= c->sector_size;
>   #else
>   		if (ioctl(fd, BLKGETSIZE, &total_sectors) < 0) {
>   			MSG(0, "\tError: Cannot get the device size\n");
>   			return -1;
>   		}
> -		total_sectors /= c->sector_size;
>   		c->total_sectors = total_sectors;
>   #endif
> +		if (c->fs_size && c->fs_size < c->total_sectors)
> +			c->total_sectors = (c->fs_size + c->sector_size - 1) /
> +								c->sector_size;
> +		else
> +			c->total_sectors /= c->sector_size;
> +
>   		if (ioctl(fd, HDIO_GETGEO, &geom) < 0)
>   			c->start_sector = 0;
>   		else
> diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
> index 2ea809c..07f101f 100644
> --- a/mkfs/f2fs_format_main.c
> +++ b/mkfs/f2fs_format_main.c
> @@ -29,6 +29,7 @@ static void mkfs_usage()
>   	MSG(0, "\nUsage: mkfs.f2fs [options] device [sectors]\n");
>   	MSG(0, "[options]:\n");
>   	MSG(0, "  -a heap-based allocation [default:1]\n");
> +	MSG(0, "  -b file system size\n");
>   	MSG(0, "  -d debug level [default:0]\n");
>   	MSG(0, "  -e [extension list] e.g. \"mp3,gif,mov\"\n");
>   	MSG(0, "  -l label\n");
> @@ -73,7 +74,7 @@ static void parse_feature(char *features)
>
>   static void f2fs_parse_options(int argc, char *argv[])
>   {
> -	static const char *option_string = "qa:d:e:l:o:O:s:z:t:";
> +	static const char *option_string = "qa:b:d:e:l:o:O:s:z:t:";
>   	int32_t option=0;
>
>   	while ((option = getopt(argc,argv,option_string)) != EOF) {
> @@ -84,6 +85,9 @@ static void f2fs_parse_options(int argc, char *argv[])
>   		case 'a':
>   			config.heap = atoi(optarg);
>   			break;
> +		case 'b':
> +			config.fs_size = atoll(optarg);
> +			break;
>   		case 'd':
>   			config.dbg_lv = atoi(optarg);
>   			break;
>


------------------------------------------------------------------------------

  reply	other threads:[~2015-11-14  5:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-10  8:48 [PATCH] mkfs.f2fs: introduce -b option to support specified fs size formating Chao Yu
2015-11-14  5:32 ` He YunLei [this message]
2015-11-14 18:27   ` Jaegeuk Kim
2015-11-15  6:34     ` 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=5646C76D.3010802@huawei.com \
    --to=heyunlei@huawei.com \
    --cc=chao2.yu@samsung.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).