11485 Commits

Author SHA1 Message Date
Robert Watson
f462942090 Merge r204430 from head to stable/8:
Remove stale comment about socket buffer accounting from access(2) code.
  It is the case, however, that the uidinfo of the temporary credential
  set up for access(2) is not properly updated when its effective uid is
  changed.

Approved by:	re (bz)
2010-06-01 14:04:33 +00:00
Robert Watson
9b47fa5955 Merge r208601 from head to stable/8:
When close() is called on a connected socket pair, SO_ISCONNECTED might be
  set but be cleared before the call to sodisconnect().  In this case,
  ENOTCONN is returned: suppress this error rather than returning it to
  userspace so that close() doesn't report an error improperly.

  PR:		kern/144061
  Reported by:	Matt Reimer <mreimer at vpop.net>,
		Nikolay Denev <ndenev at gmail.com>,
		Mikolaj Golub <to.my.trociny at gmail.com>

Approved by:	re (kib)
2010-06-01 13:59:48 +00:00
Robert Watson
1732ca8fb3 Merge r203410 from head to stable/8:
Only audit pathnames in namei(9) if copying the directory string completes
 successfully.  Continue to do this before the empty path check so that the
 ENOENT returned in that case gets an empty string token in the BSM record.

Approved by:	re (kib)
2010-05-31 21:57:31 +00:00
Robert Watson
b269c05e01 Merge r200976 from head to stable/8:
Minor comment tweaks in rmlocks.

Approved by:	re (kib)
2010-05-31 21:35:40 +00:00
Konstantin Belousov
f3e1e28bcc MFC r208488:
Fix the double counting of the last process thread td_incruntime
on exit, that is done once in thread_exit() and the second time in
proc_reap(), by clearing td_incruntime.

Approved by:	re (kensmith)
2010-05-26 19:26:28 +00:00
Pawel Jakub Dawidek
665b912a0a MFC r207920,r207934,r207936,r207937,r207970,r208142,r208147,r208148,r208166,
r208454,r208455,r208458:

r207920:

Back out r205134. It is not stable.

r207934:

Add missing new line characters to the warnings.

r207936:

Eventhough r203504 eliminates taste traffic provoked by vdev_geom.c,
ZFS still like to open all vdevs, close them and open them again,
which in turn provokes taste traffic anyway.

I don't know of any clean way to fix it, so do it the hard way - if we can't
open provider for writing just retry 5 times with 0.5 pauses. This should
elimitate accidental races caused by other classes tasting providers created on
top of our vdevs.

Reported by:	James R. Van Artsdalen <james-freebsd-fs2@jrv.org>
Reported by:	Yuri Pankov <yuri.pankov@gmail.com>

r207937:

I added vfs_lowvnodes event, but it was only used for a short while and now
it is totally unused. Remove it.

r207970:

When there is no memory or KVA, try to help by reclaiming some vnodes.
This helps with 'kmem_map too small' panics.

No objections from:	kib
Tested by:		Alexander V. Ribchansky <shurik@zk.informjust.ua>

r208142:

The whole point of having dedicated worker thread for each leaf VDEV was to
avoid calling zio_interrupt() from geom_up thread context. It turns out that
when provider is forcibly removed from the system and we kill worker thread
there can still be some ZIOs pending. To complete pending ZIOs when there is
no worker thread anymore we still have to call zio_interrupt() from geom_up
context. To avoid this race just remove use of worker threads altogether.
This should be more or less fine, because I also thought that zio_interrupt()
does more work, but it only makes small UMA allocation with M_WAITOK.
It also saves one context switch per I/O request.

PR:		kern/145339
Reported by:	Alex Bakhtin <Alex.Bakhtin@gmail.com>

r208147:

Add task structure to zio and use it instead of allocating one.
This eliminates the only place where we can sleep when calling zio_interrupt().
As a side-effect this can actually improve performance a little as we
allocate one less thing for every I/O.

Prodded by:	kib

r208148:

Allow to configure UMA usage for ZIO data via loader and turn it on by
default for amd64. On i386 I saw performance degradation when UMA was used,
but for amd64 it should help.

r208166:

Fix userland build by making io_task available only for the kernel and by
providing taskq_dispatch_safe() macro.

r208454:

Remove ZIO_USE_UMA from arc.c as well.

r208455:

ZIO_USE_UMA is no longer used.

r208458:

