Skip to content

Equivalent of IBM Spectrum Archive SDE 2.4.0.1 (10062)

Compare
Choose a tag to compare
@piste-jp piste-jp released this 15 Jan 03:05
· 320 commits to master since this release
14b1eed

IBM released IBM Spectrum Archive 2.4.0.1 (10062) at fc26267. So the LTFS project releases new version 2.4.0.1.

!! WARNING !!

This version is corrupted.

The percent encoder for the LTFS index is corrupted. This corruption creates an unparsable LTFS index on the tape. An index corruption happens when following 2 conditions are met.

  1. File name or directory name has ':' (0x3A) or C0 control codes (0x01-0x1f) except \t(0x09), \n(0x0A) and \r(0x0d) at least (Let's call a percent encode trigger)
  2. File name or directory name has '%' (0x25)

That's because the percent encoder modified into 2.4.0.1 is incomplete and it doesn't encode '%' at all. In other words, '%' shall be encoded to "%25" be the percent encoder but '%' remains as '%' in the 2.4.0.1 encoder.

Corruption Variations

0-0. No percent encode triggers in the all filenames and directories on a tape

There is no corruption

0-1. There is percent triggers but no '%' in the all filenames and directories on a tape

There is no corruption

1. There is percent triggers and '%XX' which can be decoded to correct ASCII characters expect '/' or UNIT SEPARATOR

The index is corrupted but LTFS can mount the tape. Some file name or directory name may be modified automatically.

For example, file "aaa:%20" is written and unmount the tape. After that the tape is mounted, the file name may be "aaa: " instead of "aaa:%20"

The same thing happens "%XX%XX%XX" sequence is valid UTF-8 characters.

2. There is percent triggers and '%1f' or '%2f'

'%2f' is encoded to '%2f', so '%2f' is decoded to '/'. And '%2f' is encoded to '%2f', so '%2f' is decoded to a UNIT SEPARATOR.

Both '/' and UNIT SEPARATOR is invalid character for file name and directory name. As a result, the index reader detects an error on fine name or directory name.

In the recovery, the indices which has an invalid character is skipped. As a result, LTFS rolls back to the latest good index. In this time, LTFS overwrites the data or the indices after latest good index. So data loss may happen.

3. There is percent triggers and '%XX%XX%XX' which can'y be decoded to correct UTF-8 characters

Invalid UTF-8 character is not valid for file name or directory name. So same thing on case 2 above, mount failure and data loss at recovery, happens.

Original descriptions

Change Log:

  • Supported initialized LTO 8 Type M cartridge
  • Support percent-encoding attribute in all name types in LTFS Format Spec 2.4
  • Make the sg backend default in Linux
  • Use persistent reserve command for drive reservation in the sg backend and the iokit backend

Changes for developers

  • Add files for pkg-config to use libltfs
  • Use "signed char" explicitly in "char"
  • Add following options in the configure script
    • SNMP support switch (--enable-snmp [default: enable])
    • lin_tape support switch (--enable-lintape [default: disable])
  • Implements message argument checker [--enable-message-checker (efault: disable)]
    • You cannot build a binary work correctly from the source configured with --enable-message-checker