Updated information about reproducibility and Linux kernel sr lock

This commit is contained in:
2025-04-24 11:46:04 +02:00
parent 972bca87ff
commit bc0c639ec8
9 changed files with 261 additions and 182 deletions

View File

@ -511,21 +511,22 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbose, Up:
cause drive activities while a xorrecord burn run is going on.
drive_scsi_dev_family=sr|scd|sg|default
GNU/Linux specific:
By default, cdrskin tries to map Linux drive addresses to /dev/sr*
before they get opened for operating the drive. This coordinates
well with other use cases of optical drives, like mount(8). But
since year 2010 all /dev/sr* share a global lock which allows only
one drive to process an SCSI command while all others have to wait
for its completion. This yields awful throughput if more than one
drive is writing or reading simultaneously.
The global lock is not applied to device files /dev/sg* and also
not with the system calls read(2), write(2). But ioctl(SG_IO) is
By default, xorrecord tries to map Linux drive addresses to
/dev/sr* before they get opened for operating the drive. This
coordinates well with other use cases of optical drives, like
mount(8). But between year 2010 and 2020 all /dev/sr* shared a
global lock which allowed only one drive to process an SCSI command
while all others had to wait for its completion. This yielded
awful throughput if more than one drive was writing or reading
simultaneously.
The global lock was never applied to device files /dev/sg* and also
not with the system calls read(2), write(2). But ioctl(SG_IO) was
affected, which is needed to perform the SCSI commands for optical
burning.
So for simultaneous burn runs on modern GNU/Linux it is advisable
to use drive_scsi_dev_family="sg". The drive addresses may then
well be given as /dev/sr* but will nevertheless get used as
/dev/sg*.
So for simultaneous burn runs on GNU/Linux 2.6 to 5.5 it is
advisable to use drive_scsi_dev_family="sg". The drive addresses
may then well be given as /dev/sr*, but will nevertheless get used
as /dev/sg*.
--grow_overwriteable_iso
Enable emulation of multi-session writing on overwritable media
which contain an ISO 9660 filesystem. This emulation is learned
@ -893,7 +894,7 @@ for libburnia-project.org
10.2 Copyright
==============
Copyright (c) 2011 - 2024 Thomas Schmitt
Copyright (c) 2011 - 2025 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make
use of the license to derive modified versions of xorriso then you are
@ -919,15 +920,15 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* Menu:
* --bdr_obs_exempt write transaction end padding: NonCdrecord.
(line 92)
(line 93)
* --devices get list of drives: DriveAddr. (line 8)
* --drive_not_exclusive use drive even if busy: NonCdrecord. (line 12)
* --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord.
(line 37)
(line 38)
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord.
(line 57)
(line 58)
* --no_rc do not execute xorriso startup files: NonCdrecord. (line 8)
* --obs_pad write transaction end padding: NonCdrecord. (line 81)
* --obs_pad write transaction end padding: NonCdrecord. (line 82)
* -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)
@ -939,7 +940,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 98)
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 99)
* -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)
@ -956,18 +957,18 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* dev= address the drive to be used: DriveAddr. (line 21)
* drive_scsi_dev_family= Linux device type to be used: NonCdrecord.
(line 20)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 74)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 75)
* fs= set program fifo size: SetBurn. (line 174)
* 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 150)
* stdio_sync= control stdio buffer: NonCdrecord. (line 151)
* stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord.
(line 64)
(line 65)
* tsize= set a fixed track size: SetBurn. (line 126)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 135)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 136)
* write_start_address= set block address for write start: NonCdrecord.
(line 144)
(line 145)

File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -979,10 +980,10 @@ 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 135)
* Blank, format, Immed bit, use_immed_bit=: NonCdrecord. (line 136)
* Bugs, reporting: Bugreport. (line 6)
* Data track, announce, -data: SetBurn. (line 157)
* Defect management, control, stream_recording=: NonCdrecord. (line 64)
* Defect management, control, stream_recording=: NonCdrecord. (line 65)
* Drive, address, dev=: DriveAddr. (line 21)
* Drive, get list of, --devices: DriveAddr. (line 8)
* Drive, inquire CD capabilities, -checkdrive: Inquire. (line 11)
@ -995,11 +996,11 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Examples: Examples. (line 6)
* Fifo, set size, fs=: SetBurn. (line 174)
* Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord.
(line 64)
(line 65)
* Media types, _definiton: Standards. (line 23)
* Media, blank, blank=: SetBurn. (line 28)
* Media, format, blank=: SetBurn. (line 28)
* Media, keep appendable, --multi_if_possible: NonCdrecord. (line 57)
* Media, keep appendable, --multi_if_possible: NonCdrecord. (line 58)
* Media, keep appendable, -multi: SetBurn. (line 89)
* Media, make re-usable, blank=: SetBurn. (line 28)
* medium content, inquire, -toc: Inquire. (line 22)
@ -1007,7 +1008,7 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* MMC, _definiton: Standards. (line 6)
* multi-session info, retrieve, -msinfo: Inquire. (line 43)
* Multi-session, emulate ISO 9660, --grow_overwriteable_iso: NonCdrecord.
(line 37)
(line 38)
* Options, overview, -help: Verbose. (line 30)
* Overwritable media, _definiton: Standards. (line 30)
* Padding, at end of track, padsize=: SetBurn. (line 144)
@ -1023,23 +1024,23 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Track size, set fixed, tsize=: SetBurn. (line 126)
* Track, _definiton: Standards. (line 13)
* Transaction end padding, BD-R, -bdr_obs_exempt: NonCdrecord.
(line 92)
* Transaction end padding, enforce, -obs_pad: NonCdrecord. (line 81)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 74)
(line 93)
* Transaction end padding, enforce, -obs_pad: NonCdrecord. (line 82)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 75)
* 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 144)
(line 145)
* 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 150)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 151)
* Write, drive buffer, -immed: SetBurn. (line 208)
* Write, drive buffer, minbuf=: SetBurn. (line 205)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 98)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 99)
* xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6)
@ -1057,21 +1058,21 @@ Node: Inquire7618
Node: SetBurn10487
Node: Verbose21111
Node: NonCdrecord22661
Node: Examples31496
Node: ExDevices32157
Node: ExMedium32375
Node: ExBlank32638
Node: ExFormat32859
Node: ExDeformat33377
Node: ExIsoSingle33644
Node: ExIsoMulti33928
Node: ExIsoFly35672
Node: ExAfio36864
Node: Files37862
Node: Seealso38418
Node: Bugreport38781
Node: Legal39372
Node: CommandIdx40301
Node: ConceptIdx44073
Node: Examples31526
Node: ExDevices32187
Node: ExMedium32405
Node: ExBlank32668
Node: ExFormat32889
Node: ExDeformat33407
Node: ExIsoSingle33674
Node: ExIsoMulti33958
Node: ExIsoFly35702
Node: ExAfio36894
Node: Files37892
Node: Seealso38448
Node: Bugreport38811
Node: Legal39402
Node: CommandIdx40331
Node: ConceptIdx44103

End Tag Table