New -zisofs parameter susp_z2=

This commit is contained in:
Thomas Schmitt 2020-10-29 09:31:48 +01:00
parent 1ddb676159
commit a9d8102996
10 changed files with 115 additions and 70 deletions

View File

@ -203,6 +203,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->zisofs_block_number_target= -1;
m->zisofs_bpt_discard_free_ratio= m->zisofs_bpt_discard_free_ratio_default=
-1.0;
m->zisofs_susp_z2= m->zisofs_susp_z2_default= 0;
m->do_overwrite= 2;
m->do_reassure= 0;
m->drive_blacklist= NULL;

View File

@ -675,12 +675,20 @@ int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
return(1);
}
/* @param flag bit0= iso_zisofs_set_params
bit1= iso_zisofs_ctrl_susp_z2
*/
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
{
int ret, i;
struct iso_zisofs_ctrl ctrl;
if(flag & 2) {
iso_zisofs_ctrl_susp_z2(!!xorriso->zisofs_susp_z2);
}
if(!(flag & 1))
return(1);
memset(&ctrl, 0, sizeof(ctrl));
ctrl.version= 1;
ret= iso_zisofs_get_params(&ctrl, 0);
@ -771,10 +779,11 @@ int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
xorriso->zisofs_v2_block_size == xorriso->zisofs_v2_block_size_default
&& xorriso->zisofs_block_number_target == -1)){
sprintf(xorriso->result_line,
"-zisofs version_2=%s:block_size_v2=%dk:bpt_target=%.f\n",
"-zisofs version_2=%s:block_size_v2=%dk:susp_z2=%s:bpt_target=%.f\n",
xorriso->zisofs_v2_enabled ? xorriso->zisofs_v2_enabled == 1 ?
"as_needed" : "on" : "off",
xorriso->zisofs_v2_block_size / 1024,
xorriso->zisofs_susp_z2 ? "on" : "off",
(double) xorriso->zisofs_block_number_target);
Xorriso_status_result(xorriso, filter, fp, flag & 2);
}

View File

@ -233,6 +233,8 @@ LIBISOBURN_MISCONFIGURATION_ = 0;
xorriso->zisofs_bpt_discard_free_ratio_default=
zisofs_ctrl.bpt_discard_free_ratio;
}
xorriso->zisofs_susp_z2= xorriso->zisofs_susp_z2_default=
iso_zisofs_ctrl_susp_z2(-1);
iso_node_xinfo_make_clonable(Xorriso__mark_update_xinfo,
Xorriso__mark_update_cloner, 0);

View File

@ -2188,7 +2188,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" level=0|...|9 , block_size=32k|64k|128k , by_magic=on|off",
" version_2=off|as_needed|on , block_size_v2=32k|...|1024k",
" max_bpt=1k...128g , max_bpt_f=1k...128g , bpt_target=num",
" bpt_free_ratio=-1|[0.0...1.0]"
" bpt_free_ratio=-1|[0.0...1.0] , susp_z2=off|on"
"",
"Write-to-media commands:",
" -rollback Discard the manipulated ISO image and reload it.",

View File

