Matthew Dillon [Sat, 6 Jun 2015 23:17:41 +0000 (16:17 -0700)]
sysctl - SMP performance work
Performance work on the sysctl API. Most accesses (including nearly all
accesses made by libc) now use a shared lock, increasing concurrency in the
exec path.
* Acquire the sysctl global lock shared instead of exclusive for all normal
accesses. Use an exclusive lock for node and leaf creation or deletion.
Ultimately we will move to a fine-grained model and remove the global lock.
* Give each oid its own lockmgr lock. Automatically acquire this lock
shared for read access and exclusive for write access. This retains
just enough serialization of modifying (individual) sysctls to make
sense to programmers.
* Supply flag overrides to force shared or exclusive use. Force a shared
oid lock for name2oid(), allowing the sysctlbyname() path to nominally
use a shared lock.
Matthew Dillon [Sat, 6 Jun 2015 18:20:21 +0000 (11:20 -0700)]
libarchive - Ensure futimens() operation is consistent with utimes()
* utimes() allows tv_sec to be -1 to indicate that the element should
not be updated.
* Handle this case for when futimens() is used by setting tv_nsec to
UTIME_OMIT.
* This way operation is consistent whether we use futimens() or use
utimes().
Tomohiro Kusumi [Sat, 6 Jun 2015 10:09:44 +0000 (19:09 +0900)]
sys/gnu/vfs/ext2fs: Remove|fix duplicated macro definitions
- Define MAXNAMLEN using EXT2_NAME_LEN since EXT2_NAME_LEN
is the original ondisk definition.
- Bring back MAXSYMLINKLEN that was removed in a0403c0
using EXT2_MAXSYMLINKLEN. It's probably better to keep both
EXT2_MAXSYMLINKLEN and MAXSYMLINKLEN just like above MAXNAMLEN
does considering it's been exposed to userspace and removing
may break them (although there are probably none or very few).
- Remove duplicated MAXMNTLEN definition.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Sat, 6 Jun 2015 12:46:25 +0000 (21:46 +0900)]
sys/gnu/vfs/ext2fs: Add missing ifndef/define/endif
- ext2fs/fs.h needs ifndef/define/endif.
- The next commit ("Remove|fix duplicated macro definitions")
results compile error without this.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Sat, 6 Jun 2015 08:36:50 +0000 (17:36 +0900)]
sys/gnu/vfs/ext2fs: Fix terminology of "cylinder group"
- Change "cylinder group" to "block group".
- Both "block group" and "cylinder group" are used in dfly ext2.
These refer to the same(similar) idea and ext2 uses "block group".
Not having two expressions is grep-friendly.
- No binary difference as it only changes some comments.
- (Note that dfly's ext2 seems to be broken currently)
zrj [Wed, 3 Jun 2015 12:01:30 +0000 (15:01 +0300)]
drm/radeon: Sync gpu driver code with Linux 3.11
Little to none functional change.
Use kzalloc()/kfree()/kcalloc() wrappers.
Also use mb() and rmb().
Use linux compat macros:
udelay, mdelay
wake_up
printk
ARRAY_SIZE
ALIGN, round_up
BUG, BUG_ON, BUILD_BUG_ON, WARN
While there, reduce whitespace diffs with Linux 3.11
zrj [Wed, 3 Jun 2015 11:48:49 +0000 (14:48 +0300)]
drm/radeon: Move some prototype declarations
While there fix a typo in r600_cp.c
zrj [Wed, 3 Jun 2015 11:45:46 +0000 (14:45 +0300)]
drm/radeon: Use release_firmware()/request_firmware()
Tomohiro Kusumi [Sat, 6 Jun 2015 02:33:17 +0000 (11:33 +0900)]
sys/gnu/vfs/ext2fs: Remove|avoid duplicated macro definitions
- There are EXT2_ROOTINO and EXT2_ROOT_INO, but using EXT2_ROOTINO
is probably appropriate on dfly (and it does use EXT2_ROOTINO)
considering it's been used by userspace, and other fs have it in
NAME_ROOTINO format.
- WINO is from UFS, but ext2 has it for bad inode for ondisk inode.
- NDADDR and NIADDR (# of slots for direct/indirect block) should be
defined using existing ext2 ondisk definitions.
(or maybe don't even use NDADDR and NIADDR, but these two should be
kept as dfly ext2 code is UFS based and UFS heavily uses these two)
- Remove MAXSYMLINKLEN since there is EXT2_MAXSYMLINKLEN and only
EXT2_MAXSYMLINKLEN is being used. It also conflicts with UFS version
of MAXSYMLINKLEN in vfs/ufs/dinode.h.
- (Note that dfly's ext2 seems to be broken currently)
Sascha Wildner [Fri, 5 Jun 2015 22:49:48 +0000 (00:49 +0200)]
make.conf: Remove a no longer used variable.
Sascha Wildner [Fri, 5 Jun 2015 21:25:51 +0000 (23:25 +0200)]
kernel/syscons: Hack around some issues between console cut/paste and Xorg.
It led to repeating characters (as if typed) when cutting/pasting
in Xorg.
Reported-by: profmakx, jh32, ryuo, and others
Submitted-by: dillon
Imre Vadász [Tue, 2 Jun 2015 21:14:52 +0000 (23:14 +0200)]
drm: hack together an implementation of fb_get_options
This can be used to set the video mode used for the syscons fb console,
a la "video=..." in linux.
Sascha Wildner [Wed, 3 Jun 2015 18:01:46 +0000 (20:01 +0200)]
kernel/syscons: First hacky steps to make syscons work with {i915,radeon}kms.
This is a joint effort of Imre Vadasz (all the drm/i915/radeon related
bits) and me (syscons rendering related bits, mainly).
To enable the support, the "kern.kms_console" tunable needs to be set
via loader.conf.
In-collaboration-with: ivadasz
Sascha Wildner [Tue, 2 Jun 2015 17:09:15 +0000 (19:09 +0200)]
Fix kernel options in files for i915/radeon (kmsdrm -> kms).
Sascha Wildner [Tue, 2 Jun 2015 16:59:17 +0000 (18:59 +0200)]
Update files for recent drm/i915/radeon changes.
Sepherosa Ziehau [Fri, 5 Jun 2015 13:04:54 +0000 (21:04 +0800)]
sensors: By default, stick sensor tasks to the first cpu package
Sepherosa Ziehau [Fri, 5 Jun 2015 13:04:01 +0000 (21:04 +0800)]
ecc/e5: Register sensor tasks to the proper cpu package
Sepherosa Ziehau [Fri, 5 Jun 2015 13:03:24 +0000 (21:03 +0800)]
memtemp/e5: Register sensor tasks to the proper cpu package
Sepherosa Ziehau [Fri, 5 Jun 2015 13:02:20 +0000 (21:02 +0800)]
cpu_topo: Add get_cpu_node_by_chipid()
This function retrieve cpu_node according to the chip ID passed.
Tomohiro Kusumi [Sat, 30 May 2015 10:19:35 +0000 (19:19 +0900)]
sys/gnu/vfs/ext2fs: Cleanup __KERNEL__ related macros
- Add comments on EXT2_XXX(s) macros. These macros on dfly ext2 happen
to be tricky and confusing as their arg types are not consistent.
These macros are taken from e2fsprogs header (rather than macros of
the same name in Linux kernel header) and made to work as a part of
kernel filesystem code.
- Remove unused __KERNEL__ version of EXT2_XXX(s) macros. These are not
compiled on dfly (and most of them result compile error if enabled on
dfly ext2) since __KERNEL__ is designed to be Linux kernel specific
code while dfly ext2 is made to work with userspace version of macros
taken from e2fsprogs as mentioned above. Moreover, some of these
__KERNEL__ version of macros are already deprecated on Linux kernel
and have been removed from the e2fsprogs header accordingly, so there
is no reason to keep it here as well.
- Compiling e2fsprogs does not require ext2_fs.h installed under
/usr/include/... as it has its own copy of the ext2_fs.h in its source
code that the dfly ext2 originally referred to.
- This commit makes no binary difference. Also this commit does not
affect external userspace programs.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Sat, 30 May 2015 08:18:16 +0000 (17:18 +0900)]
sys/gnu/vfs/ext2fs: Cleanups
- Align with other #define by removing a space between # and define.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Sat, 30 May 2015 02:39:14 +0000 (11:39 +0900)]
sys/gnu/vfs/ext2fs: Sync with Linux kernel's ext2 definitions
- Some of these macros could be used in the existing dfly ext2 code.
- This commit makes no binary difference.
- (Note that dfly's ext2 seems to be broken currently)
Matthew Dillon [Thu, 4 Jun 2015 18:04:37 +0000 (11:04 -0700)]
kernel - Fix altq fairq panic
* Fix an altq fairq panic when RED and/or RIO is enabled. A packet drop
can cause a sequence of events which leads to a NULL pointer dereference
in the fairq round robin code.
Reported-by: Joris Giovannangeli
Sepherosa Ziehau [Thu, 4 Jun 2015 12:31:02 +0000 (20:31 +0800)]
sensors: Accept -1 as sensor thread cpuid
The task will be register to the default sensor thread.
Sepherosa Ziehau [Thu, 4 Jun 2015 11:00:53 +0000 (19:00 +0800)]
coretemp: Utilize per-cpu sensor threads
This greatly simplifies the code.
Sepherosa Ziehau [Thu, 4 Jun 2015 11:00:08 +0000 (19:00 +0800)]
sensors: Create per-cpu sensor task threads
So that accessing to sensor device could be properly cpu localized,
e.g. accessing coretemp(4) could be localized to a proper cpu core,
and accessing ecc(4) could be localized to a proper cpu package.
Sepherosa Ziehau [Mon, 1 Jun 2015 14:19:07 +0000 (22:19 +0800)]
cputimer/tsc: Prevent rdtsc reordering
Use lfence on Intel and mfence on AMD to make sure that all instructions
before rdtsc are completed. This should prevent time warps, if TSC is
selected as cputimer.
Sepherosa Ziehau [Mon, 1 Jun 2015 13:41:44 +0000 (21:41 +0800)]
tsc: Factor out rdtsc_ordered()
Use lfence on Intel and mfence on AMD to make sure that all instructions
before rdtsc are completed.
While I'm here
- Remove redundant functions declaration in lwkt_thread.c to unbreak
compile.
- Add cpu_vendor_id for vkernel64; extra work is needed to set it to a
proper value.
Sascha Wildner [Wed, 3 Jun 2015 07:24:48 +0000 (09:24 +0200)]
rc.conf.5: Fix description of sysvipcd_enable.
Reported-by: James Buren <ryu0@ymail.com>
Matthew Dillon [Tue, 2 Jun 2015 06:37:04 +0000 (23:37 -0700)]
drm - Fix deadlock
* mutex_trylock()'s return value was inverted, resulting in a hanging
lock. Adjust the macro.
* This should fix multiple reports of deadlocks in i915 (intel).
Reported-by: ftigeot
Charlie Root [Tue, 2 Jun 2015 01:17:30 +0000 (18:17 -0700)]
kernel - Fix VM deadlock in optimized file read path
* The optimized file read path can deadlock if the uiocopy or copyout
operation requires a non-trivial VM fault. Most cases were handled,
but a MAP_ENTRY_NEEDS_COPY->vm_map_entry_shadow() path was not being
handled.
* Disallow the optimized path for the COW case.
Reported-by: Sevan Janiyan
François Tigeot [Sun, 31 May 2015 17:02:10 +0000 (19:02 +0200)]
drm: Partially sync drm_ioctl() with Linux 3.14
It now uses the drm_global_mutex lockmgr lock
François Tigeot [Sun, 31 May 2015 16:28:29 +0000 (18:28 +0200)]
drm: Synchronize ioctl definitions with Linux 3.14
Many IOCTLs don't require the acquisition of a lock anymore.
Sepherosa Ziehau [Sat, 30 May 2015 08:47:56 +0000 (16:47 +0800)]
clock/tsc: Run TSC MP synchronization test on APs too.
TSC MP synchronization needs BIOS and hardware coordination. It is
known that buggy BIOS could make TSC not MP synchronized if the system
has multiple CPU packages. Testing TSC MP synchronization only on BSP
is not enough to discover certain types of TSC MP unsynchronization,
e.g. APs TSC is ahead of BSP's TSC by great amount. Thus APs also need
to run TSC MP synchronization test to make sure that TSC is really MP
synchronized. And we are now running at least 50000 TSC MP
synchronization tests on each CPU.
And use lfence to prevent rdtsc from reordering during TSC MP
synchronization test, since we only test TSC MP synchronization on
Intel CPUs currently (mfence will be needed for AMD CPUs).
Sepherosa Ziehau [Sat, 30 May 2015 13:15:04 +0000 (21:15 +0800)]
lwkt: Initialize LWKT objcache initialization to earlier place
So that calling lwkt_create w/o thread template could work during
early boot.
LWKT is now initialized before SOFTCLOCK, since SOFTCLOCK creates
per-cpu callout threads, though the creation uses thread template.
François Tigeot [Sun, 31 May 2015 16:06:33 +0000 (18:06 +0200)]
drm: Sync drm_gem_close_ioctl() with Linux 3.14
Matthew Dillon [Sun, 31 May 2015 02:05:11 +0000 (19:05 -0700)]
net80211 - Fix mis-merge
* Fix a mismerge that messes up broadcast packets.
Reported-by: Romick
Verified-by: Adrian Chadd
Imre Vadász [Sat, 30 May 2015 20:30:07 +0000 (22:30 +0200)]
drm/radeon: Add temperature sensor support
* Implement support for reporting radeon temperature sensors via the
sensor framework, by replacing the original sysfs glue code from Linux.
Tomohiro Kusumi [Fri, 29 May 2015 11:17:39 +0000 (20:17 +0900)]
sys/gnu/vfs/ext2fs: Fix coding style
- Fix coding style that we rarely see in dfly kernel as well as
ansi c code in general.
- It's visually confusing as it resembles multiplication of variables.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Fri, 29 May 2015 10:55:39 +0000 (19:55 +0900)]
sys/gnu/vfs/ext2fs: Remove FS/I_FS macros
- These file-local macros are from UFS, but not necessary.
Directly refering to the superblock like the original ext2
code should be clearer.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Fri, 29 May 2015 10:31:42 +0000 (19:31 +0900)]
sys/gnu/vfs/ext2fs: Remove unused typedef
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Fri, 29 May 2015 10:26:01 +0000 (19:26 +0900)]
sys/gnu/vfs/ext2fs: Remove bsd_malloc/free macros
- These file-local macros are not necessary.
These are neither from the original ext2 nor UFS code.
- (Note that dfly's ext2 seems to be broken currently)
zrj [Fri, 29 May 2015 06:27:29 +0000 (09:27 +0300)]
drm/radeon: Expose radeon driver knobs to /boot/loader.conf
Matthew Dillon [Fri, 29 May 2015 21:09:37 +0000 (14:09 -0700)]
kernel - Fix SMP race against fp seek position lock
* Fix a SMP race against write-appends. Atomic ops are used on the
struct file->f_flag field to interlock write-append operations.
However, the fcntl() and flock() code was also modifying file->f_flag
using non-atomic ops.
* Fix fcntl() and flock() to use atomic ops.
* Problem could lead to processes stuck forever in "fpoff".
Reported-by: Sevan Janiyan
François Tigeot [Fri, 29 May 2015 19:02:19 +0000 (21:02 +0200)]
Sync drm_context.c with Linux 3.14
Matthew Dillon [Fri, 29 May 2015 16:43:03 +0000 (09:43 -0700)]
vmpageinfo - Add PG_NEED_COMMIT flag
* Add display of the PG_NEED_COMMIT flag.
Matthew Dillon [Fri, 29 May 2015 16:38:13 +0000 (09:38 -0700)]
kernel - Fix improper OOM process kill when no swap configured
* The avail_shortage calculation used by the pageout demon to track
whether enough pages could be retired had a degenerate case which
caused the demon to improperly believe that the machine was out of
memory when it wasn't.
* Generally would only happen if no swap was configured.
Reported-by: joris
François Tigeot [Thu, 28 May 2015 20:38:06 +0000 (22:38 +0200)]
drm: Sync vblank handling code with Linux 3.14
Michael Neumann [Wed, 27 May 2015 07:35:36 +0000 (10:35 +0300)]
drm/radeon: Sync to Linux 3.11
Sascha Wildner [Thu, 28 May 2015 16:48:32 +0000 (18:48 +0200)]
systat.1: Improve a bit.
Matthew Dillon [Thu, 28 May 2015 16:41:28 +0000 (09:41 -0700)]
hammer - Fix build for crc changes
* hammer uses the old crc code but needs the crc_tab from the new code.
Matthew Dillon [Thu, 28 May 2015 16:38:45 +0000 (09:38 -0700)]
boot - Fix build
* icrc32.c from libkern is too big for the boot code, bring in the old
icrc32.c (slow but compact) directly into the boot subtree.
Matthew Dillon [Thu, 28 May 2015 15:54:09 +0000 (08:54 -0700)]
hammer2 - Set default compression for PFS
* When creating a new PFS, set the default compression to lz4 (instead of
autozero which is no compression at all).
Matthew Dillon [Thu, 28 May 2015 15:50:22 +0000 (08:50 -0700)]
hammer2 - Use faster iscsi crc algorithm
* libdmsg and hammer2 now use the faster iscsi crc algorithm. Improvements
are as follows:
PATH ncp data-use inode-use comp kaddr
/mnt/src01 0 1.15GB 41845 comp=autozero:default check=crc32
/mnt/src00 0 0.86GB 41845 comp=lz4:default check=crc32
/mnt/src02 0 0.76GB 41845 comp=zlib:9 check=crc32
/mnt/src03 0 1.15GB 41845 comp=autozero:default check=none
/mnt/src04 0 0.86GB 41845 comp=lz4:default check=none
With no CRC at all (autozero and lz4 decompression):
/mnt/src03 0.484u 2.967s 0:37.46 9.1% 25+65k 134868+0io 16pf+0w
/mnt/src04 0.468u 3.280s 0:28.99 12.9% 25+65k 125494+0io 0pf+0w
OLD CRC (autozero, lz4, zlib decopmression)
/mnt/src01 0.538u 11.114s 0:47.80 24.3% 26+69k 134886+0io 0pf+0w
/mnt/src00 0.538u 11.153s 0:34.57 33.7% 25+67k 126146+0io 0pf+0w
/mnt/src02 0.538u 12.785s 0:32.78 40.6% 26+69k 121814+0io 0pf+0w
NEW CRC (autozero, lz4, zlib decompression)
/mnt/src01 0.398u 4.670s 0:42.52 11.9% 25+66k 135020+0io 30pf+0w
/mnt/src00 0.531u 5.225s 0:29.43 19.5% 26+69k 126122+0io 0pf+0w
/mnt/src02 0.499u 6.520s 0:27.44 25.5% 27+71k 121326+0io 0pf+0w
Matthew Dillon [Thu, 28 May 2015 15:48:22 +0000 (08:48 -0700)]
kernel - Replace iscsi CRC algo with a better one
* Bring in Gary S. Brown's fast iscsi crc code.
* Greatly improves iscsi CRC performance.
* HAMMER2 uses the icrc CRC so it also improves HAMMER2's CRC performance
(see followup commit).
Taken-from: FreeBSD
Tomohiro Kusumi [Thu, 28 May 2015 14:16:25 +0000 (23:16 +0900)]
sys/gnu/vfs/ext2fs: Don't define buffer_head
- Remove '#define buffer_head buf'.
- BSD's ext2 implementation is based on UFS (i.e. copy + rename) rather
than the original ext2, so there isn't really any reason to make the
code and data structures look like Linux kernel. FreeBSD doesn't have
this rename (anymore) either.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Thu, 28 May 2015 13:55:28 +0000 (22:55 +0900)]
sys/gnu/vfs/ext2fs: Remove unused typedef
- ino_t is being used by dfly ext2.
- (Note that dfly's ext2 seems to be broken currently)
Tomohiro Kusumi [Thu, 28 May 2015 13:37:33 +0000 (22:37 +0900)]
sys/gnu/vfs/ext2fs: Rename ROOTINO to EXT2_ROOTINO
- Add "EXT2_" so utility programs can distinguish it from UFS's
ROOTINO when they need to include filesystem headers possibly
in the future.
- Also see
5b09d16c.
- (Note that dfly's ext2 seems to be broken currently)
Matthew Dillon [Thu, 28 May 2015 05:47:30 +0000 (22:47 -0700)]
hammer2 - Stabilization
* Fix a division that was not adjusted for the new blockref size.
The freemap now has one additional level in the worst case.
Matthew Dillon [Thu, 28 May 2015 05:26:42 +0000 (22:26 -0700)]
hammer2 - Stabilization pass
* Fix numerous deadlocks in syncthr.
* Fix startup issue in syncthr, elements in the initial iroot cluster
were being marked INVALID for the syncthr. This is what we want for
front-end operations, but not for the syncthr. The flag was preventing
syncthr from properly synchronizing sub-trees.
* Fix a chain leak in syncthr which was leaving referenced chains sitting
around on unmount.
* Do not repoint iroot elements in syncthr. The iroot elements already
exist and will not be created or destroyed, so no repointing should be
necessary.
* Fix improper freemap indirect block size in hammer2_chain_create_indirect().
* Fix pmp->inode_tid assignment. Inode number assignments are now handled
on a per-PFS basis.
* Use the data_count and inode_count statistics to fill out statfs and
statvfs.
* Use the data_count statistics to fill out vap->va_bytes for normal stat().
* Cleanups
Matthew Dillon [Wed, 27 May 2015 23:04:24 +0000 (16:04 -0700)]
hammer2 - hook up aggregate stats
* Keep track of data and inode use for the entire sub-tree in the
blockref. Since H2 is a copy-on-write filesystem, this winds up
being trivial now that we have room in the blockref to store the
info.
Tracking is synchronized by the filesystem flush and requires no
additonal I/O. If you've just written something and want to check
use, you do have to 'sync' first (or wait for the normal filesystem
flush).
* Gives hammer2 the ability to report inode and data use for a
sub-tree without having to traverse it.
* Actual data storage use is reported, not cumulative logical file
size, so the user can immediately see the effects of e.g. compression
and data block size selection by the filesystem.
* hammer2 stat <file_or_dir> will report use as of the most recent
filesystem sync.
PATH ncp data-use inode-use comp kaddr
/mnt/src00 0 0.86GB 41818 comp=lz4:default check=crc32
/mnt/src00/Makefile_upg* 0 24.00KB 0 comp=lz4:default check=crc32
/mnt/src00/bin 0 2.63MB 476 comp=lz4:default check=crc32
/mnt/src00/contrib 0 169.98MB 15198 comp=lz4:default check=crc32
/mnt/src00/lib 0 29.82MB 3617 comp=lz4:default check=crc32
...
ls -la /mnt/src00/Makefile_upgrade.inc
... 1 dillon wheel 90795 Apr 29 21:23 /mnt/src00/Makefile_upgrade.inc
In the media dump we find that H2 was able to compress the 90KB
Makefile_upgrade.inc file into a 16KB block and an 8KB block (the low byte
of the data offset is the storage radix), for 24KB total. And indeed, the
stats from the hammer2 stat command above indicate 24KB of storage used
for that file.
data.0
0000000043d8800e 0000000000000000/16 mir=
0000000000000025
mod=
000000000000001b (meth 22)
data.1
0000000043d84c0d 0000000000010000/16 mir=
0000000000000025
mod=
000000000000001b (meth 22)
Matthew Dillon [Wed, 27 May 2015 21:41:36 +0000 (14:41 -0700)]
hammer2 - Increase size of blockref, refactor freemap.
I finally buckled under and increase the size of the blockref from 64 bytes
to 128 bytes. The negative consequences are relatively minor, and the
positives are many.
Negative consequences
* 512 blocks per 64KB indirect block instead of 1024.
* Inode has only 4 built-in blockrefs instead of 8.
* Indirect block overhead is doubled.
* Freemap overhead is doubled due to SEGSIZE being 1GB instead of 2GB.
* Small files will have to push an indirect block sooner (at 256KB).
Positive consequences
* Freemap overhead is still only 0.40% of the storage.
* Freemap now uses a 32KB indirect block instead of a 64KB indirect block.
* Data and inode statistics can be tracked in the blockref.
* Check code goes from max-192-bits to max-512-bits.
* Additional fields now available for future filesystem features.
Michael Neumann [Mon, 25 May 2015 14:45:04 +0000 (17:45 +0300)]
radeon: sync to radeon 3.10
zrj [Mon, 25 May 2015 16:34:57 +0000 (19:34 +0300)]
drm/ttm: revert again to use tree(3)
This reverts
06cbdcf32488e8ce7bf9c345068a9f8d72cf48e2.
Also add RB_ROOT redefine in ttm_bo_driver.h for ttm.
Tomohiro Kusumi [Wed, 27 May 2015 18:33:07 +0000 (03:33 +0900)]
sys/gnu/vfs/ext2fs: Sync with Linux kernel's ext2 definitions
- Note that ext2 on DragonFly seems to be broken currently.
Sascha Wildner [Wed, 27 May 2015 18:36:30 +0000 (20:36 +0200)]
Update libarchive's and liblzma's configuration for recently added stuff.
Make both use futimens() and utimensat(). xz's configure won't check for
futimes() if futimens() is available (hence HAVE_FUTIMES goes back to
undefined).
While here, define HAVE_DIRFD for libarchive too since we have it as a
public function since
de45303d1431339260c3a353a1e18d034c807c4a.
Note that diff and grep also have HAVE_... macros for futimens() and
utimesat() in their config.h's but they are unused in the code, probably
stray configure checks.
Sascha Wildner [Wed, 27 May 2015 16:40:59 +0000 (18:40 +0200)]
<sys/param.h>: Bump __DragonFly_version for futimens() and utimensat().
Dimitris Papastamos [Wed, 27 May 2015 16:28:27 +0000 (17:28 +0100)]
Add missing prototype for futimens(2) in <sys/stat.h>
Fix spacing for utimensat() as well.
Sascha Wildner [Wed, 27 May 2015 16:38:12 +0000 (18:38 +0200)]
<sys/stat.h>: Whitespace cleanup.
Matthew Dillon [Wed, 27 May 2015 16:19:25 +0000 (09:19 -0700)]
kernel - Fix issue w/recent utimes commit
* The repurposed itimerfix() and itimespecfix() functions needed to have
a conditional removed which was putting an arbitrary limit on the tv_sec
field.
* Fixes an issue that caused utimes*() to fail and return EINVAL.
Matthew Dillon [Wed, 27 May 2015 03:00:18 +0000 (20:00 -0700)]
hammer2 - cleanup
* Cleanup a lock/unlock sequence used to force-load chain->data by
replacing it with the appropriate load call.
Matthew Dillon [Tue, 26 May 2015 20:01:25 +0000 (13:01 -0700)]
ttys - Add 'ifconsole' option to ttys entries
* Add the 'ifconsole' option. This allows you to construct a line as shown
below to enable a getty (e.g. on a serial port) only if the tty is the
system console.
ttyd0 "/usr/libexec/getty std.9600" dialup on secure ifconsole
The ifconsole option also silently disables any devices which do not
exist, removing unnecessary console spam.
* Modify libc and init to handle the new flag.
* Modify the nrelease build and ttys defaults to use this option for
ttyd0, ttyd1, ttyd2, and ttyd3.
* Avoids previously reported issues with system crashes on certain machines
whos serial ports are not implemented properly without having to fully
disable the default ttyd* getty feature. If the serial port isn't the
console, it won't be enabled.
* Add a sysctl to the kernel which init needs to test whether a tty is the
console or not.
Suggested-by: swildner
Matthew Dillon [Tue, 26 May 2015 18:03:32 +0000 (11:03 -0700)]
kernel - Return EINVAL on negative timeout to poll()
* Return EINVAL if poll() is called with a negative
timeout, as per manual page.
Submitted-by: stateless
Matthew Dillon [Tue, 26 May 2015 18:00:45 +0000 (11:00 -0700)]
kernel - Sanity-check getutimes().
* Sanity check getutimes() and getutimens()
* Also note futimes commit just before this one was also
Submitted-by: stateless.
Submitted-by: stateless
Matthew Dillon [Tue, 26 May 2015 17:56:19 +0000 (10:56 -0700)]
kernel - Add futimens()
* Add futimens()
* Consolidate the support function to kern_futimens().
Matthew Dillon [Tue, 26 May 2015 17:49:56 +0000 (10:49 -0700)]
kernel - Consolidate kern_utimes() into kern_utimensat()
* Consolidate kern_utimes() into kern_utimensat()
Submitted-by: stateless
John Marino [Tue, 26 May 2015 07:56:49 +0000 (09:56 +0200)]
buildworld: Specify cpp for rpcgen to use rather than fallback
Without the -Y switch, rpcgen will fall back to "cpp" which is guided
by OBJFORMAT environment settings to point at the host cpp from gcc50.
In the later stages of buildworld, we want to use the cpp we just built,
not the host cpp which could have issues. By stage 4, no native host
tools should be in use.
Matthew Dillon [Tue, 26 May 2015 04:42:00 +0000 (21:42 -0700)]
hammer2 - cleanup data load, unlink optimization
* Clean up data loading on chain lock. Use chain flags to interlock data
loading with either a shared or exclusive lock.
* We no longer upgrade a shared lock to exclusive in order to load data,
preventing a potentially unexpected deadlock from occuring.
* Clean up the chain_core (chain->core) structure. Remove flags and
move the main lock from the core to the main chain structure proper.
* Attempt to avoid I/O when unlinking files by not updating the inode
on the final 1->0 transition of nlinks. This greatly reduces the amount
of write I/O occuring during a rm -rf and improves performance by a
factor of 3x.
Matthew Dillon [Mon, 25 May 2015 19:28:09 +0000 (12:28 -0700)]
kernel - Change bundirty() location in I/O sequence (2)
* The bundirty() move interfered with softupdates because
the buf_complete() callback can re-dirty the buffer.
* Fixed by moving the bundirty() prior to the buf_complete()
call.
Reported-by: marino
Matthew Dillon [Mon, 25 May 2015 19:00:29 +0000 (12:00 -0700)]
net80211 - Add dofbsddiff script
* Add helper script to the repo so it isn't lost.
* Helps diff DFly and FBsd 80211 code for work.
Matthew Dillon [Mon, 25 May 2015 16:22:13 +0000 (09:22 -0700)]
hammer2 - stabilization
* Fix more deadlocks. The solution here is not ideal, I'm doing too much
unlocking and relocking of clusters and probably breaking certain atomicy
requirements.
* Implement a delayed flush mechanism when making permanent chain deletions
instead of calling hammer2_flush(). This should allow the flush code to
better optimize-out unnecessary write I/Os.
* Add a spinlock for the ip->cluster (not completed yet).
* I had broken system-initated filesystem syncing by calling vclrisdirty()
on the syncer vnode. Fix it.
John Marino [Mon, 25 May 2015 08:08:41 +0000 (10:08 +0200)]
gcc50: bump version date to 25 May 2015
The base compiler gains all the fixes over the last 5 weeks since
GCC 5.1 was released. This could fix a couple of issues in dports.
John Marino [Mon, 25 May 2015 08:52:09 +0000 (10:52 +0200)]
Merge branch 'vendor/GCC50'
John Marino [Mon, 25 May 2015 08:05:27 +0000 (10:05 +0200)]
Update gcc-50 to SVN version 223641 (gcc-5-branch)
Last Changed Date: 2015-05-25 02:16:10 +0200 (Mon, 25 May 2015)
Sepherosa Ziehau [Sun, 24 May 2015 12:46:53 +0000 (20:46 +0800)]
systat.1: Update sensors display specific commands
Sepherosa Ziehau [Sun, 24 May 2015 12:06:39 +0000 (20:06 +0800)]
ecc.4: Update for the recent ecc(4) changes
Sepherosa Ziehau [Sun, 24 May 2015 11:54:10 +0000 (19:54 +0800)]
memtemp.4: Update for the recent sensor description change
Sepherosa Ziehau [Sun, 24 May 2015 11:51:34 +0000 (19:51 +0800)]
coretemp.4: Update for the recent sensor description change
Matthew Dillon [Mon, 25 May 2015 04:04:25 +0000 (21:04 -0700)]
dirfs - only expose inlines to the kernel
* Only expose inlines to kernel code, user code can get tripped up on
things like KKASSERT().
Matthew Dillon [Mon, 25 May 2015 03:20:39 +0000 (20:20 -0700)]
hammer2 - Refactor cluster locks, syncthr fixes, cleanups
* Do not resolve the cluster when locking and unlocking. This led to
problems when cparents used in iterations were being temporarily unlocked,
because their nodes represent the iteration in the physical topology
so the resolve might fail when relocked.
Instead, resolution occurs with all cluster creation mechanics. So, e.g.
hammer2_cluster_lookup() and hammer2_cluster_next() will resolve the
cluster being returned.
* Change hammer2_cluster_copy() semantics to inherit focus state and not
call hammer2_cluster_resolve(), for the same reason as above.
* A cluster iteration usually returns NULL when the focus is lost, e.g.
when only unsynchronized slaves remain. Add a flag so the sync thread
can iterate the cluster until all nodes are exhausted.
* Cleanup focus handling for the cluster iterator. Move the bref compare
to the resolver and get rid of the manual compare code in the iterator.
* Fix a locking flags bug in the cluster iterator.
* Fix numerous deadlocks. Mostly requires unlocking the whole cluster before
looping the iterator for new elements, so later indexes are not held locked
while working on earlier indexes.
* Fix numerous issues in syncthr, in particular only repoint the index
of the cluster the syncthr is managing when updating the inode to avoid
clashes with inode updates from other syncthrs.
* Change the way HAMMER2_CITEM_INVALID works in syncthr so we can be
more hard-nosed about it in the cluster iterator. Generally speaking
we clear the INVALID bit when synchronizing a new element, even if it is
a recursion and modify_tid cannot be immediately set.
Sascha Wildner [Sun, 24 May 2015 17:34:35 +0000 (19:34 +0200)]
Remove unused bsd.cpu.gcc44.mk file.
Sascha Wildner [Sat, 23 May 2015 07:49:36 +0000 (09:49 +0200)]
kernel/acpi_wmi: Move wmi_info_list into sc.
Taken-from: FreeBSD
Sascha Wildner [Sat, 23 May 2015 07:42:25 +0000 (09:42 +0200)]
vi(1): Remove a no longer used file.
François Tigeot [Sun, 24 May 2015 09:04:12 +0000 (11:04 +0200)]
drm: Add linux/ktime.h
Matthew Dillon [Sun, 24 May 2015 04:19:04 +0000 (21:19 -0700)]
kernel - Add utimensat() support
* Brings in utimensat() from FreeBSD, adjusted for DragonFly system
call mechanics.
Submitted-by: stateless #2818
François Tigeot [Sat, 23 May 2015 17:08:11 +0000 (19:08 +0200)]
drm/i915: Fix a __raw_i915_read32() definition
We don't have pci_iomap() yet so registers can't be properly mapped
in the Linux way.
François Tigeot [Sat, 23 May 2015 06:24:11 +0000 (08:24 +0200)]
drm: Put abs64 definition in the right place
François Tigeot [Sat, 23 May 2015 06:15:04 +0000 (08:15 +0200)]
drm/linux: Add a few smp_mb_xxx_atomic_inc() functions
François Tigeot [Sat, 23 May 2015 06:11:42 +0000 (08:11 +0200)]
linux/i2c.h: Properly define struct device
François Tigeot [Sat, 23 May 2015 06:06:03 +0000 (08:06 +0200)]
drm/linux: Add TASK_COMM_LEN