[k3b] [Bug 379268] Importing previous session does nothing (version 17.04.0)

Thomas Schmitt bugzilla_noreply at kde.org
Sun Apr 30 14:59:44 UTC 2017


https://bugs.kde.org/show_bug.cgi?id=379268

--- Comment #36 from Thomas Schmitt <scdbackup at gmx.net> ---
Hi,

> > I wonder what mount options it uses at this occasion.

> Perhaps -t udf -o nostrict.

Indeed. This option must cause the second session to be mounted.


When i make the first session without Rock Ridge (no option -R), the
older files are not only shown with 0 bytes but also with their
truncated ISO 9660 upper case names and not the UDF names with full
length and case distinction.

This looks as if the loaded file information propagates from the
ISO 9660 tree to the UDF tree. I.e. the first UDF session is not loaded.
Why the size gets set to 0 is a matter of genisoimage entrails.
I guess this is where it gets copied from internal tree model to UDF
model:
  https://sources.debian.net/src/cdrkit/9:1.1.11-3/genisoimage/udf.c/#L919

Question is why directory_entry.realsize is not set to the size of
the file in the loaded ISO tree. It seems to get set for data files
only in
  https://sources.debian.net/src/cdrkit/9:1.1.11-3/genisoimage/tree.c/#L1931
which exploits info obtained by function stat_filter() in
  https://sources.debian.net/src/cdrkit/9:1.1.11-3/genisoimage/tree.c/#L232
which uses local disk filesystem function stat(2).
So this cannot be the case of loaded ISO tree but rather of newly added
files from the local fileystem.

So obviously the directory_entry.realsize seen by the UDF writer is not
set to the size of the file as loaded with the ISO session info.
Other writers seem not use .realsize at all.

In order to see what happens i preliminarily insert

        (*pnt)->realsize = (*pnt)->size;

after
        (*pnt)->size = isonum_733((unsigned char *) idr->size);
in

  https://sources.debian.net/src/cdrkit/9:1.1.11-3/genisoimage/multi.c/#L664

Compilation is hampered by lack of gmake and other bitrot.
Since /usr/bin/make is GNU make, it is safe to do
  ln -s make /usr/bin/gmake
Despite wodim still fails to build i get a working genisoimage.

Yep. Old files get sizes that way.

A few diff comparisons between original and copy look ok.
I mounted the medium explicitely -t udf.


But even if this now really works, it would not be sufficient as permanent
solution because one needs to sum up the extent sizes of a file. More
than one extent usually happens only if a file is of size 4 GiB or larger.
The first step of a solid solution is to find a maintainer for genisoimage.

Urm. As faithful Debian users we should be normally loyal to the
maintainers' decision of 2006 to permanently ban mkisofs.
Nevertheless you could try an original mkisofs that's 10 years more
advanced and maybe has the problem fixed meanwhile.
If not fixed yet, it could become a very interesting time to have
Joerg Schilling here and to discuss my findings. (I thought i had newer
cdrtools but a find run on the whole disk reveiled only 2.01.01a77, which
is nearly as outdated as genisoimage.)
I guess this is the current release:
  https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01.tar.gz/download

Well, if it works then i have to modify my opinion that K3B should
refuse on multi-session on UDF. It should probably rather warn and best
should try to find out whether it works with a fixed mkisofs.


Have a nice day :)

Thomas

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the k3b mailing list