Create UMA zones unconditionally.
2010-05-24 10:09:36 +00:00
Konstantin Belousov
c67c645d9d MFC r207729:
Add MAKEDEV_NOWAIT flag for make_dev_credf(9).
2010-05-20 09:38:15 +00:00
Andriy Gapon
86ffeaa182 MFC r207360: periodically save system time to hardware time-of-day clock 2010-05-19 10:34:15 +00:00
Andriy Gapon
e5f5b37212 MFC r207359,207362: kern_ntptime: abstract time error check into a
function
2010-05-19 10:15:37 +00:00
Attilio Rao
d5a628572d MFC r207922, r207925, r207929, r208052:
- Change the db_printf return value in order to catch up with printf
- Make witness_list_locks() and witness_display_spinlock() accept
  callbacks for printf-like functions in order to queue the output on the
  correct channel.
2010-05-18 10:24:23 +00:00
Bjoern A. Zeeb
f7eebc1c4e MFC r208100:
Fix an issue with the dynamic pcpu/vnet data allocators.

  We cannot expect that modspace is the last entry in the linker
  set and thus that modspace + possible extra space up to PAGE_SIZE
  would be contiguous.  For the moment do not support more than
  *_MODMIN space and ignore the extra space.

Discussed with:	jeff, rwatson (briefly)
Reviewed by:	jeff
Sponsored by:	The FreeBSD Foundation
Sponsored by:	CK Software GmbH
2010-05-18 04:20:35 +00:00
Attilio Rao
7b7fb4910e MFC r206878, r206897, r207921:
Fix a deadlock in the shutdown code when some CPUs are performing
smp_rendezvous() (or smp_tlb_shootdown()) and are waiting for
acknowledgment.
2010-05-14 01:43:13 +00:00
Konstantin Belousov
fae5687b8a MFC r207605:
Remove a comment that merely repeats code.
2010-05-11 13:35:35 +00:00
Konstantin Belousov
e11f17f35e MFC r207603
Use td_rux.rux_runtime for ki_runtime instead of redoing calculation.

MFC r207659:
Fix a mistake in r207603. td_rux.rux_runtime still needs conversion.
2010-05-11 13:33:37 +00:00
Konstantin Belousov
c193de568b MFC r207468:
Extract thread_lock()/ruxagg()/thread_unlock() fragment into utility
function ruxagg_tlock().
Convert the definition of kern_getrusage() to ANSI C.

MFC r207602:
Implement RUSAGE_THREAD. Add td_rux to keep extended runtime and ticks
information for thread to allow calcru1() (re)use.

Rename ruxagg()->ruxagg_locked(), ruxagg_tlock()->ruxagg() [1].
The ruxagg_locked() function no longer clears thread ticks nor
td_incruntime.

Not an MFC: the td_rux is added to the end of struct thread to keep
the KBI. Explicit bzero() of td_rux is added to new thread initialization
points.
2010-05-11 13:18:41 +00:00
Konstantin Belousov
43042bbaf1 MFC r207363:
Remove caddr_t casts.
2010-05-09 12:32:10 +00:00
Konstantin Belousov
19effccdee MFC r204051 (by imp):
n64 has a different size for KINFO_PROC_SIZE.

Approved by:	imp

MFC r207152:
Move the constants specifying the size of struct kinfo_proc into
machine-specific header files. Add KINFO_PROC32_SIZE for struct
kinfo_proc32 for architectures providing COMPAT_FREEBSD32. Add
CTASSERT for the size of struct kinfo_proc32.

MFC r207269:
Style: use #define<TAB> instead of #define<SPACE>.
2010-05-08 18:54:47 +00:00
Konstantin Belousov
bb45d7918d MFC r207606:
Fix typo in comment.
2010-05-07 11:11:58 +00:00
Marko Zec
ee17e64f2c MFC r207475:
Remove a redundant variable assignment.

  Reviewed by:  bz, rwatson
2010-05-06 09:52:32 +00:00
Konstantin Belousov
22df1496d2 MFC r206894:
The cache_enter(9) function shall not be called for doomed dvp.
Assert this.

Verify that dvp is not reclaimed before calling cache_enter().
2010-05-04 05:25:48 +00:00
Konstantin Belousov
88389d6103 MFC r206264:
When OOM searches for a process to kill, ignore the processes already
killed by OOM. When killed process waits for a page allocation, try to
satisfy the request as fast as possible.
2010-05-04 05:14:43 +00:00
Bjoern A. Zeeb
bca61398fd MFC r207116:
Remove one zero from the double-0.
  This code doesn't have a license to kill.
