1. 25 Sep, 2020 11 commits
  2. 29 Aug, 2017 2 commits
  3. 28 Aug, 2017 1 commit
  4. 26 May, 2017 3 commits
    • Cristina Moraru's avatar
    • Cristina Moraru's avatar
      After feedback · d5a8098c
      Cristina Moraru authored
      Signed-off-by: default avatarCristina Moraru <cristina-gabriela.moraru@cern.ch>
    • Cristina Moraru's avatar
      Implement RAO at the drive level #57 · c8b74a53
      Cristina Moraru authored
      This commit adds the feature of querying the drive for the
      Recommended Access Order (RAO) of a series of files and adds
      a test file for this feature.
      Changes of this commit:
        *  Extend the DriveInterface with a virtual method queryRAO
      which takes as parameter the name of the file containing a set
      of files for which the RAO is requested. The line format of this
      file is the following:
        *  Extend DriveGeneric class with the implementation of the
      method queryRAO, along with a few other auxiliary methods; some
      key auxiliary methods are getLimitUDS, generateRAO, receiveRAO
        *  Add method queryRAO in object FakeDrive returning Exception:
      Not Implemented
        *  Add auxiliary constants and structures in a new 'RAO' namespace
        *  Add test file: BasicReadWriteTest.cpp which can perform 3 tests
      according to the setting of variable 'test'
      	1. BLOCK_TEST - basic read / write of blocks
      	2. FILE_TEST - writes a series of CASTOR files and reads
      a random one
      	3. RAO_TEST - performs a RAO query for a series of files
      given in the filename specified in argv[1]. The file format should
      respect the above mentioned order.
      Signed-off-by: default avatarCristina Moraru <cristina-gabriela.moraru@cern.ch>
  5. 11 Oct, 2016 1 commit
    • Victor Kotlyar's avatar
      Ported commits from castor/master for Encryption: · 1a3812e0
      Victor Kotlyar authored
        CASTOR-5350: Introduce encryption SCSI commands in tape drive
        Implementation of two methods:
          * setEncryptionKey(key): Sets encryption params to drive.
          * clearEncryptionKey: Clears encryption params from drive.
        Added support for an interface script that will setup drive
        encryption per tape
        Migrate TapeWriteSingleThread::TapeCleaning::~TapeCleaning() body to
        CASTOR-5350: Refactor support for only external key management script
        Merge branch 'encryption_backend' into 'master'
        CASTOR-5350: Encryption backend
        ## Description
          The aim of this merge request is to incorporate encryption support
          into CASTOR.
          The proposed changes are to be used in conjunction with the
          The **aim** is to enable encryption in specific tape pools of
        ## Changes
          * Introduce encryption SCSI backend to DriveGeneric.
          * Introduce encryption control wrapper
          * (`castor/tape/tapeserver/daemon/EncryptionControl`) for
          * abstracting the two sub-components of:
            * Calling the `ExternalEncryptionKeyScript`,
            * Calling the equivalent DriveGeneric function for
            * passing/clearing the encryption parameters to/from the drive.
          * Add new configuration option in `castor.conf` for the external key
          * management script.
          * Create a Subprocess wrapper for executing external commands as
          * CASTOR children (`castor/server/Subprocess.{h,c}pp`).
          * Incorporate encryption handling in the:
            * DataTransferSession
            * LabelSession
            * CleanerSession
          * Add encryption control timer in the task Watchdog.
        See merge request !1
        Clear encryption key only when encryption enabled
        Changes include:
          - Making EncryptionControl stateful
          - Calling clearEncryptionKey on the drive only when encryption is
        Also includes a minor duplicate code fix on DriveGeneric.
        Merge branch 'encryption_changes' into 'master'
        Clear encryption key only when encryption enabled
        ## Description
          Changes include:
          - Making EncryptionControl stateful
          - Calling `clearEncryptionKey()` on the drive only when encryption
            is on.
          Also includes a minor duplicate code fix on **DriveGeneric.cpp**.
        See merge request !2
        Check if the drive has encryption capability enabled:
          * Add isEncryptionCapEnabled() vendor-specific function
          * Check isEncryptionCapEnabled() before passing encryption params
          * Check isEncryptionCapEnabled() before clearing encryption params
          * Clear encryption key before unencrypted I/O
        Merge branch 'encryption_capability_enabled' into 'master'
        Drive encryption capabilities inclusion
        ## Description
          The aim of this merge request is to address issues related to
          encryption on drive without the encryption capability enabled.
          More specifically:
            * It introduces a vendor-specific way of identifying if the drive
            * has encryption capability enabled
            * **IBM**: Through the SPIN index SCSI page
            * **Oracle**: Through the general INQUIRY SCSI page
            * If the data to be written are to be encrypted, an additional check
            * of the encryption capability of the drive is made. In case of
            * encrypted data, but no encryption capability, the session fails.
            In essence, all encryption related operations are made modulo the
          encryption capability of the drive.
            Last, in case of unencrypted I/O, we clear the keys of the drive (if
          encryption capable) to avoid encrypted data with previous keys on
          CASTOR's system failure.
        ## Testing
          Before the merge request's submission, the following tests were
            On drives with **encryption capability enabled**:
              * Label session
              * Label with previously set encryption key
              * Write without encryption
              * Read without encryption
              * Write with encryption
              * Read with encryption
              * Write with previously set encryption key
              * Read with previously set encryption key
            On drive with **encryption cabability disabled**:
              * Label session
              * Write without encryption
              * Read without encryption
              * Write with encryption - session **should** fail
              * Read with encryption - session **should** fail
          See merge request !3
        Secure session against invalid encryption script output
        Changes in encryption workflow
          - VMGR tag is updated only on write operations
          - Empty key signifies no encryption
        Minor encryption log enhancements
          * Error line in Read/Write session with ErrorMesage key
          * Fix for delimiter in the end of arguments in argsToString()
        Merging in improvements on tape encryption support.
        Removed nullptr which is not supported in SLC6's gcc.
        Added automatic deletion of json objects in
        Fix log typo
  6. 29 Aug, 2016 1 commit
  7. 24 Feb, 2016 1 commit
  8. 12 Nov, 2015 1 commit
  9. 16 Jul, 2015 2 commits
  10. 15 Jul, 2015 2 commits
  11. 28 Oct, 2014 2 commits
  12. 24 Oct, 2014 2 commits
  13. 15 Sep, 2014 1 commit
  14. 09 Sep, 2014 1 commit
  15. 05 Aug, 2014 2 commits
  16. 03 Jul, 2014 1 commit
  17. 15 May, 2014 1 commit
  18. 18 Feb, 2014 1 commit
  19. 07 Feb, 2014 1 commit
  20. 04 Feb, 2014 1 commit
    • Eric Cano's avatar
      Fixed missing length and code maintenance · a27f3e74
      Eric Cano authored
      - Fixed missing allocationLength in INQUIRY commands
      - Fixed misnamed struct member (typo)
      - Introduced setU32 utility function to replace fromLtoB32 (retired)
      - Replaced usage of ad-hoc structures with the automatically set classes
      (SCSI::Structures::LinuxSGIO_t, SCSI::Structures::senseData_t).
  21. 12 Dec, 2013 1 commit
    • Eric Cano's avatar
      Fixed inheritance from std::exception (const correctness of what()). This... · 565c7a37
      Eric Cano authored
      Fixed inheritance from std::exception (const correctness of what()). This required declaring m_what mutable.
      Created a multithreaded unit test.
      Created an automatic exception thrower for unhandled errors.
      Ported from previous proof of concept the threading primitves and made them production level (with error checking).
      Added unit tests for threading primitives.
  22. 05 Dec, 2013 1 commit