[Bug 651303] New: K3b corrupts other files when recording any big file over 4GiB in UDF
https://bugzilla.novell.com/show_bug.cgi?id=651303 https://bugzilla.novell.com/show_bug.cgi?id=651303#c0 Summary: K3b corrupts other files when recording any big file over 4GiB in UDF Classification: openSUSE Product: openSUSE 11.3 Version: Final Platform: All OS/Version: openSUSE 11.3 Status: NEW Severity: Critical Priority: P5 - None Component: KDE4 Applications AssignedTo: kde-maintainers@suse.de ReportedBy: cameronpoe@poczta.fm QAContact: qa@suse.de Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.10) Gecko/20100914 SUSE/3.6.10-0.3.1 Firefox/3.6.10 Every time recording a DVD or BluRay disks with files larger than 4GiB in UDF it corrupts each file (smaller than 4GiB) that is recorded after any bigger file. Basically, it records them wrong - into some binary files. This problem occurs in openSUSE 11.3 (32- and 64-bit) and 11.2 as well but not in Mandriva 2010.1, Kubuntu 10.04, Debian 6 and some others. That made me wonder. I compared them and made many tests. Finally I found out that sorting weight option (-sort) in mkisofs (and genisoimage in openSUSEs) makes that problem, so I turned it off by deleting all "SortWeight" entries in K3b source. That took out the problem, but I wasn't happy enough because sometimes I want to use that sorting option. So I started experiment with cdrtools-3.00 source and I found out there is a problem with splitting large extents feature for files bigger than 4GiB (which is not used in Mandriva, Kubuntu, Debian's genisoimage). Basically, when I delete this...: #ifdef PROTOTYPES #define LARGE_EXTENT ((off_t)0xFFFFF800UL) #define MAX_EXTENT ((off_t)0xFFFFFFFEUL) #else #define LARGE_EXTENT ((off_t)0xFFFFF800L) #define MAX_EXTENT ((off_t)0xFFFFFFFEL) #endif /* * Break up files greater than (4GB -2) into multiple extents. * The original entry, with ->size untouched, remains for UDF. * Each of the new file sections will get its own entry. * The file sections are the only entries actually written out to the * disk. The UDF entry will use "mxroot" to get the same start * block as the first file section, and all the sections will end up * in the ISO9660 directory in the correct order by "mxpart", * which the directory sorting routine knows about. * * If we ever need to be able to find mxpart == 1 after sorting, * we need to add another pointer to s_entry or to be very careful * with the loops above where the ISO-9660 name is copied back to * all multi-extent parts. */ if (s_entry->size > MAX_EXTENT) { off_t size; s_entry->de_flags |= MULTI_EXTENT; s_entry->isorec.flags[0] |= ISO_MULTIEXTENT; s_entry->mxroot = s_entry; s_entry->mxpart = 0; set_733((char *)s_entry->isorec.size, LARGE_EXTENT); s_entry1 = dup_directory_entry(s_entry); s_entry->next = s_entry1; /* * full size UDF version */ s_entry->de_flags |= INHIBIT_ISO9660_ENTRY|INHIBIT_JOLIET_ENTRY; if (s_entry->size > (((off_t)190)*0x3FFFF800)) { #ifndef EOVERFLOW #define EOVERFLOW EFBIG #endif errmsgno(EOVERFLOW, "File %s is too large - hiding from UDF tree.\n", whole_path); s_entry->de_flags |= INHIBIT_UDF_ENTRY; } /* * Prepare the first file multi-extent section of the file. */ s_entry = s_entry1; s_entry->de_flags |= INHIBIT_UDF_ENTRY; size = s_entry->size; s_entry->size = LARGE_EXTENT; s_entry->mxpart++; /* * Additional extents, as needed */ while (size > MAX_EXTENT) { s_entry1 = dup_directory_entry(s_entry); s_entry->next = s_entry1; s_entry = s_entry1; s_entry->mxpart++; size -= LARGE_EXTENT; } /* * That was the last one. */ s_entry->isorec.flags[0] &= ~ISO_MULTIEXTENT; s_entry->size = size; set_733((char *)s_entry->isorec.size, (UInt32_t)s_entry->size); } ..from the tree.c in mkisofs source - everything WORKS FINE then and you can use the -sort option now with no problems :) I have report this to Joerg Schilling already and I'm waiting for his reply. Kind regards, Cameron Poe Reproducible: Always Steps to Reproduce: 1. open K3b in openSUSE 11.3 (or 11.2) or use genisoimage or mkisofs in the console to make ISO image 2. add a big file > 4GiB and some smaller files before and after it (if you make iso with mkisofs or genisoimage you use option -sort as K3b does by default) 3. record them in UDF (-udf) Actual Results: try to open all recorded files - you will see the files recorded after this big file are corrupted (changed into some binary files) Expected Results: it shouldn't corrupt files using this multiple extents in UDF -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c1
Mariusz Fik
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c3
Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c4
--- Comment #4 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c5
--- Comment #5 from Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c6
--- Comment #6 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c7
--- Comment #7 from Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c8
--- Comment #8 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c9
--- Comment #9 from Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c10
--- Comment #10 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c11
--- Comment #11 from Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c12
--- Comment #12 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c13
--- Comment #13 from Jörg Schiling
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c14
--- Comment #14 from Cameron Poe
https://bugzilla.novell.com/show_bug.cgi?id=651303
https://bugzilla.novell.com/show_bug.cgi?id=651303#c15
--- Comment #15 from Jörg Schiling
participants (1)
-
bugzilla_noreply@novell.com