freebsd-dev/sys
Alexander Motin 14b5719f6a After some ZIL changes 6 years ago zil_slog_limit got partially broken
due to zl_itx_list_sz not updated when async itx'es upgraded to sync.
Actually because of other changes about that time zl_itx_list_sz is not
really required to implement the functionality, so this patch removes
some unneeded broken code and variables.

Original idea of zil_slog_limit was to reduce chance of SLOG abuse by
single heavy logger, that increased latency for other (more latency critical)
loggers, by pushing heavy log out into the main pool instead of SLOG. Beside
huge latency increase for heavy writers, this implementation caused double
write of all data, since the log records were explicitly prepared for SLOG.
Since we now have I/O scheduler, I've found it can be much more efficient
to reduce priority of heavy logger SLOG writes from ZIO_PRIORITY_SYNC_WRITE
to ZIO_PRIORITY_ASYNC_WRITE, while still leave them on SLOG.

Existing ZIL implementation had problem with space efficiency when it
has to write large chunks of data into log blocks of limited size. In some
cases efficiency stopped to almost as low as 50%. In case of ZIL stored on
spinning rust, that also reduced log write speed in half, since head had to
uselessly fly over allocated but not written areas. This change improves
the situation by offloading problematic operations from z*_log_write() to
zil_lwb_commit(), which knows real situation of log blocks allocation and
can split large requests into pieces much more efficiently. Also as side
effect it removes one of two data copy operations done by ZIL code WR_COPIED
case.

While there, untangle and unify code of z*_log_write() functions.
Also zfs_log_write() alike to zvol_log_write() can now handle writes crossing
block boundary, that may also improve efficiency if ZPL is made to do that.

Sponsored by:	iXsystems, Inc.
2016-11-17 21:01:27 +00:00
..
amd64 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
arm Use the correct OF_getencprop to get the height. 2016-11-16 11:31:53 +00:00
arm64 Include the SMSC LAN91C111 driver, this is found in some of the ARM models. 2016-11-16 11:37:43 +00:00
boot loader: zfs toplevel vdev must have spa set. 2016-11-17 19:38:30 +00:00
bsm
cam Fix "camcontrol rescan" with SATA drives behind a SAS controller 2016-11-17 20:42:56 +00:00
cddl After some ZIL changes 6 years ago zil_slog_limit got partially broken 2016-11-17 21:01:27 +00:00
compat Tidy up ia32_sysvec sv_flags setting 2016-10-20 20:29:54 +00:00
conf Add driver for DM9000 Ethernet MAC Controller. 2016-11-17 11:48:07 +00:00
contrib Simplify the page tracking for VA<->PA translations. 2016-11-16 05:24:42 +00:00
crypto Fix C++ includability of crypto headers with static array sizes 2016-10-18 23:20:49 +00:00
ddb Determine the operand/address size of %cs in a new function 2016-09-25 16:30:29 +00:00
dev [iwm] Sync iwm_nvm_read_chunk() function with Linux iwlwifi. 2016-11-17 20:00:20 +00:00
fs Reduce NFS "NFSv4( mounted on)? fileid > 32bits" log spam. 2016-11-16 01:11:49 +00:00
gdb
geom Use providergone method to cover race between destroy and g_access(). 2016-11-13 03:56:26 +00:00
gnu Import Ingenic CI20 (jz4780) DTS files. 2016-11-17 11:31:13 +00:00
i386 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
isa
kern Fix build when no INET and INET6 in kernel config. 2016-11-17 16:13:30 +00:00
kgssapi
libkern
mips [MIPS] Fix Config3[ULRI] printing 2016-11-15 20:44:19 +00:00
modules Add full softfloat and hardfloat support for RISC-V. 2016-11-16 15:21:32 +00:00
net Plug a lock leak in sysctl_ifmalist(). 2016-11-15 19:23:48 +00:00
net80211 [net80211] announce 11n capabilities in probe requests in IBSS mode. 2016-11-15 01:47:37 +00:00
netgraph Writing out the L2TP control packet requires 12 bytes of 2016-11-17 14:03:44 +00:00
netinet Notify the use via setting errno when a TCP RST segment is received 2016-11-17 08:15:02 +00:00
netinet6 Make ICMPv6 hard error handling for TCP consistent with the ICMPv4 2016-10-21 10:32:57 +00:00
netipsec Remove the 4.3BSD compatible macro m_copy(), use m_copym() instead. 2016-09-15 07:41:48 +00:00
netnatm
netpfil Remove the mbuf tag after use (for reinjected packets). 2016-11-03 00:26:58 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed Move the ConnectX-3 and ConnectX-2 driver from sys/ofed into sys/dev/mlx4 2016-09-30 08:23:06 +00:00
opencrypto Add support for the fpu_kern(9) KPI on arm64. It hooks into the existing 2016-10-20 09:22:10 +00:00
pc98 Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
powerpc Simplify the page tracking for VA<->PA translations. 2016-11-16 05:24:42 +00:00
riscv Add full softfloat and hardfloat support for RISC-V. 2016-11-16 15:21:32 +00:00
rpc
security Fix improper use of "its". 2016-11-08 23:59:41 +00:00
sparc64 Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
sys Move text dump version as it's not an architecture version. 2016-11-14 12:56:18 +00:00
teken
tests
tools Consider CROSS_BINUTILS_PREFIX environment variable so we use correct 2016-08-10 13:49:17 +00:00
ufs Provide simple mutual exclusion between mount point update and unmount. 2016-11-13 21:49:51 +00:00
vm - If caller specifies readbehind and readahead that together with count 2016-11-17 20:32:32 +00:00
x86 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
xdr
xen xen: add a grant-table user-space device 2016-10-31 13:12:58 +00:00
Makefile