Slashdot Mirror


Practical File System Design with the Be File System

erikharrison writes "Dominic Giampaolo's Practical File System Design with the Be Filesystem has been around since 1999 - not exactly a new book. The book has been out of print for a time now, however, so Dominic made the book available in PDF form on his website. With this public release of the book, and the BeOS rising to join the ranks of OSs that won't die (hi Amiga!) it makes sense to take a look at what the book has to offer us today." Read on for the rest of Harrison's review below to see just what that is -- it covers a surprisingly broad range. Practical File System Design with the Be File System author Dominic Giampaolo pages 227 pp publisher MORGAN KAUFMANN PUBLISHERS, INC. rating 8.5 of 10 reviewer erikharrison ISBN 1558604979 summary Discusses implemeting a file system, using the Be file system as example

Table of Contents

  • Chapter 1 Introduction to the BeOS and BFS
  • Chapter 2 What Is a File System?
  • Chapter 3 Other File Systems
  • Chapter 4 The Data Structures of BFS
  • Chapter 5 Attributes, Indexing, and Queries
  • Chapter 6 Allocation Policies
  • Chapter 7 Journaling
  • Chapter 8 The Disk Block Cache
  • Chapter 9 File System Performance
  • Chapter 10 The Vnode Layer
  • Chapter 11 User-Level API
  • Chapter 12 Testing
  • Appendix A File System Construction Kit

First thing to note is that Giampaolo is not a great writer, nor is he a bad one. He does not have the gift that some tech writers have of making both an interesting technical document and a fun read. His style is very straightforward - introduce idea, explicate idea, summarize idea. On the other hand, he knows his topic inside and out, and has an obvious enthusiasm for the material, and a real talent for saying things simply without dumbing it down, and his occasional dry wit makes the book a surprisingly easy read.

Giampaolo is doing two things - discussing designing filesystems in general and documenting the Be filesystem. He does both well. BeFS has some advanced features - arbitrary metadata, attribute queries, and indexing. The desire to support these features influences the overall design of the system, but Giampaolo shows how changes to that design change implementation details. The result is a good overview of how a file system works, the trade-offs in optimizing for a particular usage pattern, and how to design one yourself.

The book can be roughly divided into three sections: the first is an overview of how filesystems work and some of the concepts that you encounter - extents, inodes, B-trees, superblocks, and the other standard pieces of a filesystem. Included in this early section is a good high-level overview of the design of five other file systems: BSD FFS, Linux's ext2, Macintosh HFS, Irix XFS, and Windows NT's NTFS. The coverage here strikes a proper balance between too much and too little information. Giampaolo prefers to show rather than to tell, and these filesystem overviews make the connection between design, performance, and features perfectly clear, and provide a solid background to talk about a specific implementation in detail - namely BeFS.

The second section is the bulk of the book - how to implement a filesystem from the ground up, leaning heavily on the BeFS implementation for examples. This is the most straightforward part of the book. Giampaolo covers a single issue in design and implementation in a "Here's the problem, here's and overview of possible solutions and their drawbacks, here's how I did it, now lets summarize" manner. Again, Giampaolo's style makes this an easy if somewhat dry read. As a filesystem and kernel ignoramus, I would have appreciated a slightly more detailed coverage of how all of the various data structures get to disk - how are they serialized, whether endianess is an issue, etc. The BeOS was pretty portable, running at one time or another on the AT&T Hobbit processor, PowerPC, and x86 - I would have liked to have seen portability issues discussed, however, BeFS wasn't written until after the move from the Hobbit to PowerPC, and the book was written prior to the move to x86, so the lack of coverage is reasonable.

Even considering the plain Jane style of this middle section, there are a few gems. The coverage of journaling is excellent, and while I've long understood journaling from a 10,000 foot perspective, this really made me understand the underlying concepts, combined with simple code snippets that helped understand implementation. The Allocation Policies chapter showed in clear terms that disk access is a major bottleneck, and filesystems have become very sophisticated in their optimizations.

