Age | Commit message (Collapse) | Author |
|
because two different curve classes were tested in one TC and on one test machine only one was supported
|
|
|
|
|
|
|
|
* lars/crypto/valgrind-fixes/OTP-14800:
[crypto] Fix memory leak
|
|
Fix memory leak in engine load code found by valgrind.
|
|
|
|
* ingela/ssl/timing:
ssl: Align timing just in case
|
|
* peterdmv/inets/fix-httpc/OTP-14799:
inets: Fix httpc path handling
|
|
OTP-14256
OTP-14797
|
|
* maint:
Clarification in doc of unicode:characters_to_list/2
|
|
* rickard/unicode-doc/ERL-516/OTP-14798:
Clarification in doc of unicode:characters_to_list/2
|
|
|
|
|
|
|
|
The option no longer does anything; systems that lack support for
non-blocking sendfile(2) will use the Erlang fallback.
|
|
The parts relating to drivers/ports are now obsolete, and the
provided example was far noisier than it had to be; the only
relevant metric is the number of calls and it's up to the user to
decide how those will be reduced. One could argue for its complete
removal, but I'm inclined to leave it be.
|
|
|
|
efile_drv is gone and so is the need for file-specific DTrace. The
new implementation works fine with the normal tracing mechanism so
there's nothing preventing anyone from making an erl_tracer nif
that forward these events to DTrace.
|
|
The option no longer does anything at all.
|
|
|
|
There doesn't seem to be any science behind the long delays, and
the (newly introduced) dry run forces us to eat them twice, so
they've been shortened to more reasonable values.
|
|
Code loading is done through dirty IO now, causing the
dirty_scheduler_exit tests to fail as they block their own progress
by invoking erts_debug:dirty_io(wait, _); the spawned processes
will exit normally before we have a chance to kill them.
To get around this, we perform a dry run to ensure that all required
code is loaded. It isn't particularly pretty (or fast) but it saves
us the hassle of maintaining a module list (cf. embedded mode).
|
|
The old driver didn't fall back to using write(2) if writev(2) failed
due to the combined length of the iov overflowing a ssize_t, but the
new one doesn't have any problems with it so we failed this test with
a case_clause error on 32-bit machines.
|
|
Files opened with the file module are not guaranteed to work with
prim_file, even when opened in raw mode.
|
|
|
|
|
|
The tests assume that the most active process will be the current
one, which is no longer true since the delayed_write option now
uses a wrapper process for much of its work.
The timeout for this test has been increased to account for the
lack of delayed_write; 60s was enough for everything except the
debug build on some machines.
|
|
|
|
|
|
|
|
This subtest revolves around the possibility that the underlying
port can be killed, which is nonsense now that the file suite no
longer uses ports for anything.
|
|
This test revolves around the possibility that the underlying port
can be killed, which is nonsense now that the file suite no longer
uses ports for anything.
|
|
This test is irrelevant as the new implementation doesn't use async
threads.
|
|
|
|
|
|
The cumulative wait time was as long as the delay itself in the
flush-on-size test, causing the test to pass because the write
managed to time out.
|
|
|
|
|
|
|
|
This also hides the module behind ?PRIM_FILE to make testing new
implementations less painful.
|
|
This improves the latency of file operations as dirty schedulers
are a bit more eager to run jobs than async threads, and use a
single global queue rather than per-thread queues, eliminating the
risk of a job stalling behind a long-running job on the same thread
while other async threads sit idle.
There's no such thing as a free lunch though; the lowered latency
comes at the cost of increased busy-waiting which may have an
adverse effect on some applications. This behavior can be tweaked
with the +sbwt flag, but unfortunately it affects all types of
schedulers and not just dirty ones. We plan to add type-specific
flags at a later stage.
sendfile has been moved to inet_drv to lessen the effect of a nasty
race; the cooperation between inet_drv and efile has never been
airtight and the socket dying at the wrong time (Regardless of
reason) could result in fd aliasing. Moving it to the inet driver
makes it impossible to trigger this by closing the socket in the
middle of a sendfile operation, while still allowing it to be
aborted -- something that can't be done if it stays in the file
driver.
The race still occurs if the controlling process dies in the short
window between dispatching the sendfile operation and the dup(2)
call in the driver, but it's much less likely to happen now.
A proper fix is in the works.
--
Notable functional differences:
* The use_threads option for file:sendfile/5 no longer has any
effect.
* The file-specific DTrace probes have been removed. The same
effect can be achieved with normal tracing together with the
nif__entry/nif__return probes to track scheduling.
--
OTP-14256
|
|
|
|
If a NIF monitor fired while the resource was present in an ETS
table, the lock checker would erroneously report a lock order
violation.
This has no effect outside of debug builds.
|
|
This introduces a way to retrieve erlang terms from NIF IO queues
without having to resort to copying.
OTP-14797
|
|
|
|
Document enif_realloc and pointer alignment guarantees
|
|
X register 0 used to be mapped to a hardware register, and therefore
faster than the other registers. Because of that, the compiler
tried to use x(0) as much as possible as a temporary register.
That was changed a few releases ago. X register 0 is now placed
in the array of all X registers and has no special speed
advantage compared to the other registers.
Remove the code in the compiler that attempts to use x(0) as
much as possible. As a result, the following type of instruction
will be much less frequent:
{put_list,Src,{x,0},{x,0}}
Instead, the following type of instruction will be more frequent:
{put_list,Src,{x,X},{x,X}}
(Where X is an arbitrary X register.)
Update the runtime system to specialize that kind of put_list
instruction.
|
|
* maint:
Fix type create_option() in mnesia
|
|
Fix type create_option() in mnesia
|