Very cool! I'm glad someone has come forward and decided to do some
serious work on zfs-fuse :)
I haven't looked at your code, but I have a few quick tips for you.
I have attached a couple of scripts which I use to update the ZFS
sources from the OpenSolaris mercurial repository into the zfs-fuse
tree.
copysolaris.sh copies the ZFS sources and then calls "fixfiles.py" to
fix the sources files, to remove any "#pragma ident" and "#pragma
rarely_called" lines, which the Linux gcc doesn't like. It also removes
comments from the assembly source code, because the Linux GNU assembler
doesn't like them either.
What I usually do to update the source code is copy all the pristine
source files from OpenSolaris into the "upstream" mercurial repository,
and then merge it with the zfs-fuse repository.
Also, in your web page, you say this:
"Currently I'm examining the efforts needed to port Sun's zfs test suite
to Linux, because it will be a wonderful comparison to the Sun original
and the missing features at Linux. You can find me in zfs-fuse group."
Pawel Jakub Dawidek, who ported ZFS to FreeBSD, was also looking into
this but due to the difficulty in porting, I think he just gave up and
decided to create his own ZFS test suite.
I have taken Pawel's ZFS test suite and ported it to Linux (and to
Solaris).
You can find it in the "tests/regression" directory of the "zfs-lustre"
mercurial repository, which can be found here:
http://www.wizy.org/mercurial/
These tests should work fine with zfs-fuse (just try running "prove
-r ."). You may want to use the "cleanup.sh" script afterwards.
BTW, zfs-fuse is known to fail a few of these tests, specifically some
related to mount/umount, due to some FUSE complications. I haven't
looked into this recently.
Hope that helps,
Ricardo
Oh, I forgot to mention: before running the tests you need to run the
'setup.sh' script in zfs-lustre, to apply some patches.
Cheers,
Ricardo
Awesome! Great to know I'll be able to use my OpenSolaris ZFS pools
with Linux if need be.
--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com
Cool :)
> Does Sun have repositories other than OpenGrok ? I've searched for
> each file in OpenGrok site,
> and downloaded it separately,I dont think that was the smartest way to
> do it :)
Yes.. ;) If you go to http://www.opensolaris.org you will find a link
"Get the Source" in the left menu, under "Quick Links".
It has instructions to clone the Mercurial repository :) Using the
Mercurial repo will save you a lot of time, of course :)
> > copysolaris.sh copies the ZFS sources and then calls "fixfiles.py" to
> > fix the sources files, to remove any "#pragma ident" and "#pragma
> > rarely_called" lines, which the Linux gcc doesn't like. It also removes
> > comments from the assembly source code, because the Linux GNU assembler
> > doesn't like them either.
>
> I did perl script for that, I'm in perl's army :)
Cool :) My python for removing the comments is incredibly bad, I bet it
could be done in 10 times fewer lines of code :p
> > What I usually do to update the source code is copy all the pristine
> > source files from OpenSolaris into the "upstream" mercurial repository,
> > and then merge it with the zfs-fuse repository.
> >
>
> Yes I made a patch file between your "trunk" repository and "upstream"
> and applied it to the new sources.
Great, that should work well.
> Basicaly this release is your work + new upstream sources + fix for
> any compile errors.
> I was really helpful to have original sources, so I uploaded current
> zfs sources also.I was amazed from the power of patch and diff.
You'd be even more amazed at the power of the 3-way Mercurial merge,
especially coupled with kdiff3 ;) This could save you additional time,
but simple diff and patch is not a bad choice either.
> This month there is LinuxTag in Berlin, are you going ?
Unfortunately, no.. At the moment I don't have any "appearance at public
gatherings" (lol..) scheduled for the near future, but if you happen to
stop by Lisbon (or possibly Madrid), let me know ;)
Cheers,
Ricardo
What patch are you referring to? "long writes" doesn't mean anything to
me and it's the first time I've heard it mentioned on this list.
I'm assuming you mean "big_writes" which is not as much a zfs patch as
well as a new fuse option. It's operation should be automatic (and
transparent to zfs-fuse) once you specifiy the option to zfs-fuse. For
pragmatic reasons, the option still is to be hardcoded in a source
file... which is why it 'appears' to be a patch.
It really is more like a config option.
So I'm curious whether you are referring to this or a different ('real')
patch. Both could be interesting.
Then I proceed to build fuse & zfs-fuse from sources. I make sure
(updatedb; mlocate zfs) there are no leftovers of other versions.
> And I am curious to know if it's worth the trouble installing the beta
> version of fuse then ?
As far as I've heard there's only one way to find out: try it (and
measure it). As far as this list is concerned (if I didn't miss any
posts?) no-one is running that configuration yet. In fact, people are
not very quick to report any luck with the new zfs-fuse version at all.
Me included :)
>
>
> Regards
>
> Emmanuel Anne wrote:
>
> And I am curious to know if it's worth the trouble installing the betaAs far as I've heard there's only one way to find out: try it (and
> version of fuse then ?
measure it). As far as this list is concerned (if I didn't miss any
posts?) no-one is running that configuration yet. In fact, people are
not very quick to report any luck with the new zfs-fuse version at all.
Me included :)
I tested your resync plus the two patches that you provided on the
list. Almost every single dataset I have in my four disks does NOT
APPEAR when doing zfs list or doing zfs mount -a -- only one dataset
appears (internal/home). However, if I do a zfs mount internal/shared
or zfs get all internal/shared, they mount and show the properties,
which means ZFS-FUSE is seeing those datasets.
What's wrong? Why aren't my datasets showing? Until this is
resolved, I do not believe I can confidently move to the newest
version of ZFS that you kindly provided, nor do I believe anyone
should.
And how can I help you debug the issue more effectively? What do you
need from me? I'm running the latest Correia tip, if you need to
know. I can provide the changesets I committed to my private tree,
anything you ask.
Okay, seems you haven't understood well or I didn't explain myself
well.
Here is what I did.
- I applied your first "patch". It is rather a tarball, not a patch.
I committed that.
- I applied your first real patch. I committed that.
- I applied your secnod real patch. It didn't apply cleanly but I saw
no egregious errors in the hg diff, so I committed that.
- I applied my performance enhancement patch. It didn't seem to apply
clearly because you seem to have merged it earlier into one big thing
there. But the code was sound so okay, compile.
- I copied the bins to a temporary folder in /
- I telinited 1
- I zfs unmount -a
- I killall -TERM zfs-fuse
- I replaced the zfs-fuse binaries, backing up the old ones
- I started the new zfs-fuse
- I saw with zfs list that my datasets were GONE except for one
- I saw with zpool list that my zpools were there and they had the
space allocated
- I zfs mount -a and there it was, the only dataset that ZFS detected
was there , mounted, but the other datasets weren't there
- I zfs mount external/shared to see if that dataset was there but
"hidden". In effect, it mounted correctly!
- After that, I was just too plain scared to continue so I basically
nuked your code and reverted to my old binaries
command plays NO ROLE here because I'm not importing pools that were
exported previously. I have never had to *export* any zpool before
upgrading ZFS and reimport the zpools afterwards -- and I don't see
why I should start now, and risk the new ZFS writing something to disk
that will obliterate the pools inside it.
There HAS TO BE a bug in the code that you committed.
Correia's tip is the last commit in mercurial. The changeset I
applied and published here is nothing more than a sequential list of
commits that apply on top of Correia's tip. Read the hg manpage to
understand more about hg -- you will find it very valuable.
As for the bug, I definitely don't want to export my datasets with my
current ZFS, and reimport with your ZFS -- exporting and importing
actually *write* stuff to disk, and I don't feel like losing 1.2 TB of
data by experimenting with code that has such a scary bug. Losing 1.2
TB of data is not my version of "a *little* more risky" -- in fact,
"little" is the understatement of the year.


