Commit Graph

197734 Commits

Author SHA1 Message Date
kib
bf07138622 MFC r275727:
For architectures where time_t is wide enough, in particular, 64bit
platforms, avoid overflow after year 2038 in clock_ct_to_ts().

PR:	195868
2014-12-19 09:34:14 +00:00
mav
eac5956a91 MFC r275503:
Avoid unneeded malloc/memcpy/free if there is no metadata on disk.

Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
2014-12-19 01:13:41 +00:00
jhb
3f663b8b40 MFC 273871:
Skip the smap sysctl instead of panicing if no kernel metadata can be
found.
2014-12-18 23:00:17 +00:00
avg
a691672ca9 MFC r275401: zfs_putpages: actually update mtime and ctime 2014-12-18 13:46:11 +00:00
kib
55c41429c0 MFC r271315 (by joel):
Minor mdoc nit.

MFC r275806:
Markup fixes for kqueue(2), no content changes.
2014-12-18 11:36:14 +00:00
kib
9f63b4b4d8 MFC r268843 (by bapt):
Extend kqueue's EVFILT_TIMER by adding precision unit flags support.
2014-12-18 11:30:51 +00:00
kib
3abf5d53d8 MFC r259609 (by se):
Fix overflow for timeout values of more than 68 years, which is the maximum
covered by sbintime (LONG_MAX seconds).

MFC r259633 (by se):
Fix compilation on 32 bit architectures and use INT64_MAX instead of
LONG_MAX for the upper bound check.
2014-12-18 11:10:15 +00:00
mav
66c7f00f29 MFC r275482: Document r275481 changes. 2014-12-18 08:49:50 +00:00
mav
a0e66849d7 MFC r275568:
Count consecutive read requests as blocking in CTL for files and ZVOLs.

Technically read requests can be executed in any order or simultaneously
since they are not changing any data.  But ZFS prefetcher goes crasy when
it receives consecutive requests from different threads.  Since prefetcher
works on level of separate blocks, instead of two consecutive 128K requests
it may receive 32 8K requests in mixed order.

This patch is more workaround then a real fix, and it does not fix all of
prefetcher problems, but it improves sequential read speed by 3-4x times
in some configurations.  On the other side it may hurt performance if
some backing store has no prefetch, that is why it is disabled by default
for raw devices.
2014-12-18 08:46:53 +00:00
mav
fe777840de MFC r275512:
In addition to r275481 allow threshold notifications work without UNMAP.

While without UNMAP support there is not much initiator can do about it,
the administrator still better be notified about the storage overflow.

Sponsored by:   iXsystems, Inc.
2014-12-18 08:45:28 +00:00
mav
57c600c3f5 MFC r275481:
Add to CTL support for threshold notifications for file-backed LUNs.

Previously it was supported only for ZVOL-backed LUNs, but now should work
for file-backed LUNs too.  Used value in this case is a space occupied by
the backing file, while available value is an available space on file
system.  Pool thresholds are still not implemented in this case.

Sponsored by:   iXsystems, Inc.
2014-12-18 08:43:36 +00:00
mav
4ff47ae9ab MFC r275474: Add GET LBA STATUS command support to CTL.
It is implemented for LUNs backed by ZVOLs in "dev" mode and files.
GEOM has no such API, so for LUNs backed by raw devices all LBAs will
be reported as mapped/unknown.

Sponsored by:   iXsystems, Inc.
2014-12-18 08:38:07 +00:00
mav
251a95deec MFC r275461:
Increase CTL ports limit from 128 to 256 and LUNs limit from 256 to 1024.

After recent optimizations this change is no longer blocked by CTL memory
consumption.  Those limits are still not free, but much cheaper now.

Relnotes:	yes
Sponsored by:	iXsystems, Inc.
2014-12-18 08:37:09 +00:00
mav
e99b295765 MFC r275459: Unify function names after r275458. 2014-12-18 08:32:56 +00:00
mav
510c6d695e MFC r275458:
Do not pre-allocate UNIT ATTENTIONs storage for every possible initiator.

Abusing ability of major UAs cover minor ones we may not account UAs for
inactive ports.  Allocate UAs storage for port and start accounting only
after some initiator from that port fetched its first POWER ON OCCURRED.

This reduces per-LUN CTL memory usage from >1MB to less then 100K.
2014-12-18 08:32:06 +00:00
mav
e998495ddf MFC r275455: Remove some unused code. 2014-12-18 08:31:13 +00:00
mav
ef698a8b3d MFC r275447:
Do not pre-allocate reservation keys memory for every possible initiator.

