[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] growisofs error and dvd+rw-format manual page



Hi all,

in [1] Reartes found that growisofs doesn't behave correctly in case DVD-RW is in Sequential mode an some content is already written. Then we have to either erase media or use -M option to grow image.

Currently, this case is not caught by growisofs at all and a write error is printed instead. The attached patch adds a check if these conditions are met and let growisofs exit with printing a message.

The patch also adds missing man page for dvd+rw-format that discuss available mode for DVD-RW and its features/issues. The same man page is attached as a plain text to be read easily. I'm going to apply that in Fedora, so any comments welcome.

Cheers,
Honza

[1] https://bugzilla.redhat.com/show_bug.cgi?id=810838
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-22 14:43:49.180350873 +0200
+++ dvd+rw-tools-7.1/dvd+rw-format.1	2012-08-22 14:43:49.180350873 +0200
@@ -0,0 +1,116 @@
+.TH DVD+RW\-FORMAT 1 "21 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 media for the first use or blank already
+written DVD\-RW, DVD+RW and DVD+RAM media. 
+It is not possible to format CD\-RW by \fBdvd+rw\-format\fP,
+you can use \fBcdrskin\fP or \fBwodim\fP utility 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 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
+when no options given.
+
+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 and DVD+RW media need to be initally 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 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. Blanking is used automatically in case of
+BD and DVD+RW media. 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 an ide\-scsi
+device  such as "/dev/scd0." 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
+HP\-UX, IRIX and Mac OS X...
+
+To blank a CD\-RW, you have to use another utility, e.g. wodim:
+
+        \fBwodim\fP \fBblank=all\fP \-immed dev=\fI/dev/cdrom\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 blank a BD or DVD+RW, 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, BD\-RE or BD\-R,
+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/.
+
+.SH AUTHORS
+Andy Polyakov <appro@fy.chalmers.se> stands for programming and on-line
+information.
+
+This manpage is currently maintained by Honza Horak
+<hhorak@redhat.com>.
+
+.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-22 14:43:49.181350876 +0200
@@ -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\-tools (1)
 
 .SH AUTHORS
 Andy Polyakov <appro@fy.chalmers.se> 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-22 14:43:49.183350882 +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	2012-08-22 14:46:07.808827082 +0200
+++ dvd+rw-tools-7.1/Makefile	2012-08-22 14:45:20.133662509 +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-22 14:48:27.556314511 +0200
+++ dvd+rw-tools-7.1/Makefile.m4	2012-08-22 14:52:07.967972365 +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 || :
 ])
NAME
       dvd+rw-format - formatting and blanking DVD and BD media program.

SYNOPSIS
       dvd+rw-format        [-force[=full]]       [-lead-out|-blank[=full]]
       [-ssa[=none|default|max|XXXm]] /dev/dvd

DESCRIPTION
       dvd+rw-format is a part of dvd+rw-tools suite and allows  to  format
       virgin DVD+RW or BD media for the first use or blank already written
       DVD-RW, DVD+RW and DVD+RAM media.  It  is  not  possible  to  format
       CD-RW  by  dvd+rw-format,  you  can  use  cdrskin  or  wodim utility
       instead, see section EXAMPLES.

       A DVD-RW accepts two disc modes: the Sequential  Recording  and  the
       Restricted  Overwrite.  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 dvd+rw-format when no options given.

       Virgin DVD-RW can be directly written without the need of a  format‐
       ting  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 and DVD+RW media  need  to  be  initally  formatted  prior
       usage.  Any-time  later, growisofs program will take care of format‐
       ting it automatically whenever appropriate, while further formatting
       is not recommended, however it is possible.

OPTIONS
       -force[=full]
              Perform  formatting  even if the medium is formatted already.
              This is not recommended for BD and DVD+RW media,  since  they
              need  to  be formatted only once. Use -format=full to perform
              full (lengthy) reformat in case of DVD-RAM or (lengthy)  Full
              Certification in case of BD-RE.

       -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.

       -blank[=full]
              Wipe data from DVD-RW media. Blanking is  used  automatically
              in  case  of  BD  and DVD+RW media. Use -blank=full to change
              
       -ssa[=none|default|max|XXXm]
              Grow, eliminate, reset to default or  maximize  Supplementary
              Spare Area.

EXAMPLES
       Actual  device  names  vary from one operating system to another. We
       use /dev/dvd 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
       character  SCSI CD-ROM device such as "/dev/rcd0c." Under Solaris it
       also  has  to  be  a  character  SCSI/ATAPI  CD-ROM   device,   e.g.
       "/dev/rdsk/c0t1d0s2"  or  "/vol/dev/aliases/cdrom0." And likewise in
       HP-UX, IRIX and Mac OS X...

       To blank a CD-RW, you have to use another utility, e.g. wodim:

               wodim blank=all -immed dev=/dev/cdrom

       To blank a DVD-RW and put in the incremental sequential mode, run:

               dvd+rw-format -blank=full /dev/dvd

       To blank a DVD-RW and put in the Restricted Overwrite mode, run:

               dvd+rw-format -force /dev/dvd
               
       To blank a BD or DVD+RW, run:

               growisofs -Z /dev/dvd=/dev/zero

       To blank a DVD+RAM, you can use:

               dd if=/dev/zero of=/dev/dvd

       To relocate lead-out sector, run:

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

NOTES
       Note that DVD+RW re-formatting procedure  does  not  substitute  for
       blanking.  If  you  want to nullify the media, e.g. for privacy rea‐
       sons, do it explicitly with 'growisofs -Z /dev/dvd=/dev/zero'.

       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.

SEE ALSO
       Most   up-to-date   information  on  dvd+rw-tools  is  available  at
       http://fy.chalmers.se/~appro/linux/DVD+RW/.
       
AUTHORS
       Andy Polyakov <appro@fy.chalmers.se> stands for programming and  on-
       line information.

       This  manpage  is  currently  maintained by Honza Horak <hhorak@red‐
       hat.com>.

LICENSE
       dvd+rw-format is distributed under GNU GPL.


Reply to: