Displaying 1 51 of 34,100 commits (0.010s)

DragonFlyBSD — sys/vfs/hammer2 hammer2_chain.c hammer2_flush.c

hammer2 - refactor some chain bits, stabilization

* Refactor the hammer2_chain_t MODIFIED and UPDATE flags to not
  reference the chain.

* Automatically flag DESTROY on a chain on last-drop if chain->parent is
  NULL, and automatically clear UPDATE and try to clear MODIFY.  Add the
  chain to the delayed-flush queue if MODIFIED cannot be cleared.

* Fix a flags bug in hammer2_chain_hardlink_find() which could deadlock
  competing threads.

* The collect code now aggregates errors and the cluster check code now
  also aggregates errors.  This allows feeders to feed an error code to
  the collector.

* Fix rmdir and rename to disallow removal of non-empty directories.

* hammer2_inode_xop_flush() now proceeds with a flush if hmp->flushq
  is not empty, even if the chain is not marked for flushing.  This
  still needs some work.

* Add a sideq for dirty inodes that might have to be flushed.  Used for
  unlinked dirty inodes which might still be open.


    [4 lines not shown]

DragonFlyBSD — include wchar.h, lib/libc/gdtoa Symbol.map

Update some more symbols maps for libc

This continues the work towards versioning libc.  I found that a wchar
function, open_wmemstream(), had a prototype but was not implemented on
DragonFly (but it is on FreeBSD) so I filtered it out with #if 0 block.

DragonFlyBSD — lib/libc/stdlib merge.c

lib/libc/stdlib/merge.c: add "static" to match setup prototype
Delta File
+1 -1 lib/libc/stdlib/merge.c
+1 -1 1 file

DragonFlyBSD — sys/vfs/hammer2 hammer2_chain.c hammer2_xops.c

hammer2 - stabilization - blogbench, others

* Fix some (but not all) issues with lost chains on unmount that show
  up in a kmalloc pool warning.

* Fix a bug in hammer2_chain_create_indirect() which retained a stale
  { base, count } across possible parent chain modifications, resulting
  in corruption and/or a panic.

* Track chain lock counts on a per-thread basis and add some helpful
  assertions in the XOP processing loop.  Also add
  hammer2_chain_push_shared_lock() and hammer2_chain_pull_shared_lock()
  to helpfully transfer ownership of (shared locks only) between threads.

* Add missing cpu_lfence() after fifo read index test.  Ensures that
  the memory load of the chain occurs after the write index change has
  been detected.

* Change the XOP ABI a bit.  hammer2_xop_feed() now replicates the
  shared lock, giving one to the collector and allowing the caller
  to retain its own.  This way the locking state of the chain passed
  to it does not change from the point of view of the caller.

  This also fixes one or two lost chain locks in the XOPs.

DragonFlyBSD — sys/sys thread.h

kernel - Use unused thread_t field for lock tracker.

* Repurpose an unused struct thread field to add td_tracker.  Structure
  size does not change.  Used for debugging only.
Delta File
+1 -1 sys/sys/thread.h
+1 -1 1 file

DragonFlyBSD — sys/dev/drm drm_irq.c

drm: Bring back a KNOTE() call, unbreak vblank handling

* Userland programs were no longer properly notified of vblank events

* We can't use the drm_poll() function present in Linux and its
  explicit poll_wait() call on file_priv->event_wait without introducing
  a completely new kernel infrastructure. Add back the KNOTE() call.

Noticed-by: ivadasz, many
Delta File
+2 -0 sys/dev/drm/drm_irq.c
+2 -0 1 file

DragonFlyBSD — lib/libc/sys Makefile.inc

libc: Remove stack_protector.c from build

Both gcc47 and gcc50 use libssp for stack protection, so the stack
protector code appears to be obsolete.  On the direction of dillon,
just delist the source file in the makefile, and after a month with
some dports run experience, permanently remove stack-protector.c
from lib/libc/sys directory.
Delta File
+3 -1 lib/libc/sys/Makefile.inc
+3 -1 1 file

DragonFlyBSD — include ctype.h wctype.h, include/xlocale _ctype.h

Take II at unbreaking world