In configurations with many ports, like iSCSI, each LUN is typically
accessed only by limited subset of ports.  Allocating that memory on
demand allows to reduce CTL memory usage from 5.3MB/LUN to 1.3MB/LUN.
2014-12-18 08:30:28 +00:00
mav
a4403fd4b3 MFC r275405: Convert persis_offset from global variable to softc field. 2014-12-18 08:28:44 +00:00
mav
be8a551758 MFC r275404: Reduce code duplication by creating ctl_set_res_ua() helper. 2014-12-18 08:27:46 +00:00
mav
f47cf8ca42 MFC r275403: Removed unused variable and unify some names. 2014-12-18 08:27:00 +00:00
mav
08d09659c7 MFC r275365: Move ctlfe_onoffline() out of lock to let it sleep when needed.
Do some more other polishing while there.
2014-12-18 08:26:11 +00:00
mav
19cc556c2a MFC r275058: Coalesce last data move and command status for read commands.
Make CTL core and block backend set success status before initiating last
data move for read commands.  Make CAM target and iSCSI frontends detect
such condition and send command status together with data.  New I/O flag
allows to skip duplicate status sending on later fe_done() call.

For Fibre Channel this change saves one of three interrupts per read command,
increasing performance from 126K to 160K IOPS.  For iSCSI this change saves
one of three PDUs per read command, increasing performance from 1M to 1.2M
IOPS.

Sponsored by:   iXsystems, Inc.
2014-12-18 08:25:00 +00:00
mav
67f35b59b5 MFC r275032: Decouple datamove/done logic from CTL status set. 2014-12-18 08:23:59 +00:00
mav
347eb16c88 MFC r275009: Use ctl_set_success() instead of direct inlining. 2014-12-18 08:23:04 +00:00
mav
91695c330f MFC r274962: Replace home-grown CTL IO allocator with UMA.
Old allocator created significant lock congestion protecting its lists
of preallocated I/Os, while UMA provides much better SMP scalability.
The downside of UMA is lack of reliable preallocation, that could guarantee
successful allocation in non-sleepable environments.  But careful code
review shown, that only CAM target frontend really has that requirement.
Fix that making that frontend preallocate and statically bind CTL I/O for
every ATIO/INOT it preallocates any way.  That allows to avoid allocations
in hot I/O path.  Other frontends either may sleep in allocation context
or can properly handle allocation errors.

On 40-core server with 6 ZVOL-backed LUNs and 7 iSCSI client connections
this change increases peak performance from ~700K to >1M IOPS!  Yay! :)

Sponsored by:	iXsystems, Inc.
2014-12-18 08:22:16 +00:00
mav
bed1ef29db MFC r275475:
Decode some binary fields of Intel metadata.

Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
2014-12-18 07:37:21 +00:00
dim
4e01cb7539 MFC r275759:
Pull in r221170 from upstream clang trunk (by Roman Divacky):

  Implement vaarg lowering for ppc32. Lowering of scalars and
  aggregates is supported. Complex numbers are not.

This adds va_args support for PowerPC (32 bit) to clang.

Reviewed by:	jhibbits
Differential Revision: https://reviews.freebsd.org/D1308
2014-12-17 21:36:45 +00:00
delphij
18a8a69694 MFC r275852: MFV r275844:
Fix unbound remote denial of service vulnerability.

Security:	FreeBSD-SA-14:30.unbound
Security:	CVE-2014-8602
Approved by:	so
2014-12-17 06:58:00 +00:00
jhb
9adaeb5452 MFC 273053:
Decode the arguments passed to _umtx_op().  In particular, decode the
opcode.
2014-12-16 21:57:55 +00:00
pfg
7cc43d5ff8 MFC r275553, r275612;
patch(1): Bring fixes from OpenBSD

Check fstat return value.  Use off_t for file size and offsets.
Avoid iterating over end of string.

Introduce strtolinenum to properly check line numbers while parsing:
no signs, no spaces, just digits, 0 <= x <= LONG_MAX

Properly validate line ranges supplied in diff file to prevent overflows.
Also fixes an out of boundary memory access because the resulting values
are used as array indices.

PR:		195436
Obtained from:	OpenBSD
2014-12-16 21:13:55 +00:00
pfg
8631101d5a MFC r275531, r275581, r275582;
patch(1): Small changes to sync with OpenBSD

Update OpenBSD CVS revision tag for our r255232.
Prefer setvbuf() to setlinebuf().
Small space changes, mostly to keep in sync with OpenBSD

Obtained from:	OpenBSD
2014-12-16 21:05:28 +00:00
jhb
adf7828a9b MFC 271635,271722:
- Only the manpage updates from 271635 are merged to give additional
  heads up for the stricter checks in 11, but the kernel in 10 remains
  permissive.
  - Fail with EINVAL if an invalid protection mask is passed to mmap().
  - Fail with EINVAL if an unknown flag is passed to mmap().
  - Fail with EINVAL if both MAP_PRIVATE and MAP_SHARED are passed to
    mmap().
  - Require one of either MAP_PRIVATE or MAP_SHARED for non-anonymous
    mappings.
