From 1d1f9cca4ef43136eee7824a1f2960f1a1de7402 Mon Sep 17 00:00:00 2001 From: dogsheng <960055655@qq.com> Date: Sun, 15 Dec 2019 00:40:00 +0800 Subject: [PATCH] Package init --- 0000-dvd+rw-tools-7.0.manpatch | 27 + 0001-dvd+rw-tools-7.0-wexit.patch | 11 + 0002-dvd+rw-tools-7.0-glibc2.6.90.patch | 11 + 0003-dvd+rw-tools-7.0-reload.patch | 12 + 0004-dvd+rw-tools-7.0-wctomb.patch | 11 + 0005-dvd+rw-tools-7.0-dvddl.patch | 13 + 0006-dvd+rw-tools-7.1-noevent.patch | 19 + 0007-dvd+rw-tools-7.1-lastshort.patch | 12 + 0008-dvd+rw-tools-7.1-format.patch | 251 ++++ 0009-dvd+rw-tools-7.1-bluray_srm+pow.patch | 12 + ...vd+rw-tools-7.1-bluray_pow_freespace.patch | 14 + 0011-dvd+rw-tools-7.1-sysmacro-inc.patch | 10 + dvd+rw-tools-7.1.tar.gz | Bin 0 -> 140846 bytes dvd+rw-tools.spec | 76 + index.html | 1295 +++++++++++++++++ 15 files changed, 1774 insertions(+) create mode 100644 0000-dvd+rw-tools-7.0.manpatch create mode 100644 0001-dvd+rw-tools-7.0-wexit.patch create mode 100644 0002-dvd+rw-tools-7.0-glibc2.6.90.patch create mode 100644 0003-dvd+rw-tools-7.0-reload.patch create mode 100644 0004-dvd+rw-tools-7.0-wctomb.patch create mode 100644 0005-dvd+rw-tools-7.0-dvddl.patch create mode 100644 0006-dvd+rw-tools-7.1-noevent.patch create mode 100644 0007-dvd+rw-tools-7.1-lastshort.patch create mode 100644 0008-dvd+rw-tools-7.1-format.patch create mode 100644 0009-dvd+rw-tools-7.1-bluray_srm+pow.patch create mode 100644 0010-dvd+rw-tools-7.1-bluray_pow_freespace.patch create mode 100644 0011-dvd+rw-tools-7.1-sysmacro-inc.patch create mode 100644 dvd+rw-tools-7.1.tar.gz create mode 100644 dvd+rw-tools.spec create mode 100644 index.html diff --git a/0000-dvd+rw-tools-7.0.manpatch b/0000-dvd+rw-tools-7.0.manpatch new file mode 100644 index 0000000..cbbade4 --- /dev/null +++ b/0000-dvd+rw-tools-7.0.manpatch @@ -0,0 +1,27 @@ +diff -ur dvd+rw-tools-7.0/Makefile.m4 dvd+rw-tools-7.0-manpatch/Makefile.m4 +--- dvd+rw-tools-7.0/Makefile.m4 2006-09-24 19:55:19.000000000 +0200 ++++ dvd+rw-tools-7.0-manpatch/Makefile.m4 2006-10-09 10:44:31.000000000 +0200 +@@ -191,7 +191,7 @@ + LINK.o =$(LINK.cc) + + prefix?=/usr/local +-manprefix?=$(shell case $(prefix) in (*/usr/?*) echo $(prefix)/man ;; (*) echo $(prefix)/share/man ;; esac) ++mandir?=$(shell case $(prefix) in (*/usr/?*) echo $(prefix)/man ;; (*) echo $(prefix)/share/man ;; esac) + + bin_mode?=0755 # yes, default is *no* set-uid + minus_o:=$(shell [[ `id -u` == 0 ]] && echo "-o root") +@@ -199,10 +199,10 @@ + install: dvd+rw-tools + [[ -d $(prefix)/bin ]] || mkdir -p $(prefix)/bin + install $(minus_o) -m $(bin_mode) $(CHAIN) $(prefix)/bin +- [[ -d $(manprefix)/man1 ]] || mkdir -p $(manprefix)/man1 +- install $(minus_o) -m 0644 growisofs.1 $(manprefix)/man1 +- -[[ -f rpl8 ]] && install $(minus_o) -m $(bin_mode) rpl8 $(prefix)/bin; : +- -[[ -f btcflash ]] && install $(minus_o) -m $(bin_mode) btcflash $(prefix)/bin; : ++ [[ -d $(mandir)/man1 ]] || mkdir -p $(mandir)/man1 ++ install $(minus_o) -m 0644 growisofs.1 $(mandir)/man1 ++ -[[ -f rpl8 ]] && install $(minus_o) -m $(bin_mode) rpl8 $(prefix)/bin || : ++ -[[ -f btcflash ]] && install $(minus_o) -m $(bin_mode) btcflash $(prefix)/bin || : + ]) + + # common section diff --git a/0001-dvd+rw-tools-7.0-wexit.patch b/0001-dvd+rw-tools-7.0-wexit.patch new file mode 100644 index 0000000..e7910cb --- /dev/null +++ b/0001-dvd+rw-tools-7.0-wexit.patch @@ -0,0 +1,11 @@ +--- dvd+rw-tools-7.0/dvd+rw-format.cpp.wexit 2007-06-21 12:42:30.000000000 +0200 ++++ dvd+rw-tools-7.0/dvd+rw-format.cpp 2007-06-21 12:44:13.000000000 +0200 +@@ -245,7 +245,7 @@ int main (int argc, char *argv[]) + alarm(1); + while ((waitpid(pid,&i,0) != pid) && !WIFEXITED(i)) ; + if (WEXITSTATUS(i) == 0) fprintf (stderr,"\n"); +- exit (0); ++ exit (WEXITSTATUS(i)); + } + #endif + diff --git a/0002-dvd+rw-tools-7.0-glibc2.6.90.patch b/0002-dvd+rw-tools-7.0-glibc2.6.90.patch new file mode 100644 index 0000000..49742d3 --- /dev/null +++ b/0002-dvd+rw-tools-7.0-glibc2.6.90.patch @@ -0,0 +1,11 @@ +diff -up dvd+rw-tools-7.0/transport.hxx.glibc2.6.90 dvd+rw-tools-7.0/transport.hxx +--- dvd+rw-tools-7.0/transport.hxx.glibc2.6.90 2007-08-15 12:56:17.000000000 +0200 ++++ dvd+rw-tools-7.0/transport.hxx 2007-08-15 12:56:42.000000000 +0200 +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/0003-dvd+rw-tools-7.0-reload.patch b/0003-dvd+rw-tools-7.0-reload.patch new file mode 100644 index 0000000..49352e5 --- /dev/null +++ b/0003-dvd+rw-tools-7.0-reload.patch @@ -0,0 +1,12 @@ +diff -Nrup dvd+rw-tools-7.0/growisofs_mmc.cpp dvd+rw-tools-7.0_mod/growisofs_mmc.cpp +--- dvd+rw-tools-7.0/growisofs_mmc.cpp 2006-09-23 20:45:49.000000000 +0800 ++++ dvd+rw-tools-7.0_mod/growisofs_mmc.cpp 2007-11-19 18:20:46.000000000 +0800 +@@ -138,7 +138,7 @@ int media_reload (char *name=NULL,struct + cmd[0] = 0x1B; // START/STOP UNIT + cmd[4] = 0x2; // "Eject" + cmd[5] = 0; +- if (cmd.transport()) return 1; ++ cmd.transport(); + } + #if defined(__sun) || defined(sun) + else if (volmgt_running()) diff --git a/0004-dvd+rw-tools-7.0-wctomb.patch b/0004-dvd+rw-tools-7.0-wctomb.patch new file mode 100644 index 0000000..56bd725 --- /dev/null +++ b/0004-dvd+rw-tools-7.0-wctomb.patch @@ -0,0 +1,11 @@ +--- transport.hxx~ 2008-03-25 21:24:47.000000000 -0400 ++++ transport.hxx 2008-03-25 21:25:36.000000000 -0400 +@@ -116,7 +116,7 @@ + extern "C" char *plusminus_locale() + { static class __plusminus { + private: +- char str[4]; ++ char str[MB_LEN_MAX]; + public: + __plusminus() { setlocale(LC_CTYPE,ENV_LOCALE); + int l = wctomb(str,(wchar_t)(unsigned char)'±'); diff --git a/0005-dvd+rw-tools-7.0-dvddl.patch b/0005-dvd+rw-tools-7.0-dvddl.patch new file mode 100644 index 0000000..c1c6fb3 --- /dev/null +++ b/0005-dvd+rw-tools-7.0-dvddl.patch @@ -0,0 +1,13 @@ +--- ./growisofs_mmc.cpp.joe 2006-04-27 20:45:00.788446635 +0200 ++++ ./growisofs_mmc.cpp 2006-04-27 20:46:01.666824300 +0200 +@@ -1412,9 +1412,7 @@ + blocks += 15, blocks &= ~15; + + if (blocks <= split) +- fprintf (stderr,":-( more than 50%% of space will be *wasted*!\n" +- " use single layer media for this recording\n"), +- exit (FATAL_START(EMEDIUMTYPE)); ++ fprintf (stderr,":-? more than 50%% of space will be *wasted*!\n"); + + blocks /= 16; + blocks += 1; diff --git a/0006-dvd+rw-tools-7.1-noevent.patch b/0006-dvd+rw-tools-7.1-noevent.patch new file mode 100644 index 0000000..19c8c66 --- /dev/null +++ b/0006-dvd+rw-tools-7.1-noevent.patch @@ -0,0 +1,19 @@ +diff -up dvd+rw-tools-7.1/transport.hxx.debug dvd+rw-tools-7.1/transport.hxx +--- dvd+rw-tools-7.1/transport.hxx.debug 2012-03-07 10:55:07.167322839 +0100 ++++ dvd+rw-tools-7.1/transport.hxx 2012-03-07 15:44:34.384202747 +0100 +@@ -1795,9 +1795,12 @@ static int handle_events (Scsi_Command & + break; + case 5: ret |= 1<<5; break; // Multiple Initiators + case 6: // Device Busy +- if ((event[4]&0xF)==1 && // Timeout occured +- (event[5]&0x3)!=0) +- { poll(NULL,0,(descr&0xFFFF)*100+100); ++ if ((event[4]&0xF)==1) // Timeout occured ++ { ++ if ((event[5]&0x3)==0) // No Event ++ return 0; // Ready to accept any command ++ ++ poll(NULL,0,(descr&0xFFFF)*100+100); + cmd[0] = 0; // TEST UNIT READY + cmd[5] = 0; + if ((err=cmd.transport())) diff --git a/0007-dvd+rw-tools-7.1-lastshort.patch b/0007-dvd+rw-tools-7.1-lastshort.patch new file mode 100644 index 0000000..da225d4 --- /dev/null +++ b/0007-dvd+rw-tools-7.1-lastshort.patch @@ -0,0 +1,12 @@ +diff -up dvd+rw-tools-7.1/growisofs_mmc.cpp.lastshort dvd+rw-tools-7.1/growisofs_mmc.cpp +--- dvd+rw-tools-7.1/growisofs_mmc.cpp.lastshort 2012-04-13 18:09:31.047641524 +0200 ++++ dvd+rw-tools-7.1/growisofs_mmc.cpp 2012-04-13 18:09:34.451763587 +0200 +@@ -540,7 +540,7 @@ ssize_t poor_mans_pwrite64 (int fd,const + // own higher HZ value and disrespects the user-land one. + // Sending them down as milliseconds is just safer... + // +- if (!(errcode=cmd.transport (WRITE,(void *)buff,size))) ++ if (!(errcode=cmd.transport (WRITE,(void *)buff,nbl*2048))) + break; + + //--- WRITE failed ---// diff --git a/0008-dvd+rw-tools-7.1-format.patch b/0008-dvd+rw-tools-7.1-format.patch new file mode 100644 index 0000000..c8a7d11 --- /dev/null +++ b/0008-dvd+rw-tools-7.1-format.patch @@ -0,0 +1,251 @@ +diff -up dvd+rw-tools-7.1/dvd+rw-format.1.format dvd+rw-tools-7.1/dvd+rw-format.1 +--- dvd+rw-tools-7.1/dvd+rw-format.1.format 2012-08-23 17:30:20.001822268 +0200 ++++ dvd+rw-tools-7.1/dvd+rw-format.1 2012-08-24 09:37:14.549094680 +0200 +@@ -0,0 +1,132 @@ ++.TH DVD+RW\-FORMAT 1 "24 Aug 2012" "dvd+rw\-tools 7.1" ++.SH NAME ++dvd+rw\-format \- formatting and blanking DVD and BD media program. ++.SH SYNOPSIS ++.B dvd+rw\-format ++[\fB\-force\fP[\fB\=full\fP]] ++[\fB\-lead\-out|\-blank\fP[\fB\=full\fP]] ++[\fB\-ssa\fP[\fB\=none|default|max|XXXm\fP]] ++.I /dev/dvd ++ ++.SH DESCRIPTION ++\fBdvd+rw\-format\fP is a part of \fBdvd+rw\-tools\fP suite and allows to ++format virgin DVD+RW or BD\-RE media for the first use or blank already ++written DVD\-RW. ++Typical use cases of using \fBdvd+rw\-format\fP is formatting DVD\-RW to ++make them over\-writable, blanking used DVD\-RW to make them sequentially ++writable from scratch, formatting BD\-RE and DVD\-RAM with custom ++spare area sizes or re\-formatting BD\-RE and DVD\-RAM to change their spare ++size. ++It is not possible to format CD\-RW by \fBdvd+rw\-format\fP, ++you can use \fBcdrskin\fP, \fBxorriso\fP or \fBwodim\fP utilities to blank ++them or cdrwtool to format them instead, see section \fBEXAMPLES\fP. ++ ++A DVD\-RW accepts two disc modes: the \fISequential Recording\fP ++and the \fIRestricted Overwrite\fP. If a DVD\-RW medium is in the latter one, ++it will behave much like DVD+RW. ++By default DVD\-RW discs are in Sequential Recording mode, but ++can be put into Restricted Overwrite mode using \fBdvd+rw\-format\fP ++when no options given. ++Be aware, that only \-blank=full, which lasts as long as full writing, ++makes a used sequential DVD\-RW capable of performing multi\-session, ++while fast blanked DVD\-RW can only do Disk\-At\-Once. ++ ++Virgin DVD\-RW can be directly written without ++the need of a formatting operation, however a non\-virgin DVD\-RW in ++Sequential Recording mode needs to be blanked before writing a new ++initial session. Since a DVD\-RW medium in the Restricted Overwrite ++mode behaves much like DVD+RW, it can be written again without prior ++formatting the media. ++ ++Virgin BD\-RE and DVD+RW media may be initially formatted prior ++usage. Any\-time later, \fBgrowisofs\fP program will take care of formatting ++it automatically whenever appropriate, while further formatting is not ++recommended, however it is possible. ++ ++.SH OPTIONS ++.TP ++.BI \-force[\=full] ++Perform formatting even if the medium is formatted already. This is not ++recommended for BD\-RE and DVD+RW media, since they need to be ++formatted only once. Use \fB\-format=full\fP to perform full (lengthy) ++reformat in case of DVD\-RAM or (lengthy) Full Certification in case of ++BD\-RE. ++.TP ++.BI \-lead\-out ++Relocates the lead\-out next to outermost written sector as well as makes ++sure there is no virgin surface before it. This can make the medium more ++compatible with some DVD players. Previously written data is not ++affected by this operation. ++.TP ++.BI \-blank[\=full] ++Wipe data from DVD\-RW media. Data on BD\-RE and DVD+RW will we overwritten ++automatically, so there is no need to blank them explicitly. ++Use \fB\-blank\=full\fP to change DVD\-RW back to Sequential Recording mode. ++.TP ++.BI \-ssa[\=none|default|max|XXXm] ++Grow, eliminate, reset to default or maximize \fISupplementary Spare Area\fP. ++ ++.SH EXAMPLES ++Actual device names vary from one operating system to another. We use ++\fI/dev/dvd\fP as a collective name or as symbolic link to the actual ++device if you wish. Under Linux it will most likely be a ++device such as "/dev/sr0" or "/dev/hda" for older Linux 2.6. ++ ++To blank a CD\-RW, you have to use another utility, e.g. wodim: ++ ++ \fBwodim\fP \fBblank=fast\fP \-immed dev=\fI/dev/cdrom\fP ++ \fBcdrskin\fP \fBblank=all|fast|as_needed\fP \-immed dev=\fI/dev/cdrom\fP ++ \fBxorriso\fP \fB\-outdev\fP \fI/dev/cdrom\fP \fB\-blank all|fast|as_needed\fP ++ ++To format CD\-RW, you can use cdrwtool: ++ ++ \fBcdrwtool\fP \fB\-d\fP \fI/dev/cdrom\fP \fB\-q\fP ++ ++To blank a DVD\-RW and put in the incremental sequential mode, run: ++ ++ \fBdvd+rw\-format\fP \fB\-blank=full\fP \fI/dev/dvd\fP ++ ++To blank a DVD\-RW and put in the Restricted Overwrite mode, run: ++ ++ \fBdvd+rw\-format\fP \fB\-force\fP \fI/dev/dvd\fP ++ ++To overwrite data of BD\-RE, DVD+RW, DVD\-RW or DVD\-RAM run: ++ ++ \fBgrowisofs\fP \fB\-Z\fP \fI/dev/dvd\fP\=\fI/dev/zero\fP ++ ++To blank a DVD\-RAM, you can use: ++ ++ \fBdd\fP if\=\fI/dev/zero\fP of\=\fI/dev/dvd\fP ++ ++To relocate lead\-out sector, run: ++ ++ \fBdvd+rw\-format\fP \fB\-lead\-out\fP \fI/dev/dvd\fP ++ ++.SH NOTES ++Note that DVD+RW re\-formatting procedure does not substitute for ++blanking. If you want to nullify the media, e.g. for privacy reasons, ++do it explicitly with 'growisofs \-Z \fI/dev/dvd\fP\=\fB/dev/zero\fP'. ++ ++When growisofs "runs into" blank Blu\-ray Disc media or BD\-RE, ++it gets pre\-formatted with minimal spare area size of 256MB. ++ ++.SH SEE ALSO ++Most up\-to\-date information on dvd+rw\-tools is available at ++http://fy.chalmers.se/~appro/linux/DVD+RW/. ++.PP ++.BR growisofs (1), ++.BR cdrskin (1), ++.BR xorriso (1), ++.BR wodim (1), ++.BR cdrwtool (1) ++ ++.SH AUTHORS ++Andy Polyakov stands for programming and on\-line ++information. ++ ++This manpage was created by Honza Horak and consulted by ++Thomas Schmitt . ++ ++.SH LICENSE ++\fBdvd+rw\-format\fP is distributed under GNU GPL. ++ +diff -up dvd+rw-tools-7.1/growisofs.1.format dvd+rw-tools-7.1/growisofs.1 +--- dvd+rw-tools-7.1/growisofs.1.format 2008-03-01 11:40:06.000000000 +0100 ++++ dvd+rw-tools-7.1/growisofs.1 2012-08-24 09:35:55.550780073 +0200 +@@ -113,7 +113,7 @@ recordings. + Actual device names vary from one operating system to another. We use + \fI/dev/dvd\fP as a collective name or as symbolic link to the actual + device if you wish. Under Linux it will most likely be an ide\-scsi +-device such as "/dev/scd0." Under NetBSD/OpenBSD it has to be a ++device such as "/dev/sr0." Under NetBSD/OpenBSD it has to be a + \fIcharacter\fP SCSI CD\-ROM device such as "/dev/rcd0c." Under Solaris + it also has to be a \fIcharacter\fP SCSI/ATAPI CD\-ROM device, e.g. + "/dev/rdsk/c0t1d0s2" or "/vol/dev/aliases/cdrom0." And likewise in +@@ -210,11 +210,19 @@ DVD\-RAM or Blu\-ray Disc, as volumes ar + When growisofs "runs into" blank Blu\-ray Disc media, BD\-RE or BD\-R, + it gets pre-formatted with minimal spare area size of 256MB. + ++A DVD\-RW accepts two disc modes: the \fISequential Recording\fP ++and the \fIRestricted Overwrite\fP. If a DVD\-RW medium is in the later one, ++it will behave much like DVD+RW. ++By default DVD\-RW discs are in Sequential Recording mode, but ++can be put into Restricted Overwrite mode using \fBdvd+rw\-format\fP. ++See \fBdvd+rw\-format (1)\fP for more info. ++ + .SH SEE ALSO + Most up-to-date information on dvd+rw\-tools is available at + http://fy.chalmers.se/~appro/linux/DVD+RW/. + .PP +-The manpage for \fBmkisofs\fP. ++.BR mkisofs (1), ++.BR dvd+rw\-format (1) + + .SH AUTHORS + Andy Polyakov stands for programming and on-line +diff -up dvd+rw-tools-7.1/growisofs.c.format dvd+rw-tools-7.1/growisofs.c +--- dvd+rw-tools-7.1/growisofs.c.format 2008-03-04 10:15:03.000000000 +0100 ++++ dvd+rw-tools-7.1/growisofs.c 2012-08-23 17:30:20.028822506 +0200 +@@ -3433,8 +3433,15 @@ int main (int argc, char *argv[]) + else if (isatty (0)) warn_for_isofs |= 2; + + if (no_tty_check || (warn_for_isofs&2)) +- fprintf (stderr,"WARNING: %s already carries isofs!\n",in_device), ++ { ++ fprintf (stderr,"WARNING: %s already carries isofs!\n",in_device); ++ /* we cannot re-write a DVD-RW media in Sequential mode */ ++ if ((int)(mmc_profile&0xFFFF) == 0x14) ++ fprintf (stderr,"FATAL: DVD-RW medium is in Sequential mode, you " ++ "need to blank it before writing again.\n"), ++ exit(FATAL_START(EBUSY)); + printf ("About to execute '"); ++ } + else + fprintf (stderr,"FATAL: %s already carries isofs!\n",in_device), + exit(FATAL_START(EBUSY)); +diff -up dvd+rw-tools-7.1/Makefile.format dvd+rw-tools-7.1/Makefile +--- dvd+rw-tools-7.1/Makefile.format 2008-02-27 14:11:27.000000000 +0100 ++++ dvd+rw-tools-7.1/Makefile 2012-08-23 17:30:20.037822589 +0200 +@@ -22,6 +22,7 @@ pkg: + $(DIST)/Makefile.m4 \ + $(DIST)/dvd+rw-tools.spec \ + $(DIST)/growisofs.1 \ ++ $(DIST)/dvd+rw-format.1 \ + $(DIST)/transport.hxx \ + $(DIST)/mp.h \ + $(DIST)/win32err.h \ +diff -up dvd+rw-tools-7.1/Makefile.m4.format dvd+rw-tools-7.1/Makefile.m4 +--- dvd+rw-tools-7.1/Makefile.m4.format 2012-08-23 17:30:19.971822000 +0200 ++++ dvd+rw-tools-7.1/Makefile.m4 2012-08-23 17:30:20.038822597 +0200 +@@ -32,6 +32,7 @@ BIN_MODE?=0755 + install: dvd+rw-tools + install -o root -m $(BIN_MODE) $(CHAIN) /usr/bin + install -o root -m 0644 growisofs.1 /usr/share/man/man1 ++ install -o root -m 0644 dvd+rw-format.1 /usr/share/man/man1 + ]) + + ifelse(OS,MINGW32,[ +@@ -68,6 +69,7 @@ BIN_MODE?=04755 + install: dvd+rw-tools + install -o root -m $(BIN_MODE) $(CHAIN) /usr/local/bin + install -o root -m 0644 growisofs.1 /usr/local/man/man1 ++ install -o root -m 0644 dvd+rw-format.1 /usr/local/man/man1 + ]) + + ifelse(OS,SunOS,[ +@@ -103,6 +105,7 @@ LDLIBS=-lvolmgt -lrt -lpthread -ldl + install: dvd+rw-tools + /usr/ucb/install -o root -m 04755 $(CHAIN) /usr/local/bin + /usr/ucb/install -o root -m 0644 growisofs.1 /usr/local/man/man1 ++ /usr/ucb/install -o root -m 0644 dvd+rw-format.1 /usr/local/man/man1 + ]) + + ifelse(OS,HP-UX,[ +@@ -141,6 +144,7 @@ LDLIBS=-lrt -lpthread + install: dvd+rw-tools + /usr/sbin/install -o -f /usr/local/bin $(CHAIN) + /usr/sbin/install -o -f /usr/local/man/man1 growisofs.1 ++ /usr/sbin/install -o -f /usr/local/man/man1 dvd+rw-format.1 + ]) + + ifelse(OS,IRIX,[ +@@ -178,6 +182,7 @@ BIN_MODE=04755 # set-root-uid + install: dvd+rw-tools + /sbin/install -u root -m $(BIN_MODE) $(CHAIN) /usr/local/bin + /sbin/install -u root -m 0644 growisofs.1 /usr/local/man/man1 ++ /sbin/install -u root -m 0644 dvd+rw-format.1 /usr/local/man/man1 + ]) + + ifelse(OS,Linux,[ +@@ -202,6 +207,7 @@ install: dvd+rw-tools + install $(minus_o) -m $(bin_mode) $(CHAIN) $(prefix)/bin + [[ -d $(mandir)/man1 ]] || mkdir -p $(mandir)/man1 + install $(minus_o) -m 0644 growisofs.1 $(mandir)/man1 ++ install $(minus_o) -m 0644 dvd+rw-format.1 $(mandir)/man1 + -[[ -f rpl8 ]] && install $(minus_o) -m $(bin_mode) rpl8 $(prefix)/bin || : + -[[ -f btcflash ]] && install $(minus_o) -m $(bin_mode) btcflash $(prefix)/bin || : + ]) diff --git a/0009-dvd+rw-tools-7.1-bluray_srm+pow.patch b/0009-dvd+rw-tools-7.1-bluray_srm+pow.patch new file mode 100644 index 0000000..8fc1a6d --- /dev/null +++ b/0009-dvd+rw-tools-7.1-bluray_srm+pow.patch @@ -0,0 +1,12 @@ +diff -up dvd+rw-tools-7.1/growisofs_mmc.cpp.wrk dvd+rw-tools-7.1/growisofs_mmc.cpp +--- dvd+rw-tools-7.1/growisofs_mmc.cpp.wrk 2013-06-24 14:18:38.898344970 +0200 ++++ dvd+rw-tools-7.1/growisofs_mmc.cpp 2013-06-24 14:20:00.428025541 +0200 +@@ -756,6 +756,8 @@ static void bd_r_format (Scsi_Command &c + + wait_for_unit (cmd); + ++ bdr_plus_pow = 1; ++ + cmd[0] = 0x35; // FLUSH CACHE + cmd[9] = 0; + cmd.transport(); diff --git a/0010-dvd+rw-tools-7.1-bluray_pow_freespace.patch b/0010-dvd+rw-tools-7.1-bluray_pow_freespace.patch new file mode 100644 index 0000000..3b56282 --- /dev/null +++ b/0010-dvd+rw-tools-7.1-bluray_pow_freespace.patch @@ -0,0 +1,14 @@ +diff -up wrk/growisofs_mmc.cpp.wrk wrk/growisofs_mmc.cpp +--- wrk/growisofs_mmc.cpp.wrk 2014-11-14 13:22:49.579552118 +0100 ++++ wrk/growisofs_mmc.cpp 2014-11-14 13:35:36.779730963 +0100 +@@ -410,7 +410,9 @@ static unsigned int get_2k_capacity (Scs + } + + nwa = 0; +- if (buf[7]&1 && !bdr_plus_pow) // NWA_V ++ //if (buf[7]&1 && !bdr_plus_pow) // NWA_V ++ //!bdr_plus_pow patched out for Fedora ++ if (buf[7]&1) // NWA_V + { nwa = buf[12]<<24; + nwa |= buf[13]<<16; + nwa |= buf[14]<<8; diff --git a/0011-dvd+rw-tools-7.1-sysmacro-inc.patch b/0011-dvd+rw-tools-7.1-sysmacro-inc.patch new file mode 100644 index 0000000..672258e --- /dev/null +++ b/0011-dvd+rw-tools-7.1-sysmacro-inc.patch @@ -0,0 +1,10 @@ +--- dvd+rw-tools-7.1/growisofs.c.orig 2018-07-09 17:13:37.119250266 +0100 ++++ dvd+rw-tools-7.1/growisofs.c 2018-07-09 17:14:25.808251710 +0100 +@@ -439,6 +439,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/dvd+rw-tools-7.1.tar.gz b/dvd+rw-tools-7.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d7809d54e43f5c3407e11e23db8909fca43e977 GIT binary patch literal 140846 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