2010-05-02 15:58:25 +00:00
Konstantin Belousov
517c07c8cc MFC r207008:
Provide compat32 shims for kinfo_proc sysctl.

MFC r207016:
Fix typo.
2010-04-28 10:03:54 +00:00
Konstantin Belousov
3b23a422c3 MFC r206547:
Handle a case in kern_openat() when vn_open() change file type from
DTYPE_VNODE.
2010-04-27 10:47:54 +00:00
Warner Losh
39fc973d89 MFC r206916
Make sure that we free the passed in data message if we don't actually
  insert it onto the queue.  Also, fix a mtx leak if someone turns off
  devctl while we're processing a messages.

  MFC after:	5 days
2010-04-25 19:13:08 +00:00
Attilio Rao
47fd5bf73a MFC r206482, r206879:
- Introduce a blessed list for sxlocks that prevents the deadlkres to
  panic on those ones. Populate this list with getblk and so_snd_sx and
  so_rcv_sx.
- Fix ticks counter wrap-up

Sponsored by:	Sandvine Incorporated
2010-04-24 00:53:41 +00:00
Bjoern A. Zeeb
407b19379c MFC r205345:
Split eventhandler_register() into an internal part and a wrapper function
  that provides the allocated and setup eventhandler entry.

  Add a new wrapper for VIMAGE that allocates extra space to hold the
  callback function and argument in addition to an extra wrapper function.
  While the wrapper function goes as normal callback function the
  argument points to the extra space allocated holding the original func
  and arg that the wrapper function can then call.

  Provide an iterator function for the virtual network stack (vnet) that
  will call the callback function for each network stack.

  Provide a new set of macros for VNET that in the non-VIMAGE case will
  just call eventhandler_register() while in the VIMAGE case it will use
  vimage_eventhandler_register() passing in the extra iterator function
  but will only register once rather than per-vnet.
  We need a special macro in case we are interested in the tag returned
  as we must check for curvnet and can neither simply assign the
  return value, nor not change it in the non-vnet0 case without that.

  Discussed with:       jhb
  Reviewed by:  zec (earlier version), jhb
2010-04-21 19:45:41 +00:00
Edward Tomasz Napierala
a515de671b MFC r206160 by jh@:
Add missing MNT_NFS4ACLS.
2010-04-18 19:51:46 +00:00
Konstantin Belousov
c9975476bf MFC r206671:
Fix typo.
2010-04-18 04:35:16 +00:00
Andriy Gapon
0866329b6e MFC r206129: vn_stat: use va_blocksize when setting st_blksize 2010-04-17 11:25:30 +00:00
Andriy Gapon
e747dbab75 MFC r205860,206097: correctly set b_offset for getblk(devvp) 2010-04-17 11:06:42 +00:00
Konstantin Belousov
bbf7989245 MFC r206546:
Remove XXX comment. Add another comment, describing why f_vnode assignment
is useful.
2010-04-16 08:32:08 +00:00
Konstantin Belousov
b754ab83bc MFC r206395:
Do not leak master pty or ptmx vnode.
2010-04-15 08:17:28 +00:00
John Baldwin
805de54cfc MFC 205886:
Defer freeing a kevent list until after dropping kqueue locks.
2010-04-14 15:33:15 +00:00
Konstantin Belousov
f2c7b98632 MFC r206094:
Supply default implementation of VOP_RENAME() that does neccessary
unlocks and unreferences for argument vnodes, as expected by
kern_renameat(9), and returns EOPNOTSUPP. This fixes locks and
reference leaks when rename is attempted on fs that does not
implement rename.
2010-04-09 08:45:30 +00:00
Konstantin Belousov
bb9a8424a3 MFC r206093:
Add function vop_rename_fail(9) that performs needed cleanup for locks
and references of the VOP_RENAME(9) arguments. Use vop_rename_fail()
in deadfs_rename().
2010-04-09 08:39:28 +00:00
Konstantin Belousov
36131b48ed MFC r205326:
Convert aio syscall registration to SYSCALL_INIT_HELPER.
2010-04-07 14:50:58 +00:00
Konstantin Belousov
048575ee75 MFC r205325:
Implement compat32 shims for mqueuefs.
2010-04-07 14:49:35 +00:00
Konstantin Belousov
0aab10e1a8 MFC r205324:
Implement compat32 shims for ksem syscalls.
2010-04-07 14:47:55 +00:00
Konstantin Belousov
db5805dded MFC r205323:
Move SysV IPC freebsd32 compat shims from freebsd32_misc.c to corresponding
sysv_{msg,sem,shm}.c files.

