From 8e89401faf59937c26376efddcf93a84b2413777 Mon Sep 17 00:00:00 2001 From: Joao Afonso <joao.afonso@cern.ch> Date: Thu, 12 Jan 2023 10:43:35 +0100 Subject: [PATCH] Improving error description in cta-tape-label in case of wrong volume label format --- .../castor/tape/tapeserver/drive/DriveGeneric.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tapeserver/castor/tape/tapeserver/drive/DriveGeneric.cpp b/tapeserver/castor/tape/tapeserver/drive/DriveGeneric.cpp index 53e8731586..74fbe14f07 100644 --- a/tapeserver/castor/tape/tapeserver/drive/DriveGeneric.cpp +++ b/tapeserver/castor/tape/tapeserver/drive/DriveGeneric.cpp @@ -1285,6 +1285,12 @@ void drive::DriveGeneric::readExactBlock(void * data, size_t count, const std::s delete[] dataWithCrc32c; throw UnexpectedSize(context); } + // ENOMEM may be returned if the tape block size is larger than 'count' + if (-1 == res && ENOMEM == errno) { + delete[] dataWithCrc32c; + throw cta::exception::Errnum(errno, context + + ": Failed ST read in DriveGeneric::readExactBlock. Tape volume label size not be in the CTA/CASTOR format."); + } // Generic handling of other errors if (-1 == res) { delete[] dataWithCrc32c; @@ -1316,6 +1322,10 @@ void drive::DriveGeneric::readExactBlock(void * data, size_t count, const std::s // First handle block too big if (-1 == res && ENOSPC == errno) throw UnexpectedSize(context); + // ENOMEM may be returned if the tape block size is larger than 'count' + if (-1 == res && ENOMEM == errno) + throw cta::exception::Errnum(errno, context + + ": Failed ST read in DriveGeneric::readExactBlock. Tape volume label size not be in the CTA/CASTOR format."); // Generic handling of other errors cta::exception::Errnum::throwOnMinusOne(res, context+": Failed ST read in DriveGeneric::readExactBlock"); -- GitLab