SOURCES: dvd+rw-tools-bacula.patch (NEW) - patch needed by Bacula ...

jajcus jajcus at pld-linux.org
Tue Nov 29 11:39:09 CET 2005


Author: jajcus                       Date: Tue Nov 29 10:39:09 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- patch needed by Bacula for backups on DVD volumes

---- Files affected:
SOURCES:
   dvd+rw-tools-bacula.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/dvd+rw-tools-bacula.patch
diff -u /dev/null SOURCES/dvd+rw-tools-bacula.patch:1.1
--- /dev/null	Tue Nov 29 11:39:09 2005
+++ SOURCES/dvd+rw-tools-bacula.patch	Tue Nov 29 11:39:04 2005
@@ -0,0 +1,86 @@
+diff -u dvd+rw-tools-5.21.4.10.8/growisofs.c dvd+rw-tools-5.22/growisofs.c
+--- dvd+rw-tools-5.21.4.10.8/growisofs.c	2004-08-25 01:02:29.000000000 +0200
++++ dvd+rw-tools-5.22/growisofs.c	2005-10-16 22:48:02.000000000 +0200
+@@ -315,12 +315,17 @@
+  * - Linux: fix for kernel version 2.6>=8, 2.6.8 itself is deficient,
+  *   but the problem can be worked around by installing this version
+  *   set-root-uid;
++ * 5.22: (by Nicolas Boichat, Bacula project)
++ * - Allow session to cross 4GB boundary regardless of medium type
++ *   (don't need to have a DL media)
++ * - Add a -F option (used instead of -M or -Z), which displays next_session
++ *   offset and capacity (free space = next_session - capacity).
+  */
+ #define PRINT_VERSION(cmd)	do {			\
+     char *s=strrchr((cmd),'/');				\
+     s ? s++ : (s=(cmd));				\
+     printf ("* %.*sgrowisofs by <appro at fy.chalmers.se>,"\
+-	    " version 5.21,\n",(int)(s-(cmd)),(cmd));	\
++	    " version 5.22,\n",(int)(s-(cmd)),(cmd));	\
+ } while (0)
+ 
+ #define _LARGEFILE_SOURCE 
+@@ -1720,6 +1725,18 @@
+ 		else          in_device = argv[++i];
+ 		dev_found = 'Z';
+ 	    }
++	    else if (argv[i][1] == 'F')
++	    {	if (len > 2) in_device = argv[i]+2;
++		else	     in_device = argv[++i];
++		dev_found = 'F';
++		dry_run = 1; /* NEVER write anything with -F */
++	    }
++	    else if (!strncmp(opt,"-free-space",11))
++	    {	if (len > 11) in_device = opt+11;
++		else          in_device = argv[++i];
++		dev_found = 'F';
++		dry_run = 1; /* NEVER write anything with -F */
++	    }
+ 	    else if (!strcmp(opt,"-poor-man"))
+ 	    {	if (poor_man<0) poor_man = 1;
+ 		continue;
+@@ -1908,7 +1925,9 @@
+ 		fprintf (stderr,"    you most likely want to use -Z option.\n"), 
+ 		exit (FATAL_START(errno));
+ 
+-	    if (dev_found == 'M')
++	    if ((dev_found == 'M') || 
++			((dev_found == 'F') && !(mmc_profile&0x10000)) && (the_buffer[0] || the_buffer[1] || the_buffer[2]))
++				/* -F : The medium is not blank, there is a fs on it (the_buffer[0,1 or 2] != 0), so compute next_session. */
+ 	    {	if (memcmp (the_buffer,"\1CD001",6))
+ 	            fprintf (stderr,":-( %s doesn't look like isofs...\n",
+ 		    		in_device), exit(FATAL_START(EMEDIUMTYPE));
+@@ -1932,7 +1951,7 @@
+ 			exit(FATAL_START(EINVAL));
+ 		}
+ 		else if (next_session > (0x200000-0x5000)) /* 4GB/2K-40MB/2K */
+-		    if ((mmc_profile&0xFFFF)!=0x2B || !no_4gb_check)
++		    if (!no_4gb_check)
+ 			fprintf (stderr,":-( next session would cross 4GB "
+ 					"boundary, aborting...\n"),
+ 			exit (FATAL_START(ENOSPC));
+@@ -1974,7 +1993,7 @@
+ 	exit (FATAL_START(EINVAL));
+ 
+     if (imgfd<0)
+-    {	if (mkisofs_argc==1)
++    {	if ((mkisofs_argc==1) && (dev_found != 'F'))
+ 	    fprintf (stderr,"%s: no mkisofs options specified, "
+ 			    "aborting...\n",argv[0]),
+ 	    exit (FATAL_START(EINVAL));
+@@ -2114,6 +2133,15 @@
+ 	}
+     }
+ 
++	if (dev_found == 'F') {
++		off64_t capacity = 0;
++		printf("next_session=%lld\n", next_session*CD_BLOCK);
++		if (ioctl_handle!=INVALID_HANDLE)
++			capacity = get_capacity (ioctl_handle);
++		printf("capacity=%lld\n", capacity);
++		exit(0);
++	}
++
+     if (imgfd>=0)
+     {	quiet--;
+ 	if (builtin_dd (imgfd,out_fd,next_session*CD_BLOCK) < 0)
================================================================



More information about the pld-cvs-commit mailing list