@ -2262,6 +2262,7 @@ static int parse_zisofs_param(char *cpt, int key_l, int l, double *num)
int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
{
int was_level, was_blocksize, was_v2_enabled, was_blocksize_v2;
int was_zisofs_susp_z2;
uint64_t was_max_total_blocks, was_max_file_blocks, was_block_number_target;
int ret, l, i, sticky, set_isofs_params= 0;
double num, was_bpt_discard_free_ratio;
@ -2275,6 +2276,8 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
was_blocksize_v2= xorriso->zisofs_v2_block_size;
was_block_number_target= xorriso->zisofs_block_number_target;
was_bpt_discard_free_ratio= xorriso->zisofs_bpt_discard_free_ratio;
was_zisofs_susp_z2= xorriso->zisofs_susp_z2;
npt= cpt= mode;
for(cpt= mode; npt!=NULL; cpt= npt+1) {
npt= strchr(cpt,':');
@ -2392,6 +2395,18 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
}
xorriso->zisofs_bpt_discard_free_ratio = num;
} else if(strncmp(cpt, "susp_z2=", 8) == 0) {
if(strncmp(cpt + 8, "off", l - 8) == 0) {
xorriso->zisofs_susp_z2= 0;
} else if(strncmp(cpt + 8, "on", l - 8) == 0) {
xorriso->zisofs_susp_z2= 1;
} else {
sprintf(xorriso->info_text,
"-zisofs: Unrecognized susp_z2 mode (allowed: on, off)");
goto sorry_ex;
}
Xorriso_set_zisofs_params(xorriso, 2);
} else if(strncmp(cpt, "default", l)==0) {
xorriso->zlib_level= xorriso->zlib_level_default;
xorriso->zisofs_block_size= xorriso->zisofs_block_size_default;
@ -2403,6 +2418,8 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
xorriso->zisofs_block_number_target= -1;
xorriso->zisofs_bpt_discard_free_ratio=
xorriso->zisofs_bpt_discard_free_ratio_default;
xorriso->zisofs_susp_z2= xorriso->zisofs_susp_z2_default;
Xorriso_set_zisofs_params(xorriso, 2);
} else {
unknown_mode:;
@ -2420,15 +2437,18 @@ sorry_ex:
xorriso->zisofs_v2_block_size= was_blocksize_v2;
xorriso->zisofs_block_number_target= was_block_number_target;
xorriso->zisofs_bpt_discard_free_ratio= was_bpt_discard_free_ratio;
xorriso->zisofs_susp_z2 = was_zisofs_susp_z2;
Xorriso_set_zisofs_params(xorriso, 2);
return(0);
}
if(strncmp(cpt, "by_magic=", 9) != 0)
if(strncmp(cpt, "by_magic=", 9) != 0 &&
strncmp(cpt, "susp_z2=", 8) != 0)
set_isofs_params= 1;
}
ret= 1;
if(set_isofs_params)
ret= Xorriso_set_zisofs_params(xorriso, 0);
ret= Xorriso_set_zisofs_params(xorriso, 1);
return(ret);
}

View File

@ -3111,7 +3111,7 @@ files from disk whether they already are zisofs compressed, e.g. by program
mkzftree. "by_magic=v2" enables processing of already zisofs2 compressed files
additionally to those of zisofs version 1. "by_magic=off" disables both.
.br
"version_2="off|as_needed|on enables compression by experimental version
"version_2="off|as_needed|on controls compression by experimental version
zisofs2 which can encode files of size 4 GiB or larger. The Linux kernel
(as of 5.9) does not yet know this format and will complain like
.br
@ -3127,6 +3127,10 @@ block pointers prevent this.
Mode "off" restricts compression to files smaller than 4 GiB uncompressed size.
Mode "as_needed" uses zisofs2 for larger files. Mode "on" uses zisofs2 for all
zisofs compressed files.
.br
"susp_z2="off|on controls production of SUSP entries "Z2" instead of "ZF"
with zisofs2 compressed files. Unaware Linux kernels are supposed to silently
ignore "Z2" entries.
.br
"block_size_v2="32k|64k|128k|256k|512k|1m sets the size of compression blocks
for zisofs2.
@ -3171,7 +3175,7 @@ max_bpt_f= memory is free, then block pointers of compression filters get
discarded immediately after being added. Value \-1 disables this feature.
.br
"default" is the same as "level=6:block_size=32k:by_magic=off:
version_2=off:block_size_v2=128k:max_bpt=256m:max_bpt_f=256m:
version_2=off:block_size_v2=128k:susp_z2=off:max_bpt=256m:max_bpt_f=256m:
bpt_free_ratio=\-1".
.TP
\fB\-speed\fR code|number[k|m|c|d|b]

View File

