New options dvd_obs= and stdio_fsync=

This commit is contained in:
Thomas Schmitt 2009-11-15 16:49:04 +00:00
parent 79a33ca2ac
commit 25489521bb
3 changed files with 85 additions and 13 deletions

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH CDRSKIN 1 "Sep 10, 2009"
.TH CDRSKIN 1 "Nov 15, 2009"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -899,6 +899,13 @@ Both, write_start_address and direct_write_amount size must be aligned to a
media dependend transaction size. With DVD-RAM, BD-RE, DVD+RW this is 2k, with
overwriteable DVD-RW it is 32k.
.TP
.BI dvd_obs= default|32k|64k
Linux specific:
Set the number of bytes to be transmitted with each write operation to DVD
or BD media. A number of 64 KB may improve throughput with bus systems which
show latency problems. The default depends on media type and option
stream_recording= .
.TP
.BI fallback_program= command
Set a command name to be executed if cdrskin encounters a known cdrecord
option which it does not yet support. If a non-empty command is given with
@ -1013,6 +1020,22 @@ which can only do DAO but not Incremental Streaming.
.BI \--single_track
Accept only the last argument of the command line as track source address.
.TP
.BI stdio_sync= on|off|number
Set the number of bytes after which to force output to drives with prefix
"stdio:". This forcing keeps the memory from being clogged with lots of
pending data for slow devices. Default "on" is the same as "16m".
Forced output can be disabled by "off".
.TP
.BI stream_recording= on|off|number
By setting "on" request that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM and BD this can
bring effective write speed near to the nominal write speed of the media.
But it will also disable the automatic use of replacement blocks
if write errors occur. It might as well be disliked or ignored by the drive.
.br
If a number is given, then error management stays enabled for all byte
addresses below that number. Any number below 16s is the same as "off".
.TP
.BI tao_to_sao_tsize= size
Set an exact fixed size for the next track to be in effect only if the track
source cannot deliver a size prediction and no tsize= was specified and an
@ -1199,17 +1222,6 @@ Linux specific:
Use and report literal Bus,Target,Lun addresses rather than real SCSI and
pseudo ATA addresses. This method is outdated and was never compatible with
original cdrecord.
.TP
.BI stream_recording="on"|"off"|number
By setting "on" request that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM and BD this can
bring effective write speed near to the nominal write speed of the media.
But it will also disable the automatic use of replacement blocks
if write errors occur. It might as well be disliked or ignored by the drive.
.br
If a number is given, then error management stays enabled for all byte
addresses below that number. Any number below 16s is the same as "off".
.TP
.BI --xa1-ignore
Silently interpret option -xa1 as -data. This may be necessary if a frontent
does not prepare -xa1 block headers but insists in using option -xa1.

View File

@ -148,6 +148,10 @@ or
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
*/
/* burn_write_opts_set_dvd_obs() and burn_write_opts_set_stdio_fsync()
*/
#define Cdrskin_libburn_has_fsync_obS 1
#endif /* Cdrskin_libburn_0_7_3 */
#ifndef Cdrskin_libburn_versioN
@ -2695,6 +2699,11 @@ set_dev:;
printf(
" --drive_scsi_exclusive try to exclusively reserve device files\n");
printf(" /dev/srN, /dev/scdM, /dev/stK of drive.\n");
#ifdef Cdrskin_libburn_has_fsync_obS
printf(" dvd_obs=\"default\"|number\n");
printf(
" set number of bytes per DVD/BD write: 32k or 64k\n");
#endif
#ifdef Cdrskin_burn_drive_eject_brokeN
printf(
" eject_device=<path> set the device address for command eject\n");
@ -2745,6 +2754,13 @@ set_dev:;
printf(
" byte addresses below that number.\n");
#endif
#ifdef Cdrskin_libburn_has_fsync_obS
printf(" stdio_sync=\"default\"|\"off\"|number\n");
printf(
" set number of bytes after which to force output\n");
printf(
" to drives with prefix \"stdio:\".\n");
#endif
#ifdef Cdrskin_allow_libburn_taO
printf(
@ -3191,6 +3207,8 @@ struct CdrskiN {
int dummy_mode;
int force_is_set;
int stream_recording_is_set; /* see burn_write_opts_set_stream_recording() */
int dvd_obs; /* DVD write chunk size: 0, 32k or 64k */
int stdio_sync; /* stdio fsync interval: -1, 0, >=32 */
int single_track;
int prodvd_cli_compatible;
@ -3409,6 +3427,8 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
o->dummy_mode= 0;
o->force_is_set= 0;
o->stream_recording_is_set= 0;
o->dvd_obs= 0;
o->stdio_sync= 0;
o->single_track= 0;
o->prodvd_cli_compatible= 0;
o->do_devices= 0;
@ -6951,6 +6971,10 @@ burn_failed:;
#ifdef Cdrskin_libburn_has_stream_recordinG
burn_write_opts_set_stream_recording(o, skin->stream_recording_is_set);
#endif
#ifdef Cdrskin_libburn_has_fsync_obS
burn_write_opts_set_dvd_obs(o, skin->dvd_obs);
burn_write_opts_set_stdio_fsync(o, skin->stdio_sync);
#endif
if(skin->dummy_mode) {
fprintf(stderr,
@ -7825,6 +7849,22 @@ set_driveropts:;
} else if(strcmp(argv[i],"-dummy")==0) {
skin->dummy_mode= 1;
} else if(strncmp(argv[i], "-dvd_obs=", 9)==0) {
value_pt= argv[i] + 9;
goto dvd_obs;
} else if(strncmp(argv[i], "dvd_obs=", 8)==0) {
value_pt= argv[i] + 8;
dvd_obs:;
if(strcmp(value_pt, "default") == 0)
num= 0;
else
num = Scanf_io_size(value_pt,0);
if(num != 0 && num != 32768 && num != 65536) {
fprintf(stderr,
"cdrskin: SORRY : Option dvd_obs= accepts only sizes 0, 32k, 64k\n");
} else
skin->dvd_obs= num;
} else if(strcmp(argv[i],"-eject")==0) {
skin->do_eject= 1;
if(skin->verbosity>=Cdrskin_verbose_cmD)
@ -8215,6 +8255,26 @@ set_speed:;
if(skin->verbosity>=Cdrskin_verbose_cmD)
ClN(printf("cdrskin: speed : %f\n",skin->x_speed));
} else if(strncmp(argv[i], "-stdio_sync=", 12)==0) {
value_pt= argv[i] + 12;
goto stdio_sync;
} else if(strncmp(argv[i], "stdio_sync=", 11)==0) {
value_pt= argv[i] + 11;
stdio_sync:;
if(strcmp(value_pt, "default") == 0 || strcmp(value_pt, "on") == 0)
num= 0;
else if(strcmp(value_pt, "off") == 0)
num= -1;
else
num = Scanf_io_size(value_pt,0);
if(num > 0)
num/= 2048;
if(num != -1 && num != 0 && (num < 32 || num > 512 * 1024)) {
fprintf(stderr,
"cdrskin: SORRY : Option stdio_sync= accepts only sizes -1, 0, 32k ... 1g\n");
} else
skin->stdio_sync= num;
} else if(strncmp(argv[i],"-stream_recording=",18)==0) {
value_pt= argv[i]+18;
goto set_stream_recording;

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2009.11.15.153140"
#define Cdrskin_timestamP "2009.11.15.165016"