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 <[email protected]>
> ---
> 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;
>
------------------------------------------------------------------------------
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel