This should work just fine with latest bits (Nevada 77 and later) via: http://bugs.opensolaris.org/view_bug.do?bug_id=6425096
Its backport is currently targeted for an early build of s10u6. eric On Jan 8, 2008, at 7:13 AM, Andreas Koppenhoefer wrote: > [I apologise for reposting this... but no one replied to my post > from Dec, 4th.] > > Hallo all, > > while experimenting with "zfs send" and "zfs receive" mixed with > cloning on receiver side I found the following... > > On server A there is a zpool with snapshots created on regular > basis via cron. > Server B get's updated by a zfs-send-ssh-zfs-receive command pipe. > Both servers are running Solaris 10 update 4 (08/07). > > Sometimes I want to do some testing on server B without corrupting > data on server A. For doing so I create a clone of the filesystem. > Up to here everything is ok. As long as the mounte clone filesystem > is NOT busy, any further zfs-send-ssh-zfs-receive will work > properly, updating my pool on B. > > But there are some long running test jobs on server B which keeps > clone's filesystem busy or just a single login shell with its cwd > within clone's filesystem, which makes the filesystem busy from > umount's point of view. > > Meanwhile another zfs-send-ssh-zfs-receive command gets launched to > copy new snapshot from A to B. If the receiving pool of a zfs- > receive-command has busy clones, the receive command will fail. > For some unknown reason the receive command tries to umount my > cloned filesystem and fails with "Device busy". > > The question is: why? > > Since the clone is (or should be) independent of its origin, "zfs > receive" should not umount cloned data of older snapshots. > > If you want to reproduce this - below (and attached) you find a > simple test script. The script will bump out at last zfs-receive > command. If you comment out the line "cd /mnt/copy", script will > run as expected. > > Disclaimer: Before running my script, make sure you do not have > zpools named "copy" or "origin". Use this script only on a test > machine! Use it at your own risk. > Here is the script: > <pre> > #!/usr/bin/bash > # cleanup before test > cd / > set -ex > for pool in origin copy; do > zpool destroy $pool || : > rm -f /var/tmp/zpool.$pool > [ -d /mnt/$pool ] && rmdir /mnt/$pool > > mkfile -nv 64m /var/tmp/zpool.$pool > zpool create -m none $pool /var/tmp/zpool.$pool > > done > > zfs create -o mountpoint=/mnt/origin origin/test > > update () { > # create/update a log file > date >>/mnt/origin/log > } > > snapnum=0 > make_snap () { > snapnum=$(($snapnum+1)) > zfs snapshot origin/[EMAIL PROTECTED] > } > > update > make_snap > update > make_snap > update > make_snap > update > > zfs send origin/[EMAIL PROTECTED] | zfs receive -v -d copy > zfs clone copy/[EMAIL PROTECTED] copy/clone > zfs send -i origin/[EMAIL PROTECTED] origin/[EMAIL PROTECTED] | zfs receive > -v -d copy > zfs set mountpoint=/mnt/copy copy/clone > zfs list -r origin copy > cd /mnt/copy # make filesystem busy > zfs send -i origin/[EMAIL PROTECTED] origin/[EMAIL PROTECTED] | zfs receive > -v -d copy > ls -l /mnt/{origin,copy}/log > exit > </pre> > ----- > Cleanup with > <pre> > zpool destroy copy; zpool destroy origin; rm /var/tmp/zpool.* > </pre> > after running tests. > > - Andreas > > > This message posted from opensolaris.org<test-zfs- > clone.sh>_______________________________________________ > zfs-discuss mailing list > zfs-discuss@opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/zfs-discuss _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss