From a60ebf8822cdd76bba6bf164d665e6a30d7e15a3 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 7 Oct 2025 20:19:18 +0100 Subject: [PATCH] Fix missing call to close tape DDT. --- src/close.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/close.c b/src/close.c index 824e609..4fdbc61 100644 --- a/src/close.c +++ b/src/close.c @@ -4003,17 +4003,27 @@ int aaruf_close(void *context) if(error != AARUF_STATUS_OK) return error; } - // Write cached secondary DDT table if any - int32_t res = write_cached_secondary_ddt(ctx); - if(res != AARUF_STATUS_OK) return res; + int32_t res; + if(ctx->is_tape) + { + // Write tape DDT + res = write_tape_ddt(ctx); + if(res != AARUF_STATUS_OK) return res; + } + else + { + // Write cached secondary DDT table if any + res = write_cached_secondary_ddt(ctx); + if(res != AARUF_STATUS_OK) return res; - // Write primary DDT table (multi-level) if applicable - res = write_primary_ddt(ctx); - if(res != AARUF_STATUS_OK) return res; + // Write primary DDT table (multi-level) if applicable + res = write_primary_ddt(ctx); + if(res != AARUF_STATUS_OK) return res; - // Write single-level DDT table if applicable - res = write_single_level_ddt(ctx); - if(res != AARUF_STATUS_OK) return res; + // Write single-level DDT table if applicable + res = write_single_level_ddt(ctx); + if(res != AARUF_STATUS_OK) return res; + } // Finalize checksums and write checksum block write_checksum_block(ctx);