Re: [PATCH 3/4] xfstests: fix brain-o in fallocate log dump

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/27/11 12:48 AM, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> fsx segvs when dumping fallocate log entries. Fix magic string
> array index parameters to be zero based rather than one based.

Oh geez.  :(

> While touching log string related stuff, make the format consistent
> with read and write operations so the log dump is easier to look at
> with the human eye.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>

> ---
>  ltp/fsx.c |   28 +++++++++++++++-------------
>  1 files changed, 15 insertions(+), 13 deletions(-)
> 
> diff --git a/ltp/fsx.c b/ltp/fsx.c
> index 66daefe..38d5278 100644
> --- a/ltp/fsx.c
> +++ b/ltp/fsx.c
> @@ -223,14 +223,14 @@ logdump(void)
>  		int opnum;
>  
>  		opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE;
> -		prt("%d(%d mod 256): ", opnum, opnum%256);
> +		prt("%d(%3d mod 256): ", opnum, opnum%256);
>  		lp = &oplog[i];
>  		if ((closeopen = lp->operation < 0))
>  			lp->operation = ~ lp->operation;
>  			
>  		switch (lp->operation) {
>  		case OP_MAPREAD:
> -			prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)",
> +			prt("MAPREAD  0x%x thru 0x%x\t(0x%x bytes)",
>  			    lp->args[0], lp->args[0] + lp->args[1] - 1,
>  			    lp->args[1]);
>  			if (badoff >= lp->args[0] && badoff <
> @@ -246,7 +246,7 @@ logdump(void)
>  				prt("\t******WWWW");
>  			break;
>  		case OP_READ:
> -			prt("READ\t0x%x thru 0x%x\t(0x%x bytes)",
> +			prt("READ     0x%x thru 0x%x\t(0x%x bytes)",
>  			    lp->args[0], lp->args[0] + lp->args[1] - 1,
>  			    lp->args[1]);
>  			if (badoff >= lp->args[0] &&
> @@ -254,7 +254,7 @@ logdump(void)
>  				prt("\t***RRRR***");
>  			break;
>  		case OP_WRITE:
> -			prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)",
> +			prt("WRITE    0x%x thru 0x%x\t(0x%x bytes)",
>  			    lp->args[0], lp->args[0] + lp->args[1] - 1,
>  			    lp->args[1]);
>  			if (lp->args[0] > lp->args[2])
> @@ -275,14 +275,15 @@ logdump(void)
>  			break;
>  		case OP_FALLOCATE:
>  			/* 0: offset 1: length 2: where alloced */
> -			prt("FALLOCATE %s\tfrom 0x%x to 0x%x",
> -			    falloc_type[lp->args[2]], lp->args[0], lp->args[0] + lp->args[1]);
> +			prt("FALLOC   0x%x thru 0x%x\t(0x%x bytes) %s",
> +				lp->args[0], lp->args[0] + lp->args[1],
> +				lp->args[1], falloc_type[lp->args[2]]);
>  			if (badoff >= lp->args[0] &&
>  			    badoff < lp->args[0] + lp->args[1])
>  				prt("\t******FFFF");
>  			break;
>  		case OP_PUNCH_HOLE:
> -			prt("PUNCH HOLE\t0x%x thru 0x%x\t(0x%x bytes)",
> +			prt("PUNCH    0x%x thru 0x%x\t(0x%x bytes)",
>  			    lp->args[0], lp->args[0] + lp->args[1] - 1,
>  			    lp->args[1]);
>  			if (badoff >= lp->args[0] && badoff <
> @@ -877,12 +878,12 @@ do_preallocate(unsigned offset, unsigned length)
>  	}
>  
>  	/*
> -	 * last arg:
> -	 * 	1: allocate past EOF
> -	 * 	2: extending prealloc
> -	 * 	3: interior prealloc
> +	 * last arg matches fallocate string array index in logdump:
> +	 * 	0: allocate past EOF
> +	 * 	1: extending prealloc
> +	 * 	2: interior prealloc
>  	 */
> -	log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 1 : 2) : 3);
> +	log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2);
>  
>  	if (end_offset > file_size) {
>  		memset(good_buf + file_size, '\0', end_offset - file_size);
> @@ -895,7 +896,8 @@ do_preallocate(unsigned offset, unsigned length)
>  	if ((progressinterval && testcalls % progressinterval == 0) ||
>  	    (debug && (monitorstart == -1 || monitorend == -1 ||
>  		      end_offset <= monitorend)))
> -		prt("%lu falloc\tfrom 0x%x to 0x%x\n", testcalls, offset, length);
> +		prt("%lu falloc\tfrom 0x%x to 0x%x (0x%x bytes)\n", testcalls,
> +				offset, offset + length, length);
>  	if (fallocate(fd, keep_size ? FALLOC_FL_KEEP_SIZE : 0, (loff_t)offset, (loff_t)length) == -1) {
>  	        prt("fallocate: %x to %x\n", offset, length);
>  		prterr("do_preallocate: fallocate");

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux