Message ID | 1466602838-18402-1-git-send-email-colin.king@canonical.com |
---|---|
State | New |
Headers | show |
On 06/22/2016 07:40 AM, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > BugLink: http://bugs.launchpad.net/bugs/1594871 > > Sync with the latest Xenial zfs-linux 0.6.5.6-0ubuntu10 > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > zfs/META | 2 +- > zfs/module/zfs/spa_config.c | 5 +++-- > zfs/module/zfs/vdev_disk.c | 31 +++++++++++++++++++++------ > zfs/module/zfs/zfs_fm.c | 4 ++-- > zfs/module/zfs/zfs_ioctl.c | 5 ++++- > zfs/rpm/redhat/zfs-dkms.spec.in | 3 ++- > zfs/rpm/redhat/zfs.spec.in | 3 ++- > zfs/scripts/zpios-test/large-thread-survey.sh | 1 - > zfs/scripts/zpios-test/large.sh | 1 - > zfs/scripts/zpios-test/medium.sh | 1 - > zfs/scripts/zpios-test/small.sh | 1 - > zfs/scripts/zpios-test/tiny.sh | 1 - > 12 files changed, 39 insertions(+), 19 deletions(-) > mode change 120000 => 100644 zfs/rpm/redhat/zfs-dkms.spec.in > mode change 120000 => 100644 zfs/rpm/redhat/zfs.spec.in > delete mode 120000 zfs/scripts/zpios-test/large-thread-survey.sh > delete mode 120000 zfs/scripts/zpios-test/large.sh > delete mode 120000 zfs/scripts/zpios-test/medium.sh > delete mode 120000 zfs/scripts/zpios-test/small.sh > delete mode 120000 zfs/scripts/zpios-test/tiny.sh > > diff --git a/zfs/META b/zfs/META > index 5a5c0a2..a0dbc97 100644 > --- a/zfs/META > +++ b/zfs/META > @@ -2,7 +2,7 @@ Meta: 1 > Name: zfs > Branch: 1.0 > Version: 0.6.5.6 > -Release: 0ubuntu3 > +Release: 0ubuntu10 > Release-Tags: relext > License: CDDL > Author: OpenZFS on Linux > diff --git a/zfs/module/zfs/spa_config.c b/zfs/module/zfs/spa_config.c > index 929f181..19432e0 100644 > --- a/zfs/module/zfs/spa_config.c > +++ b/zfs/module/zfs/spa_config.c > @@ -174,7 +174,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) > VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, > KM_SLEEP) == 0); > > -#ifdef __linux__ > +#if defined(__linux__) && defined(_KERNEL) > /* > * Write the configuration to disk. Due to the complexity involved > * in performing a rename from within the kernel the file is truncated > @@ -201,7 +201,8 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) > */ > (void) snprintf(temp, MAXPATHLEN, "%s.tmp", dp->scd_path); > > - if (vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0) == 0) { > + error = vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0); > + if (error == 0) { > if (vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, UIO_SYSSPACE, > 0, RLIM64_INFINITY, kcred, NULL) == 0 && > VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { > diff --git a/zfs/module/zfs/vdev_disk.c b/zfs/module/zfs/vdev_disk.c > index ebf0e8b..9b51ecc 100644 > --- a/zfs/module/zfs/vdev_disk.c > +++ b/zfs/module/zfs/vdev_disk.c > @@ -139,7 +139,7 @@ vdev_elevator_switch(vdev_t *v, char *elevator) > return (0); > > /* Leave existing scheduler when set to "none" */ > - if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0) > + if ((strncmp(elevator, "none", 4) == 0) && (strlen(elevator) == 4)) > return (0); > > #ifdef HAVE_ELEVATOR_CHANGE > @@ -244,12 +244,12 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, > { > struct block_device *bdev = ERR_PTR(-ENXIO); > vdev_disk_t *vd; > - int mode, block_size; > + int count = 0, mode, block_size; > > /* Must have a pathname and it must be absolute. */ > if (v->vdev_path == NULL || v->vdev_path[0] != '/') { > v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; > - return (EINVAL); > + return (SET_ERROR(EINVAL)); > } > > /* > @@ -264,7 +264,7 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, > > vd = kmem_zalloc(sizeof (vdev_disk_t), KM_SLEEP); > if (vd == NULL) > - return (ENOMEM); > + return (SET_ERROR(ENOMEM)); > > /* > * Devices are always opened by the path provided at configuration > @@ -279,16 +279,35 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, > * /dev/[hd]d devices which may be reordered due to probing order. > * Devices in the wrong locations will be detected by the higher > * level vdev validation. > + * > + * The specified paths may be briefly removed and recreated in > + * response to udev events. This should be exceptionally unlikely > + * because the zpool command makes every effort to verify these paths > + * have already settled prior to reaching this point. Therefore, > + * a ENOENT failure at this point is highly likely to be transient > + * and it is reasonable to sleep and retry before giving up. In > + * practice delays have been observed to be on the order of 100ms. > */ > mode = spa_mode(v->vdev_spa); > if (v->vdev_wholedisk && v->vdev_expanding) > bdev = vdev_disk_rrpart(v->vdev_path, mode, vd); > - if (IS_ERR(bdev)) > + > + while (IS_ERR(bdev) && count < 50) { > bdev = vdev_bdev_open(v->vdev_path, > vdev_bdev_mode(mode), zfs_vdev_holder); > + if (unlikely(PTR_ERR(bdev) == -ENOENT)) { > + msleep(10); > + count++; > + } else if (IS_ERR(bdev)) { > + break; > + } > + } > + > if (IS_ERR(bdev)) { > + dprintf("failed open v->vdev_path=%s, error=%d count=%d\n", > + v->vdev_path, -PTR_ERR(bdev), count); > kmem_free(vd, sizeof (vdev_disk_t)); > - return (-PTR_ERR(bdev)); > + return (SET_ERROR(-PTR_ERR(bdev))); > } > > v->vdev_tsd = vd; > diff --git a/zfs/module/zfs/zfs_fm.c b/zfs/module/zfs/zfs_fm.c > index 7e9c473..c7b7180 100644 > --- a/zfs/module/zfs/zfs_fm.c > +++ b/zfs/module/zfs/zfs_fm.c > @@ -457,7 +457,8 @@ update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) > /* We store the bits in big-endian (largest-first) order */ > for (i = 0; i < 64; i++) { > if (value & (1ull << i)) { > - hist[63 - i]++; > + if (hist[63 - i] < UINT16_MAX) > + hist[63 - i]++; > ++bits; > } > } > @@ -615,7 +616,6 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, > if (badbuf == NULL || goodbuf == NULL) > return (eip); > > - ASSERT3U(nui64s, <=, UINT16_MAX); > ASSERT3U(size, ==, nui64s * sizeof (uint64_t)); > ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); > ASSERT3U(size, <=, UINT32_MAX); > diff --git a/zfs/module/zfs/zfs_ioctl.c b/zfs/module/zfs/zfs_ioctl.c > index 12d2750..745f713 100644 > --- a/zfs/module/zfs/zfs_ioctl.c > +++ b/zfs/module/zfs/zfs_ioctl.c > @@ -5817,8 +5817,11 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) > } > > > - if (error == 0 && !(flag & FKIOCTL)) > + if (error == 0 && !(flag & FKIOCTL)) { > + cookie = spl_fstrans_mark(); > error = vec->zvec_secpolicy(zc, innvl, CRED()); > + spl_fstrans_unmark(cookie); > + } > > if (error != 0) > goto out; > diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in > deleted file mode 120000 > index ffa051b..0000000 > --- a/zfs/rpm/redhat/zfs-dkms.spec.in > +++ /dev/null > @@ -1 +0,0 @@ > -../generic/zfs-dkms.spec.in > \ No newline at end of file > diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in > new file mode 100644 > index 0000000..b3e8c13 > --- /dev/null > +++ b/zfs/rpm/redhat/zfs-dkms.spec.in > @@ -0,0 +1,2 @@ > +%: > + # > diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in > deleted file mode 120000 > index 4c80791..0000000 > --- a/zfs/rpm/redhat/zfs.spec.in > +++ /dev/null > @@ -1 +0,0 @@ > -../generic/zfs.spec.in > \ No newline at end of file > diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in > new file mode 100644 > index 0000000..b3e8c13 > --- /dev/null > +++ b/zfs/rpm/redhat/zfs.spec.in > @@ -0,0 +1,2 @@ > +%: > + # > diff --git a/zfs/scripts/zpios-test/large-thread-survey.sh b/zfs/scripts/zpios-test/large-thread-survey.sh > deleted file mode 120000 > index 90b6e3c..0000000 > --- a/zfs/scripts/zpios-test/large-thread-survey.sh > +++ /dev/null > @@ -1 +0,0 @@ > -1x256th-65536rc-4rs-1cs-4off.sh > \ No newline at end of file > diff --git a/zfs/scripts/zpios-test/large.sh b/zfs/scripts/zpios-test/large.sh > deleted file mode 120000 > index b8e22bf..0000000 > --- a/zfs/scripts/zpios-test/large.sh > +++ /dev/null > @@ -1 +0,0 @@ > -256th-65536rc-4rs-1cs-4off.sh > \ No newline at end of file > diff --git a/zfs/scripts/zpios-test/medium.sh b/zfs/scripts/zpios-test/medium.sh > deleted file mode 120000 > index d81027b..0000000 > --- a/zfs/scripts/zpios-test/medium.sh > +++ /dev/null > @@ -1 +0,0 @@ > -16th-8192rc-4rs-1cs-4off.sh > \ No newline at end of file > diff --git a/zfs/scripts/zpios-test/small.sh b/zfs/scripts/zpios-test/small.sh > deleted file mode 120000 > index cbf03b5c..0000000 > --- a/zfs/scripts/zpios-test/small.sh > +++ /dev/null > @@ -1 +0,0 @@ > -4th-1024rc-4rs-1cs-4off.sh > \ No newline at end of file > diff --git a/zfs/scripts/zpios-test/tiny.sh b/zfs/scripts/zpios-test/tiny.sh > deleted file mode 120000 > index ba8b7cd..0000000 > --- a/zfs/scripts/zpios-test/tiny.sh > +++ /dev/null > @@ -1 +0,0 @@ > -1th-16rc-4rs-1cs-4off.sh > \ No newline at end of file > There are several commits from the upstream zfs repo listed in this bug. Which of them are being applied ? This patch doesn't look big enough for all of them. Is there a way to separate them so as to be more reviewable ? rtg
On 06/23/2016 05:58 AM, Colin Ian King wrote: > On 23/06/16 12:42, Tim Gardner wrote: >> On 06/22/2016 07:40 AM, Colin King wrote: >>> From: Colin Ian King <colin.king@canonical.com> >>> >>> BugLink: http://bugs.launchpad.net/bugs/1594871 >>> >>> Sync with the latest Xenial zfs-linux 0.6.5.6-0ubuntu10 >>> >>> Signed-off-by: Colin Ian King <colin.king@canonical.com> >>> --- >>> zfs/META | 2 +- >>> zfs/module/zfs/spa_config.c | 5 +++-- >>> zfs/module/zfs/vdev_disk.c | 31 +++++++++++++++++++++------ >>> zfs/module/zfs/zfs_fm.c | 4 ++-- >>> zfs/module/zfs/zfs_ioctl.c | 5 ++++- >>> zfs/rpm/redhat/zfs-dkms.spec.in | 3 ++- >>> zfs/rpm/redhat/zfs.spec.in | 3 ++- >>> zfs/scripts/zpios-test/large-thread-survey.sh | 1 - >>> zfs/scripts/zpios-test/large.sh | 1 - >>> zfs/scripts/zpios-test/medium.sh | 1 - >>> zfs/scripts/zpios-test/small.sh | 1 - >>> zfs/scripts/zpios-test/tiny.sh | 1 - >>> 12 files changed, 39 insertions(+), 19 deletions(-) >>> mode change 120000 => 100644 zfs/rpm/redhat/zfs-dkms.spec.in >>> mode change 120000 => 100644 zfs/rpm/redhat/zfs.spec.in >>> delete mode 120000 zfs/scripts/zpios-test/large-thread-survey.sh >>> delete mode 120000 zfs/scripts/zpios-test/large.sh >>> delete mode 120000 zfs/scripts/zpios-test/medium.sh >>> delete mode 120000 zfs/scripts/zpios-test/small.sh >>> delete mode 120000 zfs/scripts/zpios-test/tiny.sh >>> >>> diff --git a/zfs/META b/zfs/META >>> index 5a5c0a2..a0dbc97 100644 >>> --- a/zfs/META >>> +++ b/zfs/META >>> @@ -2,7 +2,7 @@ Meta: 1 >>> Name: zfs >>> Branch: 1.0 >>> Version: 0.6.5.6 >>> -Release: 0ubuntu3 >>> +Release: 0ubuntu10 >>> Release-Tags: relext >>> License: CDDL >>> Author: OpenZFS on Linux >>> diff --git a/zfs/module/zfs/spa_config.c b/zfs/module/zfs/spa_config.c >>> index 929f181..19432e0 100644 >>> --- a/zfs/module/zfs/spa_config.c >>> +++ b/zfs/module/zfs/spa_config.c >>> @@ -174,7 +174,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) >>> VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, >>> KM_SLEEP) == 0); >>> >>> -#ifdef __linux__ >>> +#if defined(__linux__) && defined(_KERNEL) >>> /* >>> * Write the configuration to disk. Due to the complexity involved >>> * in performing a rename from within the kernel the file is truncated >>> @@ -201,7 +201,8 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) >>> */ >>> (void) snprintf(temp, MAXPATHLEN, "%s.tmp", dp->scd_path); >>> >>> - if (vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0) == 0) { >>> + error = vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0); >>> + if (error == 0) { >>> if (vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, UIO_SYSSPACE, >>> 0, RLIM64_INFINITY, kcred, NULL) == 0 && >>> VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { >>> diff --git a/zfs/module/zfs/vdev_disk.c b/zfs/module/zfs/vdev_disk.c >>> index ebf0e8b..9b51ecc 100644 >>> --- a/zfs/module/zfs/vdev_disk.c >>> +++ b/zfs/module/zfs/vdev_disk.c >>> @@ -139,7 +139,7 @@ vdev_elevator_switch(vdev_t *v, char *elevator) >>> return (0); >>> >>> /* Leave existing scheduler when set to "none" */ >>> - if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0) >>> + if ((strncmp(elevator, "none", 4) == 0) && (strlen(elevator) == 4)) >>> return (0); >>> >>> #ifdef HAVE_ELEVATOR_CHANGE >>> @@ -244,12 +244,12 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>> { >>> struct block_device *bdev = ERR_PTR(-ENXIO); >>> vdev_disk_t *vd; >>> - int mode, block_size; >>> + int count = 0, mode, block_size; >>> >>> /* Must have a pathname and it must be absolute. */ >>> if (v->vdev_path == NULL || v->vdev_path[0] != '/') { >>> v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; >>> - return (EINVAL); >>> + return (SET_ERROR(EINVAL)); >>> } >>> >>> /* >>> @@ -264,7 +264,7 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>> >>> vd = kmem_zalloc(sizeof (vdev_disk_t), KM_SLEEP); >>> if (vd == NULL) >>> - return (ENOMEM); >>> + return (SET_ERROR(ENOMEM)); >>> >>> /* >>> * Devices are always opened by the path provided at configuration >>> @@ -279,16 +279,35 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>> * /dev/[hd]d devices which may be reordered due to probing order. >>> * Devices in the wrong locations will be detected by the higher >>> * level vdev validation. >>> + * >>> + * The specified paths may be briefly removed and recreated in >>> + * response to udev events. This should be exceptionally unlikely >>> + * because the zpool command makes every effort to verify these paths >>> + * have already settled prior to reaching this point. Therefore, >>> + * a ENOENT failure at this point is highly likely to be transient >>> + * and it is reasonable to sleep and retry before giving up. In >>> + * practice delays have been observed to be on the order of 100ms. >>> */ >>> mode = spa_mode(v->vdev_spa); >>> if (v->vdev_wholedisk && v->vdev_expanding) >>> bdev = vdev_disk_rrpart(v->vdev_path, mode, vd); >>> - if (IS_ERR(bdev)) >>> + >>> + while (IS_ERR(bdev) && count < 50) { >>> bdev = vdev_bdev_open(v->vdev_path, >>> vdev_bdev_mode(mode), zfs_vdev_holder); >>> + if (unlikely(PTR_ERR(bdev) == -ENOENT)) { >>> + msleep(10); >>> + count++; >>> + } else if (IS_ERR(bdev)) { >>> + break; >>> + } >>> + } >>> + >>> if (IS_ERR(bdev)) { >>> + dprintf("failed open v->vdev_path=%s, error=%d count=%d\n", >>> + v->vdev_path, -PTR_ERR(bdev), count); >>> kmem_free(vd, sizeof (vdev_disk_t)); >>> - return (-PTR_ERR(bdev)); >>> + return (SET_ERROR(-PTR_ERR(bdev))); >>> } >>> >>> v->vdev_tsd = vd; >>> diff --git a/zfs/module/zfs/zfs_fm.c b/zfs/module/zfs/zfs_fm.c >>> index 7e9c473..c7b7180 100644 >>> --- a/zfs/module/zfs/zfs_fm.c >>> +++ b/zfs/module/zfs/zfs_fm.c >>> @@ -457,7 +457,8 @@ update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) >>> /* We store the bits in big-endian (largest-first) order */ >>> for (i = 0; i < 64; i++) { >>> if (value & (1ull << i)) { >>> - hist[63 - i]++; >>> + if (hist[63 - i] < UINT16_MAX) >>> + hist[63 - i]++; >>> ++bits; >>> } >>> } >>> @@ -615,7 +616,6 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, >>> if (badbuf == NULL || goodbuf == NULL) >>> return (eip); >>> >>> - ASSERT3U(nui64s, <=, UINT16_MAX); >>> ASSERT3U(size, ==, nui64s * sizeof (uint64_t)); >>> ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); >>> ASSERT3U(size, <=, UINT32_MAX); >>> diff --git a/zfs/module/zfs/zfs_ioctl.c b/zfs/module/zfs/zfs_ioctl.c >>> index 12d2750..745f713 100644 >>> --- a/zfs/module/zfs/zfs_ioctl.c >>> +++ b/zfs/module/zfs/zfs_ioctl.c >>> @@ -5817,8 +5817,11 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) >>> } >>> >>> >>> - if (error == 0 && !(flag & FKIOCTL)) >>> + if (error == 0 && !(flag & FKIOCTL)) { >>> + cookie = spl_fstrans_mark(); >>> error = vec->zvec_secpolicy(zc, innvl, CRED()); >>> + spl_fstrans_unmark(cookie); >>> + } >>> >>> if (error != 0) >>> goto out; >>> diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in >>> deleted file mode 120000 >>> index ffa051b..0000000 >>> --- a/zfs/rpm/redhat/zfs-dkms.spec.in >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -../generic/zfs-dkms.spec.in >>> \ No newline at end of file >>> diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in >>> new file mode 100644 >>> index 0000000..b3e8c13 >>> --- /dev/null >>> +++ b/zfs/rpm/redhat/zfs-dkms.spec.in >>> @@ -0,0 +1,2 @@ >>> +%: >>> + # >>> diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in >>> deleted file mode 120000 >>> index 4c80791..0000000 >>> --- a/zfs/rpm/redhat/zfs.spec.in >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -../generic/zfs.spec.in >>> \ No newline at end of file >>> diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in >>> new file mode 100644 >>> index 0000000..b3e8c13 >>> --- /dev/null >>> +++ b/zfs/rpm/redhat/zfs.spec.in >>> @@ -0,0 +1,2 @@ >>> +%: >>> + # >>> diff --git a/zfs/scripts/zpios-test/large-thread-survey.sh b/zfs/scripts/zpios-test/large-thread-survey.sh >>> deleted file mode 120000 >>> index 90b6e3c..0000000 >>> --- a/zfs/scripts/zpios-test/large-thread-survey.sh >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -1x256th-65536rc-4rs-1cs-4off.sh >>> \ No newline at end of file >>> diff --git a/zfs/scripts/zpios-test/large.sh b/zfs/scripts/zpios-test/large.sh >>> deleted file mode 120000 >>> index b8e22bf..0000000 >>> --- a/zfs/scripts/zpios-test/large.sh >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -256th-65536rc-4rs-1cs-4off.sh >>> \ No newline at end of file >>> diff --git a/zfs/scripts/zpios-test/medium.sh b/zfs/scripts/zpios-test/medium.sh >>> deleted file mode 120000 >>> index d81027b..0000000 >>> --- a/zfs/scripts/zpios-test/medium.sh >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -16th-8192rc-4rs-1cs-4off.sh >>> \ No newline at end of file >>> diff --git a/zfs/scripts/zpios-test/small.sh b/zfs/scripts/zpios-test/small.sh >>> deleted file mode 120000 >>> index cbf03b5c..0000000 >>> --- a/zfs/scripts/zpios-test/small.sh >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -4th-1024rc-4rs-1cs-4off.sh >>> \ No newline at end of file >>> diff --git a/zfs/scripts/zpios-test/tiny.sh b/zfs/scripts/zpios-test/tiny.sh >>> deleted file mode 120000 >>> index ba8b7cd..0000000 >>> --- a/zfs/scripts/zpios-test/tiny.sh >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -1th-16rc-4rs-1cs-4off.sh >>> \ No newline at end of file >>> >> >> There are several commits from the upstream zfs repo listed in this bug. >> Which of them are being applied ? This patch doesn't look big enough for >> all of them. > The kernel delta is small because a lot of the commits were on the > userspace tools. > >> Is there a way to separate them so as to be more reviewable ? > > Probably. I just used the script you wrote to do the sync; I presumed > that was our defacto way of doing the zfs delta syncing. > And so it should be. I was thrown off by the touches to zfs/scripts and zfs/rpm. I imagine we can remove that part of the patch ? rtg
On 23/06/16 13:10, Tim Gardner wrote: > On 06/23/2016 05:58 AM, Colin Ian King wrote: >> On 23/06/16 12:42, Tim Gardner wrote: >>> On 06/22/2016 07:40 AM, Colin King wrote: >>>> From: Colin Ian King <colin.king@canonical.com> >>>> >>>> BugLink: http://bugs.launchpad.net/bugs/1594871 >>>> >>>> Sync with the latest Xenial zfs-linux 0.6.5.6-0ubuntu10 >>>> >>>> Signed-off-by: Colin Ian King <colin.king@canonical.com> >>>> --- >>>> zfs/META | 2 +- >>>> zfs/module/zfs/spa_config.c | 5 +++-- >>>> zfs/module/zfs/vdev_disk.c | 31 +++++++++++++++++++++------ >>>> zfs/module/zfs/zfs_fm.c | 4 ++-- >>>> zfs/module/zfs/zfs_ioctl.c | 5 ++++- >>>> zfs/rpm/redhat/zfs-dkms.spec.in | 3 ++- >>>> zfs/rpm/redhat/zfs.spec.in | 3 ++- >>>> zfs/scripts/zpios-test/large-thread-survey.sh | 1 - >>>> zfs/scripts/zpios-test/large.sh | 1 - >>>> zfs/scripts/zpios-test/medium.sh | 1 - >>>> zfs/scripts/zpios-test/small.sh | 1 - >>>> zfs/scripts/zpios-test/tiny.sh | 1 - >>>> 12 files changed, 39 insertions(+), 19 deletions(-) >>>> mode change 120000 => 100644 zfs/rpm/redhat/zfs-dkms.spec.in >>>> mode change 120000 => 100644 zfs/rpm/redhat/zfs.spec.in >>>> delete mode 120000 zfs/scripts/zpios-test/large-thread-survey.sh >>>> delete mode 120000 zfs/scripts/zpios-test/large.sh >>>> delete mode 120000 zfs/scripts/zpios-test/medium.sh >>>> delete mode 120000 zfs/scripts/zpios-test/small.sh >>>> delete mode 120000 zfs/scripts/zpios-test/tiny.sh >>>> >>>> diff --git a/zfs/META b/zfs/META >>>> index 5a5c0a2..a0dbc97 100644 >>>> --- a/zfs/META >>>> +++ b/zfs/META >>>> @@ -2,7 +2,7 @@ Meta: 1 >>>> Name: zfs >>>> Branch: 1.0 >>>> Version: 0.6.5.6 >>>> -Release: 0ubuntu3 >>>> +Release: 0ubuntu10 >>>> Release-Tags: relext >>>> License: CDDL >>>> Author: OpenZFS on Linux >>>> diff --git a/zfs/module/zfs/spa_config.c b/zfs/module/zfs/spa_config.c >>>> index 929f181..19432e0 100644 >>>> --- a/zfs/module/zfs/spa_config.c >>>> +++ b/zfs/module/zfs/spa_config.c >>>> @@ -174,7 +174,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) >>>> VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, >>>> KM_SLEEP) == 0); >>>> >>>> -#ifdef __linux__ >>>> +#if defined(__linux__) && defined(_KERNEL) >>>> /* >>>> * Write the configuration to disk. Due to the complexity involved >>>> * in performing a rename from within the kernel the file is truncated >>>> @@ -201,7 +201,8 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) >>>> */ >>>> (void) snprintf(temp, MAXPATHLEN, "%s.tmp", dp->scd_path); >>>> >>>> - if (vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0) == 0) { >>>> + error = vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0); >>>> + if (error == 0) { >>>> if (vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, UIO_SYSSPACE, >>>> 0, RLIM64_INFINITY, kcred, NULL) == 0 && >>>> VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { >>>> diff --git a/zfs/module/zfs/vdev_disk.c b/zfs/module/zfs/vdev_disk.c >>>> index ebf0e8b..9b51ecc 100644 >>>> --- a/zfs/module/zfs/vdev_disk.c >>>> +++ b/zfs/module/zfs/vdev_disk.c >>>> @@ -139,7 +139,7 @@ vdev_elevator_switch(vdev_t *v, char *elevator) >>>> return (0); >>>> >>>> /* Leave existing scheduler when set to "none" */ >>>> - if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0) >>>> + if ((strncmp(elevator, "none", 4) == 0) && (strlen(elevator) == 4)) >>>> return (0); >>>> >>>> #ifdef HAVE_ELEVATOR_CHANGE >>>> @@ -244,12 +244,12 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>>> { >>>> struct block_device *bdev = ERR_PTR(-ENXIO); >>>> vdev_disk_t *vd; >>>> - int mode, block_size; >>>> + int count = 0, mode, block_size; >>>> >>>> /* Must have a pathname and it must be absolute. */ >>>> if (v->vdev_path == NULL || v->vdev_path[0] != '/') { >>>> v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; >>>> - return (EINVAL); >>>> + return (SET_ERROR(EINVAL)); >>>> } >>>> >>>> /* >>>> @@ -264,7 +264,7 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>>> >>>> vd = kmem_zalloc(sizeof (vdev_disk_t), KM_SLEEP); >>>> if (vd == NULL) >>>> - return (ENOMEM); >>>> + return (SET_ERROR(ENOMEM)); >>>> >>>> /* >>>> * Devices are always opened by the path provided at configuration >>>> @@ -279,16 +279,35 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, >>>> * /dev/[hd]d devices which may be reordered due to probing order. >>>> * Devices in the wrong locations will be detected by the higher >>>> * level vdev validation. >>>> + * >>>> + * The specified paths may be briefly removed and recreated in >>>> + * response to udev events. This should be exceptionally unlikely >>>> + * because the zpool command makes every effort to verify these paths >>>> + * have already settled prior to reaching this point. Therefore, >>>> + * a ENOENT failure at this point is highly likely to be transient >>>> + * and it is reasonable to sleep and retry before giving up. In >>>> + * practice delays have been observed to be on the order of 100ms. >>>> */ >>>> mode = spa_mode(v->vdev_spa); >>>> if (v->vdev_wholedisk && v->vdev_expanding) >>>> bdev = vdev_disk_rrpart(v->vdev_path, mode, vd); >>>> - if (IS_ERR(bdev)) >>>> + >>>> + while (IS_ERR(bdev) && count < 50) { >>>> bdev = vdev_bdev_open(v->vdev_path, >>>> vdev_bdev_mode(mode), zfs_vdev_holder); >>>> + if (unlikely(PTR_ERR(bdev) == -ENOENT)) { >>>> + msleep(10); >>>> + count++; >>>> + } else if (IS_ERR(bdev)) { >>>> + break; >>>> + } >>>> + } >>>> + >>>> if (IS_ERR(bdev)) { >>>> + dprintf("failed open v->vdev_path=%s, error=%d count=%d\n", >>>> + v->vdev_path, -PTR_ERR(bdev), count); >>>> kmem_free(vd, sizeof (vdev_disk_t)); >>>> - return (-PTR_ERR(bdev)); >>>> + return (SET_ERROR(-PTR_ERR(bdev))); >>>> } >>>> >>>> v->vdev_tsd = vd; >>>> diff --git a/zfs/module/zfs/zfs_fm.c b/zfs/module/zfs/zfs_fm.c >>>> index 7e9c473..c7b7180 100644 >>>> --- a/zfs/module/zfs/zfs_fm.c >>>> +++ b/zfs/module/zfs/zfs_fm.c >>>> @@ -457,7 +457,8 @@ update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) >>>> /* We store the bits in big-endian (largest-first) order */ >>>> for (i = 0; i < 64; i++) { >>>> if (value & (1ull << i)) { >>>> - hist[63 - i]++; >>>> + if (hist[63 - i] < UINT16_MAX) >>>> + hist[63 - i]++; >>>> ++bits; >>>> } >>>> } >>>> @@ -615,7 +616,6 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, >>>> if (badbuf == NULL || goodbuf == NULL) >>>> return (eip); >>>> >>>> - ASSERT3U(nui64s, <=, UINT16_MAX); >>>> ASSERT3U(size, ==, nui64s * sizeof (uint64_t)); >>>> ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); >>>> ASSERT3U(size, <=, UINT32_MAX); >>>> diff --git a/zfs/module/zfs/zfs_ioctl.c b/zfs/module/zfs/zfs_ioctl.c >>>> index 12d2750..745f713 100644 >>>> --- a/zfs/module/zfs/zfs_ioctl.c >>>> +++ b/zfs/module/zfs/zfs_ioctl.c >>>> @@ -5817,8 +5817,11 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) >>>> } >>>> >>>> >>>> - if (error == 0 && !(flag & FKIOCTL)) >>>> + if (error == 0 && !(flag & FKIOCTL)) { >>>> + cookie = spl_fstrans_mark(); >>>> error = vec->zvec_secpolicy(zc, innvl, CRED()); >>>> + spl_fstrans_unmark(cookie); >>>> + } >>>> >>>> if (error != 0) >>>> goto out; >>>> diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in >>>> deleted file mode 120000 >>>> index ffa051b..0000000 >>>> --- a/zfs/rpm/redhat/zfs-dkms.spec.in >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -../generic/zfs-dkms.spec.in >>>> \ No newline at end of file >>>> diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in >>>> new file mode 100644 >>>> index 0000000..b3e8c13 >>>> --- /dev/null >>>> +++ b/zfs/rpm/redhat/zfs-dkms.spec.in >>>> @@ -0,0 +1,2 @@ >>>> +%: >>>> + # >>>> diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in >>>> deleted file mode 120000 >>>> index 4c80791..0000000 >>>> --- a/zfs/rpm/redhat/zfs.spec.in >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -../generic/zfs.spec.in >>>> \ No newline at end of file >>>> diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in >>>> new file mode 100644 >>>> index 0000000..b3e8c13 >>>> --- /dev/null >>>> +++ b/zfs/rpm/redhat/zfs.spec.in >>>> @@ -0,0 +1,2 @@ >>>> +%: >>>> + # >>>> diff --git a/zfs/scripts/zpios-test/large-thread-survey.sh b/zfs/scripts/zpios-test/large-thread-survey.sh >>>> deleted file mode 120000 >>>> index 90b6e3c..0000000 >>>> --- a/zfs/scripts/zpios-test/large-thread-survey.sh >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -1x256th-65536rc-4rs-1cs-4off.sh >>>> \ No newline at end of file >>>> diff --git a/zfs/scripts/zpios-test/large.sh b/zfs/scripts/zpios-test/large.sh >>>> deleted file mode 120000 >>>> index b8e22bf..0000000 >>>> --- a/zfs/scripts/zpios-test/large.sh >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -256th-65536rc-4rs-1cs-4off.sh >>>> \ No newline at end of file >>>> diff --git a/zfs/scripts/zpios-test/medium.sh b/zfs/scripts/zpios-test/medium.sh >>>> deleted file mode 120000 >>>> index d81027b..0000000 >>>> --- a/zfs/scripts/zpios-test/medium.sh >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -16th-8192rc-4rs-1cs-4off.sh >>>> \ No newline at end of file >>>> diff --git a/zfs/scripts/zpios-test/small.sh b/zfs/scripts/zpios-test/small.sh >>>> deleted file mode 120000 >>>> index cbf03b5c..0000000 >>>> --- a/zfs/scripts/zpios-test/small.sh >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -4th-1024rc-4rs-1cs-4off.sh >>>> \ No newline at end of file >>>> diff --git a/zfs/scripts/zpios-test/tiny.sh b/zfs/scripts/zpios-test/tiny.sh >>>> deleted file mode 120000 >>>> index ba8b7cd..0000000 >>>> --- a/zfs/scripts/zpios-test/tiny.sh >>>> +++ /dev/null >>>> @@ -1 +0,0 @@ >>>> -1th-16rc-4rs-1cs-4off.sh >>>> \ No newline at end of file >>>> >>> >>> There are several commits from the upstream zfs repo listed in this bug. >>> Which of them are being applied ? This patch doesn't look big enough for >>> all of them. >> The kernel delta is small because a lot of the commits were on the >> userspace tools. >> >>> Is there a way to separate them so as to be more reviewable ? >> >> Probably. I just used the script you wrote to do the sync; I presumed >> that was our defacto way of doing the zfs delta syncing. >> > > And so it should be. I was thrown off by the touches to zfs/scripts and > zfs/rpm. I imagine we can remove that part of the patch ? If we remove that from this patch it will only show up next time we run the sync script, ad-infinitum. > > rtg >
On Wed, Jun 22, 2016 at 02:40:38PM +0100, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > BugLink: http://bugs.launchpad.net/bugs/1594871 > > Sync with the latest Xenial zfs-linux 0.6.5.6-0ubuntu10 > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- Applied to Xenial, except dropped the change to spa_config.c since we already (recently) applied that as "a7d2f77 Fix ztest truncated cache file". -Kamal
diff --git a/zfs/META b/zfs/META index 5a5c0a2..a0dbc97 100644 --- a/zfs/META +++ b/zfs/META @@ -2,7 +2,7 @@ Meta: 1 Name: zfs Branch: 1.0 Version: 0.6.5.6 -Release: 0ubuntu3 +Release: 0ubuntu10 Release-Tags: relext License: CDDL Author: OpenZFS on Linux diff --git a/zfs/module/zfs/spa_config.c b/zfs/module/zfs/spa_config.c index 929f181..19432e0 100644 --- a/zfs/module/zfs/spa_config.c +++ b/zfs/module/zfs/spa_config.c @@ -174,7 +174,7 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) VERIFY(nvlist_pack(nvl, &buf, &buflen, NV_ENCODE_XDR, KM_SLEEP) == 0); -#ifdef __linux__ +#if defined(__linux__) && defined(_KERNEL) /* * Write the configuration to disk. Due to the complexity involved * in performing a rename from within the kernel the file is truncated @@ -201,7 +201,8 @@ spa_config_write(spa_config_dirent_t *dp, nvlist_t *nvl) */ (void) snprintf(temp, MAXPATHLEN, "%s.tmp", dp->scd_path); - if (vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0) == 0) { + error = vn_open(temp, UIO_SYSSPACE, oflags, 0644, &vp, CRCREAT, 0); + if (error == 0) { if (vn_rdwr(UIO_WRITE, vp, buf, buflen, 0, UIO_SYSSPACE, 0, RLIM64_INFINITY, kcred, NULL) == 0 && VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { diff --git a/zfs/module/zfs/vdev_disk.c b/zfs/module/zfs/vdev_disk.c index ebf0e8b..9b51ecc 100644 --- a/zfs/module/zfs/vdev_disk.c +++ b/zfs/module/zfs/vdev_disk.c @@ -139,7 +139,7 @@ vdev_elevator_switch(vdev_t *v, char *elevator) return (0); /* Leave existing scheduler when set to "none" */ - if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0) + if ((strncmp(elevator, "none", 4) == 0) && (strlen(elevator) == 4)) return (0); #ifdef HAVE_ELEVATOR_CHANGE @@ -244,12 +244,12 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, { struct block_device *bdev = ERR_PTR(-ENXIO); vdev_disk_t *vd; - int mode, block_size; + int count = 0, mode, block_size; /* Must have a pathname and it must be absolute. */ if (v->vdev_path == NULL || v->vdev_path[0] != '/') { v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; - return (EINVAL); + return (SET_ERROR(EINVAL)); } /* @@ -264,7 +264,7 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, vd = kmem_zalloc(sizeof (vdev_disk_t), KM_SLEEP); if (vd == NULL) - return (ENOMEM); + return (SET_ERROR(ENOMEM)); /* * Devices are always opened by the path provided at configuration @@ -279,16 +279,35 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize, * /dev/[hd]d devices which may be reordered due to probing order. * Devices in the wrong locations will be detected by the higher * level vdev validation. + * + * The specified paths may be briefly removed and recreated in + * response to udev events. This should be exceptionally unlikely + * because the zpool command makes every effort to verify these paths + * have already settled prior to reaching this point. Therefore, + * a ENOENT failure at this point is highly likely to be transient + * and it is reasonable to sleep and retry before giving up. In + * practice delays have been observed to be on the order of 100ms. */ mode = spa_mode(v->vdev_spa); if (v->vdev_wholedisk && v->vdev_expanding) bdev = vdev_disk_rrpart(v->vdev_path, mode, vd); - if (IS_ERR(bdev)) + + while (IS_ERR(bdev) && count < 50) { bdev = vdev_bdev_open(v->vdev_path, vdev_bdev_mode(mode), zfs_vdev_holder); + if (unlikely(PTR_ERR(bdev) == -ENOENT)) { + msleep(10); + count++; + } else if (IS_ERR(bdev)) { + break; + } + } + if (IS_ERR(bdev)) { + dprintf("failed open v->vdev_path=%s, error=%d count=%d\n", + v->vdev_path, -PTR_ERR(bdev), count); kmem_free(vd, sizeof (vdev_disk_t)); - return (-PTR_ERR(bdev)); + return (SET_ERROR(-PTR_ERR(bdev))); } v->vdev_tsd = vd; diff --git a/zfs/module/zfs/zfs_fm.c b/zfs/module/zfs/zfs_fm.c index 7e9c473..c7b7180 100644 --- a/zfs/module/zfs/zfs_fm.c +++ b/zfs/module/zfs/zfs_fm.c @@ -457,7 +457,8 @@ update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) /* We store the bits in big-endian (largest-first) order */ for (i = 0; i < 64; i++) { if (value & (1ull << i)) { - hist[63 - i]++; + if (hist[63 - i] < UINT16_MAX) + hist[63 - i]++; ++bits; } } @@ -615,7 +616,6 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, if (badbuf == NULL || goodbuf == NULL) return (eip); - ASSERT3U(nui64s, <=, UINT16_MAX); ASSERT3U(size, ==, nui64s * sizeof (uint64_t)); ASSERT3U(size, <=, SPA_MAXBLOCKSIZE); ASSERT3U(size, <=, UINT32_MAX); diff --git a/zfs/module/zfs/zfs_ioctl.c b/zfs/module/zfs/zfs_ioctl.c index 12d2750..745f713 100644 --- a/zfs/module/zfs/zfs_ioctl.c +++ b/zfs/module/zfs/zfs_ioctl.c @@ -5817,8 +5817,11 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) } - if (error == 0 && !(flag & FKIOCTL)) + if (error == 0 && !(flag & FKIOCTL)) { + cookie = spl_fstrans_mark(); error = vec->zvec_secpolicy(zc, innvl, CRED()); + spl_fstrans_unmark(cookie); + } if (error != 0) goto out; diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in deleted file mode 120000 index ffa051b..0000000 --- a/zfs/rpm/redhat/zfs-dkms.spec.in +++ /dev/null @@ -1 +0,0 @@ -../generic/zfs-dkms.spec.in \ No newline at end of file diff --git a/zfs/rpm/redhat/zfs-dkms.spec.in b/zfs/rpm/redhat/zfs-dkms.spec.in new file mode 100644 index 0000000..b3e8c13 --- /dev/null +++ b/zfs/rpm/redhat/zfs-dkms.spec.in @@ -0,0 +1,2 @@ +%: + # diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in deleted file mode 120000 index 4c80791..0000000 --- a/zfs/rpm/redhat/zfs.spec.in +++ /dev/null @@ -1 +0,0 @@ -../generic/zfs.spec.in \ No newline at end of file diff --git a/zfs/rpm/redhat/zfs.spec.in b/zfs/rpm/redhat/zfs.spec.in new file mode 100644 index 0000000..b3e8c13 --- /dev/null +++ b/zfs/rpm/redhat/zfs.spec.in @@ -0,0 +1,2 @@ +%: + # diff --git a/zfs/scripts/zpios-test/large-thread-survey.sh b/zfs/scripts/zpios-test/large-thread-survey.sh deleted file mode 120000 index 90b6e3c..0000000 --- a/zfs/scripts/zpios-test/large-thread-survey.sh +++ /dev/null @@ -1 +0,0 @@ -1x256th-65536rc-4rs-1cs-4off.sh \ No newline at end of file diff --git a/zfs/scripts/zpios-test/large.sh b/zfs/scripts/zpios-test/large.sh deleted file mode 120000 index b8e22bf..0000000 --- a/zfs/scripts/zpios-test/large.sh +++ /dev/null @@ -1 +0,0 @@ -256th-65536rc-4rs-1cs-4off.sh \ No newline at end of file diff --git a/zfs/scripts/zpios-test/medium.sh b/zfs/scripts/zpios-test/medium.sh deleted file mode 120000 index d81027b..0000000 --- a/zfs/scripts/zpios-test/medium.sh +++ /dev/null @@ -1 +0,0 @@ -16th-8192rc-4rs-1cs-4off.sh \ No newline at end of file diff --git a/zfs/scripts/zpios-test/small.sh b/zfs/scripts/zpios-test/small.sh deleted file mode 120000 index cbf03b5c..0000000 --- a/zfs/scripts/zpios-test/small.sh +++ /dev/null @@ -1 +0,0 @@ -4th-1024rc-4rs-1cs-4off.sh \ No newline at end of file diff --git a/zfs/scripts/zpios-test/tiny.sh b/zfs/scripts/zpios-test/tiny.sh deleted file mode 120000 index ba8b7cd..0000000 --- a/zfs/scripts/zpios-test/tiny.sh +++ /dev/null @@ -1 +0,0 @@ -1th-16rc-4rs-1cs-4off.sh \ No newline at end of file