dragonfly.git
14 years agoRemove WARNS?=6 from two Makefiles where it is not needed.
Sascha Wildner [Sun, 7 Mar 2010 08:04:09 +0000 (09:04 +0100)]
Remove WARNS?=6 from two Makefiles where it is not needed.

WARNS is 6 by default in bin/, games/, sbin/, usr.bin/ and usr.sbin/
(per Makefile.inc) and only needs to be specified explicitly there
for utilities which need WARNS < 6.

14 years agomptable - raise WARNS to 6
YONETANI Tomokazu [Sun, 7 Mar 2010 04:24:45 +0000 (13:24 +0900)]
mptable - raise WARNS to 6

14 years agomptable - factor out the MP_SIG lookup code
YONETANI Tomokazu [Sun, 7 Mar 2010 03:47:49 +0000 (12:47 +0900)]
mptable - factor out the MP_SIG lookup code

14 years agomptable - prepare to raise WARNS
YONETANI Tomokazu [Sun, 7 Mar 2010 04:46:08 +0000 (13:46 +0900)]
mptable - prepare to raise WARNS

- do not declare extern optreset, which is not used.
- constify lookup tables
- fix printf format strings

14 years agomptable - use fixed-size integers in the structures; fixes x86_64
YONETANI Tomokazu [Sun, 7 Mar 2010 03:08:24 +0000 (12:08 +0900)]
mptable - use fixed-size integers in the structures; fixes x86_64

14 years agomq_receive.2: Add missing space.
Sascha Wildner [Sat, 6 Mar 2010 14:24:03 +0000 (15:24 +0100)]
mq_receive.2: Add missing space.

14 years agotaskqueue.9: Do some mdoc cleanup & add missing MLINKS.
Sascha Wildner [Sat, 6 Mar 2010 09:03:44 +0000 (10:03 +0100)]
taskqueue.9: Do some mdoc cleanup & add missing MLINKS.

14 years agokernel - Remove msf buffer code
Samuel J. Greear [Fri, 5 Mar 2010 18:07:43 +0000 (11:07 -0700)]
kernel - Remove msf buffer code

* MSF Buffers are no longer consumed by any kernel subsystem,
  remove them and free up 32MB of KVA

14 years agopci_alloc_msix: Fail if no MSI-X vectors available
Michael Neumann [Fri, 5 Mar 2010 23:20:12 +0000 (00:20 +0100)]
pci_alloc_msix: Fail if no MSI-X vectors available

Otherwise bootverbose could lead to a kernel crash.
This commit also lets the igb driver correctly fall-back
to non MSI-X code. MSI-X is currently not supported by
DragonFly.

