xfs
[Top] [All Lists]

Re: TAKE - Introduce version 2 log support to XFS

To: Steve Lord <lord@xxxxxxx>
Subject: Re: TAKE - Introduce version 2 log support to XFS
From: Luciano Chavez <lnx1138@xxxxxxxxxx>
Date: 08 Jul 2002 17:23:40 -0500
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <200206182039.g5IKdY810979@xxxxxxxxxxxxxxxxxxxx>
References: <200206182039.g5IKdY810979@xxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
On Tue, 2002-06-18 at 15:39, Steve Lord wrote:
> OK, new feature time. This hopefully is the answer to performance
> problems on software raid5, and to issues with EVMS and LVM2 when
> using XFS. You will need new commands to use this.
> 
> Basically this adds support for a new log format in XFS, which
> allows for two things:
> 
>   o larger internal log buffers, and hence larger log writes,
>     the old limit was 32K, the new one is 256K. You must be using
>     version 2 log format to use the larger sizes.
> 
>   o Stripe aligned log writes, log writes can be stripe aligned to
>     the data stripe unit, or to an explicitly specified log stripe
>     unit. This is the part which helps out EVMS, LVM2 and software
>     raid5.
> 

Steve,

I finished a patch to xfsprogs (works for 2.0.3 and current CVS/2.1.1)
that allows getting stripe info for EVMS volumes using a new EVMS IOCtl.
I haven't submitted it to you yet because I still have the same
alignment problems with XFS. I repeated the tests with the XFS kernel
tree from CVS from xfs.org and still have problems. At the moment, the
EVMS IOCtl called during mkfs always returns a 4K stripe unit and a
width of 1 but we may expand the support for the best choice in a
storage stack later.

Here is what the 2.1.1 mkfs.xfs output looks like (it appears that the
log sunit matches the data sunit although represented in bytes rather
that fs blocksize units which looks correct):

root@gunslinger ~ # mkfs.xfs -f /dev/evms/md/md0      
meta-data=/dev/evms/md/md0       isize=256    agcount=8, agsize=31359
blks
data     =                       bsize=4096   blocks=250872, imaxpct=25
         =                       sunit=1      swidth=1 blks, unwritten=0
naming   =version 2              bsize=4096  
log      =internal log           bsize=4096   blocks=1200, version=1
         =                       sunit=4096
realtime =none                   extsz=4096   blocks=0, rtextents=0

The mount command generates the following entries in the message log:

XFS mounting filesystem evms(117,4)
evms: non-aligned request [bh(cd89a360), rsector(f5002), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f500a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5012), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f501a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5022), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f502a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5032), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f503a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5042), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f504a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5052), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f505a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5062), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f506a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5072), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f507a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5082), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f508a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f5092), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f509a), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50a2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50aa), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50b2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50ba), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50c2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50ca), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50d2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50da), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50e2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50ea), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50f2), size(1000)]
rejected on volume(md/md0).
evms: non-aligned request [bh(cd89a360), rsector(f50fa), size(1000)]
rejected on volume(md/md0).
xfs_force_shutdown(evms(117,4),0x1) called from line 350 of file
xfs_rw.c.  Return address = 0xc01c7c19
I/O Error Detected.  Shutting down filesystem: evms(117,4)
Please umount the filesystem, and rectify the problem(s)
I/O error in filesystem ("evms(117,4)") meta-data dev 0x7504 block
0xf5002
       ("xlog_bwrite") error 5 buf count 131072
xfs_force_shutdown(evms(117,4),0x1) called from line 350 of file
xfs_rw.c.  Return address = 0xc01c7c19
I/O error in filesystem ("evms(117,4)") meta-data dev 0x7504 block
0xf5102
       ("xlog_bwrite") error 5 buf count 131072
XFS: failed to locate log tail
XFS: log mount/recovery failed
XFS: log mount failed

I am hoping that the issue is still with this following code in
_pagebuf_page_io that you had mention some time back:

        /* This will attempt to make a request bigger than the sector
         * size if we are well aligned.
         */
        if ((MAJOR(dev) != LVM_BLK_MAJOR) && (MAJOR(dev) != MD_MAJOR)) {
                sector = blk_length << SECTOR_SHIFT;
                blk_length = 1; 
         } else if ((MAJOR(dev) == MD_MAJOR) && (pg_offset == 0) &&
                   (pg_length == PAGE_CACHE_SIZE) &&
                   (((unsigned int) bn) & BN_ALIGN_MASK) == 0) {
                sector = blk_length << SECTOR_SHIFT;
                blk_length = 1;
        } else {
                sector = SECTOR_SIZE;
        }


-- 
regards,

Luciano Chavez

lnx1138@xxxxxxxxxx          
http://evms.sourceforge.net


<Prev in Thread] Current Thread [Next in Thread>
  • Re: TAKE - Introduce version 2 log support to XFS, Luciano Chavez <=