- Remove mention of MAP_INHERIT.  It hasn't been implemented for thirteen
  years.
- Remove mention of unimplemented MAP_SWAP.  There are no future plans to
  implement it.
2014-12-16 20:05:10 +00:00
jhb
9dc1ff0ea4 MFC 272897:
Various fixes to stats:
- Read the counts of received, dropped, and transmitted management
  packets and add sysctl nodes for them.
- Fix the total octets received/transmitted to read all 64 bits of
  the counters.
- Add missing sysctl nodes for rlec, tncrs, fcruc, tor, and tot.
- Remove spurious spaces.
2014-12-16 19:45:56 +00:00
pfg
3933e2285a MFC r275645;
ext2fs: Fix old out-of-bounds access.

Overrunning buffer pointed to by (caddr_t)&oip->i_db[0] of 48 bytes by
passing it to a function which accesses it at byte offset 59 using
argument 60UL.

The issue was inherited from an older FFS implementation and
fixed there with by merging UFS2 in r98542. We follow the
FFS fix.

CID:		1007665
Discussed with:	bde
2014-12-16 18:45:31 +00:00
ae
3e533b7379 MFC r275394:
Remove unneded check. No need to do m_pullup to the size that we prepended.

Sponsored by:	Yandex LLC
2014-12-16 11:53:45 +00:00
ae
257146dad4 MFC r275393:
Remove unneded check. No need to do m_pullup to the size that we prepended.

MFC r275473:
  Fix style(9) and remove m_freem(NULL).
  Add XXX comment, it looks incorrect, because m_pkthdr.len is already
  incremented by M_PREPEND().

Sponsored by:	Yandex LLC
2014-12-16 11:45:33 +00:00
ae
6fc2bb76af MFC r275575:
key_getspacq() returns holding the spacq_lock. Unlock it in all cases.

Sponsored by:	Yandex LLC
2014-12-16 11:24:07 +00:00
sbruno
a82091426b Correct to the stable/10 commit in UPDATING and specify the correct ports/UPDATING
note.
2014-12-15 21:22:42 +00:00
andrew
498f8a6312 Revert r275778, gcc 4.2.1 doesn't handle -march=armv7. 2014-12-15 18:13:03 +00:00
sbruno
743cbe79f3 MFC r271982 and r271990 to support CentOS 6 ports. 2014-12-15 16:14:49 +00:00
kib
d05fefb955 MFC r275620:
Add functions syncer_suspend() and syncer_resume().

MFC r275637:
Remove local variable for real.
2014-12-15 11:05:53 +00:00
kib
679b472095 MFC r275619:
Check for bo_bufobj->bo_object for NULL and cache the value in local
variable to avoid NULL dereference in getnewbuf_reuse_bp(). The vnode
owning the buffer is not locked there.
2014-12-15 11:00:56 +00:00
kib
1eabc00156 MFC r275618:
Check for stop condition in nfsd threads.
2014-12-15 10:58:02 +00:00
kib
7ad7084d8f MFC r275617:
Do some refactoring and minor cleanups of the thread_single() code.
2014-12-15 10:50:26 +00:00
kib
014daa8f25 MFC r275616:
Thread waiting for the vfork(2)-ed child to exec or exit, must allow
for the suspension.

MFC r275683 (by andreast):
Fix build for powerpc(32|64) kernels.

MFC r275686 (by andreast):
Fix kernel build for booke.

r275639 (by andrew) is not merged, since arm/arm/syscall.c is not
present on the stable/10 branch, and arm/arm/trap.c already includes
sys/kernel.h.
2014-12-15 10:46:07 +00:00
kib
f3b24d37fe MFC r275615:
When process is exiting, check for suspension regardless of
multithreaded status of the process.
2014-12-15 10:29:02 +00:00
hselasky
2ff1bd7eec MFC r275606:
Add more U3G USB IDs.
2014-12-15 08:35:07 +00:00
hselasky
9b3fc5a494 MFC r275624:
Add port routing support for Wildcat Point.

PR:		195793
2014-12-15 08:26:36 +00:00
andrew
7f8f9c5128 MFC 275379:
Set the correct architecture when targeting ARMv7

Sponsored by:	ABT Systems Ltd
2014-12-14 18:51:13 +00:00
jilles
df71c47219 MFC r268576: sh: Correctly handle positional parameters beyond INT_MAX on
64-bit systems.

Currently, there can be no more than INT_MAX positional parameters. Make
sure to treat all higher ones as unset to avoid incorrect results and
crashes.

On 64-bit systems, our atoi() takes the low 32 bits of the strtol() and
sign-extends them.

On 32-bit systems, the call to atoi() returned INT_MAX for too high values
and there is not enough address space for so many positional parameters, so
there was no issue.

PR:		195918
2014-12-14 18:30:30 +00:00