Fixes released: official/critical branch

4 views
Skip to first unread message

sgheeren

unread,
Jan 25, 2010, 4:13:47 PM1/25/10
to zfs-...@googlegroups.com
Ok

Gents, I have just created a 'critical' branch containing the two hotfixes I made/selected from dev branches.

Only _critical_ patches against the current release (0.6.0 at this time) will be published on this branch.
Applying these fixes will _not_ require you to upgrade to later versions/of the code, the fixes have been backported against the official 0.6.0 tagged release.

This should address:

1. disappearing pools/datasets                      [regression]
2. tools hang on zfs ioctl due to bug in put_nvlist [http://zfs-fuse.net/issues/13]
3.
zfs-fuse unstable under load                     [http://zfs-fuse.net/issues/22]

And since #22 this is a threading fix (instability) possibly quite a plethora of historically issues. More specifically, the following issues may be re-tested with this branch:

20    resilvering continues after offlining device to be resilvered. [http://zfs-fuse.net/issues/20]
12    Resilvering interrupted when a vdev from another pool was disconnected [http://zfs-fuse.net/issues/12]
3     Hang while importing a pool with cache devices [http://zfs-fuse.net/issues/3]
2     parallel bandwidth [http://zfs-fuse.net/issues/2]

Getting should normally be a matter of

# git clone http://git.zfs-fuse.net/official
# cd official/
# git checkout origin/critical

and build/install
# cd src;
# scons -j2
# sudo scons install

---------------------------------------------------------------------------------------------------------------------------------

For my setup (I have a local repo with multiple remotes)

# git remote -v update zfs-fuse.net
Updating zfs-fuse.net
From http://git.zfs-fuse.net/official
 * [new branch]      critical   -> zfs-fuse.net/critical
 = [up to date]      master     -> zfs-fuse.net/master

# git checkout zfs-fuse.net/critical

# git whatchanged  0.6.0..HEAD
commit 1e89cc5b2f93a1af7f96a785e41dc4290c88ef05
Author: Seth Heeren <sghe...@hotmail.com>
Date:   Mon Jan 25 15:43:46 2010 +0100

    fuse-threading.patch;  made cur_fd threadlocal

:100644 100644 ba6c439... 4b392e6... M  src/zfs-fuse/zfsfuse_socket.c
:100644 100644 90a96ab... d1973c8... M  src/zfs-fuse/zfsfuse_socket.h

commit 7d0d69451a04a9b1136b42194885ef2c262ae42d
Author: Seth Heeren <sghe...@hotmail.com>
Date:   Mon Jan 25 21:34:31 2010 +0100

    zfs-put_nvlist_hotfix.patch

:100644 100644 fea911d... 17df500... M  src/lib/libzfs/libzfs_dataset.c
:100644 100644 a8bd40d... 91f96b5... M  src/zfs-fuse/zfs_ioctl.c

Rudd-O

unread,
Jan 25, 2010, 4:54:37 PM1/25/10
to zfs-...@googlegroups.com
Needless to say, if the testers who drive this code are happy with the
situations that are fixed, we will mark the relevant bugs as closed and
release 0.6.1.

> --
> To post to this group, send email to zfs-...@googlegroups.com
> To visit our Web site, click on http://zfs-fuse.net/


sgheeren

unread,
Jan 25, 2010, 5:03:58 PM1/25/10
to zfs-...@googlegroups.com

Rudd-O

unread,
Jan 25, 2010, 6:23:25 PM1/25/10
to zfs-...@googlegroups.com
OK man thanks excellent!

Stefano Z.

unread,
Jan 26, 2010, 12:53:15 PM1/26/10
to zfs-...@googlegroups.com
unfortunately if i follow your isnstructions if i try to import my
pool i obtain this message:

cannot import 'tank': pool is formatted using a newer ZFS version

:-O

sgheeren

unread,
Jan 26, 2010, 1:15:07 PM1/26/10
to zfs-...@googlegroups.com
That seems epxected, unless you were actually running the release 0.6.0
(which this hotfix applies to)

Could you recheck that?

Otherwise,

# zpool get version tank

please report back

L0cutus

unread,
Jan 26, 2010, 1:22:37 PM1/26/10
to zfs-fuse
with the pre-fix zfsfuse i obtain:
root ~ # zpool get version tank
NAME PROPERTY VALUE SOURCE
tank version 22 default

now i reinstall the patched one and than i report the resulting
string.

L0cutus

unread,
Jan 26, 2010, 1:49:00 PM1/26/10
to zfs-fuse
no way to check the pool version with your patched version, unable to
import so unable to get version :-(

On 26 Gen, 19:15, sgheeren <sghee...@hotmail.com> wrote:

sgheeren

unread,
Jan 26, 2010, 8:17:20 PM1/26/10
to zfs-...@googlegroups.com
L0cutus wrote:
Oh my god, you had me blindsided for a moment. I didn't know/realize that L0cutus == Stefano Z.

I wouldn't have asked for a pool version in that case. In your case I'd ask, why are you bothering with a hotfix ... oh right I asked you to see whether the stable version behaves better with the re-import/zpool.cache.

In that case, there are two roads


(a) you'll have to test with a different pool for the purpose.

# zpool create -o version=13 test ....

should create a compatible pool with all versions 0.6+

(b) there could be a problem hidden in your pools. Did I ask for the output of

# zpool get all tank; zfs get all -r tank

perhaps also post /etc/fstab


==== brute force =================================

You could create a cloned pool (you need oodles of free space for this), strip it of data and send a -R dump...

# zpool create mytemppool somedevice # need not be raided or anything, could be on tmpfs
# zfs send -vR tank | zfs receive -vFd mytemppool

strip all data from temp pool (CAREFUL where you issue these commands)
like
#         rm -irfv /mytemppool/{*,.*}
or
#        find /mytemppool/ # -delete

destroy all snapshots (must reduce volume and increase privacy)
# zfs list -Honame -tsnapshot -r mytemppool | xargs -trn1 echo zfs destroy -R
       (remove the echo part for the real action)

Now you should have a completely stripped version of your pool. Send to me :)

# zfs snapshot -r mytemppool@stripped; zfs send -Rv mytemppool@stripped |
     pbzip2 |
     (echo "Here is the lot; have fun"; uuencode stripped.bz2) |
     mail -s "Stripped pool dump" zfs-...@sehe.nl



no way to check the pool version with your patched version, unable to
import so unable to get version :-(

  
That was expected. Normally (when whole this zpool.cache deal is working properly) you'd be able to
1. use unstable and import a v22 pool.
2. Then you umount, kill zfs-fuse,
3. install older version and do nothing other than

4. # sudo /usr/local/sbin/zfs-fuse

Then zpool list should give something like

    NAME   ...   STATUS
    tank     ...   FAULTED

But what's the use of what-ifs.

sgheeren

unread,
Jan 26, 2010, 9:03:18 PM1/26/10
to zfs-...@googlegroups.com, stefano....@gmail.com
PLEASE DISREGARD PREVIOUS POST

I should read your response (and so should you)

> > # zfs list -o name,mounted,canmount,mountpoint
> > NAME          MOUNTED  CANMOUNT  MOUNTPOINT
> > tank                 no        on  /
> > tank/homefs      no        on  /home

What is the mount point of tank?
Could anything be successfully mounted on / ?

All answers mailed before noon will automatically participate in the draw.

$0.02

PS. hint 'zfs set mountpoint=/somethingsilly tank'

sgheeren wrote:

jafo

unread,
Jan 26, 2010, 9:45:24 PM1/26/10
to zfs-fuse
I've upgraded my pool to this version (I'm calling it 0.6.1-pre1), and
I've
been able to run "zpool status" and "zpool scrub" successfully. So
far
everything is looking good for me. I'll be loading 3TB on it over the
next
few days (as I mentioned, I have had to re-init my pool), so right now
I
only have 200GB I'm testing against.

Sean

L0cutus

unread,
Jan 27, 2010, 3:53:38 AM1/27/10
to zfs-fuse
> Oh my god, you had me blindsided for a moment. I didn't know/realize
> that L0cutus == Stefano Z.

;-)

> (b) there could be a problem hidden in your pools. Did I ask for the
> output of
> # zpool get all tank; zfs get all -r tank
> perhaps also post /etc/fstab

http://dpaste.com/hold/151072/

L0cutus

unread,
Jan 27, 2010, 3:57:09 AM1/27/10
to zfs-fuse

On 27 Gen, 03:03, sgheeren <sghee...@hotmail.com> wrote:
> PLEASE DISREGARD PREVIOUS POST

lol

> What is the mount point of tank?
> Could anything be successfully mounted on / ?

hehe you are right, but i'm having several difficulties to 'think in
zfs mode', snapshot,pool etc...
i definitely need a good tutorial ;-)

sgheeren

unread,
Jan 27, 2010, 5:36:45 AM1/27/10
to zfs-...@googlegroups.com
L0cutus wrote:
> http://dpaste.com/hold/151072/
>
>
sehe@karmic:~$ grep -i mount jafo.txt
tank mounted no -
tank mountpoint /tankroot local
tank canmount on default
tank/homefs mounted yes -
tank/homefs mountpoint /home local
tank/homefs canmount on default

I see you fixed the mountpoints. Did that work for your pool re-import?

L0cutus

unread,
Jan 27, 2010, 6:21:41 AM1/27/10
to zfs-fuse
unfortunately no :-(
if i stop zfs-fuse and then restart it (whitout zpool export pool)
still doesn't mount mountpoints
must i specify the cachefile or zfs-fuse get automatically it from /
var/lib/zfs for all pools ?

sgheeren

unread,
Jan 27, 2010, 6:24:22 AM1/27/10
to zfs-...@googlegroups.com
L0cutus wrote:
> unfortunately no :-(
> if i stop zfs-fuse and then restart it (whitout zpool export pool)
> still doesn't mount mountpoints
> must i specify the cachefile or zfs-fuse get automatically it from /
> var/lib/zfs for all pools ?
>
Unless otherwise specified /var/lib/zfs/ should be used in your version.
(/etc/zfs/ for 0.6.0)

Please post /etc/zfs/zfsrc and /etc/fstab? Perhaps something wrong with
the permissions on /var/lib/? You might be running some kind of enhanced
security mode (SELinux, Hardened what-not) that you could consider
disabling for a moment?

L0cutus

unread,
Jan 27, 2010, 6:41:23 AM1/27/10
to zfs-fuse
> Please post /etc/zfs/zfsrc and /etc/fstab? Perhaps something wrong with
> the permissions on /var/lib/?

http://dpaste.com/hold/151123/

var/lib:
drwxr-xr-x 33 root root 4096 27 gen 11:59 lib
var/lib/zfs
drwx------ 2 root root 4096 27 gen 12:13 zfs

root ~ # ls -la /var/lib/zfs/
totale 12
drwx------ 2 root root 4096 27 gen 12:13 .
drwxr-xr-x 33 root root 4096 27 gen 11:59 ..
-rw-r--r-- 1 root root 1128 27 gen 12:13 zpool.cache


>You might be running some kind of enhanced
> security mode (SELinux, Hardened what-not) that you could consider
> disabling for a moment?

none that i know :-(

Rudd-O

unread,
Jan 27, 2010, 4:58:59 PM1/27/10
to zfs-...@googlegroups.com
Type this command repeatedly:

hostid

you should see the output NOT change.

If it changes, you have exactly the same problem I had.

L0cutus

unread,
Jan 27, 2010, 5:51:22 PM1/27/10
to zfs-fuse
it doesn't change, i've typed 30 times :)

L0cutus

unread,
Jan 29, 2010, 6:43:17 PM1/29/10
to zfs-fuse
here i'm again :)
i have create a pool with your patched 0.60(1) version and tested why
your patched version isn't
able to import my pool created by the 0.60 official version, below the
result:

zhome -> pool created by official 0.60 version
demop -> pool created by your patched version

root ~ # zpool get version zhome
NAME PROPERTY VALUE SOURCE
zhome version 22 default

root ~ # zpool get version demop
NAME PROPERTY VALUE SOURCE
demop version 16 local

is ok that your patched version create a version pool older than the
official one ?!?

this what i do to download/compile the patched version (from the
package i've made for my archlinux distro)


[...]
_gitroot="http://git.zfs-fuse.net/official"

build() {
cd ${srcdir}
msg "Connecting to GIT server...."

git clone ${_gitroot}

#--- to get 0.61 version
cd ${srcdir}/official
git checkout origin/critical
#---

cd ${srcdir}/official/src || return 1

scons debug=0 || return 1
scons debug=0 install install_dir=$startdir/pkg/usr/sbin man_dir=
$startdir/pkg/usr/share/man/man8
install -D -m755 ${startdir}/zfs-fuse ${pkgdir}/etc/rc.d/zfs-fuse
}
[...]

On 26 Gen, 19:15, sgheeren <sghee...@hotmail.com> wrote:

sgheeren

unread,
Jan 29, 2010, 8:43:58 PM1/29/10
to zfs-...@googlegroups.com
L0cutus wrote:
> is ok that your patched version create a version pool older than the
> official one ?!?
Ok, we need to slow down. Let me get the story straight:

- your pool doesnot autoimport;
Q.: after boot with standard init scripts, 'zpool list -H|wc -l'
returns 0?
- I asked you to fix the mountpoint properties (so that tank does not
try to go on /)
Q.: did that help at all? (please test again with zpool list
after normal boot)

The _reason_ I'm asking you to try the stable version is to see whether
the fact that pools don't autoimport was actually a regression of sorts.
If I could reproduce your problem, or I would test this myself.

Now to address your confusion:
------------------------------
I'm telling one more time: your 'official' one is the master branch
(i.e. bleeding edge, trunk, unstable, tip, HEAD or whatever you like to
call that).

The hotfix is relative to the _stable_ 0.6.0 release. So, yes, that is
older. The hotfixes /per se/ are not of interest to your situation. All
the (interesting) fixes in critical _are_ already in master anyway. So
you need not worry about that.

Some relevant quotes from earlier posts in this thread:

> That seems epxected, unless you were actually running the release 0.6.0
> (which this hotfix applies to)

You told me you were running unstable, so that was expected

> n that case, there are two roads
>
>
> (a) you'll have to test with a different pool for the purpose.
>
> # zpool create -o version=13 test ....

I hoped that would make it abundantly clear that you needed to go back
to older pool versions in order to test with the 0.6.n releases.

L0cutus

unread,
Jan 30, 2010, 9:15:36 AM1/30/10
to zfs-fuse
> Ok, we need to slow down. Let me get the story straight:
> - your pool doesnot autoimport;
>     Q.:    after boot with standard init scripts,  'zpool list -H|wc -l'
> returns 0?
> - I asked you to fix the mountpoint properties (so that tank does not
> try to go on /)
>     Q.:    did that help at all? (please test again with zpool list
> after normal boot)

now tank doesn't exists anymore, now my /home is located on the
primary
ssd disk of my netbook (before (tank) was located on a temporary usb
hd)
now my home is this:
root ~ # zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zhome 17,8G 9,07G 8,68G 51% 1.00x ONLINE -

now, if now i reboot my system (so no zpool export zhome given), in
the net boot
my home was NOT automatically remounted EVEN if the command:
"zpool list" show the pool was reimported and "zfs list" show :

root ~ # zfs get name,canmount,mounted,mountpoint
NAME PROPERTY VALUE SOURCE
zhome name zhome -
zhome canmount on default
zhome mounted no -
zhome mountpoint /zhomeroot local
zhome/homezfs name zhome/homezfs -
zhome/homezfs canmount on default
zhome/homezfs mounted no -
zhome/homezfs mountpoint /home local

the mount command show that my /home isn't mount.

> The _reason_ I'm asking you to try the stable version is to see whether
> the fact that pools don't autoimport was actually a regression of sorts.
> If I could reproduce your problem, or I would test this myself.

> Now to address your confusion:
> ------------------------------
> I'm telling one more time: your 'official' one is the master branch
> (i.e. bleeding edge, trunk, unstable, tip, HEAD or whatever you like to
> call that).
> The hotfix is relative to the _stable_ 0.6.0 release. So, yes, that is
> older. The hotfixes /per se/ are not of interest to your situation. All
> the (interesting) fixes in critical _are_ already in master anyway. So
> you need not worry about that.

harrrggghh you mean that :
http://zfs-fuse.net/releases/0.6.0/zfs-fuse-0.6.0.tar.bz2 is NOT
the same that:
git clone http://git.zfs-fuse.net/official ?!?!?

if so,i have misunderstand that 'Official' term at the end of the git
cmd ;-(

> I hoped that would make it abundantly clear that you needed to go back
> to older pool versions in order to test with the 0.6.n releases.

i think yes now :)
unfortunately since my english isn't good , is very difficult to me
understand
deeply discussions, but i try my best since i WANT to use zfs at its
best ;)

thanks for your patience :)

sgheeren

unread,
Jan 30, 2010, 9:23:54 AM1/30/10
to zfs-...@googlegroups.com
L0cutus wrote:
> now tank doesn't exists anymore, now my /home is located on the
> primary
> ssd disk of my netbook (before (tank) was located on a temporary usb
> hd)
> now my home is this:
> root ~ # zpool list
> NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
> zhome 17,8G 9,07G 8,68G 51% 1.00x ONLINE -
>
> now, if now i reboot my system (so no zpool export zhome given), in
> the net boot
> my home was NOT automatically remounted EVEN if the command:
> "zpool list" show the pool was reimported and "zfs list" show :
>
Good; that is the 'complicated' bit - nice that it works already

>
> the mount command show that my /home isn't mount.
>
>
Ok, when I've got more time, I'll post some simple steps to get to the
bottom of this.


> harrrggghh you mean that :
> http://zfs-fuse.net/releases/0.6.0/zfs-fuse-0.6.0.tar.bz2 is NOT
> the same that:
> git clone http://git.zfs-fuse.net/official ?!?!?
>
> if so,i have misunderstand that 'Official' term at the end of the git
> cmd ;-(
>
>

Not literally. git clone gives you a _repository_, not a revision.
You can

and then

# git checkout 0.6.0

or

# git checkout critical

or

# git checkout master


> thanks for your patience :)
>
>

No problem at all. We're here to help. I'm sorry if I went too quickly
before.

Reply all
Reply to author
Forward
0 new messages