New -as cdrecord option --obs_pad. Automatic no_emul_toc with -as cdrecord.

This commit is contained in:
Thomas Schmitt 2021-08-30 12:35:26 +02:00
parent e489c877bd
commit 3f2b61932b
8 changed files with 92 additions and 50 deletions

View File

@ -3,7 +3,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -264,6 +264,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->alignment= 0;
m->do_stream_recording= 0;
m->dvd_obs= 0;
m->do_obs_pad= 0;
m->modesty_on_drive= 0;
m->min_buffer_usec= 5000;
m->max_buffer_usec= 25000;

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -81,13 +81,14 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
"\t-pad\t\tpadsize=30k",
"\t-nopad\t\tDo not pad",
"\tminbuf=\t\tKeep drive buffer hungry",
"\tmodesty_on_drive=\tLike minbuf=, but with more parameters",
"\t-immed\t\tEquivalent to minbuf=75",
"\tmodesty_on_drive=\tLike minbuf=, but with more parameters",
"\t--grow_overwriteable_iso\temulate multi-session on DVD+RW, BD-RE",
"\twrite_start_address=#\t\twrite to byte address on DVD+RW, BD-RE",
"\tstream_recording=on|number\ttry to get full speed on DVD-RAM, BD",
"\tuse_immed_bit=on|off|default\tcontrol use of Immed bit",
"\tdvd_obs=default|32k|64k\t\tbytes per DVD/BD write operation",
"\t--obs_pad\t\tpad DVD DAO and stdio to full 32k or 64k",
"\tstdio_sync=on|off|end|number\twhether to fsync output to \"stdio:\"",
"\t--no_rc\t\tDo not execute xorriso startup files",
"\t-help\t\tprint this text to stderr and exit emulation",
@ -290,6 +291,8 @@ no_volunteer:;
strncmp(argpt, "dvd_obs=", 8)==0) {
cpt= strchr(argpt, '=') + 1;
Xorriso_option_dvd_obs(xorriso, cpt, 0);
} else if(strcmp(argv[i], "--obs_pad") == 0) { /* intentional: argv[i] */
xorriso->do_obs_pad= 1;
} else if(strcmp(argpt, "-eject")==0) {
do_eject= 1;
} else if(strncmp(argpt, "-fs=", 4)==0 || strncmp(argpt, "fs=", 3)==0) {

View File

@ -2,7 +2,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -185,6 +185,7 @@ int Xorriso_make_write_options(
else
#endif
burn_write_opts_set_dvd_obs(*burn_options, xorriso->dvd_obs);
burn_write_opts_set_obs_pad(*burn_options, !!xorriso->do_obs_pad);
burn_write_opts_set_stdio_fsync(*burn_options, xorriso->stdio_sync);
burn_write_opts_set_underrun_proof(*burn_options, 1);
@ -194,6 +195,7 @@ int Xorriso_make_write_options(
/* @param flag bit0= do not write but only prepare and return size in sectors
bit1= do not use isoburn wrappers, do not assume libisofs
bit2= no_emul_toc : do not pad random access media to full 64 KB
*/
int Xorriso_sanitize_image_size(struct XorrisO *xorriso,
struct burn_drive *drive, struct burn_disc *disc,
@ -236,7 +238,7 @@ no_track:;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
}
}
if(xorriso->alignment == 0 && ! (xorriso->no_emul_toc & 1)) {
if(xorriso->alignment == 0 && !((xorriso->no_emul_toc & 1) || flag & 4)) {
ret= isoburn_needs_emulation(drive);
if(ret > 0) {
/* Take care that the session is padded up to the future NWA.
@ -2398,7 +2400,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
}
}
ret= Xorriso_sanitize_image_size(xorriso, drive, disc, burn_options, 2);
ret= Xorriso_sanitize_image_size(xorriso, drive, disc, burn_options, 2 | 4);
if(ret<=0)
goto ex;

View File

@ -9,7 +9,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 XORRECORD 1 "Version 1.5.5, Jan 30, 2021"
.TH XORRECORD 1 "Version 1.5.5, Aug 30, 2021"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -605,12 +605,23 @@ 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
\fBdvd_obs="default"|"32k"|"64k"\fR
Linux specific:
Set the number of bytes to be transmitted with each write operation to DVD
or BD media. Tracks get padded up to the next multiple of this write
size. A number of 64 KB may improve throughput with bus systems which
show latency problems. The default depends on media type, option
stream_recording=, and on compile time options.
or BD media. With most write types, tracks get padded up to the next
multiple of this write size (see option \-\-obs_pad). A number of 64 KB may
improve throughput with bus systems which show latency problems.
The default depends on media type, option stream_recording=, and on compile
time options.
.TP
\fB\--obs_pad\fR
Pad the data of last write operation of a DVD\-R[W] DAO session or
stdio: pseudo\-drive up to the full size of an output chunk.
This padding has to be applied automatically to the other DVD and BD media
types, where it causes e.g. ISO images to have trailing unclaimed blocks.
.br
Use this option if there is the suspicion that DAO sessions abort with
your kernel and/or DVD drive, if their size is not a multiple of 16 blocks.
.br
This option may also get enabled at compile time of libburn.
.TP
\fBmodesty_on_drive=parameter[:parameters]\fR
Control whether the drive buffer shall be kept from getting completely filled.

View File

@ -564,12 +564,21 @@ stream_recording="on"|"off"|number
byte addresses below that number. Any number below 16s is the same
as "off".
dvd_obs="default"|"32k"|"64k"
Linux specific: Set the number of bytes to be transmitted with each
write operation to DVD or BD media. Tracks get padded up to the
next multiple of this write size. A number of 64 KB may improve
throughput with bus systems which show latency problems. The
default depends on media type, option stream_recording=, and on
compile time options.
Set the number of bytes to be transmitted with each write operation
to DVD or BD media. With most write types, tracks get padded up to
the next multiple of this write size (see option -obs_pad). A
number of 64 KB may improve throughput with bus systems which show
latency problems. The default depends on media type, option
stream_recording=, and on compile time options.
-obs_pad
Pad the data of last write operation of a DVD-R[W] DAO session or
stdio: pseudo-drive up to the full size of an output chunk. This
padding has to be applied automatically to the other DVD and BD
media types, where it causes e.g. ISO images to have trailing
unclaimed blocks. .br Use this option if there is the suspicion
that DAO sessions abort with your kernel and/or DVD drive, if their
size is not a multiple of 16 blocks. .br This option may also get
enabled at compile time of libburn.
modesty_on_drive=parameter[:parameters]
Control whether the drive buffer shall be kept from getting
completely filled. Parameter "on" (or "1") keeps the program from
@ -908,6 +917,7 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord.
(line 57)
* --no_rc do not execute xorriso startup files: NonCdrecord. (line 8)
* --obs_pad write transaction end padding: NonCdrecord. (line 81)
* -atip inquire medium state: Inquire. (line 14)
* -checkdrive inquire drive CD capabilities: Inquire. (line 11)
* -dao explicitly set write type SAO/DAO: SetBurn. (line 172)
@ -919,7 +929,7 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -inq inquire drive identifiers: Inquire. (line 8)
* -isosize obtain track size from ISO 9660 superblock: SetBurn.
(line 137)
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 81)
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 90)
* -msinfo retrieve multi-session info: Inquire. (line 43)
* -multi keep media appendable after burn run: SetBurn. (line 89)
* -nopad disable adding of bytes to end of track: SetBurn. (line 151)
@ -941,13 +951,13 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* minbuf= keep drive buffer hungry: SetBurn. (line 205)
* padsize= add bytes to end of track: SetBurn. (line 144)
* speed= set write speed: SetBurn. (line 189)
* stdio_sync= control stdio buffer: NonCdrecord. (line 133)
* stdio_sync= control stdio buffer: NonCdrecord. (line 142)
* stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord.
(line 64)
* tsize= set a fixed track size: SetBurn. (line 126)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 118)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 127)
* write_start_address= set block address for write start: NonCdrecord.
(line 127)
(line 136)

File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -959,7 +969,7 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Menu:
* Accessing drive, wait for stdin, -waiti: SetBurn. (line 113)
* Blank, format, Immed bit, use_immed_bit=: NonCdrecord. (line 118)
* Blank, format, Immed bit, use_immed_bit=: NonCdrecord. (line 127)
* Bugs, reporting: Bugreport. (line 6)
* Data track, announce, -data: SetBurn. (line 157)
* Defect management, control, stream_recording=: NonCdrecord. (line 64)
@ -1003,20 +1013,21 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Track size, set fixed, tsize=: SetBurn. (line 126)
* Track, _definiton: Standards. (line 13)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 74)
* Transaction size, set, dvd_obs= <1>: NonCdrecord. (line 81)
* Tray, eject, -eject: SetBurn. (line 214)
* Verbosity, increase, -v: Verbose. (line 16)
* Verbosity, SCSI commands, -V: Verbose. (line 20)
* Version, report, -version: Verbose. (line 8)
* Write simulation , control, -dummy: SetBurn. (line 106)
* Write start address, set, write_start_address=: NonCdrecord.
(line 127)
(line 136)
* Write type, SAO/DAO, -dao: SetBurn. (line 172)
* Write type, SAO/DAO, -sao: SetBurn. (line 168)
* Write type, TAO, -tao: SetBurn. (line 162)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 133)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 142)
* Write, drive buffer, -immed: SetBurn. (line 208)
* Write, drive buffer, minbuf=: SetBurn. (line 205)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 81)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 90)
* xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6)
@ -1034,21 +1045,21 @@ Node: Inquire7618
Node: SetBurn10487
Node: Verbose21111
Node: NonCdrecord22661
Node: Examples30471
Node: ExDevices31132
Node: ExMedium31350
Node: ExBlank31613
Node: ExFormat31834
Node: ExDeformat32352
Node: ExIsoSingle32619
Node: ExIsoMulti32903
Node: ExIsoFly34647
Node: ExAfio35839
Node: Files36837
Node: Seealso37393
Node: Bugreport37756
Node: Legal38347
Node: CommandIdx39276
Node: ConceptIdx42839
Node: Examples31044
Node: ExDevices31705
Node: ExMedium31923
Node: ExBlank32186
Node: ExFormat32407
Node: ExDeformat32925
Node: ExIsoSingle33192
Node: ExIsoMulti33476
Node: ExIsoFly35220
Node: ExAfio36412
Node: Files37410
Node: Seealso37966
Node: Bugreport38329
Node: Legal38920
Node: CommandIdx39849
Node: ConceptIdx43485

End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRECORD 1 "Version 1.5.5, Jan 30, 2021"
@c man .TH XORRECORD 1 "Version 1.5.5, Aug 30, 2021"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -823,12 +823,25 @@ addresses below that number. Any number below 16s is the same as "off".
@item dvd_obs="default"|"32k"|"64k"
@kindex dvd_obs= set write transaction payload size
@cindex Transaction size, set, dvd_obs=
Linux specific:
Set the number of bytes to be transmitted with each write operation to DVD
or BD media. Tracks get padded up to the next multiple of this write
size. A number of 64 KB may improve throughput with bus systems which
show latency problems. The default depends on media type, option
stream_recording=, and on compile time options.
or BD media. With most write types, tracks get padded up to the next
multiple of this write size (see option --obs_pad). A number of 64 KB may
improve throughput with bus systems which show latency problems.
The default depends on media type, option stream_recording=, and on compile
time options.
@c man .TP
@item --obs_pad
@kindex --obs_pad write transaction end padding
@cindex Transaction size, set, dvd_obs=
Pad the data of last write operation of a DVD-R[W] DAO session or
stdio: pseudo-drive up to the full size of an output chunk.
This padding has to be applied automatically to the other DVD and BD media
types, where it causes e.g. ISO images to have trailing unclaimed blocks.
.br
Use this option if there is the suspicion that DAO sessions abort with
your kernel and/or DVD drive, if their size is not a multiple of 16 blocks.
.br
This option may also get enabled at compile time of libburn.
@c man .TP
@item modesty_on_drive=parameter[:parameters]
@kindex -modesty_on_drive keep drive buffer hungry

View File

@ -2,7 +2,7 @@
/* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -406,6 +406,7 @@ struct XorrisO { /* the global context of xorriso */
>=16 means yes with number as start LBA */
int dvd_obs; /* DVD write chunk size: 0, 32k or 64k */
int do_obs_pad; /* 1= pad up end on all media types */
int modesty_on_drive; /* "enable" of burn_drive_set_buffer_waiting()
0= disable , 1= enable waiting ,

View File

@ -1 +1 @@
#define Xorriso_timestamP "2021.08.30.094939"
#define Xorriso_timestamP "2021.08.30.103430"