Re: [PATCH] mkfs.xfs: Don't stagger AG for a single disk

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

 



On 8/29/17 11:18 PM, Donald Douwsma wrote:
> When sunit and swidth are used mkfs.xfs tries to avoid all allocation
> groups aligning on the same stripe and will attempt to stagger them
> across the stripes that make up swidth.  If there is only one stripe
> then there is no benefit in this optimisation.
> 
> $ truncate -s10G xfs_10G_su256k_sw1.image
> $ mkfs.xfs -d su=256k,sw=1 xfs_10G_su256k_sw1.image
> meta-data=xfs_10G_su256k_sw1.image isize=512    agcount=16, agsize=163776 blks
>          =                       sectsz=512   attr=2, projid32bit=1
>          =                       crc=1        finobt=0, sparse=0
> data     =                       bsize=4096   blocks=2620416, imaxpct=25
>          =                       sunit=64     swidth=64 blks
> naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
> log      =internal log           bsize=4096   blocks=2560, version=2
>          =                       sectsz=512   sunit=64 blks, lazy-count=1
> realtime =none                   extsz=4096   blocks=0, rtextents=0
> 
> A side effect of the optimisation is that the size adjustment used to stager
> the allocation groups causes the last sunit of storage to be unused.
> 
> $ echo $((2620416*4096))
> 10733223936
> $ ls -l xfs_10G_su256k_sw1.image
> -rw-rw-r--. 1 test test 10737418240 Aug 30 10:54 xfs_10G_su256k_sw1.image
> 
> Skip this optimisation when sunit == swidth.
> 
> Signed-off-by: Donald Douwsma <ddouwsma@xxxxxxxxxx>

Interesting.  Yeah, I suppose this makes sense, though I'm surprised
anyone would notice.  :)

Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>

Thanks,
-Eric

> ---
>  mkfs/xfs_mkfs.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index b5c3a57..35dae48 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -2534,7 +2534,9 @@ reported by the device (%u).\n"),
>  				}
>  			}
>  		}
> -		if (dswidth && ((agsize % dswidth) == 0) && (agcount > 1)) {
> +		if (dswidth && ((agsize % dswidth) == 0)
> +			    && (dswidth != dsunit)
> +			    && (agcount > 1)) {
>  			/* This is a non-optimal configuration because all AGs
>  			 * start on the same disk in the stripe.  Changing
>  			 * the AG size by one sunit will guarantee that this
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux