#
9956b3f5 |
| 10-Apr-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Do allow POSIX mqueue unlink privilege inside a jail, as we all all other POSIX mqueue privileges inside a jail.
|
#
5e3f7694 |
| 04-Apr-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Replace custom file descriptor array sleep lock constructed using a mutex and flags with an sxlock. This leads to a significant and measurable performance improvement as a result of access to shared
Replace custom file descriptor array sleep lock constructed using a mutex and flags with an sxlock. This leads to a significant and measurable performance improvement as a result of access to shared locking for frequent lookup operations, reduced general overhead, and reduced overhead in the event of contention. All of these are imported for threaded applications where simultaneous access to a shared file descriptor array occurs frequently. Kris has reported 2x-4x transaction rate improvements on 8-core MySQL benchmarks; smaller improvements can be expected for many workloads as a result of reduced overhead.
- Generally eliminate the distinction between "fast" and regular acquisisition of the filedesc lock; the plan is that they will now all be fast. Change all locking instances to either shared or exclusive locks.
- Correct a bug (pointed out by kib) in fdfree() where previously msleep() was called without the mutex held; sx_sleep() is now always called with the sxlock held exclusively.
- Universally hold the struct file lock over changes to struct file, rather than the filedesc lock or no lock. Always update the f_ops field last. A further memory barrier is required here in the future (discussed with jhb).
- Improve locking and reference management in linux_at(), which fails to properly acquire vnode references before using vnode pointers. Annotate improper use of vn_fullpath(), which will be replaced at a future date.
In fcntl(), we conservatively acquire an exclusive lock, even though in some cases a shared lock may be sufficient, which should be revisited. The dropping of the filedesc lock in fdgrowtable() is no longer required as the sxlock can be held over the sleep operation; we should consider removing that (pointed out by attilio).
Tested by: kris Discussed with: jhb, kris, attilio, jeff
show more ...
|
#
61b9d89f |
| 13-Mar-2007 |
Tor Egge <tegge@FreeBSD.org> |
Make insmntque() externally visibile and allow it to fail (e.g. during late stages of unmount). On failure, the vnode is recycled.
Add insmntque1(), to allow for file system specific cleanup when r
Make insmntque() externally visibile and allow it to fail (e.g. during late stages of unmount). On failure, the vnode is recycled.
Add insmntque1(), to allow for file system specific cleanup when recycling vnode on failure.
Change getnewvnode() to no longer call insmntque(). Previously, embryonic vnodes were put onto the list of vnode belonging to a file system, which is unsafe for a file system marked MPSAFE.
Change vfs_hash_insert() to no longer lock the vnode. The caller now has that responsibility.
Change most file systems to lock the vnode and call insmntque() or insmntque1() after a new vnode has been sufficiently setup. Handle failed insmntque*() calls by propagating errors to callers, possibly after some file system specific cleanup.
Approved by: re (kensmith) Reviewed by: kib In collaboration with: kib
show more ...
|
#
873fbcd7 |
| 05-Mar-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Further system call comment cleanup:
- Remove also "MP SAFE" after prior "MPSAFE" pass. (suggested by bde) - Remove extra blank lines in some cases. - Add extra blank lines in some cases. - Remove n
Further system call comment cleanup:
- Remove also "MP SAFE" after prior "MPSAFE" pass. (suggested by bde) - Remove extra blank lines in some cases. - Add extra blank lines in some cases. - Remove no-op comments consisting solely of the function name, the word "syscall", or the system call name. - Add punctuation. - Re-wrap some comments.
show more ...
|
Revision tags: release/6.2.0_cvs, release/6.2.0 |
|
#
6aeb05d7 |
| 11-Nov-2006 |
Tom Rhodes <trhodes@FreeBSD.org> |
Merge posix4/* into normal kernel hierarchy.
Reviewed by: glanced at by jhb Approved by: silence on -arch@ and -standards@
|
#
acd3428b |
| 06-Nov-2006 |
Robert Watson <rwatson@FreeBSD.org> |
Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking.
Sponsored by: nCircle
Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking.
Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
show more ...
|
#
5da56ddb |
| 26-Sep-2006 |
Tor Egge <tegge@FreeBSD.org> |
Use mount interlock to protect all changes to mnt_flag and mnt_kern_flag. This eliminates a race where MNT_UPDATE flag could be lost when nmount() raced against sync(), sync_fsync() or quotactl().
|
Revision tags: release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0 |
|
#
0f180a7c |
| 17-Apr-2006 |
John Baldwin <jhb@FreeBSD.org> |
Change msleep() and tsleep() to not alter the calling thread's priority if the specified priority is zero. This avoids a race where the calling thread could read a snapshot of it's current priority,
Change msleep() and tsleep() to not alter the calling thread's priority if the specified priority is zero. This avoids a race where the calling thread could read a snapshot of it's current priority, then a different thread could change the first thread's priority, then the original thread would call sched_prio() inside msleep() undoing the change made by the second thread. I used a priority of zero as no thread that calls msleep() or tsleep() should be specifying a priority of zero anyway.
The various places that passed 'curthread->td_priority' or some variant as the priority now pass 0.
show more ...
|
#
61d3a4ef |
| 01-Mar-2006 |
David Xu <davidxu@FreeBSD.org> |
Let kernel POSIX timer code and mqueue code to use integer as a resource handle, the timer_t and mqd_t types will be a pointer which userland will define it.
|
#
ba0360b1 |
| 22-Feb-2006 |
David Xu <davidxu@FreeBSD.org> |
Abstract function mqfs_create_node() to create a mqueue node.
|
#
03f70aec |
| 16-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
Replace selwakeuppri with selwakeup, let scheduler figure out appropriate thread priority.
|
#
dd1a6f53 |
| 12-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
Stop fiddling thread priority with msleep, eliminating unnecessary context switching. This improves performance about 30% on UP machine.
|
#
102178d0 |
| 09-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
Comment out mqfs_create_link. Inline some small functions.
|
#
9da8a32a |
| 06-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
o Turn on MPSAFE flag for mqueuefs. o Reuse si_mqd field in siginfo_t, this also gives userland information about which descriptor is notified.
|
#
052ea11c |
| 05-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
After reading some documents, I realized SIGEV_NONE != NULL, also fix code in mqueue_send_notification to handle SIGEV_NONE.
|
#
9947b459 |
| 05-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
Handle SIGEV_NONE, if notification is SIGEV_NONE, error status and return status will be set, but no notification will be registered. Increase hard limit of maxmsg to 100, so posixtestsuite ports can
Handle SIGEV_NONE, if notification is SIGEV_NONE, error status and return status will be set, but no notification will be registered. Increase hard limit of maxmsg to 100, so posixtestsuite ports can run.
show more ...
|
#
5ee2d4ac |
| 02-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
1. Cleanup including. 2. Set configuration value for CTL_P1003_1B_MESSAGE_PASSING.
|
#
a6de716d |
| 02-Dec-2005 |
David Xu <davidxu@FreeBSD.org> |
1. Check if message priority is less than MQ_PRIO_MAX. 2. Use getnanotime instead of getnanouptime. 3. Don't free message in _mqueue_send, mqueue_send will free it.
|
#
b2f92ef9 |
| 30-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Last step to make mq_notify conform to POSIX standard, If the process has successfully attached a notification request to the message queue via a queue descriptor, file closing should remove the atta
Last step to make mq_notify conform to POSIX standard, If the process has successfully attached a notification request to the message queue via a queue descriptor, file closing should remove the attachment.
show more ...
|
#
f72b11a4 |
| 27-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Fix a stupid compiler warining, remove a redundant line.
|
#
47bf2cf9 |
| 27-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Change filesystem name from mqueue to mqueuefs for style consistent.
Suggested by: rwatson
|
#
655291f2 |
| 26-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Bring in experimental kernel support for POSIX message queue.
|