Commit Graph

217 Commits

Author SHA1 Message Date
chs
8f4ea3c47b adapt the profile dtrace provider to netbsd. 2012-12-07 03:11:17 +00:00
chs
11c69f2d20 adapt the cyclic module and profile dtrace provider to netbsd.
for now, just hook the cyclic callback into hardclock().
2012-12-02 01:05:16 +00:00
chs
a32db86a29 update cyclic module to the freebsd 8-stable version as of svn r219520. 2012-12-02 00:05:38 +00:00
christos
7c1cb982d4 we have _SC_PHYS_PAGES now 2012-11-04 19:12:41 +00:00
riastradh
d9310ec72a Use 0 for MS_NOMNTTAB since we have no mnttab anyway. 2012-10-20 22:11:38 +00:00
joerg
fdd8614af9 Hack to avoid missing macro to unbuild the tree. 2012-10-20 11:37:37 +00:00
riastradh
0041a2c6fe Let's try that again without the static... 2012-10-19 22:19:15 +00:00
riastradh
e75d983bfe Add omitted secpolicy_vnode_utime_modify, for zfs. 2012-10-19 19:58:33 +00:00
riastradh
4797828821 Back out accidental commit of errno kludge for rmdir(".") &c.
Solaris returns EEXIST, whereas we want to return ENOTEMPTY (POSIX
allows both), but this got included in an unrelated commit and should
be separated into a common commit for other related error code fixes.
2012-10-18 14:29:44 +00:00
riastradh
2111fc7126 Take a first whack at making zfs permissions work.
zfs_access uses secpolicy_vnode_access, so it makes no sense for the
latter to call VOP_ACCESS!

Everything seems to return EACCES instead of EPERM, probably because
that's what kauth returns.  This should be fixed, but that may
require some nontrivial surgery to zfs's calls to secpolicy_*, which
is where kauth gets involved.

This commit imports some code from illumos to implement the routine
secpolicy_vnode_setattr.  This shouldn't be outside dist/, but for
now it is expedient to do so.  We ought to fix that, along with all
the other CDDL code outside dist/, when we next import a newer
version of zfs.
2012-10-18 14:22:57 +00:00
riastradh
8e972045d7 Restore _PC_NO_TRUNC in zfs_netbsd_pathconf.
Accidentally clobbered it in a previous commit while moving patches
around between source trees -- oops.
2012-10-16 00:04:15 +00:00
riastradh
6d6cb07bff Fail lookup of .. in a deleted directory with ENOENT.
Don't try to zget the parent, whose znode id may have been recycled
by now.

It's not clear to me how Solaris avoids this, but maybe I'm just
missing something obvious.
2012-10-15 23:51:11 +00:00
riastradh
1baf22d09c Fix various issues in zfs life cycle, locking, and vop protocol.
- Restore some zfs locking and unlocking that got lost randomly.

- Enable use of the BSD vnode lock.  Lock order: all BSD vnode locks
are taken before all zfs internal locks.  There remains an issue with
O_EXCL, to be solved later (famous last words).  KASSERT the locking
scheme up the wazoo.

- Take our cruft out of zfs_lookup and move it to zfs_netbsd_lookup.
Restore much of the way zfs_lookup looked to make merging future
versions easier.  Disable use of the namecache for now because its
locking dance is too scary to contemplate.

- Implement BSD semantics for rename, to appease our tests.  This is
a provisional kludge; eventually we need VOP_RENAME to take a flag
specifying whether to use BSD semantics or POSIX semantics.

- Simplify zfs_netbsd_reclaim and make it work.  Now that getnewvnode
never tries to vclean anything itself, we need not worry about
recursion of ZFS_OBJ_MUTEX locks.

- Clarify and fix genfs node initialization and destruction.

zfs passes most of our atf vfs tests now, including the rename races.

Still to do:

- fix the impedance mismatch between our permissions model and zfs's;
- fix O_EXCL (nontrivial);
- throw dirconc at it and see how badly it explodes;
- find why zpool sometimes wedges itself during mkfs; and
- find why pool caches sometimes seem to get corrupted.
2012-10-15 23:08:19 +00:00
riastradh
1b44cf7c91 secpolicy_vnode_access must be called with the vnode lock held.
Don't unlock the vnode and then tell the caller about what the world
was like while the vnode was locked.  The world changes fast.
2012-10-15 22:50:25 +00:00
riastradh
2ea30100de Simplify zfs dirlock reference counting.
No need to pass dzp around; dl has a pointer to it.
2012-10-15 22:43:50 +00:00
riastradh
b2ba8fafaa Do reference counting for zfs range lock waiters.
Avoid cv_broadcast(&cv); cv_destroy(&cv); which works in Solaris only
by abuse of the condvar abstraction.

