nfs: fix 'dangling' files in lossy sessions

In case of lossy connections the NFS state would properly clean up
transactions, including file transactions. However for files the
state was never set to 'truncated', leading to files to stay 'active'.

This would lead these files staying in the NFS's state. In long running
sessions with lots of files this would lead to performance and memory
use issues.

This patch cleans truncates the file that was being transmitted when
a file transaction is being closed.

Based on 65e9a7c31c
pull/5201/head
Victor Julien 6 years ago
parent 760d6c1877
commit 44d7dd02b3

@ -502,11 +502,13 @@ impl NFSState {
{
let mut post_gap_txs = false;
for tx in &mut self.transactions {
if let Some(NFSTransactionTypeData::FILE(ref f)) = tx.type_data {
if let Some(NFSTransactionTypeData::FILE(ref mut f)) = tx.type_data {
if f.post_gap_ts > 0 {
if self.ts > f.post_gap_ts {
tx.request_done = true;
tx.response_done = true;
let (files, flags) = self.files.get(tx.file_tx_direction);
f.file_tracker.trunc(files, flags);
} else {
post_gap_txs = true;
}

Loading…
Cancel
Save