@ -2647,7 +2647,7 @@ according to the setting of command -acl.
compressed, e.g. by program mkzftree. "by_magic=v2" enables
processing of already zisofs2 compressed files additionally to
those of zisofs version 1. "by_magic=off" disables both.
"version_2="off|as_needed|on enables compression by experimental
"version_2="off|as_needed|on controls compression by experimental
version zisofs2 which can encode files of size 4 GiB or larger.
The Linux kernel (as of 5.9) does not yet know this format and will
complain like
@ -2660,6 +2660,9 @@ according to the setting of command -acl.
Mode "off" restricts compression to files smaller than 4 GiB
uncompressed size. Mode "as_needed" uses zisofs2 for larger files.
Mode "on" uses zisofs2 for all zisofs compressed files.
"susp_z2="off|on controls production of SUSP entries "Z2" instead
of "ZF" with zisofs2 compressed files. Unaware Linux kernels are
supposed to silently ignore "Z2" entries.
"block_size_v2="32k|64k|128k|256k|512k|1m sets the size of
compression blocks for zisofs2.
"bpt_target="-1|>0 sets a number of block pointers per file, which
@ -2701,7 +2704,7 @@ according to the setting of command -acl.
pointers of compression filters get discarded immediately after
being added. Value -1 disables this feature.
"default" is the same as "level=6:block_size=32k:by_magic=off:
version_2=off:block_size_v2=128k:max_bpt=256m:max_bpt_f=256m:
version_2=off:block_size_v2=128k:susp_z2=off:max_bpt=256m:max_bpt_f=256m:
bpt_free_ratio=-1".
-speed code|number[k|m|c|d|b]
Set the burn speed. Default is "max" (or "0") = maximum speed as
@ -5507,7 +5510,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chown sets ownership in ISO image: Manip. (line 43)
* -chown_r sets ownership in ISO image: Manip. (line 47)
* -clone copies ISO directory tree: Insert. (line 185)
* -close controls media closing: SetWrite. (line 468)
* -close controls media closing: SetWrite. (line 471)
* -close_damaged closes damaged track and session: Writing. (line 205)
* -close_filter_list bans filter registration: Filter. (line 50)
* -commit writes pending ISO image: Writing. (line 27)
@ -5537,11 +5540,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -drive_access control device file locking: AqDrive. (line 72)
* -drive_class controls drive accessability: AqDrive. (line 43)
* -du show directory size in ISO image: Navigate. (line 78)
* -dummy controls write simulation: SetWrite. (line 460)
* -dummy controls write simulation: SetWrite. (line 463)
* -dus show directory size in ISO image: Navigate. (line 81)
* -dusx show directory size on disk: Navigate. (line 88)
* -dux show directory size on disk: Navigate. (line 84)
* -dvd_obs set write block size: SetWrite. (line 397)
* -dvd_obs set write block size: SetWrite. (line 400)
* -early_stdio_test classifies stdio drives: Loading. (line 341)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 229)
* -eject ejects drive tray: Writing. (line 50)
@ -5561,7 +5564,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -follow softlinks and mount points: SetInsert. (line 69)
* -format formats media: Writing. (line 87)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 215)
* -fs sets size of fifo: SetWrite. (line 463)
* -fs sets size of fifo: SetWrite. (line 466)
* -getfacl shows ACL in ISO image: Navigate. (line 60)
* -getfacl_r shows ACL in ISO image: Navigate. (line 66)
* -getfattr shows xattr in ISO image: Navigate. (line 69)
@ -5606,7 +5609,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -mark sets synchronizing message: Frontend. (line 23)
* -md5 controls handling of MD5 sums: Loading. (line 184)
* -mkdir creates ISO directory: Insert. (line 177)
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 403)
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 406)
* -mount issues mount command for ISO session: Restore. (line 153)
* -mount_cmd composes mount command line: Inquiry. (line 49)
* -mount_cmd controls mount command: Inquiry. (line 65)
@ -5625,7 +5628,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -out_charset sets output character set: SetWrite. (line 285)
* -overwrite enables overwriting in ISO: SetInsert. (line 131)
* -pacifier controls pacifier text form: Emulation. (line 166)
* -padding sets amount or mode of image padding: SetWrite. (line 491)
* -padding sets amount or mode of image padding: SetWrite. (line 494)
* -page set terminal geometry: DialogCtl. (line 18)
* -paste_in copies file into disk file: Restore. (line 121)
* -pathspecs sets meaning of = with -add: SetInsert. (line 115)
@ -5683,12 +5686,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -signal_handling controls handling of system signals: Exception.
(line 66)
* -sleep waits for a given time span: Scripting. (line 113)
* -speed set write speed: SetWrite. (line 368)
* -speed set write speed: SetWrite. (line 371)
* -split_size enables large file splitting: SetInsert. (line 145)
* -status shows current settings: Scripting. (line 44)
* -status_history_max curbs -status history: Scripting. (line 52)
* -stdio_sync controls stdio buffer: SetWrite. (line 453)
* -stream_recording controls defect management: SetWrite. (line 386)
* -stdio_sync controls stdio buffer: SetWrite. (line 456)
* -stream_recording controls defect management: SetWrite. (line 389)
* -system_id sets system id: SetWrite. (line 205)
* -tell_media_space reports free space: Inquiry. (line 98)
* -temp_mem_limit curbs memory consumption: Scripting. (line 96)
@ -5701,13 +5704,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -update_l inserts paths if different <1>: Insert. (line 128)
* -update_li inserts paths if different: Insert. (line 124)
* -update_r inserts paths if different: Insert. (line 110)
* -use_immed_bit controls use of Immed bit: SetWrite. (line 441)
* -use_immed_bit controls use of Immed bit: SetWrite. (line 444)
* -use_readline enables readline for dialog: DialogCtl. (line 26)
* -version prints help text: Scripting. (line 22)
* -volid sets volume id: SetWrite. (line 168)
* -volset_id sets volume set id: SetWrite. (line 188)
* -volume_date sets volume timestamp: SetWrite. (line 211)
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 484)
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 487)
* -x enables automatic execution order of arguments: ArgSort. (line 16)
* -xattr controls handling of xattr (EA): Loading. (line 172)
* -zisofs controls zisofs production: SetWrite. (line 296)
@ -5740,7 +5743,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Backup, enable features, -for_backup: Loading. (line 215)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179)
* Blank media, _definition: Media. (line 29)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 441)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 444)
* Blind growing, _definition: Methods. (line 41)
* Bootability, control, -boot_image: Bootable. (line 75)
* Bugs, reporting: Bugreport. (line 6)
@ -6003,26 +6006,26 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Verify, file checksum, -check_md5: Verify. (line 184)
* Verify, file tree checksums, -check_md5_r: Verify. (line 198)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
* Write, block size, -dvd_obs: SetWrite. (line 397)
* Write, block size, -dvd_obs: SetWrite. (line 400)
* Write, bootability, -boot_image: Bootable. (line 75)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 453)
* Write, close media, -close: SetWrite. (line 468)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 456)
* Write, close media, -close: SetWrite. (line 471)
* Write, compliance to specs, -compliance: SetWrite. (line 62)
* Write, defect management, -stream_recording: SetWrite. (line 386)
* Write, defect management, -stream_recording: SetWrite. (line 389)
* Write, disable Rock Ridge, -rockridge: SetWrite. (line 57)
* Write, drive buffer, -modesty_on_drive: SetWrite. (line 403)
* Write, drive buffer, -modesty_on_drive: SetWrite. (line 406)
* Write, enable HFS+, -hfsplus: SetWrite. (line 14)
* Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 463)
* Write, fifo size, -fs: SetWrite. (line 466)
* Write, free space, -tell_media_space: Inquiry. (line 98)
* Write, log problematic disk files, -errfile_log: Scripting. (line 116)
* Write, log written sessions, -session_log: Scripting. (line 134)
* Write, padding image, -padding: SetWrite. (line 491)
* Write, padding image, -padding: SetWrite. (line 494)
* Write, pending ISO image, -commit: Writing. (line 27)
* Write, predict image size, -print_size: Inquiry. (line 86)
* Write, set speed, -speed: SetWrite. (line 368)
* Write, simulation, -dummy: SetWrite. (line 460)
* Write, TAO or SAO/DAO, -write_type: SetWrite. (line 484)
* Write, set speed, -speed: SetWrite. (line 371)
* Write, simulation, -dummy: SetWrite. (line 463)
* Write, TAO or SAO/DAO, -write_type: SetWrite. (line 487)
* xattr, control handling, -xattr: Loading. (line 172)
* xattr, set in ISO image, -setfattr: Manip. (line 103)
* xattr, set in ISO image, -setfattr_list: Manip. (line 120)
@ -6054,41 +6057,41 @@ Node: CmdFind88338
Node: Filter107267
Node: Writing111889
Node: SetWrite124144
Node: Bootable152942
Node: Jigdo180027
Node: Charset185030
Node: Exception188359
Node: DialogCtl194488
Node: Inquiry197090
Node: Navigate205972
Node: Verify214679
Node: Restore225828
Node: Emulation234994
Node: Scripting245450
Node: Frontend253233
Node: Examples262859
Node: ExDevices264037
Node: ExCreate264698
Node: ExDialog265998
Node: ExGrowing267269
Node: ExModifying268078
Node: ExBootable268588
Node: ExCharset269143
Node: ExPseudo270039
Node: ExCdrecord270966
Node: ExMkisofs271286
Node: ExGrowisofs273183
Node: ExException274336
Node: ExTime274794
Node: ExIncBackup275252
Node: ExRestore279278
Node: ExRecovery280224
Node: Files280796
Node: Environ282130
Node: Seealso282878
Node: Bugreport283595
Node: Legal284186
Node: CommandIdx285198
Node: ConceptIdx302814
Node: Bootable153144
Node: Jigdo180229
Node: Charset185232
Node: Exception188561
Node: DialogCtl194690
Node: Inquiry197292
Node: Navigate206174
Node: Verify214881
Node: Restore226030
Node: Emulation235196
Node: Scripting245652
Node: Frontend253435
Node: Examples263061
Node: ExDevices264239
Node: ExCreate264900
Node: ExDialog266200
Node: ExGrowing267471
Node: ExModifying268280
Node: ExBootable268790
Node: ExCharset269345
Node: ExPseudo270241
Node: ExCdrecord271168
Node: ExMkisofs271488
Node: ExGrowisofs273385
Node: ExException274538
Node: ExTime274996
Node: ExIncBackup275454
Node: ExRestore279480
Node: ExRecovery280426
Node: Files280998
Node: Environ282332
Node: Seealso283080
Node: Bugreport283797
Node: Legal284388
Node: CommandIdx285400
Node: ConceptIdx303016