The third section of the book deals with some of the more indirect concerns in implementing a file system; specifically, interacting with the kernel, designing a user level API and the major role of testing in filesystem development. This is the one place Giampaolo's writing shines. He really is a good teacher, and this section affords him the chance to talk about the broader perspective of OS design, and even recount a few war stories. For example, in terms of parentage, the BeOS has BSD and classic MacOS as its father and mother. In a few places, such as the Storage Kit API covered in chapter 11, this heritage shows some signs of less-than-seamless integration, and this offers Giampalo a chance to wax philosophical on the nature of OS design, company politics, and the pressure of shipping dates.

In short, the book lives up to it's title. The author is a pragmatist, and offers a clear roadmap for those who have a need to work with low level filesystem implementation. His emphasis on testing, careful optimization, and data structure protection not only helps to show the pitfalls of filesystem work, but also offers a Swiss army knife of techniques to dodge them. The book concludes with a short appendix which covers a file system construction kit, allowing a would-be implementor to begin work on his own filesystem safely without worrying about killing his hard disk. All in all, a solid read.

Here's a link to Practical File System Design with the Be File System as a PDF; you can also look for a used copy at Barnes & Noble. Slashdot welcomes readers' book reviews -- to see your own review here, carefully read the book review guidelines, then visit the submission page.

