<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src, branch zfs-0.5.2</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=zfs-0.5.2</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=zfs-0.5.2'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2010-11-12T17:33:17Z</updated>
<entry>
<title>Skip /dev/hpet during 'zpool import'</title>
<updated>2010-11-12T17:33:17Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-12T17:33:17Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5e7affae52365f9f329cc63a53ae570352c4d993'/>
<id>urn:sha1:5e7affae52365f9f329cc63a53ae570352c4d993</id>
<content type='text'>
If libblkid does not contain ZFS support, then 'zpool import' will scan
all block devices in /dev/ to determine which ones are components of a
ZFS filesystem.  It does this by opening all the devices and stat'ing
them to determine which ones are block devices.  If the device turns
out not to be a block device it is skipped.

Usually, this whole process is pretty harmless (although slow).  But
there are certain devices in /dev/ which must be handled in a very
specific way or your system may crash.  For example, if /dev/watchdog
is simply opened the watchdog timer will be started and your system
will panic when the timer expires.

It turns out the /dev/hpet causes similiar problems although only when
accessed under a virtual machine.  For some reason accessing /dev/hpet
causes qemu to crash.  To address this issue this commit adds /dev/hpet
to the device blacklist, it will be skipped solely based on its name.
</content>
</entry>
<entry>
<title>Add '-ts' options to zconfig.sh/zfault.sh usage</title>
<updated>2010-11-11T19:40:06Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-11T18:22:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e0f3df67e5174cd51284f0c26779046facfc95e0'/>
<id>urn:sha1:e0f3df67e5174cd51284f0c26779046facfc95e0</id>
<content type='text'>
When adding this functionality originally the options to only
run specific tests (-t), or conversely skip specific tests (-s)
were omitted from the usage page.  This commit adds the missing
documentation.
</content>
</entry>
<entry>
<title>Remove spl/zfs modules as part of cleanup</title>
<updated>2010-11-11T19:40:06Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-11T18:17:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=7dc3830c0f591ae8dfe349cf67c0c61cc8602dc8'/>
<id>urn:sha1:7dc3830c0f591ae8dfe349cf67c0c61cc8602dc8</id>
<content type='text'>
The idea behind the '-c' flag is to cleanup everything from a
previous test run which might cause the test script to fail.
This should also include removing the previously loaded module.
This makes it a little easier to run 'zconfig.sh -c', however
remember this is a test script and it will take all of your
other zpools offline for the purposes of the test.  This notion
has also been extended to the default 'make check' behavior.
</content>
</entry>
<entry>
<title>Unconditionally load core kernel modules</title>
<updated>2010-11-11T19:38:25Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-11T18:00:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=cf47fad67d798f42e6d2edc8b0e9f9b43175703b'/>
<id>urn:sha1:cf47fad67d798f42e6d2edc8b0e9f9b43175703b</id>
<content type='text'>
Loading and unloading the zlib modules as part of the zfs.sh
script has proven a little problematic for a few reasons.

  * First, your kernel may not need to load either zlib_inflate
    or zlib_deflate.  This functionality may be built directly in
    to your kernel.  It depends entirely on what your distribution
    decided was the right thing to do.

  * Second, even if you do manage to load the correct modules you
    may not be able to unload them.  There may other consumers
    of the modules with a reference preventing the unload.

To avoid both of these issues the test scripts have been updated to
attempt to unconditionally load all modules listed in KERNEL_MODULES.
If the module is successfully loaded you must have needed it. If
the module can't be loaded that almost certainly means either it is
built in to your kernel or is already being used by another consumer.
In both cases this is not an issue and we can move on to the spl/zfs
modules.

Finally, by removing these kernel modules from the MODULES list
we ensure they are never unloaded during 'zfs.sh -u'.  This avoids
the issue of the script failing because there is another consumer
using the module we were not aware of.  In other words the script
restricts unloading modules to only the spl/zfs modules.

Closes #78
</content>
</entry>
<entry>
<title>Fix for access beyond end of device error</title>
<updated>2010-11-11T05:29:07Z</updated>
<author>
<name>Ned Bass</name>
<email>bass6@llnl.gov</email>
</author>
<published>2010-11-10T21:36:18Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e06be586410cdad14d2dce76af4f2d43eebe7c83'/>
<id>urn:sha1:e06be586410cdad14d2dce76af4f2d43eebe7c83</id>
<content type='text'>
This commit fixes a sign extension bug affecting l2arc devices.  Extremely
large offsets may be passed down to the low level block device driver on
reads, generating errors similar to

    attempt to access beyond end of device
    sdbi1: rw=14, want=36028797014862705, limit=125026959

The unwanted sign extension occurrs because the function arc_read_nolock()
stores the offset as a daddr_t, a 32-bit signed int type in the Linux kernel.
This offset is then passed to zio_read_phys() as a uint64_t argument, causing
sign extension for values of 0x80000000 or greater.  To avoid this, we store
the offset in a uint64_t.