14 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Michael Neumann [Fri, 5 Mar 2010 22:30:03 +0000 (23:30 +0100)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

14 years agoUnbreak buildkernel / mxge(4)
Michael Neumann [Fri, 5 Mar 2010 22:26:48 +0000 (23:26 +0100)]
Unbreak buildkernel / mxge(4)

Partially revert commit 0a702a628e2af43ec0cb538349278b4d98993572.

14 years agofortune(6): fix more typos, whitespace, remove dupes
Ulrich Spörlein [Sat, 6 Feb 2010 10:19:26 +0000 (11:19 +0100)]
fortune(6): fix more typos, whitespace, remove dupes

Fixes are courtesy of FreeBSD.

14 years agoMerge branch 'master' of git://git.dragonflybsd.org/dragonfly
Michael Neumann [Fri, 5 Mar 2010 18:09:41 +0000 (19:09 +0100)]
Merge branch 'master' of git://git.dragonflybsd.org/dragonfly

14 years agoe1000 - Make igb driver compile on DragonFly
Michael Neumann [Fri, 5 Mar 2010 18:07:53 +0000 (19:07 +0100)]
e1000 - Make igb driver compile on DragonFly

The driver itself does not work. The devices successfully
attach, but when trying to set an IP address it hangs.
More work needs to go into this driver.

14 years agoHAMMER VFS - Ensure sufficient free memory is available before large allocation
Matthew Dillon [Fri, 5 Mar 2010 00:06:53 +0000 (16:06 -0800)]
HAMMER VFS - Ensure sufficient free memory is available before large allocation

* The HAMMER rebalancing code can be a heavy user of kernel memory when
  collecting B-Tree nodes to rebalance.

  Call the new vm_wait_nominal() function before allocating said memory
  in an attempt to avoid VM/VFS deadlocks when memory is low.

Reported-by: Francois Tigeot <ftigeot@wolfpond.org>
14 years agokernel - vm - add vm_wait_nominal()
Matthew Dillon [Fri, 5 Mar 2010 00:05:38 +0000 (16:05 -0800)]
kernel - vm - add vm_wait_nominal()

* Add vm_wait_nominal(), a function which activates the pageout daemon
  if necessary and waits for sufficient memory to become free for
  a kernel heavy user.

14 years agocompilers.conf.5: Clarify some more.
Sascha Wildner [Thu, 4 Mar 2010 17:25:32 +0000 (18:25 +0100)]
compilers.conf.5: Clarify some more.

14 years agoAdd device sg to LINT.
Sascha Wildner [Thu, 4 Mar 2010 07:47:10 +0000 (08:47 +0100)]
Add device sg to LINT.

14 years agoFix typos in manual pages and user visible messages.
Sascha Wildner [Thu, 4 Mar 2010 06:00:42 +0000 (07:00 +0100)]
Fix typos in manual pages and user visible messages.

14 years agoSort the SEE ALSO sections in some manual pages.
Sascha Wildner [Thu, 4 Mar 2010 05:01:02 +0000 (06:01 +0100)]
Sort the SEE ALSO sections in some manual pages.

14 years agokernel - pmap (i386) - Reduce kmem use for foreign pmap mapping
Matthew Dillon [Thu, 4 Mar 2010 01:53:37 +0000 (17:53 -0800)]
kernel - pmap (i386) - Reduce kmem use for foreign pmap mapping

* We've been having problems running out of KVA on i386 systems due to
  numerous reasons.  KVA use by the kernel is just too tight.

* Reserve space for foreign pmap page table mappings on a cpu-by-cpu basis
  instead of for SMP_MAXCPU.  This reduces KVM use from 68MB to (ncpu*4MB).
  Use the APT entry for cpu0 and use kmem_alloc_nofault() for the APs.

  This frees up 52MB of KVA which doesn't sound like a lot but actually
  is.

* Add an alignment argument to kmem_alloc_nofault() and vm_map_find().

* vm_map_findspace() already had an alignment argument, but adjust the
  value passed to be at least PAGE_SIZE (this has no operational effect
  but is more correct).

14 years agoVN - Remove use of IO_DIRECT, Improve lock performance for reads
Matthew Dillon [Wed, 3 Mar 2010 07:15:27 +0000 (23:15 -0800)]
VN - Remove use of IO_DIRECT, Improve lock performance for reads

* Remove the use of IO_DIRECT.  This just doesn't work very well,
  particularly when the device backing the VN has a different logical
  block size than the device using VN.

  This will result in heavier use of the buffer cache and more
  (temporarily) duplicated data, but also has much better performance.

* Use LK_SHARED for VOP_READ()s instead of LK_EXCLUSIVE, which allows
  concurrent reads to be issued.

Reported-by: Vincent Stemen <vince.dragonfly@hightek.org>
14 years agoHAMMER VFS - Do a better job with IO_DIRECT
Matthew Dillon [Wed, 3 Mar 2010 06:50:10 +0000 (22:50 -0800)]
HAMMER VFS - Do a better job with IO_DIRECT

* IO_DIRECT is rather nasty, only actually honor it if the write() operation
  fits the buffer.

Reported-by: Vincent Stemen <vince.dragonfly@hightek.org>
14 years agoHAMMER VFS - Fix assertion in hammer_btree_mirror_propagate()
Matthew Dillon [Wed, 3 Mar 2010 01:29:14 +0000 (17:29 -0800)]
HAMMER VFS - Fix assertion in hammer_btree_mirror_propagate()

* hammer_btree_mirror_propagate() asserts it is on an internal node but
  recovery operations can now place us on a leaf, so just loop if we
  are on a leaf and remove the assertion.

14 years agocpdup - Add -VV to ignore mtime
Matthew Dillon [Tue, 2 Mar 2010 23:58:07 +0000 (15:58 -0800)]
cpdup - Add -VV to ignore mtime

* The cpdup -V option verifies the contents of the files even if the
  mtime is the same, but also (currently) recopies the file without
  bothering to verify the contents if the mtime is different, even if
  the contents is the same.

* Add an extension, -VV, which verifies the contents of the file and
  ignores mtime entirely.  A copy is only made if the ownerchip,
  flags, modes, or content differs.

14 years agoHAMMER VFS - Correct seriuos bug in hammer rebalancing code
Matthew Dillon [Tue, 2 Mar 2010 22:36:40 +0000 (14:36 -0800)]
HAMMER VFS - Correct seriuos bug in hammer rebalancing code

* Correct a serious bug in the hammer rebalancing code which can cause
  incremental mirrors to lose track of records, resulting in missing records
  on the slave (missing files, missing directory entries, or files
  which improperly contain data holes).

  The rebalancing code needs to update the mirror_tid chain when moving
  elements from one node to another.  It updated the parent node but failed
  to update the internal element linkage pointing to the child.

  This can cause incremental mirroring operations to fail to copy some B-Tree
  records.

* Correct a possible issue between the rebalancing code and B-Tree
  iterations during mirror-write operations.

  When the rebalancer moves an element from one child node to another and
  a cursor exists which is pointing at the parent internal node, the
  cursor will now be mispositioned because elements which were to the
  right of the cursor are now to the left of the cursor.

  Adjust hammer_cursor_moved_element() to properly move the cursor and
  print a debug message to the console so the code path can be tested.

* These bugs are serious but also very rare.  There is a good chance that
  your slaves are just fine, but we recommend validating their contents
  anyway.

* PROCEDURE FOR FIXING BROKEN SLAVES:  With a little help from the sysop
  these problems are self-correcting with the new kernel code in place.

  First make sure both the master and slave are running a kernel with
  the mirroring fix.

  Second, verify the slave matches the master (taking into account
  changes being made to live files).  Probably the easiest way to do
  this is as follows (make sure you push into the softlink, not cpdup
  the softlink itself):

cpdup -v -V /pfs/master/. /pfs/slave/.

  This should get you a list of missing files and directories.  For
  each missing file or directory do a chmod, chown, or chflags on the
  master, then change it back.  This will propagate the updated inode
  to the slave So for example:

chflags nodump file
chflags dump file

  If file data is corrupt on the mirroring slave you need to recopy the
  file on the master, which can be done with dd conv=notrunc:

dd if=file of=file bs=32k conv=notrunc

  These actions will cause the master to re-mirror the related files and
  data to the slave.

Reported-by: Stathis Kamperis <beket@crater.dragonflybsd.org>
14 years agoHAMMER Utility - Enhance the mirroring and show code
Matthew Dillon [Tue, 2 Mar 2010 22:34:40 +0000 (14:34 -0800)]
HAMMER Utility - Enhance the mirroring and show code

* mirror-read will now run the histogram just like mirror-stream does.

* improve versbose output when doing a mirror-read or mirror-stream.

* hammer show now validates the mirror_tid in the B-Tree and produces
  a 'B' indication with the 'M' flag if it finds a bad mirror_tid
  chaining.

14 years agolibc/stdtime: Sync localtime.c with tzcode2010c from elsie.
Sascha Wildner [Tue, 2 Mar 2010 15:42:36 +0000 (16:42 +0100)]
libc/stdtime: Sync localtime.c with tzcode2010c from elsie.

More core dump avoidance work.

14 years agoSync zoneinfo database with tzdata2010c from elsie.
Sascha Wildner [Tue, 2 Mar 2010 15:41:18 +0000 (16:41 +0100)]
Sync zoneinfo database with tzdata2010c from elsie.

southamerica:   8.40 -> 8.41

Paraguay changes DST schedule, starting in April now.

14 years agoRegenerate the pciconf(8) database
Sascha Wildner [Tue, 2 Mar 2010 15:09:28 +0000 (16:09 +0100)]
Regenerate the pciconf(8) database

...from the following files:

Hart:    Jan 22, 2008 (version 671)
Boemler: Mar  1, 2010
Mares:   Mar  1, 2010

14 years agolibc/locale: Use _getprogname().
Sascha Wildner [Tue, 2 Mar 2010 11:16:02 +0000 (12:16 +0100)]
libc/locale: Use _getprogname().

14 years agolibc/citrus: Forward declare some structs to fix some warnings.
Sascha Wildner [Tue, 2 Mar 2010 11:07:47 +0000 (12:07 +0100)]
libc/citrus: Forward declare some structs to fix some warnings.

14 years agotalk - unbreak for unix98 ptys
Alex Hornung [Tue, 2 Mar 2010 07:45:20 +0000 (07:45 +0000)]
talk - unbreak for unix98 ptys

* Unbreak talk, which relied on seeing old-style ptys. When I introduced
  the unix98 ptys.

* This assumption would not work anymore, since the
  last slash is not the slash after /dev, but rather the one after
  /dev/pts. Later opening 0 instead of pts/0 would give an error.

Reported-by: Peter Avalos, Matt Dillon
14 years agokernel - cleanup some unnecessary casts
Matthew Dillon [Tue, 2 Mar 2010 00:12:26 +0000 (16:12 -0800)]
kernel - cleanup some unnecessary casts

* Adjust disk_msg_core() and friends to not make unnecessasry casts
  when playing with LWKT messages.

* In disk_msg_send_sync() call lwkt_waitmsg() instead of lwkt_waitport(),
  which cleans up the code flow a bit.

14 years agokernel - Move grow_stack code in fault path to improve fault performance
Matthew Dillon [Tue, 2 Mar 2010 00:09:41 +0000 (16:09 -0800)]
kernel - Move grow_stack code in fault path to improve fault performance

* grow_stack() calls were being performed unconditionally during a
  page fault.  Shift the code over to vm_fault() and only run it if
  the vm_map_lookup() call fails.

* Also take this opportunity to remove trapwrite() (added by Matt).

Submitted-by: Venkatesh Srinivas <me@endeavour.zapto.org>
14 years agokernel - VN - add missing disk_destroy() in module unload path
Matthew Dillon [Tue, 2 Mar 2010 00:07:25 +0000 (16:07 -0800)]
kernel - VN - add missing disk_destroy() in module unload path

* The module unload was leaving the disk list corrupted.  Add a missing
  disk_destroy() call.

* Fixes certain bulk-build issues (apparently the bulk build tries to
  unload and reload the VN driver at some point for reasons unknown).

14 years agotmpfs - Add support for setting the root uid/gid/mode for the tmpfs mount.
Matthew Dillon [Mon, 1 Mar 2010 01:02:40 +0000 (17:02 -0800)]
tmpfs - Add support for setting the root uid/gid/mode for the tmpfs mount.

* Link uid/gid/mode setup from mount_tmpfs into the tmpfs VFS.

Submitted-by: Naoya Sugioka <naoya.sugioka@gmail.com>
14 years agoMerge branch 'master' of /repository/git/dragonfly
Peter Avalos [Sun, 28 Feb 2010 04:04:54 +0000 (04:04 +0000)]
Merge branch 'master' of /repository/git/dragonfly

14 years agorc.conf.5: Remove bogus mdconfig(8) reference.
Sascha Wildner [Sun, 28 Feb 2010 02:51:03 +0000 (03:51 +0100)]
rc.conf.5: Remove bogus mdconfig(8) reference.

14 years agoMerge branch 'vendor/OPENSSL'
Peter Avalos [Sun, 28 Feb 2010 00:31:33 +0000 (00:31 +0000)]
Merge branch 'vendor/OPENSSL'

14 years agoImport OpenSSL-0.9.8m.
Peter Avalos [Sun, 28 Feb 2010 00:07:00 +0000 (00:07 +0000)]
Import OpenSSL-0.9.8m.

This new OpenSSL version is a security and bugfix release which
implements RFC5746 to address renegotiation vulnerabilities mentioned in
CVE-2009-3555. For a complete list of changes, please see the CHANGES
file.

14 years agong_eiface.4: Comment out some xrefs to ng_vlan(4) which we don't have.
Sascha Wildner [Sat, 27 Feb 2010 08:49:03 +0000 (09:49 +0100)]
ng_eiface.4: Comment out some xrefs to ng_vlan(4) which we don't have.

14 years agotmpfs(5): Remove old initialization (overrode prior init of vop_bmap).
Sascha Wildner [Fri, 26 Feb 2010 12:22:45 +0000 (13:22 +0100)]
tmpfs(5): Remove old initialization (overrode prior init of vop_bmap).

14 years agokernel - Remove msf_buf dependency from VFS Journals
Samuel J. Greear [Thu, 25 Feb 2010 16:11:16 +0000 (09:11 -0700)]
kernel - Remove msf_buf dependency from VFS Journals

* UIO writes (VOP_WRITE case) are now handled by a copyin() directly to the
journal buffer.

* VOP_PUTPAGES case is now handled with XIO directly instead of with msf_buf's
as an abstraction over XIO.

14 years agokernel - Initialize xio->xio_bytes properly in xio_init_pages()
Samuel J. Greear [Thu, 25 Feb 2010 16:06:53 +0000 (09:06 -0700)]
kernel - Initialize xio->xio_bytes properly in xio_init_pages()

14 years agoaps(4): use DRIVERSLEEP instead of tsleep
Constantine A. Murenin [Thu, 25 Feb 2010 05:54:19 +0000 (00:54 -0500)]
aps(4): use DRIVERSLEEP instead of tsleep

14 years agonetsmb: Fix a warning and put smb_usr.c under -Werror, too.
Sascha Wildner [Wed, 24 Feb 2010 20:45:09 +0000 (21:45 +0100)]
netsmb: Fix a warning and put smb_usr.c under -Werror, too.

14 years agoAdd unifdef(1) to the bootstrap-tools.
Sascha Wildner [Wed, 24 Feb 2010 15:41:53 +0000 (16:41 +0100)]
Add unifdef(1) to the bootstrap-tools.

This is needed for generation of libexpat's bsdxml.h.

Reported-by: rpaulo
14 years agodevice_add_child.9: spelling and grammar
Constantine A. Murenin [Wed, 24 Feb 2010 05:06:49 +0000 (00:06 -0500)]
device_add_child.9: spelling and grammar

14 years agolibraries - Add missing LIBBSDXML line.
Matthew Dillon [Tue, 23 Feb 2010 22:23:05 +0000 (14:23 -0800)]
libraries - Add missing LIBBSDXML line.

Suggested-by: rpaulo
14 years agotop: Fix man page
Jan Lentfer [Tue, 23 Feb 2010 19:15:27 +0000 (20:15 +0100)]
top: Fix man page

Explanation for column "C" on multi-CPU
machines was missing.

14 years agolibexpat - Fix buildworld
Matthew Dillon [Tue, 23 Feb 2010 18:41:20 +0000 (10:41 -0800)]
libexpat - Fix buildworld

* Fix library symbol.  DragonFly's /bin and /sbin are statically linked,
  we don't have or need a /lib.

14 years agolibexpat - Bring in libexpat from contrib, name it libbsdxml
Matthew Dillon [Tue, 23 Feb 2010 17:45:29 +0000 (09:45 -0800)]
libexpat - Bring in libexpat from contrib, name it libbsdxml

* Will be used in rpaulo's wifi port update.

Taken-from: FreeBSD

14 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Tue, 23 Feb 2010 17:41:46 +0000 (09:41 -0800)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

14 years agocontrib/expat - Apply two vendor fixes for CVE-2009-3720.
Matthew Dillon [Tue, 23 Feb 2010 17:39:50 +0000 (09:39 -0800)]
contrib/expat - Apply two vendor fixes for CVE-2009-3720.

Taken-from: FreeBSD

14 years agocontrib/expat - Add README.DRAGONFLY
Matthew Dillon [Tue, 23 Feb 2010 17:38:19 +0000 (09:38 -0800)]
contrib/expat - Add README.DRAGONFLY

14 years agoMerge branch 'vendor/EXPAT'
Matthew Dillon [Tue, 23 Feb 2010 17:36:26 +0000 (09:36 -0800)]
Merge branch 'vendor/EXPAT'

14 years agoImport expat-2.0.1
Matthew Dillon [Tue, 23 Feb 2010 17:36:09 +0000 (09:36 -0800)]
Import expat-2.0.1

14 years agocompilers.conf.5: Add IMPLEMENTATION NOTES for some more details.
Sascha Wildner [Tue, 23 Feb 2010 17:33:45 +0000 (18:33 +0100)]
compilers.conf.5: Add IMPLEMENTATION NOTES for some more details.

14 years agotmpfs.5: Clean up SEE ALSO a bit.
Sascha Wildner [Tue, 23 Feb 2010 16:13:31 +0000 (17:13 +0100)]
tmpfs.5: Clean up SEE ALSO a bit.

14 years agoAdjust the compiler wrapper script to use pkgsrc's clang for CCVER=clang.
Sascha Wildner [Tue, 23 Feb 2010 15:09:06 +0000 (16:09 +0100)]
Adjust the compiler wrapper script to use pkgsrc's clang for CCVER=clang.

* Move the definitions for the SVN version to 'clangsvn'.

* Expand the compilers.conf(5) manual page a bit and give more (better)
  examples.

Thanks to Jim Chapman <cchapman8@cogeco.ca> for help with testing.

14 years agoe1000 - Complete port of if_em
Michael Neumann [Mon, 22 Feb 2010 22:33:36 +0000 (23:33 +0100)]
e1000 - Complete port of if_em

14 years agonet - Add some #defines from FreeBSD
Michael Neumann [Mon, 22 Feb 2010 22:03:59 +0000 (23:03 +0100)]
net - Add some #defines from FreeBSD

14 years agokernel - Fix some rare pmap races in i386 and x86_64 (followup)
Matthew Dillon [Mon, 22 Feb 2010 17:51:08 +0000 (09:51 -0800)]
kernel - Fix some rare pmap races in i386 and x86_64 (followup)

* Fix build issue with vkernels

Reported-by: corecode
14 years agoswapcache - documentation update (data caching, read/write concurrency)
Matthew Dillon [Mon, 22 Feb 2010 16:23:04 +0000 (08:23 -0800)]
swapcache - documentation update (data caching, read/write concurrency)

* Update the manual page to expand on issues when caching bulk data,
  including read/write concurrency issues with SSDs.

14 years agoe1000 - Adapt OS-dependent part
Michael Neumann [Mon, 22 Feb 2010 14:54:51 +0000 (15:54 +0100)]
e1000 - Adapt OS-dependent part

14 years agoe1000 - Literally import e1000 driver from FreeBSD
Michael Neumann [Mon, 22 Feb 2010 14:44:03 +0000 (15:44 +0100)]
e1000 - Literally import e1000 driver from FreeBSD

The e1000 driver consists of the em and igb drivers.
Making it compile under DragonFly will follow.

14 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Samuel J. Greear [Mon, 22 Feb 2010 09:00:47 +0000 (02:00 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

14 years agokernel - Refactor vnode_free_list, vnode reuse algorithm
Matthew Dillon [Mon, 22 Feb 2010 15:40:05 +0000 (07:40 -0800)]
kernel - Refactor vnode_free_list, vnode reuse algorithm

* Rip out most of he VAGEx stuff.  It might come back in another form
  later.

* Split the vnode_free_list into three parts, separated by two markers
  (vnode_free_mid1 and vnode_free_mid2).

* Insert vnodes on the free list based on the following.  New vnodes
  are allocated from the base of the list.

  At the HEAD - If the vnode is VRECLAIMED (i.e. dead)
  end of first section - If the vnode has no cached VM or SWAP data
  end of second section - If the vnode has cached SWAP data and no cached VM
  at the TAIL - If the vnode has cached VM data

* Implement a rover to slowly scan vnodes in the list when allocating
  and shift them to the appropriate section.  This fixes a degenerate
  condition in the placement of the markers.

* A Vnode is removed and usually immediately reinserted whenever it
  is accesesd by userland but not held open, giving us a LRU-like
  algorithm within each section of the list but non-LRU-like transits
  between sections of the list.

  Transits between sections are determined more by how the VM system
  recycles related VM cache pages.  Cached SWAP data only occurs if
  the swapcache is turned on.

* Future: Might use VAGE to implement a second go-around in the queue
  or a burst re-placement in the queue when the data set is found to
  be too big to fit.

14 years agokernel - swapcache - Fix snocache and cache flags propagation, fix PG_NOTMETA
Matthew Dillon [Mon, 22 Feb 2010 07:44:27 +0000 (23:44 -0800)]
kernel - swapcache - Fix snocache and cache flags propagation, fix PG_NOTMETA

* The namecache was not always propagating the snocache and cache
  chflags flags.  Now it is.  However, the flags no longer propagate
  across mount points.

* The vm_page PG_NOMETA flag was being improperly applied to regular
  files.  It only applies to VCHR vnodes.

* blogbench tests show significant improvement but swapcache is still
  missing some data or meta-data somewhere.

14 years agochflags, swapcache manual page updates - cache flag does not cross mounts
Matthew Dillon [Mon, 22 Feb 2010 07:42:12 +0000 (23:42 -0800)]
chflags, swapcache manual page updates - cache flag does not cross mounts

* The cache and noscache flags do not cross mount points any more.

14 years agokernel - NFS - Add the 'cache' flag to enable swapcache on a NFS mount
Matthew Dillon [Mon, 22 Feb 2010 07:40:43 +0000 (23:40 -0800)]
kernel - NFS - Add the 'cache' flag to enable swapcache on a NFS mount

* The current round of swapcache work doesn't propagate the cache flag
  across mount points so NFS needs a cache mount flag.

14 years agoTest commit
Samuel J. Greear [Mon, 22 Feb 2010 07:23:12 +0000 (00:23 -0700)]
Test commit

14 years agokernel - Remove some debug kprintf()s
Matthew Dillon [Mon, 22 Feb 2010 02:49:01 +0000 (18:49 -0800)]
kernel - Remove some debug kprintf()s

* Remove "warning, locked buf ..., race corrected" debugging kprintf.

14 years agokernel - Fix some rare pmap races in i386 and x86_64 (followup)
Matthew Dillon [Mon, 22 Feb 2010 02:47:34 +0000 (18:47 -0800)]
kernel - Fix some rare pmap races in i386 and x86_64 (followup)

* pmap_interlock_wait() is SMP-only.  Fix UP build.

* pmap_setlwpvm for i386 was missing a call to pmap_interlock_wait()

14 years agokernel - SWAP CACHE part 22/many - Fix counter overflow introduced in part 21
Matthew Dillon [Mon, 22 Feb 2010 02:33:43 +0000 (18:33 -0800)]
kernel - SWAP CACHE part 22/many - Fix counter overflow introduced in part 21

* vm_swapcache_inactive_heuristic can overflow, making it extremely negative
  and causing swapcache writing to cease for a long period of time.

* Two-in-one fix.  Check if it is too negative and reset it.  This also
  automatically adjusts the heuristic if the sysop manually changes
  the hysteresis to a smaller value.

14 years agokernel - Fix some rare pmap races in i386 and x86_64.
Matthew Dillon [Mon, 22 Feb 2010 02:23:13 +0000 (18:23 -0800)]
kernel - Fix some rare pmap races in i386 and x86_64.

* Adjust pmap_inval_init() to enter a critical section and add
  a new pmap_inval_done() function which flushes and exits it.

  It was possible for an interrupt or other preemptive action to
  come along during a pmap operation and issue its own pmap operation,
  potentially leading to races which corrupt the pmap.

  This case was tested an could actually occur, though the damage (if any)
  is unknown.  x86_64 machines have had a long standing and difficult to
  reproduce bug where a program would sometimes seg-fault for no reason.
  It is unknown whether this fixes the bug or not.

* Interlock the pmap structure when invalidating pages using a bit
  in the pm_active field.

  Check for the interlock in swtch.s when switching into threads
  and print a nice warning if it occurs.

  It was possible for one cpu to initiate a pmap modifying operation
  while another switches into a thread using the pmap the first cpu
  was in the middle of modifying.  The case is extremely rare but can
  occur if the cpu doing the modifying operation receives a SMI
  interrupt, stalling it long enough for the other cpu to switch
  into the thread and resume running in userspace.

* pmap_protect() assumed no races when clearing PG_RW and PG_M due
  to the pmap_inval operations it runs.  This should in fact be
  true with the above fixes.  However, the rest of the pmap code
  uses atomic operations so adjust pmap_protect() to also use atomic
  operations.

14 years agosetkey(8): Add missing token to fix a yacc warning.
Sascha Wildner [Mon, 22 Feb 2010 01:16:55 +0000 (02:16 +0100)]
setkey(8): Add missing token to fix a yacc warning.

14 years agoHAMMER Utility - Fix snapshots migration for non-default directories
YONETANI Tomokazu [Sun, 21 Feb 2010 22:36:59 +0000 (07:36 +0900)]
HAMMER Utility - Fix snapshots migration for non-default directories

Snapshots migration failed if the snapshots directory contained hyphens
or dots.  Also catch the case when it couldn't parse the name of a snapshot
symlink and give the operator a clue.

14 years agoMerge SUBDIRS and SUBDIRS3 and their LSYM* versions.
YONETANI Tomokazu [Sun, 21 Feb 2010 15:01:00 +0000 (00:01 +0900)]
Merge SUBDIRS and SUBDIRS3 and their LSYM* versions.
This also fixes three error messages caused by the wrong symlink
for dev/disk/mpt/mpilib, which doesn't actually belong to SUBDIRS3
because it has four directory components in the path.

14 years agokernel - TMPFS - Stabilization pass, fix assertion in nrmdir (again)
Matthew Dillon [Sun, 21 Feb 2010 19:41:03 +0000 (11:41 -0800)]
kernel - TMPFS - Stabilization pass, fix assertion in nrmdir (again)

* Oops, fix bug in last commit.  vp was garbage where it was being tested.

14 years agokernel - TMPFS - Stabilization pass, fix assertion in nrmdir
Matthew Dillon [Sun, 21 Feb 2010 16:41:15 +0000 (08:41 -0800)]
kernel - TMPFS - Stabilization pass, fix assertion in nrmdir

* Have tmpfs_nrmdir() test whether the vp is a directory and return
  the proper error before asserting that it is a directory.

* Fixes assertion panic if you attempt to rmdir a file in tmpfs.

14 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sun, 21 Feb 2010 16:12:15 +0000 (08:12 -0800)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

14 years agoaps(4): use more c99
Constantine A. Murenin [Sun, 21 Feb 2010 12:09:32 +0000 (07:09 -0500)]
aps(4): use more c99

14 years agoHAMMER - Fix mirroring between 32 and 64-bit machines
Michael Neumann [Sun, 21 Feb 2010 11:39:26 +0000 (12:39 +0100)]
HAMMER - Fix mirroring between 32 and 64-bit machines

We need to pack struct hammer_pseudofs_data as it had differing sizes
on 32-bit vs. 64-bit machines. As this structure is send over-the-wire
this lead to an early abort in the hammer mirroring code (cmd_mirror.c)
when mirroring a PFS from a 32-bit machine to a 64-bit machine or vice
versa as it sanity checks the packets it gets.

Even so the structure is stored on-media, the change in size is no
issue as the tail is zero-padded with reserved fields.

WARNING:

    After this change, mirroring between 64-bit machines predating
    this commit and updated 64-bit machines will no longer work.
    PLEASE UPDATE them all in one go or leave them unmodified.
    32-bit machines are not affected at all, as this commit does
    not change the size of the structure for 32-bit machines.

Discussed-with: Matthew Dillon

14 years agokernel - Update swapcache manual page, document meta-data/inode ratios
Matthew Dillon [Sun, 21 Feb 2010 02:41:58 +0000 (18:41 -0800)]
kernel - Update swapcache manual page, document meta-data/inode ratios

* Document the meta-data cache vs inode ratio when configuring swapcache
  for meta-data caching.

14 years agokernel - Update swapcache manual page, fix breakage in last commit
Matthew Dillon [Sun, 21 Feb 2010 02:22:12 +0000 (18:22 -0800)]
kernel - Update swapcache manual page, fix breakage in last commit

* Oops, a bunch of stuff was accidently removed in the last
  update, add it back in.

14 years agoacpi_thinkpad(4): the refresh function should be declarared as per prototype
Constantine A. Murenin [Sat, 20 Feb 2010 23:32:48 +0000 (18:32 -0500)]
acpi_thinkpad(4): the refresh function should be declarared as per prototype

* The refresh function should be static void, the inconsistency is again
  linked to 10f97674 (through bringing back the refresh function from 48cf177).

14 years agoacpi_thinkpad(4): bring back relevant changes from 20b3fb for acpi_thinkpad_refresh
Constantine A. Murenin [Sat, 20 Feb 2010 23:15:56 +0000 (18:15 -0500)]
acpi_thinkpad(4): bring back relevant changes from 20b3fb for acpi_thinkpad_refresh

14 years agoacpi_thinkpad(4): revert the half-done rename of acpi_thinkpad to acpi_ibm
Constantine A. Murenin [Sat, 20 Feb 2010 23:01:39 +0000 (18:01 -0500)]
acpi_thinkpad(4): revert the half-done rename of acpi_thinkpad to acpi_ibm

* 10f976 ("Sync ACPI with FreeBSD 7.2") from 2009-11-08 broke a number of
  functionality in acpi_thinkpad, whereas there were no interesting changes
  between acpi_ibm.c#rev1.15 and acpi_ibm.c#rev1.19 on FreeBSD
* `git show 20b3fb 32af04 10f976 acpi_thinkpad.c | patch -R -p5 acpi_thinkpad.c`
  brings us back to da42c7

14 years agokernel - TMPFS - Features, don't sync on umount, enforce snocache on root
Matthew Dillon [Sat, 20 Feb 2010 23:03:41 +0000 (15:03 -0800)]
kernel - TMPFS - Features, don't sync on umount, enforce snocache on root

* The umount code was syncing the contents of tmpfs to swap.  Fix it so it
  doesn't.

* Set the snocache flag on the tmpfs root node and silently enforce it on
  any chflags operation.  This prevents swapcache from trying to pageout
  file data from tmpfs (which is already backed by swap).

14 years agomandoc(1): Update to 1.9.15.
Sascha Wildner [Sat, 20 Feb 2010 22:35:54 +0000 (23:35 +0100)]
mandoc(1): Update to 1.9.15.

For a full list of changes, see <http://mdocml.bsd.lv/ChangeLog.html>.

Thanks-to: Kristaps Dzonsons

14 years agokernel - Update swapcache manual page
Matthew Dillon [Sat, 20 Feb 2010 20:10:27 +0000 (12:10 -0800)]
kernel - Update swapcache manual page

* The manual page is still a work in progress but I'm pushing in everything
  I learn about SSDs into it as I learn them.

  At least insofar as the Intel X25-V 40G SSD goes the vendor-specified
  40TB write endurance limit appears to assume high write magnifications
  and significant inefficiencies in write patterns.  The theoretical
  write endurance limit for this SSD with static wear leveling is 400TB.

  My expectation is a practical endurance somewhere between 150-250TB
  when configuring 32G of swap on the 40G X25-V.  The manual page will be
  updated as I get better numbers from testing.

* Specify that disklabel64 should be used when labeling a SSD, so
  the partitions are properly aligned.  Kernels as of id 4921cba1f6
  (late 2.5.x) will align the partition base for virgin disklabel64
  labels to a 1MB boundary.

  MLC flash uses 128K write blocks, SLC uses 64K.  Swapcache will write
  in 64K clusters but also tends to issue multiple linear writes, leading
  to fairly optimal SSD operation.

14 years agokernel - disklabel64 - Increase partition start alignment to 1 megabyte.
Matthew Dillon [Sat, 20 Feb 2010 18:11:28 +0000 (10:11 -0800)]
kernel - disklabel64 - Increase partition start alignment to 1 megabyte.

* Someone suggested that instead of using a 32K alignment we use a larger
  alignment.  I forgot who suggested it but after thinking about it a bit
  and messing around with swapcache on a SSD I decided it was a good idea.

  SSDs using MLC flash have a physical block size of 128K.  SLC flash has
  a physical block size of 64K.  Most typical cluster operations in
  DragonFly are 64K to 128K but clustered writes are often linear on disk
  leading to larger linear writes from the point of view of the physical
  drive's write cache.

  swapcache and swap operation tends to have even larger write linearities
  and write amplification effects on SSDs can be reduced to better than 1:2
  (verses the 1:10 the vendor typically assumes).

* Virgin disklabel64's layed down by the kernel will now align the
  start of the partition space to 1MB (1024 * 1024).  In for a penny,
  in for a pound.

* Adjust the manual page and note the benefits of using a larger alignment,
  particularly when swapcache is used with SSDs.

14 years agokernel - TMPFS - Stabilization pass, fix VM object leak, msync
Matthew Dillon [Sat, 20 Feb 2010 03:07:43 +0000 (19:07 -0800)]
kernel - TMPFS - Stabilization pass, fix VM object leak, msync

* The swap vm_object backing regular files was not being deallocated
  properly and leaked kernel memory.

* Truncate deleted files a little earlier in the INACTIVE path.

* Set MNTK_NOMSYNC.  This prevents msync(), sync(), and the
  periodic filesystem syncer from flushing pages to swap.

  VM pages related to tmpfs are only flushed based on memory
  pressure.

14 years agokernel - Add MNTK_NOMSYNC and OBJ_NOMSYNC
Matthew Dillon [Sat, 20 Feb 2010 03:05:56 +0000 (19:05 -0800)]
kernel - Add MNTK_NOMSYNC and OBJ_NOMSYNC

* Add MNTK_NOMSYNC and OBJ_NOMSYNC for tmpfs, which is used to
  disable msync operations.

14 years agousr.sbin - Include some missing programs in x86_64.
Antonio Huete Jimenez [Fri, 19 Feb 2010 18:44:34 +0000 (19:44 +0100)]
usr.sbin - Include some missing programs in x86_64.

Following programs were only in i386. Now they've been
included also in x86_64:

 apm
 apmd
 battd
 kgmon
 kgzip
 lptcontrol
 mptable
 rndcontrol
 sgsc (WARNS raised to 6)
 sicontrol
 spkrtest
 stallion (WARNS lowered)

14 years agokernel - Fix (unused) SEGEX_IDX macro
Matthew Dillon [Fri, 19 Feb 2010 20:29:31 +0000 (12:29 -0800)]
kernel - Fix (unused) SEGEX_IDX macro

* Fix missing paren in the macro.  The macro is not used but I'm going
  to keep it around anyway.

Submitted-by: Mohd Farid Kamarudin <mokamaru@gmail.com>
14 years agoHAMMER VFS - Reduce stalls during bulk file operations
Matthew Dillon [Fri, 19 Feb 2010 18:41:22 +0000 (10:41 -0800)]
HAMMER VFS - Reduce stalls during bulk file operations

* Track modifying inode operations on a per-PID basis (loosely) and
  call hammer_inode_wait_reclaims() earlier for those pids.

  The algorithm selects a wait point based on the process's perceived
  contribution to the inode load.  The greater the contribution, the
  more readily we stall the process in order to wait for related reclaims
  to process.

  Processes with lower loads have higher reclaim points and do not stall
  as readily as they did before.

* Remove waitreclaims calls based on B-Tree scans.  I'm not sure why I had
  this in there but it was creating an excessive number of unnecessary
  stalls, so if any problems crop up I'll have to find another way to deal
  with them.

* These changes (particularly the first) should reduce unnecessary stalls
  for the programs not doing heavy inode operations.  Hopefully that means
  rm -rf and tar extractions will not have as quite the detrimental effect
  on other processes as they did before.

14 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Fri, 19 Feb 2010 06:57:35 +0000 (22:57 -0800)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly