All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zirong Lang <zlang@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH 1/2] lib/tst_mkfs: new tst_mkfs_sized function for create appointed size fs
Date: Wed, 9 Mar 2016 11:01:32 -0500 (EST)	[thread overview]
Message-ID: <1806320002.27803455.1457539292136.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1202691488.27788761.1457537492316.JavaMail.zimbra@redhat.com>



----- 原始邮件 -----
> 发件人: "Zirong Lang" <zlang@redhat.com>
> 收件人: "Cyril Hrubis" <chrubis@suse.cz>
> 抄送: ltp@lists.linux.it
> 发送时间: 星期三, 2016年 3 月 09日 下午 11:31:32
> 主题: Re: [LTP] [PATCH 1/2] lib/tst_mkfs: new tst_mkfs_sized function for create appointed size fs
> 
> 
> 
> ----- 原始邮件 -----
> > 发件人: "Cyril Hrubis" <chrubis@suse.cz>
> > 收件人: "Zorro Lang" <zlang@redhat.com>
> > 抄送: ltp@lists.linux.it
> > 发送时间: 星期三, 2016年 3 月 09日 下午 9:07:10
> > 主题: Re: [PATCH 1/2] lib/tst_mkfs: new tst_mkfs_sized function for create
> > appointed size fs
> > 
> > Hi!
> > >  #include "test.h"
> > >  #include "ltp_priv.h"
> > >  
> > >  #define OPTS_MAX 32
> > >  
> > > -void tst_mkfs(void (cleanup_fn)(void), const char *dev,
> > > -	      const char *fs_type, const char *const fs_opts[])
> > > +long long cvtnum(const char *s)
> > > +{
> > > +	long long i;
> > > +	char *sp = NULL;
> > > +
> > > +	i = strtoll(s, &sp, 0);
> > > +	if (i == 0 && sp == s)
> > > +		return -1LL;
> > > +	if (*sp == '\0')
> > > +		return i;
> > > +
> > > +	if (*sp == 'k' && sp[1] == '\0')
> > > +		return 1024LL * i;
> > > +	if (*sp == 'm' && sp[1] == '\0')
> > > +		return 1024LL * 1024LL * i;
> > > +	if (*sp == 'g' && sp[1] == '\0')
> > > +		return 1024LL * 1024LL * 1024LL * i;
> > > +	if (*sp == 't' && sp[1] == '\0')
> > > +		return 1024LL * 1024LL * 1024LL * 1024LL * i;
> > > +	if (*sp == 'p' && sp[1] == '\0')
> > > +		return 1024LL * 1024LL * 1024LL * 1024LL * 1024LL * i;
> > > +	if (*sp == 'e' && sp[1] == '\0')
> > > +		return 1024LL * 1024LL * 1024LL * 1024LL * 1024LL * 1024LL * i;
> > > +	return -1LL;
> > > +}
> > 
> > We allready have bytes_by_prefix() in LTP library.
> 
> Oh, I just noticed that function. The difference is bytes_by_prefix() run an
> int value, so it can't bigger than 2^31. But some FS, likes XFS can support
> very huge size, even in RHEL-7, XFS support 500T. it's bigger than 2^31.
> 
> But generally we won't run LTP on a 500T device:) So if you don't want to
> change
> that, we should say mkfs size can't bigger than 2^31 bytes, or the result
> will
> be unexpected.
> 
> > 
> > > +void tst_mkfs_sized(void (cleanup_fn)(void), const char *dev,
> > > +                    const char *fs_type, const char *const fs_opts[],
> > > +                    const char *fssize, const char *blocksize)
> > 
> > What about passing the size parameter as we do in tst_fs_has_free()?
> > 
> > I.e. with two paramters where one is size and the second is units?
> 
> Oh, I don't know why we need two parameters to describe one size. I use
> "char *fssize" due to tst_mkfs() use string paramters directly, it don't
> need an int value(but int value is OK too).
> 
> > 
> > Also why have you added the blocksize parameter as well? The block size
> > is needed only for the mmap16 test while limiting filesystem size seems
> > like good addition to the library?
> 
> Block size is needed because some fs need to know the block count, if you
> want to create a sized fs. For example if we want to make 512m ext4 and xfs:
> 
> xfs can directly use mkfs -t xfs -d size=512m device
> 
> but mkfs.ext4 need to do like: mkfs -t ext4 -b $block_size device
> 512*1024*1024/$block_size
> 
> So we need to know block size for some fs, as I know udf fs need to know
> block count too.
> 

And even if not for extX fs, I don't need tst_mkfs_sized() function. If for
XFS, the fs_opts parameter of tst_mkfs() already can do that by:
const char *fs_opts[5] = {"-b", "size=1024", "-d", "size=100m" NULL};


But make a sized extX fs, need to know how many block counts (fs_size/block_size),
and this block counts need to behind the device name, e.g.
mkfs -t ext4 -b 1024 device 100*1024*1024/1024

I can't just write likes above:
const char *fs_opts[4] = {"-b", "1024", "102400" NULL};

So at first demo patch, I add a "|" to separate the parameters which need to before
device name or behind device name.

Or I said another method, add a new parameter for tst_mkfs(), named "fs_opts2", which
store all paramters for mkfs and need to behind the device name.

Thanks,
Zorro


  parent reply	other threads:[~2016-03-09 16:01 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-08 13:35 [LTP] [PATCH 1/2] lib/tst_mkfs: new tst_mkfs_sized function for create appointed size fs Zorro Lang
2016-03-08 13:35 ` [LTP] [PATCH 2/2] mmap16: fix ETIMEDOUT error if test device is too large Zorro Lang
2016-03-09  2:22   ` Eryu Guan
2016-03-09  3:12     ` Zirong Lang
2016-03-09 13:07 ` [LTP] [PATCH 1/2] lib/tst_mkfs: new tst_mkfs_sized function for create appointed size fs Cyril Hrubis
2016-03-09 15:31   ` Zirong Lang
2016-03-09 15:52     ` Cyril Hrubis
2016-03-09 16:05       ` Zirong Lang
2016-03-09 16:09         ` Cyril Hrubis
2016-03-09 16:30           ` Zirong Lang
2016-03-09 17:43             ` Cyril Hrubis
2016-03-10  1:45               ` Zirong Lang
2016-03-10 10:04                 ` Cyril Hrubis
2016-03-10 12:00                   ` Zirong Lang
2016-03-10 12:19                     ` Cyril Hrubis
2016-03-10 13:30                       ` Zirong Lang
2016-03-10 14:06                         ` Cyril Hrubis
2016-03-10 16:24                           ` Zirong Lang
2016-03-14 17:15                             ` Cyril Hrubis
2016-03-09 16:01     ` Zirong Lang [this message]
2016-03-09 13:09 ` Cyril Hrubis
2016-03-09 15:09   ` Zirong Lang

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=1806320002.27803455.1457539292136.JavaMail.zimbra@redhat.com \
    --to=zlang@redhat.com \
    --cc=ltp@lists.linux.it \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.