This change also changes a few daddr_t struct members to uint64_t in the libspl
headers to avoid similar bugs cropping up in the future.  We also add an ASSERT
to __vdev_disk_physio() to check for invalid offsets.

Closes #66
Signed-off-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
</content>
</entry>
<entry>
<title>Linux 2.6.36 compat, use fops-&gt;unlocked_ioctl()</title>
<updated>2010-11-11T01:01:08Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-11T00:44:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1f30b9d432dd48826cd562757d19c2771b0973e8'/>
<id>urn:sha1:1f30b9d432dd48826cd562757d19c2771b0973e8</id>
<content type='text'>
As of linux-2.6.36 the last in-tree consumer of fops-&gt;ioctl() has
been removed and thus fops()-&gt;ioctl() has also been removed.  The
replacement hook is fops-&gt;unlocked_ioctl() which has existed in
kernel since 2.6.12.  Since the ZFS code only contains support
back to 2.6.18 vintage kernels, I'm not adding an autoconf check
for this and simply moving everything to use fops-&gt;unlocked_ioctl().
</content>
</entry>
<entry>
<title>Linux 2.6.36 compat, blk_* macros removed</title>
<updated>2010-11-11T01:00:40Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-11T00:38:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8326eb4605a3d7c87cac15d5d11316fb99cd9ab0'/>
<id>urn:sha1:8326eb4605a3d7c87cac15d5d11316fb99cd9ab0</id>
<content type='text'>
Most of the blk_* macros were removed in 2.6.36.  Ostensibly this was
done to improve readability and allow easier grepping.  However, from
a portability stand point the macros are helpful.  Therefore the needed
macros are redefined here if they are missing from the kernel.
</content>
</entry>
<entry>
<title>Linux 2.6.36 compat, synchronous bio flag</title>
<updated>2010-11-11T01:00:33Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-10T23:49:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=675de5aa379bfceb0258a20c4ccd1414e4798ee6'/>
<id>urn:sha1:675de5aa379bfceb0258a20c4ccd1414e4798ee6</id>
<content type='text'>
The name of the flag used to mark a bio as synchronous has changed
again in the 2.6.36 kernel due to the unification of the BIO_RW_*
and REQ_* flags.  The new flag is called REQ_SYNC.  To simplify
checking this flag I have introduced the vdev_disk_dio_is_sync()
helper function.  Based on the results of several new autoconf
tests it uses the correct mask to check for a synchronous bio.

Preferred interface for flagging a synchronous bio:
  2.6.12-2.6.29: BIO_RW_SYNC
  2.6.30-2.6.35: BIO_RW_SYNCIO
  2.6.36-2.6.xx: REQ_SYNC
</content>
</entry>
<entry>
<title>Linux 2.6.36 compat, use REQ_FAILFAST_MASK</title>
<updated>2010-11-11T00:59:49Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2010-11-10T22:40:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f4af6bb783b0b7f2a6075cb1c74c225db8a157b2'/>
<id>urn:sha1:f4af6bb783b0b7f2a6075cb1c74c225db8a157b2</id>
<content type='text'>
As of linux-2.6.36 the BIO_RW_FAILFAST and REQ_FAILFAST flags
have been unified under the REQ_* names.  These flags always had
to be kept in-sync so this is a nice step forward, unfortunately
it means we need to be careful to only use the new unified flags
when the BIO_RW_* flags are not defined.  Additional autoconf
checks were added for this and if it is ever unclear which method
to use no flags are set.  This is safe but may result in longer
delays before a disk is failed.

Perferred interface for setting FAILFAST on a bio:
  2.6.12-2.6.27: BIO_RW_FAILFAST
  2.6.28-2.6.35: BIO_RW_FAILFAST_{DEV|TRANSPORT|DRIVER}
  2.6.36-2.6.xx: REQ_FAILFAST_{DEV|TRANSPORT|DRIVER}
</content>
</entry>
<entry>
<title>Remove inconsistent use of EOPNOTSUPP</title>
<updated>2010-11-10T21:26:56Z</updated>
<author>
<name>Ned Bass</name>
<email>bass6@llnl.gov</email>
</author>
<published>2010-11-09T22:20:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b04cffc9b03db08148f19bfbc92a53e5dc7b30d5'/>
<id>urn:sha1:b04cffc9b03db08148f19bfbc92a53e5dc7b30d5</id>
<content type='text'>
Commit 3ee56c292bbcd7e6b26e3c2ad8f0e50eee236bcc changed an ENOTSUP return value
in one location to ENOTSUPP to fix user programs seeing an invalid ioctl()
error code.  However, use of ENOTSUP is widespread in the zfs module.  Instead
of changing all of those uses, we fixed the ENOTSUP definition in the SPL to be
consistent with user space.  The changed return value in the above commit is
therefore no longer needed, so this commit reverses it to maintain consistency.

Signed-off-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
</content>
</entry>
</feed>