DragonFlyBSD — usr.bin/localedef ctype.c

Add bootstrap workaround needed by ctype.h addition for localedef
Delta File
+4 -0 usr.bin/localedef/ctype.c
+4 -0 1 file

DragonFlyBSD — usr.bin/localedef localedef.1

localedef.1: Clean up a bit.
Delta File
+110 -89 usr.bin/localedef/localedef.1
+110 -89 1 file

DragonFlyBSD — lib/libc/sys vmm.2 Makefile.inc

Add a small vmm(2) manual page for the related system calls.

Namely, vmm_guest_ctl(2) and vmm_guest_sync_addr(2).

It is based on a manual page which Mihai Carabas submitted to me a
rather long time ago (apologies, Mihai).
Delta File
+95 -0 lib/libc/sys/vmm.2
+3 -1 lib/libc/sys/Makefile.inc
+98 -1 2 files

DragonFlyBSD — usr.sbin/acpi/acpicall acpicall.c acpicall.8

acpicall(8): Add -U option for passing UUIDs as buffers.

Great for _DSM's.

Tested-by: tollens

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF8: fix a couple of number ctype definitions

During testing of new number ctype, I found a typo one of the CJK number
definitions and two Roman Numeral characters that were set as numbers but
should not be (according to equivalent python check).

DragonFlyBSD — include ctype.h wctype.h, include/xlocale _ctype.h

libc: Redefine "number" ctype - no longer alias of "digit"

FreeBSD extended ctypes to include numbers (e.g. isnumber()) but never
actually implemented it.  The isnumber() function was equivalent to the
isdigit() function in every case.

Now that DragonFly's ctype source files have number definitions, the
number ctype can finally be implemented.  It's given a new flag _CTYPE_N.
The isalnum() and iswalnum() functions have been changed to use this
flag rather than the _CTYPE_D digit flag.

While isalnum(), isnumber(), and their wide equivalents now return
different values in locale cases, the ishexnumber() and iswhexnumber()
functions are unchanged.  They are still aliases for isxdigit() and
iswxdigit().

Also change ctype.h for isdigit and isxdigit to use sbistype like the
other functions.

The "isnumber()" will not work until a full world build is made.  The
reason is that localedef is modified, but it's a bootstrap tool, so the
earlier version that does not support number ctype is still used in a
quickworld build.

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF8 locales: Fully consider "CIRCLED_" set as alphabet

This means defining the "A"-"Z" and "a"-"z" circled versions of the
Enclosed Alphanumerics block (0x2460-24FF) as hexidecimal digits and
defining the to-upper and to-lower conversions between the upper case
and lower case circled alphabets.

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF-8: Multiple improvements (and detection of possible issue)

This commit started out intending to fix "digit" definition on unicode,
which it mostly does, but a lot more happened in the end, namely:

 * digits apparently are not part of CLDR definition.  I added a section
   in the manual portion of UTF-8 source file that defines digit classes
   for generated sections.
 * Add numbers classification for entire UTF-8.  Currently DragonFly and
   all BSDs do not support "number" type.  However, localedef understands
   it (its supported on Illumos), but currently the number flag value is
   zero, so it's a no-op.  A short term goal is to have DragonFly be the
   first BSD with proper number ctype handling.
 * Redefine "special" ctype once and for all.  There is no definitive
   agreement on what "special" characters are.  According to wiki which
   got it from unicode, it starts with 33 characters (0x20 - 0x2F, 0x3A -
   0x40, 0x5B - 0x60, 0x7B - 0x7E).  However, localedef objects to <space>
   because it sets "graph" and "print" flags, and <space> can't be graph.
   As a result, the <space> is not considered "special" here.  Moreover,
   the punctuation in Latin-1 supplement is "special".  The division and
   multiplication signs are ambiguous, so I set them to special (since
   plus and minus signs are special).  Finally, with the most doubt, the
   punctuation of "general punctuation" block is also considered special
   although I couldn't find convincing evidence either way.  Given the
   lack of definition, I don't think "special" classification is really

    [31 lines not shown]

DragonFlyBSD — sbin/hammer2 hammer2.8, sbin/newfs_hammer2 newfs_hammer2.8

