#1110383 File names over 85 characters crash growisofs -r -M

Package:
growisofs
Source:
growisofs
Description:
DVD+-RW/R recorder
Submitter:
Date:
2025-08-05 07:45:03 UTC
Severity:
normal
#1110383#5
Date:
2025-08-04 08:43:40 UTC
From:
To:
If you add a file with a name that exceeds 85 characters to a multisession disc, its Rock Ridge file name is not visible. Only the ISO9660 file name is shown. Additionally, the next time you try to resume a session, you get an error that looks like this:

~~~~
# growisofs -r -M /dev/sr1 test_dir
Executing 'genisoimage -r -C 16,7082336 -M /dev/fd/3 test_dir | builtin_dd of=/dev/sr1 obs=32k seek=442646'
I: -input-charset not specified, using utf-8 (detected in locale settings)
Rock Ridge signatures found
BAD RR ATTRIBUTES: 93 51 FB 6D 68 38 0B 27 66 00 26 7B 74 68 88 4F 5E EA 93 37 6C 15 6D 14 7B 96 D2 D2 5B CF 3A 23 89 4D BB B7 85 80 34 09 39 32 97 CB 73 20 BC 67 B3 FE E4 2C B3 8F BF 3D 3B 7C 92 1E 44 FD
BAD RR ATTRIBUTES: .Q.mh8.'f.&{th.O^..7l.m.{...[.:#.M....4.92..s .g...,...=;|..D.
genisoimage: **BAD RRVERSION (109) for Q
genisoimage: Cannot parse Rock Ridge attributes for 'LONG_FIL.MP3;1'.
:-( genisoimage has failed: 255
~~~~

You can still resume the multisession without Rock Ridge (-r), but this will downgrade all file names to basic ISO9660 names, which removes differentiation between uppercase and lowercase (Linux shows it as all-lowercase, Windows as all-uppercase) and replaces spaces with underscores.

#1110383#10
Date:
2025-08-05 07:42:13 UTC
From:
To:
Hi,

this looks more like a problem of genisoimage than of growisofs.
Regrettably both are unmaintained in Debian and upstream.

Do you get better results if you use xorrisofs instead of genisoimage ?

If not yet installed, get xorriso by:

  sudo apt install xorriso

Use its mkisofs emulation named "xorrisofs" with growisofs by

  export GENISOIMAGE=xorrisofs
  growisofs -r -M /dev/sr1 test_dir

It might be that xorrisofs throws an error on the existing genisoimage
generated filesystem. So it might be necessary to start a new sequence
of ISO 9660 sessions by growisofs -Z.

Alternatively you could use xorriso in its native command mode which
does the burning, too.
The equivalent of growisofs -Z is done by command -outdev and
command -blank with mode "as_needed", which will do nothing if the
medium is already blank:

  xorriso -outdev /dev/sr1 -blank as_needed -map test_dir / -find / -exec mkisofs_r --

The equivalent of growisofs -M is done by -dev and without -blank:

  xorriso -dev /dev/sr1 -map test_dir / -find / -exec mkisofs_r --

You may use for testing a data file instead of /dev/sr1. It will behave
like a DVD+RW medium in a drive. E.g. with "$HOME"/test.iso :

  xorriso -outdev "$HOME"/test.iso ...
  xorriso -dev "$HOME"/test.iso ...

The parent directory of the file has to exist already.

Note that the sequence of xorriso commands matters:
First acquire the drive, then blank it, then put files into the
emerging ISO filesystem by -map, then manipulate them by -find.
The final write command -commit can be omitted, because xorriso writes
the session at program end if changes to its model of the ISO
filesystem are pending.

I am the developer of xorriso. So i am biased, of course.

Be aware that Linux misrepresents Rock Ridge file names which are
longer than 253 bytes. Length 254 and 255 should be supported
but aren't. The truncation of names > 253 bytes is coarse and can
discard more than 100 bytes from the file name's end.


Have a nice day :)

Thomas