xfs
[Top] [All Lists]

[DISCUSS] xfs allocation bitmap method over linux raid

To: dgc@xxxxxxx
Subject: [DISCUSS] xfs allocation bitmap method over linux raid
From: "Raz Ben-Jehuda(caro)" <raziebe@xxxxxxxxx>
Date: Wed, 24 Jan 2007 08:34:22 +0200
Cc: xfs@xxxxxxxxxxx
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:mime-version:content-type:content-transfer-encoding:content-disposition; b=HH0BcBFE8E1XpU58ztwrvph+DTQ4s9kPaWnNkRtom9WtZFA09kybIiLcAfVhD1Ro2FmuFGqNMK7y9EPRdPPCUIpxH/yBevqNbuyepc28YHdyZXx2gKPqcboL1I15pGMQi2nXuqSPF8RuHbYi3wrx7r1k7xXz9mSEcghj57k1xD0=
Sender: xfs-bounce@xxxxxxxxxxx
David Hello.
I have looked up in LKML and hopefully you are the one to ask in
regard to xfs file system in Linux.
My name is Raz and I work for a video servers company.
These servers demand high throughput from the storage.
We applied XFS file system on our machines.

A video server reads a file in a sequential manner. So, if a
file extent size is not a factor of the stripe unit size a sequential
read over a raid would break into several small pieces which
is undesirable for performance.

I have been examining the bitmap of a file over Linux raid5.
According to the documentation XFS tries to align a file on
stripe unit size.

What I have done is to fix the bitmap allocation method during
the writing to be aligned by the stripe unit size.
The thing is , though this seems to work , I do not know whether I
missed something.

The bellow is a patch (a mere two lines) i have applied to the
file system and I would be really grateful to have your opinion.


diff -ru --exclude='*.o'
/d1/rt/kernels/linux-2.6.17-UNI/fs/xfs/xfs_iomap.c
linux-2.6.17-UNI/fs/xfs/xfs_iomap.c
--- /d1/rt/kernels/linux-2.6.17-UNI/fs/xfs/xfs_iomap.c  2006-06-18
01:49:35.000000000 +0000
+++ linux-2.6.17-UNI/fs/xfs/xfs_iomap.c 2006-12-26 14:11:02.000000000 +0000
@@ -441,8 +441,8 @@
   if (unlikely(rt)) {
       if (!(extsz = ip->i_d.di_extsize))
           extsz = mp->m_sb.sb_rextsize;
-   } else {
-       extsz = ip->i_d.di_extsize;
+   } else {
+        extsz =  mp->m_dalign; // raz fix alignment to raid stripe unit
   }

   isize = ip->i_d.di_size;
@@ -663,7 +663,7 @@
       if (!(extsz = ip->i_d.di_extsize))
           extsz = mp->m_sb.sb_rextsize;
   } else {
-       extsz = ip->i_d.di_extsize;
+       extsz =  mp->m_dalign; //  raz fix alignment to raid stripe unit
   }

   offset_fsb = XFS_B_TO_FSBT(mp, offset);
~


Thank you.
--
Raz


<Prev in Thread] Current Thread [Next in Thread>