48 of 258 comments (clear)

  1. Mirror with PDF by BiggestPOS · · Score: 5, Informative

    http://biggestpos.com/pfs/ It took me so long to download the file I thought I'd put it on a faster server for you guys.

    --
    What, me worry?
    1. Re:Mirror with PDF by nacturation · · Score: 4, Informative

      This reminds me of the guy who put up an Adobe Golive PDF book for download. Wired article here. Since nobody reads links, the short story is that it was downloaded 10,000 times in 36 hours and faced a possible $15,000 bandwidth bill (which was later rescinded by Level 3, his hosting company).

      Earthlink wasn't so charitable to a Halo fan who put up a movie previewing Halo and saw it downloaded 100,000 times. Earthlink charged him $30,000 for the 4500 gigabytes downloaded.

      The moral here is that if you're going to put up anything which might be downloaded quite a lot (or if you're expecting a slashdotting), make sure your host doesn't charge through the nose for extra bandwidth. Or, if the file is over 5MB in size (and under 1GB), make a freecache.org link and let others mirror it for you automatically.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    2. Re:Mirror with PDF by kryptkpr · · Score: 4, Informative

      Have you been living under a rock? The solution is BitTorrent!

      --
      DJ kRYPT's Free MP3s!
  2. Future is relational databases by leandrod · · Score: 2, Insightful

    One more backwards-looking text... it simply ignores that the future is relational databases as a filesystem.

    --
    Leandro Guimarães Faria Corcete DUTRA
    DA, DBA, SysAdmin, Data Modeller
    GNU Project, Debian GNU/Lin
    1. Re:Future is relational databases by happyfrogcow · · Score: 4, Insightful

      and just where are you going to store that database? on another database acting as a filesystem? or will you have a db built into the OS, right next to your flight simulator, and supercolliding monkey accelerator?

    2. Re:Future is relational databases by ceswiedler · · Score: 4, Interesting

      It's interesting that one of the features of BeFS is its metadata indexing capabilities (which are the beginnings of a relational model).

      Clearly the BeOS designers agree with you.

      It's also interesting that the author spends quite a while discussing how difficult it is to do well (particularly performance-wise) and how they almost left it out (IIRC) and/or had to limit its scope.

      Clearly the BeOS developers think you're wrong.

      And personally, I'll believe people who have actually tried to implement the technology in question over people who say others should do so.

    3. Re:Future is relational databases by ckaminski · · Score: 2, Informative

      www.objectstore.net

      Amazon.com uses it.

    4. Re:Future is relational databases by leandrod · · Score: 2, Insightful
      > its metadata indexing capabilities (which are the beginnings of a relational model)

      No, they could be the beginnings of an implementation of the relational model.

      > the BeOS designers agree with you

      If they did they would have gone full ahead instead of taking half measures.

      > It's also interesting that the author spends quite a while discussing how difficult it is to do well (particularly performance-wise) and how they almost left it out (IIRC) and/or had to limit its scope.

      No one ever said data was easy. But implementors usually do this particular blunder because they never understood the relational model, confounding it with SQL.

      > I'll believe people who have actually tried to implement the technology in question over people who say others should do so

      No, I am not talking about their technology. I am talking about the relational model.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    5. Re:Future is relational databases by rapett0 · · Score: 2, Funny

      Of course, you know the quote that old lady gave to I believe Carl Sagan, "its relational databases all the way down"

    6. Re:Future is relational databases by no+reason+to+be+here · · Score: 4, Informative

      Actually, Be started with a full database instead of a file-system. They found it to be incredibly slow and crash-prone, and so they developped the marvel that is the Be file system.

    7. Re:Future is relational databases by gwappo · · Score: 4, Informative

      Amusing sarcasm but there's no reason for a database not to write directly to any random access device.

    8. Re:Future is relational databases by dasmegabyte · · Score: 2, Funny

      Because that's what Microsoft is doing. So it must be wrong (up until Longhorn sells its first 10 million copies, then we'll scramble to implement it).

      --
      Hey freaks: now you're ju
    9. Re:Future is relational databases by Tim+C · · Score: 2, Informative

      I'm no DBA (I'm a programmer), but I *believe* that Oracle can do just that if you configure it to - write directly to a raw disk partition. I can't imagine that it's the only db to do so, either.

    10. Re:Future is relational databases by leandrod · · Score: 2, Informative
      > any relational DB is always fast

      Know you are joking, but for the benefit of others:

      A DB isn't fast, it is just stored at a DBMS. Now a RDBMS can be faster than anything else, because of data independence, that is, the separation of the logical and physical levels of any given database.

      > a POS implimentation

      What does that mean? OneLook gave me so many meanings, I gave up.

      > what would the user experiance on a system built on a database file system be like

      Anything you'd like. Hierarchies can be quite nicely stored in a RDBMS, so one does not need to change much in the user level.

      > would the actual file contents be stored off in another table

      It would be stored in a relation. RDBs don't have tables.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    11. Re:Future is relational databases by VitaminB52 · · Score: 2, Informative

      Yes - Oracle can.
      Oracle also has an iFS, short for Internet File System. It's actually a filesystem inside the Oracle RDBMS, and can be connected to through HTTP, FTP, IMAP4, SMTP, SMB/NTFS, NFS, AFP, etc..
      So Oracle has an relational database that can be used as a file system.

    12. Re:Future is relational databases by leandrod · · Score: 2, Insightful
      > 'Relational Database' typically refers to something like DB2 or MSSQL that support features like foreign keys and referential integrity, allowing one to create relations between tables.

      There are some misunderstandings here.

      First, both IBM DB2 and MS SQL Server are based on the SQL standard -- actually IBM DB2 defined the standard --, and SQL is in frontal violation of serveral fundamental characteristics of the relational model. It does, however, incorporates some relational ideas and is generally saner than alternatives like XML, MV, OO DBs.

      Second, foreign keys are constraints to enforce referential integrity. This does not 'create relations between tables', it documents and enforces some relationships, and does that non-exclusively. The user is free to query the data and find any other relationships.

      Third, relation has a very definite mathematical meaning. It is the defining feature of the relational model, and corresponds to what SQL calls tables -- only that relations are sets, while tables are bags.

      > I don't understand how you are suggesting it be organized

      One can still have a hierarchy, but it would be just one way of accessing files, not the way. The position(s) of a file in the hierarchy would be just yet another attribute of it.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
  3. Need more than one filesystem by Anonymous Coward · · Score: 5, Informative
    All you need is one!

    No. You need four:

    1. Ext2 or Ext3 on primary hard drive
    2. IS09660 on CDs
    3. minix for initrd
    4. FAT for floppies/USB devices
    1. Re:Need more than one filesystem by Short+Circuit · · Score: 4, Insightful

      You know, I hope nobody ever tries a "one size fits all" approach with filesystems.

      Some are good for a specific purpose, like ISO9660. It's got error correction in it, so it's good for write-once removable media.

      Others are extremely widespread, like FAT. That's good for interoperability.

      Others support advanced permissions like ACLs. That's good for system security.

  4. It's a nice thought. by DiscordOfFive · · Score: 5, Interesting

    I generally think it's a good thing when books get put up (legally) on the web like this. My personal view on BeOS is that it's more of a hobby OS than a production one, but a book that details the workings of a complex system is useful. After all, maybe it'll help form the basis of a new, advanced FS.

    --


    Only the purest of souls seek enlightenment. Everyone else just wants power.
  5. Without being too cynical by Timesprout · · Score: 4, Insightful

    He does not have the gift that some tech writers have of making both an interesting technical document and a fun read.

    But for most people this is seriously dull subject matter. Oscar Wilde would stuggle to get a chuckle out of this stuff.

    --
    Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
    What truth?
    There is no dupe
  6. Mirrors: by Anonymous Coward · · Score: 3, Insightful

    Mirrors of the PDF:

    http:/beos.spb.ru/program/105/practical-file-sys te m-design.pdf.zip

    http://users.aber.ac.uk/mmb9/data/practical-file -s ystem-design.pdf

    http://www.funtech.org/downloads/Temp/practical- fi le-system-design.pdf

    1. Re:Mirrors: by uberdave · · Score: 3, Informative

      Links to the mirrors:

      Link 1

      Link 2

      Link 3

      Really folks, is it so hard to throw a <a></a> tag around a url?

  7. Silly submitter... by grub · · Score: 5, Funny


    the BeOS rising to join the ranks of OSs that won't die

    An OS isn't dead or dying until Netcraft confirms it.

    --
    Trolling is a art,
    1. Re:Silly submitter... by nocomment · · Score: 2, Informative

      and since Be lives on, it will probably be awhile before netcraft confirms it. At least Yellowtab, is releasing something whereas amiga hasn't released anything tangible (although they say they have) since os v4.

      --
      /* oops I accidentally made a comment, sorry */
      /* http://allyourbasearebelongto.us */
  8. Just what I always wanted by Anonymous Coward · · Score: 5, Funny

    A practical file system with an impractical OS!

  9. Holy Crap. I'm a Be-diot. by torpor · · Score: 4, Funny

    All those years I've slagged off Amiga blow^H^H^H^Hdie-hards, and here am I with a rev-a. BeBox I refuse to part with. I love the damn thing. I never noticed it, but I've got Amigazoids' Disease.

    Why, oh why can't someone invent a "Parallel Universe Chunnel" so I can get myself a laptop BeBox. tiBooks come close, but Apple crack is still crack!

    Ah well. At least I have something else (the .PDF) to put on my Amig^H^H^H^HBeBox, beautiful and blue though it sits in the corner, gathering dust, as if there's nothing else to do with it ... ;)

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  10. ironic fact by Power+Everywhere · · Score: 5, Informative

    Apple considered buying Be a few years ago for BeOS and opted for NeXT instead. Now, years, later, they have hired several Be engineers to work on the Mac OS X filesystem. It looks like Apple is getting Be without having to buy the whole company. Be fans, look at Tiger as an upgrade for your favorite OS.

    1. Re:ironic fact by nacturation · · Score: 2, Interesting

      ...especially when you consider that both NeXT and Be were started by former Apple VPs (Steve Jobs and Jean-Louis Gassee).

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    2. Re:ironic fact by ckelly5 · · Score: 2, Interesting

      Yes, I loved BeOS back in its heyday. When I learned that Giampaolo had gone to Apple, I figured he'd be beefing up the FS. His first work was probably the Journaling FS that is prevalent in Panther, and the rumored metadata in Tiger has his name all over it...

    3. Re:ironic fact by Power+Everywhere · · Score: 2, Interesting

      The original Hierarchal Filesystem (HFS), introduced well before System 6 was called "Mac OS Standard" after Mac OS 8.1. It was this same release that Apple released Hierarchal Filesystem Plus (HFS+), which they opted to call "Mac OS Extended." In Tiger, using the metadata and relational aspects tacked onto HFS+ will be called Mac OS Extreme when you go to format your drive and turn on different features of your filesystem.

  11. Re:Crud more file Systems? by FictionPimp · · Score: 5, Funny

    isn't love a journaling filesystem? My girlfriend can remember every little issue I would like to delete.

  12. Thanks For The Reminder by jacoby · · Score: 2, Funny

    I lent a copy to a friend a while ago. I just asked for it back.

    When's the last time you had a PDF book as bathroom reading?

  13. Re:Crud more file Systems? by spellraiser · · Score: 3, Insightful

    Aren't there enough filesystems? All you need is one!

    Yes, and 640K is enough for anyone, and everything worth inventing has already been invented.

    But seriously, what's wrong with creating new things? A new filesystem just might be better than the current ones. Stranger things have happened. Much stranger things, in fact. Especially in Computer Science. Remember hierarchical databases? No? Well, they used to be all the rage back in the old days, before relational databases took over. These days, the idea of using any other database model seems ludicrous. However, even those might be superseded at some point in the future.

    It never hurts to keep an open mind you know...

    --
    I hear there's rumors on the Slashdots
  14. BitTorrent by gspr · · Score: 4, Informative

    It may be redundant - if it is, just moderate it as such, but here is a Torrent, so that we don't completely destroy the nice BiggestPOS' mirror.
    I'll seed it for an hour or so.

  15. Interesting by 0xC0FFEE · · Score: 3, Insightful

    This seems like quite an interesting read. But what I wonder is if BeFS is encumbered by any patent... If so, who own them now, do they plan on enforcing it, etc. Would be oh so cool to have an open source BeFS implementation.

  16. Like a warm hug. by hedon_elite · · Score: 2, Insightful

    Amiga is like being curled up in a rocking chair with your grandmother when you're 5 years old. Total comfort and contentment. Btw, the Amiga website just got Slashdotted. I bet its been a long time since that happened. Ray Akey's gonna be p*ssed =)

  17. Other possibility by mirko · · Score: 3, Informative

    Another OS which proposed a very ergonomical approach to file system design and implementation was RiscOS.
    Check its Programmer Reference Manuals if you can find these.

    --
    Trolling using another account since 2005.
  18. BeFS lives by no+reason+to+be+here · · Score: 4, Interesting

    OpenBeOS's clone of the Be File System has been selected recently by the folks creating the SkyOS.

    The BFS replacement has been one of the fastest progressing parts of the OpenBeOS project. Dominic Giampaolo has actually commented to the team lead of OpenBFS, and complemented the team on the good work they accomplished.

  19. Re:Crud more file Systems? by .com+b4+.storm · · Score: 3, Funny

    isn't love a journaling filesystem? My girlfriend can remember every little issue I would like to delete.

    You think that's bad? Wait until you upgrade to the wife filesystem. It won't even let you delete entries for mowing the lawn, etc. from your crontab! Talk about rights management...

    --
    "Wow, you're like some kind of superhero able to ward off happiness and success at every turn."
    -- Ryan Stiles
  20. Sky Operating System by Anonymous Coward · · Score: 3, Informative

    The BFS lives on in a few other places, most notably in a rebuild by the OpenBeOS team. This file system is also being used by SkyOS for their new file system, SkyFS. They are already making use of the attributes in a number of ways.

  21. At Apple Now by wintahmoot · · Score: 2, Interesting

    One thing that didn't get mentioned is that the author of this book is at Apple today, and rumor is that he is working on Apple's version of WinFS, a metadata-driven filesystem.

    Be saw the potential of metadata on the filesystem level before everybody else did.

  22. Re:Crud more file Systems? by BiggerIsBetter · · Score: 4, Funny

    You think love is bad? Wait till you see the vengence in action. Sure it remembers everything little issue, but using an advanced AI system it creates arbitrary yet realistic scenarios in a multi-threading manner. These can be variously intepreted based on context by others systems reading the disk, which may result in locks and race conditions or possibly even data loss. Love is nice, but wouldn't recommend the post-love vengence patch - best bet is to keep plugging away with what you've got. Don't forget to keep up with maintenance and the system's support needs.

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  23. Alive? by moosesocks · · Score: 2, Interesting

    It's sort of hard for an OS to die which wasn't really alive to begin with.

    That being said, I remember using the last BeOS Personal Edition (the one that ran on top of FAT32).

    It was incredibly cool. There's definitely something to be said for an OS which boots almost instantaneously.

    The inability to print was somewhat of a drawback...

    --
    -- If you try to fail and succeed, which have you done? - Uli's moose
  24. Explicate? by FireBreathingDog · · Score: 3, Funny
    His style is very straightforward - introduce idea, explicate idea, summarize idea.

    Isn't it ironic (dontcha think?) that 'explicate' appears in a sentence about straightforward writing? How about explain???

  25. HERE IS ANOTHER GOOD MIRROR!!!! by danielblair · · Score: 3, Interesting
    Here is a link to another GOOD MIRROR! Use it!

    You are all welcome!

    http://www.realcoders.org

    Have Fun Everyone!

    -Danny

    joecamel (at) realcoders (dot) org

    --
    -- Daniel R. Blair Senior Software Architect/Unix & FreeBSD Guru/DJ w: http://unixcoders.org t: @freebsd_hacker
  26. just remember... by hak1du · · Score: 4, Interesting

    Access control lists, user-defined metadata, indexing at the file system level, and all that are not new ideas; they go back to the 1960's. Be didn't invent them, and neither did Microsoft (with WinFS).

    All that complexity comes at a price. UNIX was a reaction against putting so many features into the kernel, and, in my opinion, the UNIX arguments against putting those kinds of features into the kernel are as valid today as they were 30 years ago.

    Unfortunately, the book gives very little historical perspective. It seems to simply assume that "more features" translates into "more advanced". From a quick perusal, division of functionality between kernel and user space seems to be not covered. File versioning at the file system level, another important feature, does not seem to be covered. Historically important file systems and functionality, like those found on VMS, IBM mainframes, and database-based file systems are hardly covered at all.

    This book may give you a good idea of what kind of thinking went into the design of the BeOS file system, but it doesn't even come close to a book on file system design in general. And even as a book on the BeOS file system design, it tells you as much about what the creator of the file system didn't think about as what he did think about.

  27. Re:I love BeOS by harikiri · · Score: 2

    In 2000 I think, I actually spent a fair amount buying a copy of BeOS 5.0 and Gobe Office. It was a fantastic operating system - booted fast, had a bash terminal, gcc, etc, and everything seemed to work well.

    I think the main issue that Be ran into is that their vision was a little confuzzled. Anyone else who followed Be remember when they decided they wanted to drop the desktop market and move into set-top boxes? Perhaps if they'd managed to bring some of the big audio/video software companies on board and sold it as a one-stop solution for editing (because of their next-to-zero latency they advertised), they may have had a better chance. :(

    It's the last OS I payed for, and I still have a very scratched CD with 5.0 on it around here somewhere. :-)

    -- Fanboy!

    --
    Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
  28. Funny Be IRC quotes by Gunfighter · · Score: 2, Funny

    A few years back, one of the members of my Quake clan was a programmer who preferred BeOS as his platform of choice for development and other everyday tasks. He eventually went to work for Be and we didn't hear from him much after that. Nevertheless, we always gave him hell about his BeOS preference. Here are a few choice quotes from our IRC logs:

    This first one is particularly applicable as it pertains to the "uncorruptable" BeOS filesystem.

    <dEad{Ni}> but you have more problems with win95 than i have ever imagined anyone having
    <Tolen{Ni}> nah...you should see some of the people on my dorm floor...
    <Tolen{Ni}> one guy had to fdisk like 5 times last semester
    <Magaera{Ni}> hehe
    <Magaera{Ni}> You CAN'T corrupt the BeOS file system
    <Magaera{Ni}> Even by kicking out the power cord
    <Gunfighter{Ni}> you can't play Q2 on it either :P

    <Magaera{Ni}> potty stop - brb
    <Gunfighter{Ni}> overkill.. yellow card
    <Magaera{Ni}> what, you'd rather say i was going to "the little programmer's room" or something??
    <Deathwish{Ni}> I got take a BeOS

    <Magaera{Ni}> "BeOS combines the best features of all the major operating systems: the ease-of-use of the Macintosh, the power and flexibility of Linux, and Minesweeper from Windows."

    --
    -- Stu

    /. ID under 2,000. I feel old now.