hammer2.8/newfs_hammer2.8: Some small fixes.

DragonFlyBSD — sys/vfs/hammer2 hammer2_thread.c hammer2_inode.c

hammer2 - stabilization - Fix bugs found by blogbench

* Make sure that any inode without an associated vnode gets put on
  the sideq if it is dirtied, otherwise it might not ever get flushed.

* Fix a SMP race in hammer2_xop_start_except().  For asynchronous completions,
  the xop can become invalid the instant we release our spinlock if another
  thread manages to process, retire, and free it.

DragonFlyBSD — sys/kern vfs_syscalls.c vfs_cache.c, sys/sys mount.h namecache.h

kernel - Improve namecache generation handling

* Reduce mount->mnt_namecache_gen from 64 to 32 bits and add a dummy
  field so the structure size does not change.

* Reduce namecache->nc_namecache_gen from 64 to 32 bits and add a
  second generation number to detect cache_unlink() and cache_rename()
  calls.  Bump the counter in cache_rename() and _cache_unlink().
  Structure size did not change.

* Refactor kern_rename() to use namecache->nc_generation to detect
  a larger subset of changes to the namecache entries which can leak
  in due to the temporary unlock of fromnd->nl_nch.ncp.

DragonFlyBSD — sys/vfs/hammer2 hammer2_xops.c hammer2_vnops.c

hammer2 - stabilization - Fix a number of bugs revealed by fsx and fsstress.

* Fix block rewriting against deduped data (dedup_off != 0 in call to
  hammer2_chain_resize()).  It was hitting an assertion due to chain->bytes
  not being properly updated.

* A coarse lock is required on the pfs around any link() or rename() which
  needs to mess with hardlink targets.

* Fix an inode meta.nlinks race between the frontend and the backend.  The
  frontend tracks a master copy of the inode.  The backend must also adjust
  meta.nlinks during link and unlink operations because it reads the field
  to determine if the hardlink target should be removed or not.

  This required fixes in hammer2_xop_nlink() and hammer2_xop_nremove() and
  some functional augmentation to hammer2_xop_nlink().

* Leave the target inode locked through the whole rename sequence, the
  hardlink target shifts are just too complex (for now) to be able to rely
  on inode locks.

* Fix an incorrect shared lock in hammer2_xop_nrename() which could result
  in a parent modification being made while held shared instead of exclusive.

* Add debug output for an issue in hammer2_xop_nrename() that has not yet
  been fixed (kprintf... ENOENT).

DragonFlyBSD — usr.sbin/acpi/acpicall acpicall.c

acpicall(8): Style fixes.
Delta File
+5 -5 usr.sbin/acpi/acpicall/acpicall.c
+5 -5 1 file

DragonFlyBSD — sys/dev/drm drm_irq.c drm_fops.c, sys/dev/drm/include/drm drmP.h

drm: Update drm_irq.c...

... to commit 56cc279b29c7b204fe7d0943509ae209b8b128db from Linux 3.18
drm: Fix deadlock between event_lock and vbl_lock/vblank_time_lock

Imre Vadász noticed a deadlock in the drm code handling vblank irqs.
Fortunately, this was also noticed by the Linux drm developers and fixing
the issue was just a matter of updating drm_irq.c

Reviewed-by: ivadasz

DragonFlyBSD — usr.sbin/acpi/acpicall acpicall.8

acpicall.8: Fix backslashes in method paths.
Delta File
+2 -2 usr.sbin/acpi/acpicall/acpicall.8
+2 -2 1 file

DragonFlyBSD — share/man/man4 acpi.4, sys/dev/acpica acpi.c acpiio_mcall.h

Add a acpicall(8) utility for debugging and tweaking purposes.

It is based on ports' sysutils/acpi_call (from Maxim Ignatenko) with
a few changes by me:

* Rename acpi_call -> acpicall.

* Ioctl handling is in the main acpi.ko module.

* To enable it, the debug.acpi.allow_method_calls tunable needs to
  be set.

* In acpi_call, the mandatory -p option was used to pass the method's
  namespace path. I removed the option and made the path acpicall(8)'s
  argument.

* Wrote a manual page and cleaned up a bit.

