XFS Merged into Linux 2.4
Alphix writes "As noted on KernelTrap Marcelo has merged XFS into 2.4 after a code review by Christoph Hellwig. The mail from Marcelo on LKML is here. Apparently it touched very little VFS code so people not using XFS shouldn't see any ill effects from this (it's even supposed to fix some VFS bugs).
XFS is described by SGI as '...a journalling filesystem developed by SGI and used in SGI's IRIX operating system. It is now also available under GPL for linux. It is extremely scalable, using btrees extensively to support large and/or sparse files, and extremely large directories. The journalling capability means no more waiting for fsck's or worrying about meta-data corruption.' Let the stability vs. new-features flamewar begin."
What Dave has to say about this.
The site where: "I'm right, as long as you ignore the things that prove me wrong", became a valid method of debate.
is still in RO ?!
Good news indeed. Now I wouldn't have to find ways to patch my kernel with XFS and all those nasty local exploits at the same time...
back in the days when ext3 was still in our dreams i downloaded the SGI XFS kernel from their site and installed it on my wife's laptop. it was extremely stable and had the advantage, that her "oops, i have to run off and just close the lid"-atacks would not corrupt the filesystem (which i would have to clean up...).
nowadays i use ext3 on my machines because it comes default with RH (by the way EL is now available for academia, woohoo!). hence my question:
can someone offer a nice comparison of ext3 versus XFS?
Any up-to-date comparisons between the 3 main journalling filesystems (ext3, xfs, reiserfs), for both speed and reliability ?
:-)
I like xfs on the SGI - it's never let me down yet. I have to admit I'll be sorely tempted to try out xfs now that it's passed the 'seal-of-approval' and made it into the kernel - surely the best benchmark of all
Simon
Physicists get Hadrons!
this is a good thing... and XFS seems to be pretty cool. But it is a little frustrating to have so many competing filesystems. Anyone care to enlighten me on the differences between ext3, reiserfs, XFS and JFS (is that last one even relevant?) ...?
Let the stability vs. new-features flamewar begin.
It's already been stable for years, since VERY early in the 2.4.x cycle. It's just a detail in the naming that makes it merged as part of 2.4.x itself.
Last I checked ext3 has journaling too! [well it's actually ext2 with journaling].
So what's the big advantage of xfs over ext3?
Tom
Someday, I'll have a real sig.
Be careful those of you who still use lilo
Q: Does LILO work with XFS?
This depens on where you install LILO. For MBR installation: Yes. For root partitions: No, because the XFS superblock goes where LILO would be installed. This is to maintain compatibility with the Irix on-disk format. This will not be changed. Putting the Superblock on the swap partition is reported to work but not guaranteed.
SGI has an overview on the XFS filesystem, just briefly pointing out some highlights. I also recall reading somewhere that it was possible (moreso than ext* filesystems) to undelete files on an XFS filesystem, although I'm skeptical.
Trolls lurk everywhere. Mod them down.
For all those that are looking for a filesystem comparison, I found this story to be quite interesting...or go here for the test details and results.
I use XFS on serveral different servers, mainly because I belive it performs better then ext3, or any other fs. Also because Alot of the servers I run are samba servers and the ACL support is built native into XFS. And last I looked ACL support was still not quite stable in ext2/3 it has been awhile so it could be stable by now.
SGI released XFS into "the wild" and has ensured its longevity with little to no support on their part and increased the number of "out of box" coders they can hire to work on FS projects.
Microsoft....hasn't. Heck, MS is preparing to charge media makers (CF, SM, MMC, etc) to use FAT.
I say media makers switch to using XFS or another GPL'd journaling file systems. Won't take long for other platforms to support it in bulk (make/ config.....) and for stuff like flash where corruptions can occur often, I'd like a bit of journaling to minimize the impact.
I've been on slashdot so long I'm starting to get out of touch with the cool stuff if it ain't on slashdot.
Back in the day I would always just use ext2. Then I realized, hey there are other filesystems to choose from, so I decided to shoot in the dark and try reiser and xfs and ext3. xfs has always been the most awesome.
Just one thing. Now that we've got the source code for dealing with xfs, can someone write a driver so I can mount my xfs partitions from windows xp? It would really help out a lot of us dual booting types. I would do it myself, but I don't know jack about how filesystems work. I just know which ones do what.
I hope they put the xfs into 2.6 also. Maybe it wont be necessary to have seperate xfs-sources in gentoo anymore and xfs will finally be included in the gentoo-sources.
The GeekNights podcast is going strong. Listen!
I have been using it for for almost 3 years now. It has never let me down unlike some of the other journaling filesystems. No corrupt superblock like jfs. Kinda slow for small files when the parttions reach around 80% full. Plus its sure to piss SCO off :) but for video editing or files over 100kb it can't be beat. Reiserfs is great for directories like /var since 2.4.18 but I have lost too much data in the past to the bugger.
Just wondering, why does everyone get so excited about journaling filesystems? Many distros default to ext3/reiserfs now for even home boxes, but it's like a big band-aid.
If your box is crashing enough to make fscking a chore, you already have bigger problems. Sure, I can see where JFSs are sometimes useful, but on dekstops and most other machines the better-performing ext2 is a much more appropriate choice.
I agree with Marcelo's action on this. We're still in a very early stage of the 2.6 (stable) branch to feature freeze 2.4.
:)
I know we need the maximum user base for 2.6 testing, debugging and to recieve those "My TV stopped working when I installed kernel 2.6" messages. But we have to take it easy.
2.6 rocks. And a lot of distros have plans to release 2.6 based releases in the first quarter of 2004, which will greatly improve the user base.
IMHO, a good feature freeze, as Marcelo said somewhere in LKML, is 2.4.24 or even 2.4.25.
It's no time for a flamewar to begin. The Beaver is in the building.
.. what SCO will have to say about this...
Isn't it like claimed by SCamO to be their IP?
Take a directory with a large number of files like an old maildir and run ls.
Big difference.
Fun for the whole family with guess where the patch was applied From the snapshot directory
bk6 - 424K
bk7 - 964k
bk8 - 1.2M
Well thats increased the kernel by about another 5-10%. However I would say I do like xfs and its proven quite stable now.
Rus
Cheap UK and US VPS
after a code review by Christoph Hellwig
Incidentally, this is the Christoph Hellwig who contributed code to the kernel on Calderas behalf. His contributions may become an important point in the SCO-IBM-RedHat battle.
Any sufficiently advanced libertarian utopia is indistinguishable from government.
After patching every single kernel thats come out since the early 2.4s, I now have a kernel that I don't need to patch. WOW, about darn time!! Perhaps I'll even get lucky enough that RedHat and others that do not support XFS yet will build it into their kernels. That will make MY life easier, and updates go faster.
We chose XFS after lots of serious testing. It beat all comers at the time and we've been using it ever since. The only downside to XFS is file deletion times are a bit long, especially compared to Reiser, but when you have a server that is uner HEAVY load (Databses, mail servers) and with LARGE files (log server) nothing beats XFS.
Thanks guys, this is one of those merges that has made me estatic!
Angry People Rule
"Science is about ego as much as it is about discovery and truth " - I said it, so sue me.
yeah, they probably sent Vito down to visit Marcelo with a suite case full of jacksons and a simple message to deliver. "Marc... look we've got this fine filesystem here. you've seen the code. its nice code. but, you've got our competitor filesystem code in your kernel. now before we get our brawls all in an up roar, all we're asking is you HIGHLY consider putting this here XFS filesystem into that there kernel you're maintinging. Now, be a good boy, Marc, I know you'll do the right thing"
me i always hate seeing commercial quality products ending up on free software. the disgust.
Mandrake has offered XFS since at least 9.0, my first Linux distro. I've been using XFS (at the suggestion of my friend who helped with the install) for at least 6 months now, with only instance of a problem (not sure if it was a fault in the filesystem itself): lost or corrupted an inode or two, and fixed very easily once I knew what to do.
It works with both GRUB and LILO, is reasonably speedy, and has enormous partition and file size limits.
Count me a happy customer.
~~LF
Is this link (Multi Disk HOWTO) roughly what you are looking for?
If you have more inputs then why not send it to the author? (Link submitted in the spirit of recent anniversary and comments on The Linux Documentation Project, please support them!)
This "big merge" has nothing to do with vendor pressure. The XFS patches have been available and well-tested throughout most of the 2.4 kernel's life cycle and since its (XFS') stability has already been proven to play nicely with the rest of the kernel, it's quite appropriate to do a merge so late in the 2.4 tree's live cycle. The team at SGI that handles merging the XFS code into the kernel have done a very good job of keeping up with bug reports and changes in the kernel vfs code.
Marcelo probably shares my opinion in that the current XFS code has been around long enough, demonstrated stability, and successfully merged with every recent 2.4 kernel back to at least 2.4.1x, that it's more than suitable for inclusion in the main kernel source without risk of introducing instability.
The only clashes I've ever seen with XFS and other code was with other 3rd-party patches, such as the ACL support in grsecurity. Those are now "switchable", anyway.
That is not true. The biggest hold back during the past 3 years has been the fact that the VFS layer needed a number of alterations and so far Marcello did not merge XFS because of this.
It wasn't untill Cristoph OK'd the VFS changes that Marcello merged the XFS core.
SGI as a vendor has had nothing to do with it. Buy a altix 3000 and they would happily maintain any special patch you would need for that (IA64) machine.
I think I know what I'm talking about since it's my name on the XFS FAQ. And no I don't work for SGI.
Where's the light switch. Seth
Here is the same article, but in English.
This was just mentioned here on /. the other day, but according to this article on Groklaw, Christoph Hellwig is (was?) a Caldera (SCO) employee.
SCO is going after SGI for XFS, when one of their own employees was working on it.
that's right. despite terabytes of phonIE greed/fear/ego based ?pr? ?firm? hypenosys/MiSinformation being spewed daily, there remains a very real possibility of overheating the main processor.
I've been using XFS in production servers for more than two years already without any problem, it was time that it was merged into 2.4 kernel...
Maybe this way RedHat begins to support it for their installations
May the source be with you!
Here is the same article, but in English.
post screenshots, plz kthx.
from the journals-are-for-girls dept.
:-)
Huh? I always thought it was diaries that were for girls... at least, that's what I told my friends when they made fun of my journal.
Laugh at stupidity: mod idiots +1 Funny.
I seem to recall XFS has some issue with bad blocks.. if there is a bad block in the FS, it will unmount, and cannot remount. It has no facility to scan the FS and map around bad blocks, either.
FInally I can replace Irix on my Indy without having to patch the kernel sources for each and every new kernel release...
(Yeah, my indy has some 120GB of xfs file systems that I am not gonan convert to anything else)
Iirc, isn't he a former SCO/Caldera employee who was heavily involved in developing SMP and the Linux port of JFS? Iirc, Groklaw has a thing on this.
Now he works for SGI. The question I have is this-- it seems as if he has a conflict of interest to give his employer a beneficial review of the driver in order to ensure that it is included. I wonder how independent he is in his review.
That being said, he has been an important contributor to the kernel, and so I will give him the benefit of the doubt. I just wish that some sort of third-party review would have been done.
OTOH, there has been some speculation that Marcelo was biased against the inclusion, so maybe this balances things out.
LedgerSMB: Open source Accounting/ERP
From what I could find out XFS is the only Linux filesystem which stores quota information as meta-data-- there's no risk of an XFS filesystem getting its quotas "out of sync" with the contents of the disc and having to run a tedious quotacheck. We recently deployed it as a backup server and it's working very well!
Matthew @ Bytemark Hosting
I've been patching XFS support into my distro for a few months now. Let me get you caught up briefly. We had ext3 patched with acl support. That patch tends to lag behind kernel versions a little, which is not a problem if you're running a distro's standard back-ported kernel. However, I just undertook a migration on a live production box from ext3+acl to XFS on a second attached disk array, so I've been in Patch Hell for the last few weeks. I will say up front that I am not a k3rn31 h4ck0rz, but I get more done with it than probably anyone I personally know. That I got as far as I did in this story amazes me even today!
:-D
SGI ports their patch up to the latest kernel within a few days, but they have a nasty habit of removing older versions from their downloads when newer versions come out. When I only had the ext3+acl patches for kernel 2.4.20, and acl.bestbits.at was down for over a week ('grumble'), SGI only had XFS patches out for kernel 2.4.22. Andreas was kind enough to personally provide me some 2.4.22 ext3 patches. By the hardest, I got my 2.4.22 kernel built on my file server with ext3+acl and XFS.
The next DAY, I read of a root exploit in 2.4.22. The patch from kernel.org rendered my ext3+acl patches incompatible, and I'm not the type of guy yet to divvy up patches into even smaller pieces on any sort of schedule. I had to either forego backward compatibility or maintain a shell exploit in an environment where people do have shells.
I found, just yesterday, that Red Hat's newest kernel package includes xattrs and acls for ext3 and the 2.4.22 exploit's bugfix. It won't accept my xfs patch for 2.4.23 over some posix_acl and kdb conflicts. I found yesterday that SGI's latest kernel image has XFS and ext3+acl, but not the bugfix. The 2.4.23 patch broke my build. I find today that XFS is about to be added onto the native kernel tree, which just received both the bugfix and the ext3+acl extensions.
It's about TIME!
-j
http://epoxy.mrs.umn.edu/~minerg/fstests/results.
Of course your mileage may vary but I generally got results consistent with those cited.
My own experiences (I have used both reiserfs and xfs with 2.4.20 kernel:
You can defy gravity... for a short time
I always thought stable meant no changes, just bug-fixes.
(from http://www.sgi.com/software/xfs/overview.html)
Guaranteed Rate I/O
XFS is the only file system available that provides a guaranteed rate I/O system, which allows applications to reserve specific bandwidth to or from the file system. The file system can determine the available bandwidth and guarantee that a requested level of performance is met for a given time. This functionality is critical for media delivery systems such as video-on-demand or data acquisition.
Expanded Dump Capabilities
Unlike traditional file systems, which must be dismounted to guarantee a consistent dump image, you can dump an XFS file system while it is being used. The XFS dump utility, XFSdump, can dump an entire filesystem, a directory tree, or specific files. XFSdump is restartable, which allows a large dump to be spread over an extended period of time or to be resumed after a system restart.
-->tech stuff
I'm about to move a lot of my data over to a new disk. I want to use a filesystem that's readable (and preferably writable) by both Linux, and Windows.
So far, my best bet seems to be NTFS. But do anybody know if there exists XFS drivers for Win32?
How small a thought it takes to fill a whole life
Plus its sure to piss SCO off :)
;-)
That is not the half of it. You see-- Hellwig is a former SCO employee who when he worked there, worked with IBM closely on their port of JFS to Linux. He was also heavily involved in the SMP development process too. Just do a search for his name and SCO and Caldera on your favorite search engine. I think it will be hard for him to avoid a deposition
Now he works for SGI.
LedgerSMB: Open source Accounting/ERP
Christoph was not working on XFS while he was employed by Caldera.
XFS journals quota info, so you won't have to
wait for a quotacheck on a huge filesystem.
I happened to stumble on the thread while browsing the lkml a while ago.. I noticed that someone from Fermilab tossed in their support for merging it, as they run a 300TB or so setup. You think, maybe, this has something to do with it?
On a different note, I've been running XFS on my 2.6.0-test box for a while.. Now that it's going to be in a stable kernel, I can't wait to back up everything and switch. =D
This statement is false.
AFAIK, ext3 can't, so when you run out, you get to backup, recreate the filesystem with more, then restore.
I wonder how many people realize that journalling FS do not guarantee anything as far as power loss is concerned as long as your HDD write cache is turned on. Reiserfs has patches for flushing the data cache when the journal is written. Anybody knows something about these patches becoming mainstream..
If I make a separate boot partition outside of root, and if I recall correctly, lilo is normally installed inside of
I've been using ReiserFS, but I'm intrigued about XFS, especially since someone I know who owns an isp said just recently that in his experience with ReiserFS, it failed to restore on a heavily used news server after over 24 hours of trying.
GRIO is not available on Linux, because it requires a lot of other support in the kernel proper, in the various I/O subsystems etc.
however, the realtime subvolume, which is a component of GRIO, is available for use on Linux.
MS licensing the use of FAT is for flash media devices.. like all the digital cameras and PDAs out there... they use FAT because everything recognizes it. Using XFS would be pointless, as only linux and irix would be able to read it. Further, for flash, xfs would be rediculous anyway.. there are better systems specifically designed for flash.
If you don't use a format windows recognizes... there is no point.
While we're talking about lilo, mbr, separate /boot, how to access the mbr?
/etc partition. I'm now using knoppix to access my files. While trying to repair, I couldn't figure out how to access the MBR (and trying to reinstall a newer version of Suse would fail because for some reason trying to install lilo or grub into the mbr would repeatedly fail). I have access to /boot, so I know I can access that, but I just finished (almost) setting up an apache web server, and am using the MBR instead of the separate /boot partition. In case something goes wrong, how do I access it for viewing/editing?
/boot when the mbr is used?
I had an incident where my suse installation (or me) wiped out the
What is normally installed in mbr, and in
Thanks very much in advance!
When using the shred utility, I get warnings about not using the utility for journaled filesystems.
So what utility can I use to securely delete data on a journaled file system?
And being a previous windows user, I really liked the BCWipe utility that securely wiped unused areas of a partition. Is there an equivalent in linux systems?
So Marcelo will take XFS, which helps
approximately 12 people, but he won't take
low-latency and preempt patches, which would
help about 12,000,000 people.
-I like my women like I like my tea: green-
I remember way back in the v7 days, there was a command called sync, which wouldn't return, until all data had been flushed to disk.
It would seem that his would take care of that problem, at least on a non-active system, which is what you'd want for a backup anyway.
hehe - I should look at the FAQ and see if you really do know what you are talking about ;-)
In this case it would not help anyway, I have never used XFS.
as near as I can figure it the above either means
They are trying to restrict the GPL version of XFS to Linux.
or
XFS has been released under the GPL and a linux implementation is available.
I'm not entirely sure. Can someone clarify this for me please?
When we first tested JFS wasn't really ready. We couldn't get it to work on the boot partition and had some bad oopses under heavy load. I understand that these have been fixed now. As far as straight testing is concerned they were pretty close. When the DB files got really big (1.3 GB or larger) XFS started to outshine JFS.
Angry People Rule
"Science is about ego as much as it is about discovery and truth " - I said it, so sue me.
I've read in a few places that XFS takes a bit more of your CPU than some of the other popular file-systems (such as reiser).
I was considering using XFS on my desktop, but since my CPU is getting old (K6-2 450mhz), I'm now hesitating; does it really make a noticeable difference?
Right now I'm using reiserFS; lets say that it's 100%. How much more would XFS take? 105%? 115%?
Thanks,
Treehugger? Treehugger... Treehugger!
We've been using XFS in production from the start.
We're a film and TV VFX / animation company, and have XFS on everything - about 600 machines, from large servers to workstations and render machines. It's absolutely core to our business. We came to XFS from using SGI machines, but it's nearly all linux now.
As far as I know, many of the other studios are doing the same.
Another thing that we've noticed recently is the proliferation of black box NAS servers, which when you look closely are linux/XFS boxes with a fancy gui.
GRUB is good. Boots anything. Wish we had OF.
Isn't GRUB dead? It hasn't been changed in a year, and it looks like it's never going to be officially released on ftp.gnu.org, let alone reach 1.0.
Just to add my $0.02... I used XFS with several Mandrake versions running in server configuration and had good success overall. The thing that kept me coming back was just how fast the filesystem worked. I did have an issue once with the whole filesystem blowing up after a power outage. But most of the time the systems would come right back with no problems.
I've been patching XFS into 2.4 kernels and have had nothing but great performance so far. It's been extremely fast. Recovery when my machine hasn't been shut down properly has been worlds faster than ext3 and reiser3x (i've yet to try reiser4).
I haven't run into a SINGLE problem at all and recommend it to all, as it's speedy and does a good job. It's also encouraged me to install GRUB which just rocks, plain and simple.
Just for those who live behind the moon. XFS has been available in Su^HUSE Linux and UnitedLinux for quite a while now. Guess who Christoph Hellwig works for? So folks, there is no need to spread XFS FUD between the lines - I have been using it exclusively privately and for customers for ages (whatever is ages in the IT universe).
open (SIG, "</dev/zero"); $sig = <SIG>; close SIG;
UFS on Solaris can also be bitten by the same bug. :-(
:-)
You should always remount ro if possible before backing up; otherwise make a FS snapshot of the disc after syncing to ensure nothing changes underneath.
If you can't get sane access to the block device, not all is lost. The dangers of operating the dump utility at the device level doesn't always result in problems in that dump operates conservatively when scanning directories, etc. A common scenario is when a file is opened for writing between the time you read it's inode and the time you attempt to extract n blocks from it. In a simple case, this is okay since the copy of the blocks you pulled from the stat structure are probably still valid for the old copy of the file; any new blocks written are not likely to reuse the old blocks unless the filesystem is close to full. Backing up a file that is currently being accessed R/W is not advised, however. Quiesce any databases if you value them.
It's better than nothing. If you run the dumps often enough, you can recover from one bad one by merging in the missing directories from a previous one. I've never had to do this in the past, though, maybe I've been lucky.
Fuck Beta. Fuck Dice
What, did Molnar, Trovalds, and Tosatti all rent Rider trucks and run over your dog a few times?
Fuck Beta. Fuck Dice
When I have a power failure and my system comes back up (I'm running SuSE 8.1 with reiser) I get notices that truncations have been made. Does this mean that files have been deleted?
-Cnik
XFS for SGI machines has been out longer than ext2 for Linux (as Linux used the Minux filesystem for some time).
XFS for Linux has been out for only a short amount of time relative to ext2 for Linux.
Undeleting on ext2 is possible with for instance recover while it is afaik impossible on ext3. recover on ext2 does have its limits but it has saved my skin a ;)
couple of times.
ext2 has been around since early 1993:
http://web.mit.edu/tytso/www/linux/ext2int
XFS has been around on IRIX since late 1994:
http://www.ncsysadmin.org/files/xfs_linux.
Nice try, thanks for playing. Maybe you'd like a copy of our home game?
Now before I get modded down, I be to remind whoever might read this that what I am saying is FACT. - bogaboga
Look at this nice bitch ready for getting her slit pumped. ,[[, HH ,GFMF[hhhhh [MM[q IH ,hhhhh IH ,,,, ' HH ,Hoqhhhhh hhhhh 'oooMMMqqq q'q' o ,oq q q qhhhhh oooYoHqqhhhhh q ,oq q q qhhhhh hhhhh 'oooqo q q o o ,oqqq q qhhhhh hhhhh hhhhh o qo o o o
,ooq q qhhhhh qhhhhh hhhhh o qo o o
,oqq q q qhhhhh qhhhhh hhhhh hhhhh 'q' o
hhhhh hhhhh hhhhh qAMMMMMMMMMMMMAq
hhhhh hhhhh hhhhh qAMMMMMMMMMMMMMMMMMMAq
hhhhh hhhhh qAMMMMMMMMMHHHHHMMMMMMMMAq
hhhhh hhhhh qAMHMMMMHHMHIHHIMMMHMMMMHHAq
hhhhh hhhhh qAM'MMMMMMHHIHHHIMMMMMIMMHHHHq
hhhhh hhhhh AMqIMMMMMHHIHIHHHIMMHHHHHHHHHH
hhhhh hhhhh AMIIHMMMMMHIHHHIHHIHHHHHHHHHHHHq
hhhhh hhhhh MMIHHMMMMMHHIHHHIHHHHHHHHHHHHHHH
hhhhh hhhhh AMMMMMHHHHHHIoooooooIHHHIooIHHHHH
hhhhh hhhhh MMMMHIIIIo"qAMMMMAhhhhh
hhhhh hhhhh MMMMHIIo AW"''''hhhhh qq HH
hhhhh IHHIHIIIoq''
hhhhh AHHIHIIoqq'q "o[P,[ oo qqqq IH
hhhhh IHHHIHIIooqqhhhhh q[oqhhhhh oH
hhhhh AHHHHHIIoooqq qhhhhh q [ qhhhhh oH
hhhhh IHHIIHIq[oooqq o o o ,
hhhhh IHHIIHHq[oooq o oq 'q"qq" 'o IH
hhhhh IHHIIHIq[ooq qqq o
hhhhh qIHHHIHHMMAoqqq [oo""""""[o AMI
hhhhh oIHHHHIIHMMoq q q oo[,,,,[o HHI
hhhhh IIHHMMHHIHHMoqqhhhhh '"""'hhhhh AMHI
hhhhh IIHHMMHMHHIIIMoqqhhhhh hhhhh AMMHI
hhhhh IHHHMMHMHMHHHIHIoqqhhhhh hhhhh qAMMMHI
hhhhh IHHHMMMMHMMHHHIIooooqq q,oo MMMHHI
hhhhh IHHHMMHHHHMMHHHIoq"oooooo" MMMIH'
hhhhh oIHHMMHMMMMHF"HHIIhhhhh hhhhh MMMHH
hhhhh IHHMMHVooqq HHIIoqhhhhh q MMHHI
hhhhh IHHMVooqqqhhhhh HHIIoq q q MMHIo
hhhhh IHMVooqq qhhhhh "HIIoq qq MMIo
hhhhh qIHVoqq qhhhhh hhhhh 'HIq qq MMo
hhhhh IHVoqq qhhhhh hhhhh HAoq q "'
hhhhh IVoqq q qhhhhh hhhhh "IIoq o
hhhhh qIHoqq qhhhhh hhhhh IIIoq o
hhhhh IHooqqq qhhhhh hhhhh oooIq o
hhhhh HVoqqq q qhhhhh hhhhh 'oooHIq '
hhhhh oMooqqqq qhhhhh hhhhh hhhhh 'oooHIq '
hhhhh MHooqqqqhhhhh hhhhh qhhhhh 'ooHIq o
IMoooqqq qhhhhh q[ohhhhh 'oI"Iq o
Moooqqq q qhhhhh [oo,qhhhhh hhhhh ' q '
ooqqqq qhhhhh qq''hhhhh hhhhh hhhhh q 'q
ooqqq qhhhhh qhhhhh hhhhh hhhhh hhhhh 'q q
qooqq qhhhhh hhhhh qqhhhhh hhhhh hhhhh hhhhh 'q'
ooqq q qhhhhh qhhhhh hhhhh hhhhh hhhhh hhhhh ''q
ooqq qhhhhh hhhhh qhhhhh hhhhh hhhhh hhhhh hhhhh qo,q
ooqq qhhhhh hhhhh qqhhhhh hhhhh hhhhh hhhhh hhhhh o[[[,q
qooqq qhhhhh qhhhhh hhhhh hhhhh hhhhh hhhhh oo[[[o'q
ooqq q qhhhhh [qqhhhhh q qhhhhh hhhhh hhhhh o[[[[oo[,
oqq qhhhhh [oooqhhhhh q q,hhhhh hhhhh hhhhh [[[[['[[o
oqq qhhhhh hhhhh qMooqhhhhh q q,[hhhhh hhhhh hhhhh [[[[ [['
oqhhhhh qhhhhh "[qqhhhhh q qq[hhhhh hhhhh hhhhh o[' o[
oq qhhhhh hhhhh "[qhhhhh q qq[hhhhh hhhhh hhhhh q' q'
qq qq qhhhhh hhhhh ",hhhhh hhhhh qqqo[hhhhh hhhhh q' qo
q qqhhhhh hhhhh 'qhhhhh hhhhh q qqqo[hhhhh hhhhh qq' qo
qq ohhhhh hhhhh hhhhh qhhhhh hhhhh q qqqqo[q,,qqooI' oo
ooqoq q qhhhhh hhhhh qhhhhh hhhhh qqqqqqqq '""' I[[o"'
oooqqhhhhh qhhhhh qhhhhh hhhhh 'qqqq'hhhhh o
"oooqq q qhhhhh q
hhhhh oooqq q qhhhhh qhhhhh hhhhh hhhhh hhhhh o
hhhhh "oooqqq qhhhhh hhhhh q
hhhhh 'ooooqqq q q 'qhhhhh hhhhh hhhhh o
hhhhh hhhhh 'ooooqqqhhhhh hhhhh qT
hhhhh hhhhh 'ooqqqq qhhhhh q
hhhhh hhhhh hhhhh 'ooqqqhhhhh hhhhh 'hhhhh hhhhh o
hhhhh hhhhh hhhhh Moqqqq qhhhhh 'q
hhhhh hhhhh hhhhh MMMIoqqqqhhhhh qhhhhh hhhhh o
hhhhh hhhhh hhhhh MMMMMAoqqqhhhhh q
hhhhh hhhhh hhhhh AHHMMMMHAoqqqqhhhhh qhhhhh o
hhhhh hhhhh hhhhh qMHHMMMMMMMAoq 'hhhhh q
hhhhh hhhhh hhhhh AHHHMMMo"TTTTLqhhhhh qhhhhh o
hhhhh hhhhh hhhhh AHHHHHHMMLLLLLH 'qhhhhh q
hhhhh hhhhh qMHHHqqqoHHMMMMMAqhhhhh qhhhhh o
hhhhh hhhhh qAHHHqqqHHoooooMMMoqhhhhh q
hhhhh hhhhh qMHHoqhhhhh oooooMMMqq qhhhhh q o
hhhhh hhhhh qMHoq qhhhhh 'ooooMMMqqhhhhh 'q 'q
hhhhh hhhhh
hhhhh
hhhhh
hhhhh [oqqhhhhh hhhhh qhhhhh hhhhh ooqo o o o
hhhhh
[oqq q qhhhhh hhhhh qhhhhh ' oqo" o
[oq q qhhhhh qhhhh