--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "zfs-fuse" group. To post to this group, send email to zfs-...@googlegroups.com To unsubscribe from this group, send email to zfs-fuse+u...@googlegroups.com For more options, visit this group at http://groups.google.com/group/zfs-fuse?hl=en -~----------~----~----~----~------~----~------~--~---
I have tried http://git.rudd-o.com/zfs/rev/ec280fdbc0b0 but not
having any luck on a 32bit system.
Linux angel 2.6.29-gentoo-r5 #1 SMP Wed Jul 15 08:35:26 GMT 2009 i686
AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux
Tried fuse-2.8.0-pre3 and fuse-2.7.4.
Tried also with a 2.6.24 kernel and same problems.
angel lib # zpool import tank
cannot import 'tank': invalid vdev configuration
angel lib # zpool import
pool: tank
id: 5102661336201720356
state: UNAVAIL
action: The pool cannot be imported due to damaged devices or data.
config:
tank UNAVAIL insufficient replicas
raidz1 UNAVAIL corrupted data
sdb ONLINE
sde ONLINE
sdd ONLINE
sdc ONLINE
angel lib #
If I reboot back to opensolaris they import fine and export without
problems.
The strange thing also is dmesg outputs 'end_request: I/O error, dev
fd0, sector 0' every time I try and import the pool.
I would also be glad to provide any hosting if necessary.