"Ganssauge, Gottfried" <gottfried.ganssa...@haufe-lexware.com> wrote:

> Hello list,
>
> We recently had to switch the machine which produces UDF images for our 
> products from Ubuntu-12 LTS to Ubuntu-14 LTS.
> Unfortunately suddenly all UDF images produced by the new machine were 
> rejected by our DVD-ROM manufacturer. Their 
> pre production verification step spit out the following message:
>
>     PI51_U14 - Fehler: 
>     [e]          DVD       1             Volume Descriptor Sequences are not 
> equivalent 
>     [w]         DVD       1             Inconsistency between UDF Main and 
> Reserve Volume Descriptor Sequence 
>
> I started to investigate and found out that the Volume Set ID is slightly 
> different between the original and the copy of the primary volume descriptor.
> As these problems remained consistently with images written on the new 
> machine we suspected a connection to mkisofs which we use to create our 
> images.
> On the old machine we used 3.01a24 whereas on the new machine 3.01a28 is used 
> - in both cases directly from the Ubuntu software archives.

> Further investigation showed that the difference is in the Volume Set 
> Identifier field at Offset 72 in the Primary Volume Descriptor.
>
> I then went through mkisofs' sources and could locate the problematic code at 
> line 1990 in mkisofs/udf.c in routine udf_main_seq_write.
> That routine is called twice - once to write the main VDS and then again to 
> write the reserve VDS.
> Between calls to that routine some time passes so that the call to clock() 
> returns a slightly different time when called the second time.
> To fix that problem I used the tv_usec field of "tv_begun" which is 
> initialized directly after "begun" and then left stable.

Good catch!



> The complete patch looks like this:
>
> diff --git a/mkisofs/udf.c b/mkisofs/udf.c
> index 25feca6..04390e2 100644
> --- a/mkisofs/udf.c
> +++ b/mkisofs/udf.c
> @@ -98,7 +98,7 @@ static        UConst char sccsid[] =
>  extern int     use_sparcboot;
>
>  extern struct directory *root;
> -extern struct timeval  tv_begun;
> +extern time_t          begun;
>
>  static unsigned lba_main_seq;
>  static unsigned lba_main_seq_copy;
> @@ -723,7 +723,7 @@ set_primary_vol_desc(buf, lba)
>         /*pvd->volume_abstract;*/
>         /*pvd->volume_copyright_notice;*/
>         /*pvd->application_ident;*/
> -       set_timestamp_from_time_t(&pvd->recording_date_and_time, 
> tv_begun.tv_sec);
> +       set_timestamp_from_time_t(&pvd->recording_date_and_time, begun);
>         set_impl_ident(&pvd->impl_ident);
>         set_tag(&pvd->desc_tag, UDF_TAGID_PRIMARY_VOLUME_DESC, lba, 512);

It seems that your patch is reversed.

I'll see what I can do.

Jörg

-- 
 EMail:jo...@schily.net                    (home) Jörg Schilling D-13353 Berlin
       joerg.schill...@fokus.fraunhofer.de (work) Blog: 
http://schily.blogspot.com/
 URL:  http://cdrecord.org/private/ 
http://sourceforge.net/projects/schilytools/files/'

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
_______________________________________________
Cdrtools-developers mailing list
Cdrtools-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdrtools-developers

Reply via email to