<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/module, branch zfs-0.6.0-rc1</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=zfs-0.6.0-rc1</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=zfs-0.6.0-rc1'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2011-02-18T17:31:25Z</updated>
<entry>
<title>Merge branch 'zpl'</title>
<updated>2011-02-18T17:31:25Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-18T17:31:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5d0265c0dd54d798a35babe587ad5138392fe807'/>
<id>urn:sha1:5d0265c0dd54d798a35babe587ad5138392fe807</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use provided uid/gid for setattr</title>
<updated>2011-02-17T22:23:48Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-17T22:17:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=037849f854c511d86e3564ed7000e6c6472d6f70'/>
<id>urn:sha1:037849f854c511d86e3564ed7000e6c6472d6f70</id>
<content type='text'>
When changing the uid/gid of a file via zfs_setattr() use the
Posix id passed in iattr-&gt;ia_uid/gid.  While the zfs_fuid_create()
code already had the fuid support disabled for Linux it was
returning the uid/gid from the credential.  With this change
the 'chown' command which relies on setxattr is now working
properly.

Also remove a little stray white space which was in front of
zfs_update_inode() call and the end of zfs_setattr().
</content>
</entry>
<entry>
<title>Fix symlink(2) inode reference count</title>
<updated>2011-02-17T19:34:47Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-17T19:26:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=efd1832bc615a4e32259e31d1c7ff0af14f5c1b2'/>
<id>urn:sha1:efd1832bc615a4e32259e31d1c7ff0af14f5c1b2</id>
<content type='text'>
Under Linux sys_symlink(2) should result in a inode being created
with one reference for the inode itself, and a second reference on
the inode which is held by the new dentry.  Under Solaris this
appears not to be the case.  Their zfs_symlink() handler drops
the inode reference before returning.

The result of this under Linux is that the reference count for
symlinks is always one smaller than it should have been. This
results in a BUG() when the symlink is unlinked.  To handle this
the Linux port now keeps the inode reference which differs from
the Solaris behavior.  This results in correct reference counts.

Closes #96
</content>
</entry>
<entry>
<title>Use -zfs_readlink() error</title>
<updated>2011-02-17T17:48:06Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-17T17:48:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5095000169f695ea6b65d74da917c3f465d05aab'/>
<id>urn:sha1:5095000169f695ea6b65d74da917c3f465d05aab</id>
<content type='text'>
The zfs_readlink() function returns a Solaris positive error value
and that needs to be converted to a Linux negative error value.
While in this case nothing would actually go wrong, it's still
incorrect and should be fixed if for no other reason than clarity.
</content>
</entry>
<entry>
<title>Fix readlink(2)</title>
<updated>2011-02-16T23:54:55Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-16T23:54:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8b4f9a2d55fc5ee28f69b29f2fece7d8e2cb5c7a'/>
<id>urn:sha1:8b4f9a2d55fc5ee28f69b29f2fece7d8e2cb5c7a</id>
<content type='text'>
This patch addresses three issues related to symlinks.

1) Revert the zfs_follow_link() function to a modified version
of the original zfs_readlink().  The only changes from the
original OpenSolaris version relate to using Linux types.
For the moment this means no vnode's and no zfsvfs_t.  The
caller zpl_follow_link() was also updated accordingly.  This
change was reverted because it was slightly gratuitious.

2) Update zpl_follow_link() to use local variables for the
link buffer.  I'd forgotten that iov.iov_base is updated by
uiomove() so after the call to zfs_readlink() it can not longer
be used.  We need our own private copy of the link pointer.

3) Allocate MAXPATHLEN instead of MAXPATHLEN+1.  By default
MAXPATHLEN is 4096 bytes which is a full page, adding one to
it pushes it slightly over a page.  That means you'll likely
end up allocating 2 pages which is wasteful of memory and
possibly slightly slower.
</content>
</entry>
<entry>
<title>Add API to wait for pending commit callbacks</title>
<updated>2011-02-16T19:20:06Z</updated>
<author>
<name>Ricardo M. Correia</name>
<email>ricardo.correia@oracle.com</email>
</author>
<published>2011-01-21T22:35:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=54a179e7b80413bd48cd2cd259110fb493d0215e'/>
<id>urn:sha1:54a179e7b80413bd48cd2cd259110fb493d0215e</id>
<content type='text'>
This adds an API to wait for pending commit callbacks of already-synced
transactions to finish processing.  This is needed by the DMU-OSD in
Lustre during device finalization when some callbacks may still not be
called, this leads to non-zero reference count errors.  See lustre.org
bug 23931.
</content>
</entry>
<entry>
<title>Add get/setattr, get/setxattr hooks</title>
<updated>2011-02-16T17:55:53Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-16T17:55:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a6695d83b763aaeeeeb6d4bdb57ed59a384106f7'/>
<id>urn:sha1:a6695d83b763aaeeeeb6d4bdb57ed59a384106f7</id>
<content type='text'>
While the attr/xattr hooks were already in place for regular
files this hooks can also apply to directories and special files.
While they aren't typically used in this way, it should be
supported.  This patch registers these additional callbacks
for both directory and special inode types.
</content>
</entry>
<entry>
<title>Fix FIFO and socket handling</title>
<updated>2011-02-16T17:51:44Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-16T17:51:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=d8fd10545b677cb4b770674372c1e116b7c22c64'/>
<id>urn:sha1:d8fd10545b677cb4b770674372c1e116b7c22c64</id>
<content type='text'>
Under Linux when creating a fifo or socket type device in the ZFS
filesystem it's critical that the rdev is stored in a SA.  This
was already being correctly done for character and block devices,
but that logic needed to be extended to include FIFOs and sockets.

This patch takes care of device creation but a follow on patch
may still be required to verify that the dev_t is being correctly
packed/unpacked from the SA.
</content>
</entry>
<entry>
<title>Create minors for all zvols</title>
<updated>2011-02-16T17:50:06Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-16T17:40:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=d5674448094cec6eb3563afb63cc1e096bc5b280'/>
<id>urn:sha1:d5674448094cec6eb3563afb63cc1e096bc5b280</id>
<content type='text'>
It was noticed that when you have zvols in multiple datasets
not all of the zvol devices are created at module load time.
Fajarnugraha did the leg work to identify that the root cause of
this bug is a non-zero return value from zvol_create_minors_cb().

Returning a non-zero value from the dmu_objset_find_spa() callback
function results in aborting processing the remaining children in
a dataset.  Since we want to ensure that the callback in run on
all children regardless of error simply unconditionally return
zero from the zvol_create_minors_cb().  This callback function
is solely used for this purpose so surpressing the error is safe.

Closes #96
</content>
</entry>
<entry>
<title>Linux 2.6.36 compat, sops-&gt;evict_inode()</title>
<updated>2011-02-11T21:47:51Z</updated>
<author>
<name>Brian Behlendorf</name>
<email>behlendorf1@llnl.gov</email>
</author>
<published>2011-02-11T21:46:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2c395def2763ccc7a549d297f7f11bd304caaeae'/>
<id>urn:sha1:2c395def2763ccc7a549d297f7f11bd304caaeae</id>
<content type='text'>
The new prefered inteface for evicting an inode from the inode cache
is the -&gt;evict_inode() callback.  It replaces both the -&gt;delete_inode()
and -&gt;clear_inode() callbacks which were previously used for this.
</content>
</entry>
</feed>
