All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Cc: fstests@vger.kernel.org, guaneryu@gmail.com, linux-xfs@vger.kernel.org
Subject: Re: [PATCH V3 01/19] Fix xfs/009 to work with 64k block size
Date: Tue, 18 Sep 2018 07:36:29 -0700	[thread overview]
Message-ID: <20180918143629.GE20086@magnolia> (raw)
In-Reply-To: <5182088.PSLVip6Wn9@localhost.localdomain>

On Tue, Sep 18, 2018 at 11:32:12AM +0530, Chandan Rajendra wrote:
> On Tuesday, September 18, 2018 4:29:25 AM IST Darrick J. Wong wrote:
> > On Wed, Sep 12, 2018 at 11:56:08AM +0530, Chandan Rajendra wrote:
> > > xfs_alloc_file_space() rounds up allocation requests by the filesystem
> > > block size. Hence this commit changes the test to work with block size
> > > units rather than with a multiple of 4096 bytes.
> > > 
> > > Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
> > > ---
> > >  tests/xfs/009     | 92 ++++++++++++++++++++++++++++++++++++++++++++++---------
> > >  tests/xfs/009.out | 66 +++++++++++++++++++--------------------
> > >  2 files changed, 110 insertions(+), 48 deletions(-)
> > > 
> > > diff --git a/tests/xfs/009 b/tests/xfs/009
> > > index 68f6379..70717eb 100755
> > > --- a/tests/xfs/009
> > > +++ b/tests/xfs/009
> > > @@ -14,9 +14,6 @@ here=`pwd`
> > >  tmp=/tmp/$$
> > >  status=1	# failure is the default!
> > >  trap "_cleanup; exit \$status" 0 1 2 3 15
> > > -# This isn't really related to fs block size, it's just what
> > > -# alloc uses for the "block" unit in it's input parameters...
> > > -bsize=4096
> > >  
> > >  _cleanup()
> > >  {
> > > @@ -24,13 +21,6 @@ _cleanup()
> > >      _scratch_unmount
> > >  }
> > >  
> > > -_block_filter()
> > > -{
> > > -   sed \
> > > -	-e 's/[0-9][0-9]*\.\.[0-9][0-9]*/BLOCKRANGE/g' \
> > > -	-e "s/blocksize $bsize/blocksize BSIZE/g"
> > > -}
> > > -
> > >  _init()
> > >  {
> > >      echo "*** mkfs"
> > > @@ -49,11 +39,6 @@ _init()
> > >      fi
> > >  }
> > >  
> > > -_filesize()
> > > -{
> > > -    ls -l $1 | $AWK_PROG '{print "filesize = " $5}'
> > > -}
> > > -
> > >  # get standard environment, filters and checks
> > >  . ./common/rc
> > >  . ./common/filter
> > > @@ -64,9 +49,86 @@ _supported_os Linux
> > >  
> > >  _require_scratch
> > >  
> > > +_filesize()
> > > +{
> > > +    ls -l $1 | $AWK_PROG -v bsize="$bsize" '{print "filesize = " $5 / bsize}'
> > > +}
> > > +
> > > +_block_filter()
> > > +{
> > > +	$AWK_PROG -v bsize="$bsize" '
> > > +	/blocksize/ {
> > > +		printf("    blocksize BSIZE\n")
> > > +
> > > +		next
> > > +	}
> > > +
> > > +	/CMD/ {
> > > +		split($3, off, "=")
> > > +		offset = strtonum(off[2])
> > > +		if (offset != -1)
> > > +			offset = offset / bsize
> > > +
> > > +		split($4, len, "=")
> > > +		nr_blocks = strtonum(len[2])
> > > +		if (nr_blocks != -1)
> > > +			nr_blocks = nr_blocks / bsize
> > > +
> > > +		printf("    %s %s off=%s, len=%d\n", $1, $2, offset, nr_blocks)
> > > +
> > > +		next
> > > +	}
> > > +
> > > +	/MAP/ {
> > > +		split($2, off, "=")
> > > +		offset = strtonum(off[2])
> > > +		if (offset != -1)
> > > +			offset = offset / bsize
> > > +
> > > +		split($3, len, "=")
> > > +
> > > +		nr_blocks = strtonum(len[2])
> > > +
> > > +		if (nr_blocks != -1)
> > > +			nr_blocks = nr_blocks / bsize
> > > +
> > > +		printf("    %s off=%s, len=%d %s\n", $1, offset, nr_blocks, $4)
> > > +
> > > +		next
> > > +	}
> > > +
> > > +	/TRUNCATE/ {
> > > +		split($2, off, "=")
> > > +		offset = strtonum(off[2]) / bsize
> > > +
> > > +		printf("    %s off=%s\n", $1, offset)
> > > +
> > > +		next
> > > +	}
> > > +
> > > +	/\[[0-9]+,[0-9]+\]:/ {
> > > +		printf("        %s BLOCKRANGE\n", $1)
> > > +
> > > +		next
> > > +	}
> > > +
> > > +	{
> > > +		print
> > > +
> > > +		next
> > > +	}
> > > +	'
> > > +}
> > > +
> > >  _init
> > >  out=$SCRATCH_MNT/$$.tmp
> > >  
> > > +# This isn't really related to fs block size, it's just what
> > > +# alloc uses for the "block" unit in it's input parameters...
> > > +# However, xfs_alloc_file_space() rounds up allocation
> > > +# request by the filesystem's block size.
> > > +bsize=$(_get_block_size $SCRATCH_MNT)
> > 
> > [Sorry for the extremely long delay, I've been on leave...]
> > 
> > Hm.  Certain filesystems draw a distinction between the fundamental
> > block size and the minimum file block mapping size.  ocfs2 supports
> > having a file cluster size (mkfs.ocfs2 -C) that is greater than the fs
> > block size, and (I think) xfs can achieve something similar for files on
> > a realtime device via the mkfs.xfs -r extsize= option.
> > 
> > If you're dealing with writing things into a file for a test, I think
> > you have to use _get_file_block_size to make sure that you don't fall
> > afoul of the cluster/block difference.  I don't know if you've checked
> > that for this patch series...?
> 
> Thanks for pointing that out. I didn't know about the existance of 
> _get_file_block_size. I will go through the patchset once again
> and figure out which one of _get_block_size v/s _get_file_block_size to use?

<nod>

_get_block_size is usually the appropriate tool when you're trying to
massage a filesystem into creating a particular metadata block (e.g.
fragmenting the free space just enough to force it to store free space
records in N separate metadata blocks).

_get_file_block_size is more appropriate for massaging a file into a
particular format (e.g. fragmenting a file just enough to force it to
store the file's extent records in N separate metadata blocks).

And mea culpa, the vast majority of tests (including the ones I wrote)
use _g_b_s when they probably mean _g_f_b_s...

--D

> 
> -- 
> chandan
> 

  reply	other threads:[~2018-09-18 20:09 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-12  6:26 [PATCH V3 00/19] Fix tests to work on non-4k block sized fs instances Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 01/19] Fix xfs/009 to work with 64k block size Chandan Rajendra
2018-09-17 22:59   ` Darrick J. Wong
2018-09-18  3:18     ` Theodore Y. Ts'o
2018-09-18  3:27       ` Darrick J. Wong
2018-09-18  6:02     ` Chandan Rajendra
2018-09-18 14:36       ` Darrick J. Wong [this message]
2018-09-12  6:26 ` [PATCH V3 02/19] xfs/050: Fix "Push past soft inode limit" case Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 03/19] Fix xfs/050 to work with 64k block size Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 04/19] Fix xfs/074 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 05/19] Fix xfs/127 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 06/19] Fix xfs/139 " Chandan Rajendra
2018-09-17 22:29   ` Darrick J. Wong
2018-09-18  8:46     ` Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 07/19] Fix xfs/140 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 08/19] Fix xfs/190 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 09/19] Fix xfs/299 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 10/19] xfs/325: Inject free_extent error after CoW operation Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 11/19] Fix generic/102 to work with 64k block size Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 12/19] Fix generic/172 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 13/19] Filter fiemap output by FS " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 14/19] Fix generic/177 to work with 64k " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 15/19] Fix generic/230 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 16/19] Fix generic/235 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 17/19] Fix generic/459 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 18/19] Fix generic/018 " Chandan Rajendra
2018-09-12  6:26 ` [PATCH V3 19/19] Fix generic/108 " Chandan Rajendra
2018-09-18  5:20 ` [PATCH V3 00/19] Fix tests to work on non-4k block sized fs instances Zorro Lang
2018-09-18 10:28   ` Chandan Rajendra

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=20180918143629.GE20086@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=chandan@linux.vnet.ibm.com \
    --cc=fstests@vger.kernel.org \
    --cc=guaneryu@gmail.com \
    --cc=linux-xfs@vger.kernel.org \
    /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.