Mark SysV IPC freebsd32 syscalls as NOSTD and add required
SYSCALL_INIT_HELPER/SYSCALL32_INIT_HELPERs to provide auto
register/unregister on module load.

This makes COMPAT_FREEBSD32 functional with SysV IPC compiled and loaded
as modules.
2010-04-07 14:46:28 +00:00
Konstantin Belousov
4ad2ce357a MFC r205322:
Move SysV IPC freebsd32 compat shims helpers from freebsd32_misc.c to
sysv_ipc.c.
2010-04-07 14:35:09 +00:00
Konstantin Belousov
0272ddd8bb MFC r205321:
Introduce SYSCALL_INIT_HELPER and SYSCALL32_INIT_HELPER macros and
neccessary support functions to allow registering dynamically loaded
syscalls from the MOD_LOAD handlers. Helpers handle registration
failures semi-automatically.
2010-04-07 14:28:47 +00:00
Konstantin Belousov
9fb7bf5584 MFC r205318:
Properly handle compat32 calls to sctp generic sendmsd/recvmsg functions that
take iov.
2010-04-07 14:16:14 +00:00
Nathan Whitehorn
4ccf64eb2b MFC r205014,205015:
Provide groundwork for 32-bit binary compatibility on non-x86 platforms,
for upcoming 64-bit PowerPC and MIPS support. This renames the COMPAT_IA32
option to COMPAT_FREEBSD32, removes some IA32-specific code from MI parts
of the kernel and enhances the freebsd32 compatibility code to support
big-endian platforms.

This MFC is required for MFCs of later changes to the freebsd32
compatibility from HEAD.

Requested by:	kib
2010-04-07 02:24:41 +00:00
Randall Stewart
9b355dc71d MFC of 204670:
-------------------------
sched_getparam was just plain broke for time-share
processes. It did not return an error but instead
just let garbage be passed back. This I fix so
it actually properly translates the priority the
process is at to a posix's high means more priority.
I also fix it so that if the ULE scheduler has bumped
it up to a realtime process you get back a sane value
i.e. the highest priority (63 for time-share).

sched_setscheduler() had the setting of the
timeshare class priority disabled. With some notes
about rejecting the posix high numbers is greater
priority and use nice instead. This fix also
adjusts that to work, with the cavet that a t-s
process may well get bumped up or down i.e. the
setscheduler() will NOT change the nice value only
the current priority. I think this is reasonable
considering if the user wants to play with nice then
he can. At least all the posix'ish interfaces now
respond sanely.
-----------------------
2010-04-05 13:33:54 +00:00
Konstantin Belousov
003465f5f1 MFC r205317:
Remove dead statement.
2010-04-02 13:43:16 +00:00
Konstantin Belousov
131e8de2da MFC r205316:
Fix two style issues.
2010-04-02 13:39:30 +00:00
Marcel Moolenaar
dfeca18773 MFC rev 198341 and 198342:
o   Introduce vm_sync_icache() for making the I-cache coherent with
    the memory or D-cache, depending on the semantics of the platform.
    vm_sync_icache() is basically a wrapper around pmap_sync_icache(),
    that translates the vm_map_t argumument to pmap_t.
o   Introduce pmap_sync_icache() to all PMAP implementation. For powerpc
    it replaces the pmap_page_executable() function, added to solve
    the I-cache problem in uiomove_fromphys().
o   In proc_rwmem() call vm_sync_icache() when writing to a page that
    has execute permissions. This assures that when breakpoints are
    written, the I-cache will be coherent and the process will actually
    hit the breakpoint.
o   This also fixes the Book-E PMAP implementation that was missing
    necessary locking while trying to deal with the I-cache coherency
    in pmap_enter() (read: mmu_booke_enter_locked).
2010-03-31 02:43:58 +00:00
Edward Tomasz Napierala
fddc12138a MFC r200723:
Interpret VAPPEND correctly in vaccess_acl_nfs4(9).
2010-03-27 18:12:00 +00:00
Edward Tomasz Napierala
bf876fcd34 MFC r200273:
Don't add VAPPEND if the file is not being opened for writing.  Note that this
only affects cases where open(2) is being used improperly - i.e. when the user
specifies O_APPEND without O_WRONLY or O_RDWR.

Reviewed by:	rwatson
2010-03-27 18:09:40 +00:00