=%q!gjq)+`|MhNB6fi#cr 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

2@EqN|>;KKAorqLx$=;V2Gd7HH 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ÿ`JG_<3!tP&SU`L!il}V94Z*g)z0%8Y{{D&cF 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 literal 0 HcmV?d00001 diff --git a/dvd+rw-tools.spec b/dvd+rw-tools.spec new file mode 100644 index 0000000..d36b2d1 --- /dev/null +++ b/dvd+rw-tools.spec @@ -0,0 +1,76 @@ +Name: dvd+rw-tools +Version: 7.1 +Release: 31 +Summary: Application to master the Blu-ray Disc and DVD media +License: GPLv2 +URL: http://fy.chalmers.se/~appro/linux/DVD+RW/ +Source0: http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-%{version}.tar.gz +Source1: index.html +Patch0: 0000-dvd+rw-tools-7.0.manpatch +Patch1: 0001-dvd+rw-tools-7.0-wexit.patch +Patch2: 0002-dvd+rw-tools-7.0-glibc2.6.90.patch +Patch3: 0003-dvd+rw-tools-7.0-reload.patch +Patch4: 0004-dvd+rw-tools-7.0-wctomb.patch +Patch5: 0005-dvd+rw-tools-7.0-dvddl.patch +Patch6: 0006-dvd+rw-tools-7.1-noevent.patch +Patch7: 0007-dvd+rw-tools-7.1-lastshort.patch +Patch8: 0008-dvd+rw-tools-7.1-format.patch +Patch9: 0009-dvd+rw-tools-7.1-bluray_srm+pow.patch +Patch10: 0010-dvd+rw-tools-7.1-bluray_pow_freespace.patch +Patch11: 0011-dvd+rw-tools-7.1-sysmacro-inc.patch + +BuildRequires: gcc gcc-c++ kernel-headers m4 +Requires: genisoimage + +%description +As implied/already mentioned - to master the Blu-ray Disc and DVD media, +both +RW/+R and -R[W]. + +%package_help + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p0 +%patch5 -p0 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 + +install -m 644 %{SOURCE1} index.html + +%build +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +export CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +export LDFLAGS="$RPM_LD_FLAGS" +make WARN="-DDEFAULT_BUF_SIZE_MB=16 -DRLIMIT_MEMLOCK" %{?_smp_mflags} + +%install +%makeinstall + +%pre + +%preun + +%post + +%postun + +%files +%defattr(-,root,root) +%license LICENSE +%doc index.html +%{_bindir}/* + +%files help +%{_mandir}/man1/*.1* + +%changelog +* Wed Nov 20 2019 openEuler Buildteam - 7.1-31 +- Package init diff --git a/index.html b/index.html new file mode 100644 index 0000000..1e39c4e --- /dev/null +++ b/index.html @@ -0,0 +1,1295 @@ + + + + +Blu-ray Disc/DVD+RW/+R/-R[W] for Linux + + + + + + + + + +


+ +
+

Blu-ray Disc/DVD+RW/+R/-R[W] for Linux

+
by <appro@fy.chalmers.se>, +September 2006
+
Japanese +
+


+ +

+ + + + +
Q. What is this page (not) about?
A.  + Maybe to your disappointment it is not about + video(*). The scope of this page is primarily + computer storage applications of Blu-ray Disc and + DVD±RW/±R, things like backup, archiving, data + exchange... The downloadable files are an optional Linux 2.4 kernel DVD+RW patch and a + couple of user-land utilities dubbed as dvd+rw-tools. + +

+ + +
(*) + Though it doesn't mean that you can't burn + DVD-Video discs with dvd+rw-tools. [Unlike Video-CD] DVD-Video + is "molded" in an ordinary data file system and + therefore no explicit support by the burning program is + actually required. In other words it is the DVD-Video + content preparation which is beyond the scope of this + page.
+

+ +

+ + + + +
Q. Kernel patch? This sounds too complicated + already! Can't I just use [vanilla] cdrecord? + +
A. It should be explicitly noted that the user-land + utilities, dvd+rw-tools, do suffice for BD/DVD recording + without explicit kernel support. So if they fulfill your requirements, then + patching the kernel is by all means optional. As + for [vanilla] cdrecord, non-CD recording strategies are + somewhat different, so it simply doesn't work (nor does + dvdrecord with media other than DVD-R[W], despite what RedHat + 7.3 Release Notes say). On additional note Linux kernel + version 2.6>=10 is equipped with packet + writing driver which supports even DVD rewritable media, + but I haven't tested it myself, so don't ask:-)
+ +

+ + + +
Q. What is the kernel patch good for then? +
A. DVD+RW (but not DVD+R nor any DVD-dash) is a true random + write access media and therefore is suitable for housing of an + arbitrary file system, e.g. udf, vfat, ext2, etc. This, + and this alone, qualifies DVD+RW support for kernel + implementation. However, I have to recommend to + deploy it with caution, see tutorial + for further details. Also note that not all OEMs seem to live + up to the promise of true random write access. As for the + moment of this writing apparenly only 2nd generation + Ricoh-based units (see dvdplusrw.org for + generation listings) equipped with later firmware can sustain + I/O fragmentation (see Technical Ramblings below for further + details) and perform reliably. +
+ +

+ + + + +
Q. What are the dvd+rw-tools for?
A. As implied/already mentioned - to master the Blu-ray Disc and DVD media, both +RW/+R and + -R[W]. I could simply refer to the + tutorial below, but figured that couple of words about the + [original] design ideas behind growisofs, the principal + burning utility, wouldn't harm. Even though a modified + kernel can let you put for example an ext2 file system on + DVD+RW, it's probably not very practical, because you most + likely want to access the data on an arbitrary computer. + Or in other words you most likely want ISO9660. The trouble is + that you might as well want to add data now and then. + And what options do you have in the lack of multiple sessions + (no, DVD+RW has no notion of multiple sessions)? Complete + re-mastering which takes more and more time as data set grows? + Well, yes, unless you employ growisofs! Growisofs + provides the way to both lay down and grow an ISO9660 + file system on (as well as to burn an arbitrary pre-mastered + image to) all supported optical media.
+ +

+ + + + +
Q. But if they support both + and - recording + strategies, why are they called dvd+rw-tools?
A. For historical/nostalgical reasons, as originally they did + support exclusively DVD+plus. On the other hand now, when the + vast majority of DVD burners that are being introduced to the + market today are DVD+capable, the name most likely refers to + your unit in either case. And you can always consider the plus + in the name as notion of a unique quality, such as + "seamless" multisessioning, not as reference to some + particular format:-)
+ +

+ + + + +
Q. Do I still need cdrtools? +
A. Yes. It should be explicitly noted that growisofs is a + front-end to mkisofs, i.e. invokes mkisofs to perform the + actual ISO9660 file system layout. Secondly, the DVD burners + available on the market can burn even CD-R[W] media and + cdrecord is the tool for this job [and this job only].
+ + + +

+ + + + +
Q. Does it work with my recorder unit? +
A. If your unit is MMC compliant, + then the answer is "most likely it + just does." Well, as the probability of your unit being + non-MMC compliant is virtually zero, the answer in practice is + unconditionally "most likely." + The [core] tools were reported to work with a wide range of + drives, including [but not limited to] HP + dvd[12345]x0i, Ricoh MP512x, Philips + DVDRW[248]xx, SONY DRU-[157]x0, NEC + ND-[1234]xx0, TDK indiDVD 4x0N, + Plextor PX-[57]xx, Benq DW[48]00A, + OptoRite DD0[24]0x, Lite-On + LDW-[4816]xxS, as well as nonplus + units such as Pioneer DVR-x0[45679], LG + GxA-40[248]x, Toshiba SD-R[56]112, + Panasonic UJ-811, LF-D[35]1x, and not + the least all-mighty + SW-5582...
+ +

+ + + + +
Q. Is there a GUI front-end available for + dvd+rw-tools? +
A. K3b, version 0.10 + and later, and nautilus-cd-burner, + version 0.5.1 and later, are both hiding growisofs behind their + pretty buttons and menus:-) Keep in mind that those are not + directly related to dvd+rw-tools development + effort and GUI users should turn elsewhere for end-user + support. Oh! dvd+rw-tools 5.10.x is a minimum requirement for + GUI frontends...
+ +

+ + + + +
Q. I don't run Linux. What are my options? +
A. Version 5.4 adds support for OpenBSD/NetBSD. + Version 5.6 adds support for Solaris 2.x [commercial licensing + terms for distribution on Solaris are to be settled with Inserve Technology]. + Version 5.8 features FreeBSD + port contributed by Matthew Dillon, FreeBSD Development Team + alumnus. Hewlett-Packard Company has donated + HP-UX 11 support for + 5.14(*). IRIX 6.x support appears in + 5.19, Win32 one - in 6.0, + while Mac OS X - in 7.0... + +

+ + + + + + +
¡ + Common usage tip! Whenever + separately available [and unless stated otherwise], do use + character-type device entry with dvd+rw-tools, + e.g. OpenBSD/NetBSD users should stick to /dev/rcdXc.
(*) + As of 5.14 HP-UX support was classified as + "initial." Version 5.18 in turn is the one which has + undergone HP quality assurance testing + and is delivered on HP + software depot.
+

+ +


+ +

Foreword

+ +

As of May 2003 I've decided to advise users to +turn to <cdwrite@other.debian.org> +on support matters. It's an open list, meaning that you don't have +to be subscribed to post +a problem report. List archives can be found at both subscribe page and mail-archive.com. +When submitting report, provide versioning information, exact +command line, exact output generated by the program and +complement it with dvd+rw-mediainfo output for +resulting recording. Do check couple of last archived months, as the +issue might have been discussed recently. If you've chosen to +contact me personally and haven't heard back within a week or so, then +you most likely overlooked something on this page. Please read it more +attentively... + +

Special thanks for hardware donations [in +chronological order]:
+ +  + +  + +  + +comm*tech  + +


+ +

Tutorial

+ +


+ +
    + +

  • If your burner unit is managed by some +Linux(*) removable media +automounting/autoplaying facility, such as autofs, supermount, +subfs/submount, magicdev, autorun or similar, take it out of its +control! I can't help you with the latter, check your system +documentation (such as google perhaps:-) for specific instructions. +Failure to take your unit out of +Linux(*) automounting/autoplaying facility +control can result in busted recording, a coaster! At the +very least you have to make sure your unit is not automounted during +recordings. + + + + +
    (*) +dvd+rw-tools support Solaris volume manager and +IRIX mediad in more gracious manner and it's safe to leave recorder +under their control.
    + +

  • Remember to consult Hardware Compatibility Notes for possible +caveats or vendor-specific instructions for your unit. Well, such +reminder belongs at the end of tutorial, but I consider it important +enough to bring it up already here:-) + +

  • If you have an IDE unit and run 2.4.x +kernel, you most likely want to "route" it through ide-scsi +emulation layer by either: + +

      +
    • passing "hdX=ide-scsi" +argument to kernel; +
    • appending following lines to your /etc/modules.conf: +
      +
      options ide-cd ignore=hdX
      +pre-install sg modprobe ide-scsi
      +pre-install sr_mod modprobe ide-scsi
      +pre-install ide-scsi modprobe ide-cd
      +
      +
    + +

    Keep in mind that once hdX +is routed through ide-scsi, you can no longer refer to /dev/hdX(*), but to corresponding +/dev/scdN only. + +

    + + +
    (*) +well, except as in hdparm -d [0|1] /dev/hdX. As for DMA settings. Several users of +NEC[-based] units have reported that their systems crash during DVD +recording. The problem appears to be related to DMA settings, at least +switching it off reportedly helps. The problem appears to be specific to +some IDE chipsets... +
    + +

  • If you have an external unit, just get +it working as CD-ROM first. I myself have no personal experience +whatsoever with USB or IEEE1394/Firewire optical storage +devices and have to direct you elsewhere for specific instructions. I +however am confident that if you manage to get your drive working +reliably as CD-ROM and CD-R[W] +burner, then you won't have any troubles with dvd+rw-tools either. USB +connected drives were reported to be working fine since eternity. +Firewire connected drives in turn were reported to fail miserably under +2.4.18. The failure didn't seem to be DVD recording related as it +reportedly failed burning even CD-R media. Firewire support was +substantially revamped in 2.4.19, and dvd+rw-tools were reported to +work with this and later kernels. + +

  • If you're running 2.4.19 or .20, consider +applying this drivers/scsi/sg.c patch. +The bug is fixed in .21. I write "consider" and not +"do" for the following reasons: + +

      +
    • dvd+rw-tools are not affected by this bug (as they don't use SG_IO +interface), cdrecord [potentially] is; +
    • I however haven't actually experienced the problem with cdrecord +(maybe yet, kernel could have managed to keep buffers neatly aligned +while talking to cdrecord those times I tried), it was VMware that has +failed miserably on me; +
    + +

    As of version 5.6 dvd+rw-tools add support for SG_IO +pass-through or in other words support for Linux 2>=5[.43], +where "generic" SCSI interface can be bypassed by issuing +SG_IO ioctl directly against block device, such as /dev/hdX. I wish it worked without need for interim +patches #1 and #2, (the latter is relative to +2.5.69-75, the 1st problem is addressed in .71, 2nd one - .75-bk3 in +"last +minute" prior first 2.6 cut. As for 2.6 in more general sense. +As you can imagine this new interface renders ide-scsi layer +superfluous and "the[ir] official plan™" is to scrap +it. I'm not really fond of the idea, but not for /dev/sg* account. I +mean I [personally] would prefer to keep ide-scsi and use SG_IO +pass-through with /dev/scdN, rather than with +/dev/hdX:-) + +

    If you have to make dvd+rw-tools work under Linux +kernel 2.6.8, then upgrade the tool-chain to 5.21.x or later and +manually reward the installed binaries with set-root-uid flag. But the +"supported" recommendation is to just stay away from this +particular kernel version. As for 2.6>8, dvd+rw-tools 5.21.x is +requirement. Oh! dvd+rw-booktype utility would require set-root-uid +privilege then. Given its semi-official status and the fact that this +utility works only with limited number of units, installation procedure +abstains from installing dvd+rw-booktype set-root-uid, leaving +this security sensitive choice to the end-user. + +

  • Download, unpack and compile the the tool-chain. To build the thing do pick the +.tar.gz archive, which contains Makefile as well as .spec file. You +will need both C and C++ compilers installed. Separate +source code files found in the download catalog +are provided mainly for on-line reference purposes (such as revision history:-). + +

    If your Linux kernel supports multiple ABIs (e.g. +Linux-sparc64 can run even 32-bit Linux-sparc applications, as well as +Linux-x86_64 can execute legacy 32-bit i386 binaries), make sure you +compile for native 64-bit ABI (which can normally be done with +'make TARGET_ARCH=-m64'). The problem here is that 64-bit +kernel has to explicitly convert ioctl structures passed by 32-bit +applications and apparently it does really lousy job when it comes to +CDROM_SEND_PACKET ioctl deployed by dvd+rw-tools. + +

  • As new media products and brands are being +introduced to the market all the time, it apparently pays off to +periodically check for firmware updates. For elder units +firmware update might even be an absolute requirement for using +new media. Special note for HP users. HP no longer posts firmware +updates on a web-page. Instead they let some Windows auto-update gizmo +to pick firmware updates among dvd[1-6]00*.exe +files in their FTP +directory, so that readers of this page tend to miss them... + +

  • Formatting the BD and DVD+RW media. +Virgin BD and DVD+RW media needs to be initally formatted prior usage. +Once again, only virgin BD and DVD+RW media needs to be +formatted. As of version 5.10 growisofs detects blanks and applies +initial formatting procedure automatically. Otherwise same effect can +be achieved by passing the device name, e.g. /dev/scd0, as an +argument to dvd+rw-format. Well, +in BD case it does offer more flexibility than +growisofs. To make formatting process reasonably fast, less than 1 +minute, the media gets formatted only partially, as you can notice by +observing progress indicator displayed by dvd+rw-format. The final +indicator value varies from firmware to firmware, values as low as 1.6% +were observed. But it does not mean that you can only write that +little. The unit keeps formatting transparently, as you add more +data. Oh! Do keep in mind that DVD capacity of 4.7GB is expressed in +salesman's GB, i.e. 10003 and not 10243. And +so is one of BD. + +

    It was observed that excessive reformats can render +DVD+RW media unusable already after 10-20 reformats. It appears to be a +firmware deficiency, not some common media defect [at least it was +perfectly possible to salvage the media in a unit of different brand], +but I don't recommend [enforced] reformat in either case. + +

    Note that re-formatting procedure does not +substitute for blanking. If you want to nullify the media, e.g. for +privacy reasons, do it explicitly with 'growisofs -Z +/dev/scdN=/dev/zero'. Otherwise just +write over previous recording as it simply wasn't there, no +re-formatting is required. + + + +

  • Burning with growisofs. There is hardly a need for +manual for growisofs. In a nutshell growisofs just passes all command +line arguments to mkisofs and dumps its output directly onto the media. +The first part means that you basically can [well, should] +consult mkisofs manual page and +accompanying reference documentation (including multisession related +section[s]) and the second part means that you shouldn't expect an +ISO-image on the standard output (nor make sure you have enough free +temporary storage:-). Differences from mkisofs command line +are: + +

      +
    • you may not use -o option; +
    • you don't have to specify -C option, growisofs will construct one +for you; +
    • there is internal -Z option for initial session recording, this +substitutes for originally suggested 'mkisofs | dd of=/dev/scd0'; +
    + +

    Otherwise everything that applies to +[multisession] mastering with mkisofs applies to growisofs as well. For +example just like with mkisofs you should make a note on which options +you used to master the initial "session" with and stick to +them, e.g.: + +

    +growisofs -Z /dev/scd0 -R -J /some/files
    +growisofs -M /dev/scd0 -R -J /more/files
    +
    + +

    Oh! Do make sure you have at least mkisofs 1.14 on your $PATH (mkisofs 1.14 is part of cdrtools +1.10). If you consider passing /same/files as argument, or in +other words consider deploying growisofs for incremental +multisession backups, then you shall find this '-old-root' extension to +mkisofs 2.0-2.01 simply indispensable. +The idea and implementation by Patrick Ohly is to +"graft" recording sessions as separate directories. Each +backup increment/directory is ment to contain both updated files and +references to previously backed up ones, which facilitates +comparison between increments as well as fine-graded restore. + +

    Number of users asked about opposite to +multisessioning: multivolume support. Being essentially a recording +program growisofs does not support multiple volumes by itself. There're +couple of front-ends I can recommend that arrange for this: scdbackup and +shunt. But back to +growisofs... + +

    In addition to intuitive -Z interpretation, +growisofs [version 3.3 and later] recognizes special form of -Z command +line option which permits burning of arbitrary pre-mastered images. The +"magic" command is: + +

    +growisofs -Z /dev/scd0=image.iso
    +
    + +

    where image.iso represents an arbitrary +object in the file system, such as file, named pipe or device +entry. No, nothing is "growing" here and command name is +counter-intuitive in this particular context. And here is even less +intuitive:-) If you wish to burn down output generated by an +arbitrary program, you can use: + +

    +dumpsomething | growisofs -Z /dev/scd0=/dev/fd/0
    +
    + +

    Burning BD-R/DVD±R implies extra limitations: + +

      + +
    • Needless to say that you have only one shot with -Z +option:-) + + + +
    • Unlike DVD+RW, DVD±R media does have notion of multiple +sessions. However! Not all legacy units can "see" +beyond the first one. Few DVD-ROM units are capable of DVD-R +multiborder playback, even fewer support DVD+R multisessioning. In +other words your DVD burner might be the only unit in your vicinity +capable to access data added at different occasions. + +
    • Even if your DVD unit does "sense" multiple sessions, +Linux kernel [2.4] sometimes fails to pull that information from the +drive:-( Till the problem is looked into and resolved you can +work it around by reloading corresponding driver, most likely +'rmmod sr_mod'. + +
    • Linux kernel 2.6<10 +users might experience problems +mounting multisession media with last session starting beyond +2.2GB boundary. As fast-acting remedy I can suggest to route your unit +through ide-scsi, the way it was under 2.4. Even though it's declared +unsupported it actually still works in 2.6 (I for one still use it). + +
    • If you go for BD-R/DVD±R multisessioning, you have to use +mkisofs from cdrtools-2.0 +or later or apply this patch. + +
    • And when it comes to DVD+R Double Layer and DVD-R +Dual Layer recordings, growisofs applies yet another limitation, +purely artificial. Taking into consideration Double Layer media prices +growisofs is programmed to refuse to perform unappendable +recordings which are less than 1/2 of blank capacity and to advice +to use single layer media instead. + +
    • DVD-R Dual Layer multisessioning is not supported for a reason +discussed on the -RW companion page. Once +again, as of the moment of this writing DVD-R Dual Layer +recordings come out unappendable and can not be grown. +
    + + +

    And once again, do keep in mind that 4.7GB are +salesman's GB, i.e. 10003 and not 10243. If +translated to "real" GB, single layer +DVD±R[W] capacity is not larger than 4.4GiB, and BD +- not larger than 23.3GiB! It should also be noted that earlier +growisofs versions did not check if there is enough space on media to +accommodate the data set to be burned, meaning that it was your sole +responsibility to make sure "overburn" condition is not +raised. As of version 5.2 growisofs performs the necessary checks +for you and refuses to start recording if "overburn" +condition appears to be unavoidable. This behaviour can be overridden +with -overburn command-line option. + +

  • If you're satisfied with growisofs, then you +should just proceed to the next chapter +and abstain from applying the optional 2.4.x kernel patch. If +you haven't stopped reading beyond this line, download the patch, apply it, rebuild the +kernel or modules and re-install (kernel or cdrom.o and sr_mod.o +modules, whichever appropriate), but don't ask me how. As you could +have noticed, patch targets SCSI CD-ROM module. This means that you +have to "route" your IDE unit through ide-scsi to get this one +working. To see it in action, insert formatted DVD+RW media and try to +access it, 'dd if=/dev/scdN count=0' +would do. Then verify that kernel logs "srN: mmc-3 profile: 1Ah". You should now be +able to 'mkisofs -pad . | dd of=/dev/scdN +obs=32k' or even 'mke2fs -b 2048 /dev/scdN' and observe kernel logging "srN: dirty DVD+RW media." + + + +

    Linux 2.6 DVD+RW kernel support is planned in +line with DVD+MRW kernel support. This [unfortunately] means that +industry has to deliver a DVD+MRW capable unit first. Yes, the last +sentence means that despite all the promises, there are no such units +available on the market yet. As of the 1st of August 2003, Ricoh MP5240A, +Philips DVDRW416K or BenQ DW400A do not actually implement +Mt.Rainier/EasyWrite support. It remains to be seen if they will offer +it in form of firmware upgrade. In either case, the [original] project +goal is not only read-write support for DVD+[M]RW capable units +themselves, but even playback of DVD+MRW formatted media in legacy +DVD-ROM units (when defect list will be read and interpreted by OS +software in opposite to Mt.Rainier firmware). + +

  • Even though kernel now +permits to build and mount arbitrary file system, there is one thing you +must keep in mind before you just proceed, no matter how +tempting it might appear. + +

    As you might know DVD+RW media can sustain only +around 1000 overwrites. The thing about fully fledged file systems +is that every read [or tight bunch of 'em] is accompanied by +corresponding i-node update or in other words a write! Now, let's say +you lookup the mount point (e.g. ls /mnt/dvd) ten times a day. This +gives you a 100 days lifetime on your mountpoint and therefore media. +Not really much, huh? So do use noatime mount option with +DVD+RW media or have it mounted read-only most of the time. However! +Every read-write mount "costs" a super-block update. So that +if you remount the media say 3 times a day, it would last for about a +year [supermount +would exhaust the "budget" way sooner]... Defect management +[in firmware, a.k.a. Mt.Rainier, +or at file system level] would improve the situation, but ideally +file system driver should definitely refrain from modifying the +super-block [marking it dirty] if nothing was actually written since +last mount. Given the development status of Linux UDF the +chances for seeing the latter implemented [for UDF] are more than just +conceivable. The request is already filed and even possible solution is +being discussed. But why not give UDF a shot already then? By default +UDF write support is unfortunately disabled and you might have to +reconfigure the kernel and rebuild modules. Alternatively [my preferred +option actually] fetch the code at SourceForge and +build the module separately. Of course you will have to fetch and build +udftools as well. But once it's done just type: + +

    +mkudffs --spartable=2 --media-type=cdrw /dev/scdN
    +mount -o rw,noatime /dev/scdN /mnt/cdrom
    +
    + +

    mkudffs command line options were suggested +by UDF maintainer, Ben Fennema. + +

  • Performance optimization. This paragraph +applies only if you've patched the kernel. As some of you might +remember the original recommendation was "do use obs=32k +for optimal performance." Well, it was rather naive of me to say +so, as common block device layer completely reorganizes the +stream so that '>/dev/scd0' is as good as '|dd +of=/dev/scd0 obs=32k'. It should also be noted that dumping to +/dev/scd0 puts quite a pressure on VM subsystem, as the data passes +through block buffer cache. To minimize the pressure and improve +overall system performance bind the cdrom device to a raw device, e.g. +'raw /dev/raw/raw1 /dev/scd0', growisofs will locate and use +it automatically. obs=32k makes perfect sense with /dev/raw devices, +but dd (as well as most other programs, e.g. tar) won't work as +/dev/raw expects specifically aligned buffer... As temporary +workaround, just to get you going so that you can start figuring things +out, consider this +"hacklet"... + +

+ +


+ +

Compatibility: caveat lector

+ +


+ +

This paragraph discusses "DVD-ROM +compatibility," or playability of already recorded media in legacy +units. Blank media compatibility issues, or cases such as failure to +start or fulfill recording because of poor media support by burner +firmware, are beyond the current scope. Turn to your vendor for list of +supported media and/or to the public to share your +experience. + +

In order to optimize seek times DVD[-ROM] players +calibrate their mechanics every time the media is loaded by sliding +the optical head some place, picking up the signal and noting the +physical block address underneath the lens. In order for this procedure +to work with re-writable/recordable media, that particular spot has to +be written to [or de-iced in DVD+RW terms]. Some units slide the head to +30mm [radial] to calibrate, some to 35mm. In order to keep such players +"happy," make sure that at least 1GB is written [before you +attempt to mount it in DVD-ROM unit]. + +

Other units attempt to seek to lead-out [or vicinity +of it] for calibration purposes. Now the catch is that it's perfectly +possible to produce a DVD+RW disc without lead-out. Most notably media +initially formatted with dvd+rw-format [apparently] +doesn't have any lead-out, not to mention that practically whole +surface remains virgin. If you fail to mount/play DVD+RW media, attempt +to + +

dvd+rw-format -lead-out /dev/scdN
+ +

which relocates the lead-out next to outermost +written sector as well as makes sure there is no virgin surface before +it. Previously written data is not affected by this operation. + + +

Then non-finalized DVD+R and Sequential +DVD-R[W] discs don't have lead-out either(*). +If you fail to mount/play DVD+R media and wish to sacrifice the +remaining space for immediate compatibility, just fill the media +up(**). Alternatively if you master volume in a single take +and don't plan to use it for multisessioning(***), you have +the option to invoke growisofs with -dvd-compat option and cut +the real lead-out directly after the first session. + +

+ + + + + + + + + +
(*) +Well, there are lead-outs at the session edges, but +the problem is that "End Physical Sector Number of Data Area" +field in "Control Data Zone" of the lead-in contains address +of the largest media sector, which makes affected DVD[-ROM] players +calibrate at the outermost edge instead of the first session. Actually +I fail to understand why don't they burn the address of last sector of +the first session in the lead-in even on multisession discs... +
(**) +But beware the 4GB limit! +If 4GB is already an issue, or if you don't feel like throwing +unrelated data on the media in question, then invoke 'growisofs +-M /dev/scd0=/dev/zero' (supported by 5.6 and later). +Alternative is to re-master the whole volume, naturally with +-dvd-compat option. +
(***) +E.g. when mastering DVD-Video disc:-) Note that +-dvd-video option [passed to mkisofs] engages +-dvd-compat automatically.
+ +


+ +

Then we have logical format compatibility +issue(s). Probably the very ground for all the controversy around +DVD+RW, rather around DVD+RW media not being playable in a whole range +of players. DVD+RW Alliance was keen to blame on DVD-ROM vendors, even +claiming that they deliberately block playback. But the fact is that +format specifications don't explicitly say that unrecognized format +[designated by "Book Type" field in "Control Data +Zone" of the lead-in] should be treated as DVD-ROM +and [in my opinion] it was rather naive of them to claim and expect +that the media will be playable in "virtually all players." +This deficiency was recognized by practically all DVD+RW vendors [well, +apparently by "traditional" DVD+RW vendors and not +"latest generation" vendors such as Sony, NEC, TDK...] and a +secret vendor-specific command +manipulating this "Book Type" field was implemented. So if +you fail to mount/play DVD+RW media, you might have an option to + +

dvd+rw-booktype -dvd-rom -media /dev/scdN
+ +

Once again. Not all vendors support this and you +can't expect this utility to work with all recorders. + +

It's naturally not possible to manipulate the +"Book Type" field on DVD+R media, that is not after the +lead-in is written [which takes place at the moment the first session +gets closed]. But it might be possible to control how it [lead-in] is +going to be branded by programming the drive in advance: + +

dvd+rw-booktype -dvd-rom -unit+r /dev/scdN
+ +

Meaning that if you fail to play DVD+R media, you +can attempt to burn another disc with more appropriate unit settings. +For more background information about dvd+rw-booktype, see "Compatibility +Bitsettings" article at dvdplusrw.org. + +

There [potentially] are other logical +DVD+RW(*) format incompatibilities, but the "Book +Type" issue discussed above is the only one "officially" +recognized. Well, it's actually understandable as it's the only one +that can be recognized and addressed by a DVD+RW vendor alone. +Recognition of other incompatibilities would require cooperation from +DVD[-ROM] player vendors and that's something they +apparently are not willing to show referring to the fact that DVD+RW +format is not approved [and apparently never will be] by DVD Forum(**). + +

+ + + + + +
(*) +Finalized DVD+R media branded with +DVD-ROM "Book Type" is virtually identical to +DVD-ROM.
(**) +To which I say "so what?" DVD Forum is an +alliance of manufacturers just like DVD+RW Alliance is. It [or any +other party for that matter] has no authority to deny a technology +development initiative.
+ +


+ +

Finally there is a physical incompatibility issue. +They claim that there are optical pick-ups out there not being capable +to decode the track because of low reflectivity of DVD+RW media +surface. I write "they claim," because in the lack of +cooperation from DVD[-ROM] vendors it's not possible to +distinguish physical from logical format incompatibility, which I find +important to tell apart in order to make sure at least logical format +incompatibility issues don't persist over time. It might be as trivial +as following. As you surely know [already], DVD+RW has same +reflectivity as dual-layer DVD-ROM. Now the catch is that +the linear pit density in turn is same as of single-layer one. Meaning +that if player makes assumptions about linear pit density based on +reflectivity, then it won't be able to trace the track... But either +way, there is very little you can do about this one, but to try another +player... + +


+ +

Technical Ramblings

+ +


+ +

+ +

As for multisession ISO9660 [DVD] +recordings! Unfortunately, Linux ISOFS implementation had certain +deficiency which limits interoperability of such recordings. In order +to understand it, have a look at sample ISO9660 layout to the right... +Now, the problem is that isofs i-nodes(*) are 32 bits wide +(on a 32-bit Linux) and represent offsets of corresponding directory +entries (light-greens), byte offsets from the beginning of media. This +means that no directory (green areas) may cross 4GB boundary without +being effectively corrupted:-( It should be noted that in +reality it's a bit better than it looks on the picture, as mkisofs +collects all the directories in the beginning of any particular session +(there normally are no blues between greens). The first session +is therefore never subject to i-node wrap-around, but not the +subsequent ones! Once again, files +themselves may reside beyond the 4GB +boundary, but not the directories, in +particular not in further sessions. Having noted that directory entries +are actually specified to start at even offsets, I figured that +it's perfectly possible to +"stretch" the limit to 8GB. But in order to assure +maximum interoperability, you should not let any session +start past 4GB minus space required for directory +structures, e.g. if the last session is to fill the media up, it +has to be >400MB. As of version 5.3 growisofs refuses to append +a new session beyond 4GB-40MB limit(**), where 40MB is +pretty much arbitrary chosen large value, large for directory catalogs +that is. Yet it doesn't actually guarantee that you can't suffer +from i-node wrap-around. Interim fs/isofs 2.4 +kernel patch was addressed to those who have actually ran into the +problem and have to salvage the data. Even though permanent solution +for this problem appears in Linux kernel 2.6.8 (thanks to Paul Serice +effort), growisofs keeps checking for this 4GB limit in order to ensure +broader compatibility of final DVD recordings. This check is not +performed for Blu-ray Disc recordings, as probability that a member of +such user community would run something elder than 2.6.9 is considered +diminishingly low. + + + + + + +
(*) +i-node is a number uniquely identifying a single +file in a file system +
(**) +well, as DVD+R Double Layer support was introduced +in 5.20, -use-the-force-luke=4gms option was added to override +this behaviour (naturally recommended for Linux kernel 2.6>=8 users and +kernel developers only;-) +
+ +


+ +

Why media reload is performed after every +recording with growisofs? Well, it's performed only if you didn't +patch the kernel:-) But no, I do not insist on patching the kernel! +All I'm saying is that in the lack of kernel support, media reload is +performed for the following reasons. In order to optimize file access +kernel maintains so called block cache, so that repetitive requests for +same data are met directly from memory and don't result in multiple +physical I/O. Now the catch is that block cache layer remains totally +unaware of growisofs activities, growisofs bypasses the block +cache. This means that block cache inevitably becomes out of sync, +which in turn might appear to you as corrupted data. Media reload is +performed when flushing the block cache is not an option, e.g. only +privileged user is allowed to perform it. Second reason is to force +kernel to readjust last addressable block in case it was changed as +result of recording. This is done to preclude spurious "attempts to +access beyond end of device." + +


+ +

What does [kernel] "DVD+RW support" +really mean? Even though DVD+RW has no notion of [multiple] +sessions, to ensure compatibility with DVD-ROM it's essential to issue +"CLOSE TRACK/SESSION (5Bh)" MMC command to +terminate/suspend background formatting (if any in progress) whenever +you intend to eject the media or simply stop writing and want better +read performance (e.g. remount file system read-only). This is what the +patch is basically about: noting when/if media was written to and +"finalizing" at unlock door. + +

Secondly, whenever you employ fully fledged +file system, I/O requests get inevitably fragmented. +"Fragmented" means following. Even though you can address the +data with 2KB granularity, it [data] is physically laid out in 32KB +chunks. This in turn means that for example writing of 2KB block +involves reading of 32KB chunk, replacing corresponding 2KB and writing +down of modified 32KB chunk. "Fragmented requests" are those +that are smaller than 32KB or/and cross the modulus 32KB boundaries. In +order to optimize the process certain caching algorithm is implemented +in unit's firmware. Obviously it can't adequately meet all possible +situations. And so in such unfortunate situations the drive apparently +stops processing I/O requests returning "COMMAND SEQUENCE ERROR +(2Ch)" ASC. This is the second essential of "DVD+RW +support," namely injecting of "SYNCHRONIZE CACHE (35h)" +MMC command in reply to the error condition in question. The command +flushes the cached buffers which makes it possible to resume the data +flow. + +

Unfortunately the above paragraph doesn't +seem to apply to the 1st generation drives, Ricoh MP5120A and +derivatives:-( "SYNCHRONIZE CACHE (35h)" doesn't +seem to be sufficient and the unit keeps replying with "COMMAND +SEQUENCE ERROR (2Ch)" going into end-less loop. This makes it +impossible to deploy arbitrary file system. I'm open for +suggestions... Meanwhile the I've chosen to simply suspend I/O till the +media is unmounted. Even 2nd gen unit were reported to exhibit similar +[but not the same] behaviour under apparently extremely rare +circumstances. At least I failed to reproduce the problem... The problem +reportedly disappears with firmware upgrade... + +

Then some [most?] of post-2nd gen units, from +most vendors, seem to not bother about complying with +DVD+RW specification, "true random write with 2KB +granularity" part in particular. Instead they apparently expect +host to apply procedure pretty much equivalent to DVD-RW +Restricted Overwrite. To be more specific host seems to be expected to +coalesce 2KB requests and perform aligned writes at native DVD ECC +blocksize, which is 32KB. Formally this should not be required, but +it's the reality of marketplace:-( + +

This one really beats me. Sometimes the unit +simply stops writing signaling a vendor specific positioning error, +03h/15h/82h to be specific. Especially if the media is newly formatted. +Couple of work theories. One is that block buffer cache reorders +requests so that they are not sequential anymore, "FLUSH +CACHE" might do the trick. Another one is that under +"underrun" condition background formatting kicks off and has +to be explicitly stopped. "Underrun" is in quotes because +the unit is supposed to handle temporary data stream outages +gracefully. If you run into this (you most likely will), try to +complement growisofs command line with [undocumented] +-poor-man option (which has to be first in the command line). +This option eliminates request reorders and minimizes possibility for +"underrun" condition (by releasing the pressure off VM +subsystem). + +


+ +

The original idea was to implement DVD+RW support in +drivers/cdrom/cdrom.c. Unfortunately SCSI layer maintains private +"writeable" flag controlling the ability to issue WRITE +commands. The flag is impossible to reach for from the Unified CD-ROM +driver. But why am I talking about SCSI when there are only IDE units +out there (at least for the time being)? Well, as you most likely want +to occasionally burn even CD-R[W] with cdrecord you want it to go +through ide-scsi emulation layer anyway. So I figured that SCSI CD-ROM +driver is the one to aim for even for DVD+RW. + +

Unfortunately it was not possible to implement it +completely in sr_mod.o:-( Minor drivers/cdrom/cdrom.c +modification was required to sense the media before decision about +whether or not to permit write open. That's because DVD+RW drives are +morphing their behaviour after currently mounted media and it's +essential to identify newly inserted media. + +

Special comment about "what a dirty +hack!!!" To my great surprise it turned out that time-out value you +pass in cdrom_generic_command is simply ignored and time-out is set to +pre-compiled value of 30 seconds. Unfortunately it's way too low for +formatting purposes and I had to do something about it. Alternative to +"the dirty hack" was to add another argument to sr_do_ioctl +and modify all the calls to it... I've chosen to take over those 31 +unused bits from the "quiet" argument instead of modifying +all the calls (too boring). + +

But even if time-out value passed down to kernel +(with either CDROM_SEND_PACKET or SG_IO ioctl) is taken into +consideration, it's apparently not interpreted as user-land code +expects it to. As I figured... There is no documentation on +CDROM_SEND_PACKET, but following the common sense most programmers +(including myself:-) expect it to be interpreted in at least +platform-independent manner, such as milliseconds maybe? SG_IO timeout +in turn is documented +to be measured in milliseconds... Neither of this holds true! Kernel +treats these values as "jiffies," which is a +platform-dependent value representing time elapsed between timer +interrupts. But if we attempt to send down "jiffies," it +might turn out wrong too [at least for the moment of this writing]. The +catch is that [IA-32] kernel developers figured it's cool to shorten +"jiffy," but didn't care to provide user-land with actual +value (well, not of actual interest, too much legacy code to deal with) +nor scale timeouts +accordingly in respect to the legacy value of 10ms. + +

There is another kernel "deficiency" I ran +into while working on the (original version of) dvd+rw-format utility. +The drive provides background formatting progress status, but +unfortunately it's impossible to access it. That's because progress +counter is returned [in reply to "TEST UNIT READY"] as +"NO SENSE/LOGICAL UNIT NOT READY/FORMAT IN PROGRESS" sense +bytes but with "GOOD" status. Apparently any sense data with +"GOOD" status is discarded by the common SCSI layer. + + + +

It was pointed out to me that DVD+RW units work with +Acard SCSI to +IDE bridges. + +


+ +

What does plus in DVD+RW/+R +stand for? Originally this paragraph started as following: + +

The key feature of DVD+RW/+R media is +high [spatial] frequency wobbled [pre-]groove with addressing +information modulated into it. This makes it possible to resume +interrupted [or deliberately suspended] burning process with accuracy +high enough for DVD[-ROM] player not to "notice" anything at +playback time. Recovery from buffer underrun condition in DVD-RW/-R +case in turn is way less accurate procedure, and the problem is that +the provided accuracy is very much what average player can tolerate. +Now given that both provided and tolerated inaccuracies are +proportional to respectively writing and reading velocities there +basically no guarantee that DVD-RW/-R recording that suffered from +buffer underrun will be universally playable.

+ +

Well, it turned out that I was wrong about one +thing. I failed to recognize that DVD-R[W] +groove also provides for adequately accurate recovery from +buffer underrun condition/lossless linking. Not as accurate as DVD+RW, +but accurate enough for splices to be playable in virtually any +DVD-ROM/-Video unit. Yet! When it comes to DVD-R[W] recording +specificaton apparently insists that you choose between + +

    +
  • buffer underrun protection and +
  • full DVD-ROM/-Video compatibility. +
+ +

The specification asserts that the latter is +achieved only in Disc-at-once recording mode and only if data-stream +was maintained uninterrupted throughout whole recording. Once again. +Even though most vendors implement lossless linking in DAO +mode(*), full DVD-ROM/-Video compatibility is +guaranteed only if recording didn't suffer from buffer underruns. The +problem is that "offended" sectors are denoted with certain +linking chunk appearing as degraded user data, few bytes, which +are supposed to be "corrected away" by ECC +procedure(**). DVD+ splices are in turn only few bits large +and are "accounted" to sync patterns, not to user data +area. So that even if suffered from buffer underrun, DVD+ sector is +logically indistiguishable from DVD-ROM. Which is why it's commonly +referred to that DVD+RW/+R combine DVD-ROM/-Video compatibility with +[unconditional] buffer underrun protection. + +

As already mentioned, DVD+ groove has +"addressing information modulated into it," ADIP (ADress In +Pre-groove). This gives you an advantage of writing DVD+RW in truly +arbitrary order, even to virgin surface and practically instantly +(after ~40 seconds long initial format procedure). In addition, DVD+RW +can be conveniently written to with 2KB granularity(***). +DVD-RW in turn can only be overwritten in arbitrary order. +Meaning that it either has to be completely formatted first (it takes +an hour to format 1x media), or initially written to in a sequential +manner. And it should also be noted that block overwrite is +never an option if DVD-RW media was recorded in [compatible] +Disc-at-once or even Incremental mode, only whole disc blanking is. + +

Unlike DVD-R[W], DVD+R[W] recordings can be +suspended at any time without any side effects. Consider following +scenario. You have a lot of data coming in [at lower rate], which is to +be recorded into one file. Meanwhile it turns out that you have to +retrieve previously recorded data. This would naturally require +suspention of recording. Most notably in DVD-R [and naturally DVD-RW +Sequential] case it would result in a hole in the file being recorded. +So called linking area, most commonly 32KB gap, has to be introduced. +So that you either have to wait till the file is complete or figure out +how to deal with holey files. Thanks to ADIP, DVD+R recording is +resumed from the very point it was suspended at. In DVD-RW Restricted +Overwrite case no gaps are introduced, but if the media was formatted +only minimally, suspension/resuming procedure has to be applied and it +takes ~40 seconds to perform one. In DVD+RW case, suspension/resuming +is instant regardless media state. + +

What does all of the above mean in practice? Well, I +was actually hoping that readers would [be able to] figure it out by +themselves. Apparently a couple of "guiding" words are +needed... It means that it's trivial to employ DVD+RW for housing of +live and arbitrary file system, no special modifications to target file +system driver are required... Real-time VBR (Variable Bit Rate) Video +recordings are children's game... + +

Sometimes DVD+RW/+R recording strategy is referred +to as packet writing. I myself am reluctant to call it so (or +TAO/SAO/DAO) for the following reason. Despite the fact that DVD-R[W] +provides for lossless linking (within a packet/extent only), +packets/extents are still denoted with certain linking information +which distinguishes it (recording mode in question) from e.g. +Disc-at-once. Now the point is that written DVD+RW/+R media, rather its +Data Zone, does not contain any linking information and is +logically indistinguishable from one written in DVD-R[W] Disc-at-once +mode (or DVD-ROM for that matter). + +

It's maintained that signal from DVD+ groove (the +one essential for recording, not reading) is much stronger, which makes +it quite resistant to dust, scratches, etc. + +

Now we can also discuss differences between +Double/Dual Layer implementations. DVD+R Double Layer permits for +arbitrary layer break positioning yet maintaining contiguous logical +block addressing. In other words address of the block following the +break is always address of the block preceding one plus 1, even for +arbitrarily positioned break. DVD-R Dual Layer on the +other hand implies unconditionally disjoint logical block addressing +[for arbitrarily positioned layer break that is]. This is because block +addresses as recorded by unit are pre-defined by DVD-dash +groove structure. In practice it means that file system layout has to +effectively have a hole, which "covers" twice the space between chosen +layer break position and outermost edge of the recordable area. And in +even more practical terms this means that mastering programs have to be +explicitly adapted for DVD-R layer break positioning. +Unlike DVD+plus that is. + +

+ + + + + + + +
(*) +According to Mt. Fuji draft +buffer underrun protection is not even an option in DVD-R DAO: "If a +buffer under-run occurs, the logical unit shall stop +writing immediately and the logical unit shall start +writing of Lead-out." Protection is defined in Incremental Sequential +mode and DVD-RW context. By the way, note that earlier versions of this +draft also discuss DVD+RW. You should be aware that they refer to +abandoned version which has very little to do with DVD+RW/+R +implementation being discussed here.
(**) +ECC redundancy does permit for more degradation, +more that this linking chunk that is, so that it hadly affects the +playability.
(***) +DVD "native" block size is 32KB, and 2KB +granularity is nothing but a trick, but you're excused from playing it, +i.e. reading 32KB, replacing corresponding 2KB and writing 32KB +back.
+ +


+ + + + +