mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-07 20:45:18 +00:00
Compare commits
3 Commits
auke/resto
...
auke/ports
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16a292fb30 | ||
|
|
9741d40e10 | ||
|
|
48ac7bdf7c |
@@ -1,6 +1,27 @@
|
||||
Versity ScoutFS Release Notes
|
||||
=============================
|
||||
|
||||
---
|
||||
v1.25
|
||||
\
|
||||
*Jun 3, 2025*
|
||||
|
||||
Fix a bug that could cause indefinite retries of failed client commits.
|
||||
Under specific error conditions the client and server's understanding of
|
||||
the current client commit could get out of sync. The client would retry
|
||||
commits indefinitely that could never succeed. This manifested as
|
||||
infinite "critical transaction commit failure" messages in the kernel
|
||||
log on the client and matching "error <nr> committing client logs" on
|
||||
the server.
|
||||
|
||||
Fix a bug in a specific case of server error handling that could result
|
||||
in sending references to unwritten blocks to the client. The client
|
||||
would try to read blocks that hadn't been written and return spurious
|
||||
errors. This was seen under low free space conditions on the server and
|
||||
resulted in error messages with error code 116 (The errno enum for
|
||||
ESTALE, the client's indication that it couldn't read the blocks that it
|
||||
expected.)
|
||||
|
||||
---
|
||||
v1.24
|
||||
\
|
||||
|
||||
@@ -1278,6 +1278,17 @@ restart:
|
||||
set_conn_fl(acc, reconn_freeing);
|
||||
spin_unlock(&conn->lock);
|
||||
if (!test_conn_fl(conn, shutting_down)) {
|
||||
/*
|
||||
* If we haven't seen a vg for this connection, don't bother fencing
|
||||
* it - instead just drop it. If this was a real client, it will try
|
||||
* again to connect.
|
||||
*/
|
||||
if (!test_conn_fl(acc, valid_greeting)) {
|
||||
/* delete the conn */
|
||||
list_del_init(&acc->accepted_head);
|
||||
goto restart;
|
||||
}
|
||||
|
||||
scoutfs_info(sb, "client "SIN_FMT" reconnect timed out, fencing",
|
||||
SIN_ARG(&acc->last_peername));
|
||||
ret = scoutfs_fence_start(sb, acc->rid,
|
||||
|
||||
7
tests/golden/portscan
Normal file
7
tests/golden/portscan
Normal file
@@ -0,0 +1,7 @@
|
||||
== empty packets
|
||||
Ncat: Connection refused.
|
||||
Ncat: Connection refused.
|
||||
== find portscan in connections
|
||||
|
||||
== find portscan in connections
|
||||
|
||||
@@ -57,4 +57,5 @@ archive-light-cycle.sh
|
||||
block-stale-reads.sh
|
||||
inode-deletion.sh
|
||||
renameat2-noreplace.sh
|
||||
portscan.sh
|
||||
xfstests.sh
|
||||
|
||||
24
tests/tests/portscan.sh
Normal file
24
tests/tests/portscan.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# portscan tests - assure malformed packets do not cause issues
|
||||
#
|
||||
|
||||
t_require_commands scoutfs nc
|
||||
|
||||
echo "== empty packets"
|
||||
sleep 1
|
||||
echo " " | nc -p 33033 127.0.0.1 42000
|
||||
echo " " | nc -p 33133 127.0.0.1 42001
|
||||
echo " " | nc -p 33233 127.0.0.1 42002
|
||||
|
||||
echo "== find portscan in connections"
|
||||
L=$(grep 'peer 127.0.0.1:33.33' /sys/kernel/debug/scoutfs/*/connections)
|
||||
echo $L
|
||||
|
||||
# wait for fencing timeout (20s)
|
||||
sleep 30
|
||||
|
||||
echo "== find portscan in connections"
|
||||
L=$(grep 'peer 127.0.0.1:33.33' /sys/kernel/debug/scoutfs/*/connections)
|
||||
echo $L
|
||||
|
||||
t_pass
|
||||
Reference in New Issue
Block a user