[Pkg-libburnia-devel] Bug#1010098: xorriso: please allow -cut-out directly from block devices

Ivan Shmakov ivan at siamics.net
Thu May 26 03:32:25 BST 2022


>>>>> On 2022-04-26, Thomas Schmitt wrote:
>>>>> TS == Thomas Schmitt wrote:

 TS> So if we exclude S_IFSOCK, S_IFLNK, S_IFDIR, S_IFIFO there
 TS> remain only S_IFREG, S_IFBLK, S_IFCHR with the latter on Linux
 TS> behaving like S_IFREG with 0 bytes of content.  (As said on
 TS> FreeBSD it could be a lseekable disk device.)

	I’m not familiar with FreeBSD, but at least on NetBSD block
	devices are paired with character devices used for ‘raw’
	access; for example, the first GPT partition may end up
	being /dev/dk0 (block) and /dev/rdk0 (character); a logical
	volume could be /dev/vgfoo/lvbar (block) and /dev/vgfoo/rlvbar
	(character); etc.

	On Linux-based systems, such a device can apparently be
	created with raw(8), but it’s not something I recall ever
	needing to use.

http://manpages.debian.org/bullseye/raw.8

 > I decided to regard a device with 0 lseekable size as not
 > suitable for -cut_out.

	An alternative would be to check if it’s possible to seek to
	specified positions rather than to the end of file; e. g.:

$ strace -e trace=lseek -- dd skip=5 count=7 < /dev/zero > /dev/null 
lseek(0, 0, SEEK_CUR)                   = 0
lseek(0, 2560, SEEK_CUR)                = 0
7+0 records in
7+0 records out
3584 bytes (3.6 kB, 3.5 KiB) copied, 0.00119932 s, 3.0 MB/s
+++ exited with 0 +++
$ 

	Can’t say I can readily suggest a good use case for such a
	feature, though.  Should one need to add a zero-filled file
	of arbitrary size to the resulting filesystem (such as to
	reserve space for a possible future dd(1) there), such
	a (regular) file can easily be created with truncate(1)
	(though it can be argued that -cut-out /dev/zero is a tad
	clearer solution.)

 > The test for suitable type rejects S_ISDIR, S_ISLNK, S_ISFIFO,
 > and S_ISSOCK.  So if an operating system offers non-POSIX types,
 > it will be possible to test whether they are elsewise suitable.

 > Please give the code a thorough test, especially with weird
 > -cut_out arguments.

	This looks like a job for a test suite.  I gather there’s
	none as of yet?

	Meanwhile, I’ve noticed that the files created via -cut-out
	inherit the permissions and m-time of the original file.
	The former might be reasonable, but the latter doesn’t seem
	to make much sense, at least for device files (whose m-times
	tend to have no relation to their content proper.)

	Worse still, if the target file is created in a yet-nonexistent
	directory, the directory created inherits the permissions
	of the source file as well (only adding +x where there’s r.)
	I’d rather expect for missing directories to be created as
	if with -mkdir.

	Thoughts?

-- 
FSF associate member #7257  http://am-1.org/~ivan/



More information about the Pkg-libburnia-devel mailing list