End Tag Table

View File

@ -3624,7 +3624,7 @@ files from disk whether they already are zisofs compressed, e.g. by program
mkzftree. "by_magic=v2" enables processing of already zisofs2 compressed files
additionally to those of zisofs version 1. "by_magic=off" disables both.
@*
"version_2="off|as_needed|on enables compression by experimental version
"version_2="off|as_needed|on controls compression by experimental version
zisofs2 which can encode files of size 4 GiB or larger. The Linux kernel
(as of 5.9) does not yet know this format and will complain like
@*
@ -3640,6 +3640,10 @@ block pointers prevent this.
Mode "off" restricts compression to files smaller than 4 GiB uncompressed size.
Mode "as_needed" uses zisofs2 for larger files. Mode "on" uses zisofs2 for all
zisofs compressed files.
@*
"susp_z2="off|on controls production of SUSP entries "Z2" instead of "ZF"
with zisofs2 compressed files. Unaware Linux kernels are supposed to silently
ignore "Z2" entries.
@*
"block_size_v2="32k|64k|128k|256k|512k|1m sets the size of compression blocks
for zisofs2.
@ -3684,7 +3688,7 @@ max_bpt_f= memory is free, then block pointers of compression filters get
discarded immediately after being added. Value -1 disables this feature.
@*
"default" is the same as "level=6:block_size=32k:by_magic=off:
version_2=off:block_size_v2=128k:max_bpt=256m:max_bpt_f=256m:
version_2=off:block_size_v2=128k:susp_z2=off:max_bpt=256m:max_bpt_f=256m:
bpt_free_ratio=-1".
@c man .TP
@item -speed code|number[k|m|c|d|b]

View File

@ -234,6 +234,8 @@ struct XorrisO { /* the global context of xorriso */
int64_t zisofs_block_number_target;
double zisofs_bpt_discard_free_ratio;
double zisofs_bpt_discard_free_ratio_default;
int zisofs_susp_z2;
int zisofs_susp_z2_default;
int do_overwrite; /* 0=off, 1=on, 2=nondir */
int do_reassure; /* 0=off, 1=on, 2=tree */

View File

@ -1 +1 @@
#define Xorriso_timestamP "2020.10.27.113831"
#define Xorriso_timestamP "2020.10.29.082836"