There are parts of this code that should be factored into smaller
subroutines, mainly range lock allocation and initialization, but
that would make it harder to merge newer versions of zfs, so for now
I've just expanded those parts further in-line.
2012-10-15 14:15:59 +00:00
riastradh
f1e3330bc7 Do reference counting for zfs dirlock waiters.
Solaris relies on cv_broadcast(&cv); cv_destroy(&cv) working, but
that hoses our cv_wait, which needs to continue using cv after it is
woken.  Solaris's idiom is an abuse of the condvar abstraction, but
we can get the same effect with reference counting.
2012-10-15 14:03:06 +00:00
njoly
172b16130f No need to include files more than once. 2012-10-11 08:01:23 +00:00
njoly
6b1609c666 Add _PC_NO_TRUNC support in zfs_netbsd_pathconf(). 2012-10-01 18:19:18 +00:00
riz
91aa9460ce Don't build with debugging (-g) by default. 2012-09-05 23:08:42 +00:00
pooka
fa4bf43b79 For now, make vop_islocked more like vop_lock and vop_unlock (i.e. don't
even attempt to do anything).
2012-09-01 16:19:00 +00:00
christos
ffd8412325 PR/46660: Henning Petersen: Fix typo in deviceid.c 2012-07-05 13:55:58 +00:00
njoly
b813bd15cb Use CTLTYPE_QUAD for uint64_t type in sysctl_createv. 2012-06-19 21:25:26 +00:00
chs
22738551d6 reduce diff to freebsd:
rename "xcpu" back to "cpu" now that the conflicting global variable
has been renamed out of the way.  this also fixes some cases
where references to the local variable "cpu" had not been renamed
and thus were accidentally referring to the former global "cpu".
2012-06-16 17:31:47 +00:00
chs
6e9ead4606 make dtrace work on amd64. 2012-06-11 15:18:05 +00:00
jym
57d7988f76 Now that pool_cache_invalidate() is synchronous and can handle per-CPU
caches, merge together pool_drain_start() and pool_drain_end() into

bool pool_drain(struct pool **ppp);

"bool" value indicates whether reclaiming was fully done (true) or not (false)
"ppp" will contain a pointer to the pool that was drained (optional).

See http://mail-index.netbsd.org/tech-kern/2012/06/04/msg013287.html
2012-06-05 22:51:47 +00:00
dsl
f7622c11cc Not sure why this has just started to fail!
But it really isn't a good idea to compare a uint64_t to NULL.
2012-06-03 10:53:51 +00:00
christos
27e3db30d5 Add FREAD for the benefit of kauth! 2012-04-26 23:34:09 +00:00
wiz
2b8cc88a65 Use the correct path in dt_module.c.
From clang via Henning Petersen in PR 46009.
2012-02-13 13:05:36 +00:00
wiz
6ef3ca5393 Use the correct MACHINE_ARCH for amd64.
Remove temporary hack while here.
From Henning Petersen in PR 46001.
2012-02-13 12:52:54 +00:00
para
e62ee4d475 extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged
2012-01-27 19:48:38 +00:00
darran
9a00affba3 Fix a segfault in ctfmerge.
GCC can generate bogus dwarf attributes with DW_AT_byte_size set to 0xFFFFFFFF.
See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35998 .

GCC is currently doing this for external/bsd/tmux/dist/compat/imsg-buffer.c:
    readelf -a --debug-dump imsg-buffer.o
	...
	 <2><6e3>: Abbrev Number: 32 (DW_TAG_union_type)
	    <6e4>   DW_AT_byte_size   : 0xffffffff
	    <6e8>   DW_AT_decl_file   : 1
	    <6e9>   DW_AT_decl_line   : 229
	    <6ea>   DW_AT_sibling     : <0x705>

This resulted in ctfconvert generating a faulty CTF entry which then caused the
segfault in ctfmerge.

The fix has ctfconvert check for the bogus 0xFFFFFFFF value and works around it.
It also adds some protection to ctfmerge to avoid the segfault and fail
more gracefully if the error should occur in the future.
2012-01-10 08:42:22 +00:00
christos
dd89f66f56 make this compile again. VOP_CLOSE is really vn_close() through macros. 2011-11-21 17:51:03 +00:00
christos
bde7230620 correct declaration of vn_close()
XXX: Should all those dup declarations be here?
2011-11-21 05:50:11 +00:00
christos
6a2b307489 close file in a way that it does not trigger an assertion :-)
now zpool create works again.
2011-11-21 00:24:24 +00:00
christos
eb50a1b80e enough with the compile time warnings. 2011-11-20 02:54:25 +00:00
yamt
fb69e65229 make aggregate work for > 1 cpus 2011-10-19 11:03:52 +00:00
yamt
f34e2253c6 because our xcall stuff can't be used in softint, use kernel threads
for cleaner/deadman low-level cyclic replacement.  PR/44905
2011-10-19 11:02:08 +00:00
yamt
ad773a12d3 fbt_provide_module_cb: exclude some functions known unsafe to probe 2011-10-19 10:55:50 +00:00
hannken
34f54c83be As vnalloc() always allocates with PR_WAITOK there is no longer the need
to test its result for NULL.
2011-10-07 09:35:04 +00:00
christos
b6f6e1bfbd fix a shadow variable warning. 2011-09-09 17:48:39 +00:00
christos
a222eb155b catch up with vmem_alloc signature change. 2011-09-07 21:32:07 +00:00
christos
4aa752a401 fix shadow warnings.
XXX: might be a good idea to kill global 'cpu' and 'version' variables.
2011-08-31 21:57:16 +00:00
uebayasi
eab2487254 Fix a local var name. 2011-07-30 10:12:14 +00:00
uebayasi
6ed9c23d3b KNF. 2011-07-29 13:10:23 +00:00
yamt
e3bb2d6eba mark this driver D_MPSAFE 2011-07-26 12:54:28 +00:00
yamt
afe833af51 fix a merge botch in rev.1.7 2011-07-26 12:33:23 +00:00
yamt
696f2a9301 remove debug printfs 2011-07-26 12:28:39 +00:00
yamt
7695ef3cd1 remove a debug printf 2011-07-26 12:28:01 +00:00
yamt
223b285dcf fix a kmem_alloc/free size mismatch 2011-07-26 12:26:33 +00:00