Date: Wed, 6 Jan 2010 08:18:49 +0000 (UTC) From: Alexander Leidinger <netchild@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/cddl/compat/opensolaris/kern opensolaris_kobj.c opensolaris_taskq.c src/sys/cddl/compat/opensolaris/sys taskq.h taskq_impl.h vnode.h src/sys/cddl/contrib/opensolaris/common/nvpair nvpair.c src/sys/cddl/contrib/opensolaris/uts/common/fs gfs.c vnode.c src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs ... Message-ID: <201001060819.o068JWEt025945@repoman.freebsd.org>
index | next in thread | raw e-mail
netchild 2010-01-06 08:18:49 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_7)
sys/cddl/compat/opensolaris/kern opensolaris_kobj.c
sys/cddl/compat/opensolaris/sys vnode.h
sys/cddl/contrib/opensolaris/common/nvpair nvpair.c
sys/cddl/contrib/opensolaris/uts/common/fs gfs.c vnode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs dmu.c
dsl_pool.c
zfs_ioctl.c
zfs_vfsops.c
zfs_vnops.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys dsl_pool.h
zfs_context.h
zfs_znode.h
sys/cddl/contrib/opensolaris/uts/common/sys vnode.h
sys/cddl/dev/cyclic cyclic.c
sys/cddl/dev/dtrace/i386 dtrace_subr.c
sys/kern subr_taskqueue.c vfs_vnops.c
sys/modules/zfs Makefile
sys/sys mount.h taskqueue.h
Added files: (Branch: RELENG_7)
sys/cddl/compat/opensolaris/kern opensolaris_taskq.c
sys/cddl/contrib/opensolaris/uts/common/sys taskq.h
Removed files: (Branch: RELENG_7)
sys/cddl/compat/opensolaris/sys taskq.h taskq_impl.h
sys/cddl/contrib/opensolaris/uts/common/os taskq.c
Log:
SVN rev 201633 on 2010-01-06 08:18:49Z by netchild
MFC several ZFS related commits:
- taskq changes
- fixes for race conditions
- locking fixes
- bug fixes
- ...
r185310:
---snip---
Remove unused variable.
Found with: Coverity Prevent(tm)
CID: 3669,3671
---snip---
r185319:
---snip---
Fix locking (file descriptor table and Giant around VFS).
Most submitted by: kib
Reviewed by: kib
---snip---
r192689:
---snip---
Fix comment.
---snip---
r193110:
---snip---
work around snapshot shutdown race reported by Henri Hennebert
---snip---
r193440:
---snip---
Support shared vnode locks for write operations when the offset is
provided on filesystems that support it. This really improves mysql
+ innodb performance on ZFS.
Reviewed by: jhb, kmacy, jeffr
---snip---
ATTENTION: this commit to releng7 does not allow shared vnode locks
(there are some VFS changes needed before it can be enabled), it only
provides the infrastructure and serves mostly as a diff reduction in
the ZFS code.
A comment has been added to the locking part to explain why no shared
locks are used.
r195627:
---snip---
In nvpair_native_embedded_array(), meaningless pointers are zeroed.
The programmer was aware that alignment was not guaranteed in the
packed structure and used bzero() to NULL out the pointers.
However, on ia64, the compiler is quite agressive in finding ILP
and calls to bzero() are often replaced by simple assignments (i.e.
stores). Especially when the width or size in question corresponds
with a store instruction (i.e. st1, st2, st4 or st8).
The problem here is not a compiler bug. The address of the memory
to zero-out was given by '&packed->nvl_priv' and given the type of
the 'packed' pointer the compiler could assume proper alignment for
the replacement of bzero() with an 8-byte wide store to be valid.
The problem is with the programmer. The programmer knew that the
address did not have the alignment guarantees needed for a regular
assignment, but failed to inform the compiler of that fact. In
fact, the programmer told the compiler the opposite: alignment is
guaranteed.
The fix is to avoid using a pointer of type "nvlist_t *" and
instead use a "char *" pointer as the basis for calculating the
address. This tells the compiler that only 1-byte alignment can
be assumed and the compiler will either keep the bzero() call
or instead replace it with a sequence of byte-wise stores. Both
are valid.
---snip---
r195822:
---snip---
Fix extattr_list_file(2) on ZFS in case the attribute directory
doesn't exist and user doesn't have write access to the file.
Without this fix, it returns bogus value instead of 0. For some
reason this didn't manifest on my kernel compiled with -O0.
PR: kern/136601
Submitted by: Jaakko Heinonen <jh at saunalahti dot fi>
---snip---
r195909
---snip---
We don't support ephemeral IDs in FreeBSD and without this fix ZFS can
panic when in zfs_fuid_create_cred() when userid is negative. It is
converted to unsigned value which makes IS_EPHEMERAL() macro to
incorrectly report that this is ephemeral ID. The most reasonable
solution for now is to always report that the given ID is not ephemeral.
PR: kern/132337
Submitted by: Matthew West <freebsd@r.zeeb.org>
Tested by: Thomas Backman <serenity@exscape.org>, Michael Reifenberger <mike@reifenberger.com>
---snip---
r196291:
---snip---
- Fix a race where /dev/zfs control device is created before ZFS is fully
initialized. Also destroy /dev/zfs before doing other deinitializations.
- Initialization through taskq is no longer needed and there is a race
where one of the zpool/zfs command loads zfs.ko and tries to do some work
immediately, but /dev/zfs is not there yet.
Reported by: pav
---snip---
r196269:
---snip---
Fix misalignment in nvpair_native_embedded() caused by the compiler
replacing the bzero(). See also revision 195627, which fixed the
misalignment in nvpair_native_embedded_array().
---snip---
r196295:
---snip---
Remove OpenSolaris taskq port (it performs very poorly in our kernel) and
replace it with wrappers around our taskqueue(9).
To make it possible implement taskqueue_member() function which returns 1
if the given thread was created by the given taskqueue.
---snip---
The taskqueue_member() function is different due to kproc/kthread changes
in releng8 and head, the function was...
Revieved by: jhb
r196297:
---snip---
Fix panic in zfs recv code. The last vnode (mountpoint's vnode) can have
0 usecount.
Reported by: Thomas Backman <serenity@exscape.org>
---snip---
r196299:
---snip---
- We need to recycle vnode instead of freeing znode.
Submitted by: avg
- Add missing vnode interlock unlock.
- Remove redundant znode locking.
---snip---
r196301:
---snip---
If z_buf is NULL, we should free znode immediately.
Noticed by: avg
---snip---
r196307:
---snip---
Manage asynchronous vnode release just like Solaris.
Discussed with: kmacy
---snip---
Revision Changes Path
1.7.2.2 +25 -11 src/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c
1.1.4.2 +135 -0 src/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c (new)
1.2.2.3 +0 -86 src/sys/cddl/compat/opensolaris/sys/taskq.h (dead)
1.2.2.3 +0 -137 src/sys/cddl/compat/opensolaris/sys/taskq_impl.h (dead)
1.6.2.3 +0 -1 src/sys/cddl/compat/opensolaris/sys/vnode.h
1.3.2.4 +9 -5 src/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c
1.5.2.4 +7 -2 src/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
1.2.2.2 +14 -121 src/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c
1.2.2.3 +0 -3 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
1.3.2.3 +10 -0 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
1.2.2.3 +3 -0 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
1.4.2.3 +1 -0 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h
1.3.2.4 +4 -0 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
1.7.2.4 +21 -25 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
1.14.2.3 +2 -1 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
1.31.2.6 +20 -18 src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
1.4.2.4 +0 -1041 src/sys/cddl/contrib/opensolaris/uts/common/os/taskq.c (dead)
1.1.4.2 +90 -0 src/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h (new)
1.3.2.3 +18 -4 src/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h
1.1.2.2 +1 -2 src/sys/cddl/dev/cyclic/cyclic.c
1.1.2.3 +1 -2 src/sys/cddl/dev/dtrace/i386/dtrace_subr.c
1.39.2.3 +29 -0 src/sys/kern/subr_taskqueue.c
1.252.2.9 +32 -8 src/sys/kern/vfs_vnops.c
1.6.2.5 +1 -1 src/sys/modules/zfs/Makefile
1.228.2.9 +1 -0 src/sys/sys/mount.h
1.16.2.3 +2 -0 src/sys/sys/taskqueue.h
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001060819.o068JWEt025945>