The separate acpiio_mcall.h file was added because ACPIIO_DO_MCALL's
argument struct uses ACPICA types, so it needs acpi.h which acpiio.h
(a public header used by some ports) so far didn't need. So to avoid
any hassle, I put the ACPIIO_DO_MCALL ioctl into a separate header
(it's only used by acpicall(8) anyway).

The changes to kdump(1) and truss(1) are to include and build with

    [3 lines not shown]

DragonFlyBSD — sys/kern uipc_usrreq.c

uipc: Assert 0->1 reference count transition; it must not happen.
Delta File
+2 -2 sys/kern/uipc_usrreq.c
+2 -2 1 file

DragonFlyBSD — sys/kern uipc_usrreq.c

uipc: Check unp_conn again after unp_connect().

Since the current unp's token could be released after unp_conn
assignment, we need to check unp_conn again even if unp_connect()
returns no error.
Delta File
+13 -6 sys/kern/uipc_usrreq.c
+13 -6 1 file

DragonFlyBSD — sys/vfs/hammer2 hammer2_bulkfree.c hammer2_inode.c

hammer2 - bug fixes

* When a dirty inode is reclaimed meta-data changes stored in the inode
  structure could sometimes get lost.  These changes must be synchronized
  to the chains in the underlying cluster nodes.

  Repurpose the unlinkq into a more general 'sideq' that handles both
  deletion-on-reclaim and dirty-meta-data-on-reclaim.

  Add a flag to the inode to represent when it is on the sideq, preventing
  situations where it might be added twice.

* Enable the free->allocated transition in the bulkfree code.  Add
  additional statistics and an underflow/overflow check for
  hammer2_bmap_data->avail.  Also adjust the volume free space
  in both directions.  Do not update any live field if 'nofree' is
  set for the chain (~1GB granularity representing possible
  frontend/backend races).

DragonFlyBSD — sbin/hammer hammer.8, sbin/hammer2 hammer2.8

hammer2 - Refactor bulkfree

* Change the bulkfree scan from breadth-first to depth-first.  This
  improves disk performance significantly (~2x) and is also needed for the
  duplicate-detection feature.

* Create an 8-way set-associative hash table similar to what the live
  dedup code uses.  Record the data_off for elements we have processed
  and detect if a duplicate is encountered so we do not have to re-process
  the duplicate subtree.

  Also prioritize the table based on the aggregate bottom-up inode count
  to reduce the chance that a top-level duplicate (aka snapshot) will get
  kicked out of the hash table.

* Clean up the hammer2_chain_scan() API, making it more bref-centric
  which allows us to avoid instantiating chain structures for leaf
  entities.  This significantly improves performance and increases
  flexibility.

* Manual page adjustments for kern.maxvnodes settings suggestions.

DragonFlyBSD — include wctype.h, lib/libc/locale iswctype.c

iswdigit(3), iswxdigit(3): Don't limit to U007F

We inherited a valid range of 00 - 127 for checking wide characters for
type digit or xdigit.

This is a mistake.  The relationship between digits (iswdigit) and
numbers (iswnumber, iswalnum) is that digits are a subset of numbers.
Digits are also a subset of xdigits (iswxdigit).  Digits are limited
to radix-10.  Numeric typess, on the other hand, include factions,
Roman Numerals, circled, etc.  It should cover the entire unicode
(UTF-8) range.

Unfortunately, DragonFly doesn't support the "number" type yet.  The
iswnumber and iswalnum just use the "digit" definition.  Note that
before this commit, they used full range for "digit" type while the
iswdigit() and iswdigits() themselves were limited.
Delta File
+2 -2 include/wctype.h
+2 -2 lib/libc/locale/iswctype.c
+4 -4 2 files

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF8 locales: Refine Latin supplement more

The multiplication and division sign were missing, and the control
characters were not outlined.  Also set superscript 1,2,3 as digits.
There are not showing up with iswdigit() function so that requires
further investigation (iswdigit does work for '0','1',...'9' however)

DragonFlyBSD — sys/kern uipc_usrreq.c

uipc: Hold per-unp token for all unp usrreq methods
Delta File
+47 -25 sys/kern/uipc_usrreq.c
+47 -25 1 file

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF8 locales: Include inverted exclamation mark too

I was off by one character when I defined the first range on the previous
commit.  It starts with an inverted exclamation mark, not the cent sign.

DragonFlyBSD — share/ctypedef en_US.UTF-8.src, tools/tools/locale/etc common.UTF-8.src manual-input.UTF-8

UTF8 locales: Complete implemenation of Latin-1 Supplement

The Latin-1 Supplement block of UTF-8 (U0080-U00FF) was not fully
implemented.  Specifically it was missing U00A1 (inverted exclamation)
through U00BF (inverted question mark).  Some popular characters this
affected was cent sign, pound sign, Yen sign, broken bar, copyright
symbol and superscripts.  On international keyboards, AltGR + number
key wouldn't output correctly.  This addition to the manual ctype input
definitions (and subsequent regenerations) will fix these issues.

Reported by: profmakx, ivadasz
Diagnostics: YRabbit

DragonFlyBSD — sys/vfs/hammer2 hammer2_synchro.c hammer2_thread.c

hammer2 - live dedup, cleanup

* First attempt at a live dedup.  The H2 strategy code now caches
  {data_off, crc} info to track recently accessed data blocks.  The
  cache is checked in the strategy_write code after device-level
  block encoding.  If we get a cache hit, the disk block is compared
  against the write data and reused if it matches.

* This 'live' dedup should catch most typical 'cp' or 'cpdup' style
  commands.  There will also be a bulk dedup capable of catching
  everything.

* Note that 'df' output might be a bit confusing because the 'Used'
  field represents the topology and does not take into account dedups.
  'Avail' is calculated from the actual freemap.  To make things look
  right the total disk size is adjusted upward so it matches
  Used+Avail.  This mechanism will likely change.

  Here is an example with one copy of /usr/src and 13 copies of /usr/src.
  The first copy eats around 872MB, and a 'du' will show each copy eating
  about the same.  But because of dedup each subsequent copy actually only
  eats around 160MB as you can see from the 'Avail' field:

    test40# df -h /mnt
    Filesystem                             Size   Used  Avail Capacity

    [10 lines not shown]

DragonFlyBSD — sys/bus/u4b/audio uaudio_pcm.c, sys/bus/u4b/gadget g_mouse.c g_keyboard.c

kernel: Use NULL for pointers in DRIVER_MODULE* calls.

DragonFlyBSD — sys Makefile

kernel: Add gnu/ to SUBDIR for MODULES_WITH_WORLD.

I forgot to do that in b993bb87ded5c733e1f0213efbef1be2660b2536.
Delta File
+1 -1 sys/Makefile
+1 -1 1 file

DragonFlyBSD — sys Makefile

kernel: Add gnu/ to SUBDIR for MODULES_WITH_WORLD.

I forgot to do that in b993bb87ded5c733e1f0213efbef1be2660b2536.
Delta File
+1 -1 sys/Makefile
+1 -1 1 file

DragonFlyBSD — sys/vfs/hammer2 hammer2_flush.c DESIGN

hammer2 - bulkfree work, rip-up cluster sync.

* bulkfree no longer attempts to flush.  Instead it deals with races against
  live by refusing to free blocks in L1 freemap chains that have been modified
  since the last sync.  This is a temporary workaround.

* No longer propagate modify_tid during a flush.  modify_tid is now used
  as a localized but cluster-aware TID (whereas mirror_tid is only localized
  to a cluster node).

* Start work on adding an update_tid to the blockref.  This will ultimately
  be used by the cluster synchronization code instead of modify_tid.

* Adjust the DESIGN document for the new synchronization concept.

DragonFlyBSD — sys/conf files

kernel: Adjust sys/conf/files for recent drm changes.
Delta File
+1 -1 sys/conf/files
+1 -1 1 file

DragonFlyBSD — sys/dev/video/cxm/cxm_iic Makefile

kernel/cxm: Add pcidevs.h to the Makefile (forgotten in dcb4b80).

DragonFlyBSD — sys/dev/video/cxm/cxm_iic Makefile

kernel/cxm: Add pcidevs.h to the Makefile (forgotten in dcb4b80).

DragonFlyBSD — sys/vfs/hammer2 hammer2_thread.c hammer2_chain.c

hammer2 - stabilization, sequencing

* Change the way XOPs are dispatched.  Instead of dispatching a XOP
  to specific service threads in the xgrp we now queue the XOP to a
  per-cluster-node xopq and allow the service threads to compete for
  work.

* Implement XOP dependency tracking.  Cluster nodes can complete execution
  of a XOP in any order and the frontend may complete early on-quorum while
  the XOP is still executing on other cluster nodes.  In this situation
  the inode lock may be released or cycled and another, dependent XOP may
  be issued, potentially executing out of order on the cluster nodes that
  have not yet finished (or possibly even started) the previous XOP.

  With the new queueing mechanism we also implement dependency tracking
  using the xop->ip1, ip2, and ip3 fields.  Dependent XOPs on (slow) cluster
  nodes will be held-back and ordering of dependent XOPS will be enforced.

  This fixes one of several cluster-related issues that will need to be
  addressed in order to free the frontend of slow backend cluster nodes.

* The strategy XOP now uses a per-XOP lock instead of an xgrp lock
  (xgrp is no longer used in the xop structure and XOPs are now
  distributed to potentially different xgrps for each cluster node).


    [10 lines not shown]

DragonFlyBSD — sys/dev/drm drm_dp_mst_topology.c drm_drv.c, sys/dev/drm/drm Makefile

drm/i915: Update to Linux 3.17

* With an Haswell stability fix from Linux 3.19

* Display-Port code not completely synced with Linux 3.17, this was
  breaking things as noticed by Rimvydas Jasinskas

* Broadwell and Cherryview support improvements

* Runtime power-management improvements

* Panel Self-Refresh (PSR) now enabled by default on Haswell and Broadwell,
  leading to further power savings

* Interrupt handling improvements

* backlight brightness locking fixes by Yellow Rabbit

* As usual, all sort of little fixes everywhere
Delta File
+2,715 -0 sys/dev/drm/drm_dp_mst_topology.c
+1,141 -348 sys/dev/drm/i915/intel_display.c
+882 -285 sys/dev/drm/drm_drv.c
+700 -271 sys/dev/drm/i915/intel_pm.c
+0 -664 sys/dev/drm/drm_stub.c
+493 -163 sys/dev/drm/i915/i915_irq.c
+6,151 -2,068 74 files not shown
+12,082 -3,799 80 files

DragonFlyBSD — lib/libc/tre-regex regex.h

<regex.h>: REG_ENOSYS was removed in Issue 7 but up to 6 it's needed.
Delta File
+3 -0 lib/libc/tre-regex/regex.h
+3 -0 1 file

DragonFlyBSD — lib/libc/locale setlocale.3 euc.5, share/man/man7 hier.7

Remove references to colldef(1) and mklocale(1) in manpages & comments.

DragonFlyBSD — . Makefile_upgrade.inc

Remove colldef(1) manpage too via 'make upgrade'.
Delta File
+1 -0 Makefile_upgrade.inc
+1 -0 1 file

DragonFlyBSD — sys/dev/drm/include/linux notifier.h backlight.h

drm: Add linux/notifier.h

Obtained-from: FreeBSD/OFED

DragonFlyBSD — sys/vfs/hammer2 hammer2_flush.c

hammer2 - hide some debugging kprintfs

* Hide debugging kprintfs related to flushes so we do not default to
  feeding console messages back to syslogd.
Delta File
+21 -9 sys/vfs/hammer2/hammer2_flush.c
+21 -9 1 file

DragonFlyBSD — sys/vfs/hammer2 hammer2_vfsops.c

hammer2 - cleanup

* Cleanup some printfs.
Delta File
+0 -3 sys/vfs/hammer2/hammer2_vfsops.c
+0 -3 1 file

DragonFlyBSD — sbin/mount_hammer2 mount_hammer2.c

mount_hammer2 - Allow serno/ relative paths

* Allow paths to omit the /dev.
Delta File
+16 -6 sbin/mount_hammer2/mount_hammer2.c
+16 -6 1 file