Bug 120989 - [udf] [patch] UDF (with DVD RAM) isn't mountable/readable
Summary: [udf] [patch] UDF (with DVD RAM) isn't mountable/readable
Status: In Progress
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: Unspecified
Hardware: Any Any
: Normal Affects Only Me
Assignee: Scott Long
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-23 11:50 UTC by Oliver Herold
Modified: 2020-03-06 17:19 UTC (History)
7 users (show)

See Also:


Attachments
udf.diff (15.81 KB, patch)
2008-04-15 20:08 UTC, Andriy Gapon
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Herold 2008-02-23 11:50:02 UTC
This is a persistent problem since FreeBSD 6.x. DVD RAM formatted media
with FAT or UFS as filesystems aren't a problem at all, but UDF (diverent
versions) isn't readable in FreeBSD.

mount_udf /dev/acd0 /cdrom results in mount_udf: /dev/acd0: Invalid argument

I tried it with different version of UDF and different operating systems
(Debian Etch/Windows XP and Mac OS X Leopard) but to no avail in FreeBSD.

Maybe the udfdump output of such a media is of some use:

UDF volume sets marked alive :
Volume set `0939115C UDF Volume Set` (1 volume) with 8193 partitions
	Partition number 8192 at device `/dev/cd0' session 0 from sector 272(+0) for 2236160 sectors
	Primary volume `UDF Volume` (part 1/1) created by implementator `*Microsoft Windows' 
		contains logical volume  ``
			mapping 0 on 8192 as direct recording data metadata


	retrieving logical volume dependencies
		Logical volume  `0939115C UDF Volume Set`:`UDF Volume`:``
			integrity
	TAG: descriptor 9, serial_num 61994 at sector 36, crc length 118 bytes
		Logical volume integrity descriptor
			Timestamp                            (2008 01 26 at 17:01:55.01.17.36)
			Integrity type                       closed
			Next integrety sequence at 0 for 0 bytes
			Next free unique file ID             139
			Length of implementation use area    46 bytes
			Number of partitions                 1
			Partition 0 : 335924 blocks free space out of 2236160 blocks
			Implemenator Id `*Apple Mac OS X UDF FS` (MacOS [03 01 02 00 00 00 ]) (flags=0)
			Number of files                      48
			Number of directories                6
			Minimum readversion                  UDFv 201
			Minimum writeversion                 UDFv 201
			Maximum writeversion                 UDFv 201


				marked closed at  (2008 01 26 at 17:01:55.01.17.36)
	TAG: descriptor 8, serial_num 61994 at sector 37, crc length 496 bytes
		Terminating descriptor

			supporting tables
	For partition mapping 0->8192

			fileset(s)
	Fileset descriptor extent at sector 0 within partion 0 for 2048 bytes
	TAG: descriptor 256, serial_num 61994 at sector 0, crc length 496 bytes
		Fileset descriptor
			Timestamp                          (2007 08 04 at 09:57:18.06.07.00)
			Interchange level                  3
			Max interchange level              3
			Charset lists                      1
			Max charset lists                  1
			Fileset number                     0
			Fileset descriptor number          0
			Logical volume id                  ``
			Fileset id                         `UDF Volume Set`
			Copyright file id                  ``
			Abstract file id                   ``
			DomainId `*OSTA UDF Compliant` (UDFv 201; no write protect ) (flags=0)
			Rootdir ICB found        at sector 153 within partion space 0 for 2048 bytes
			Next extend for fileset  at sector 0 within partion space 0 for 0 bytes
			Streamdir ICB found      at sector 0 within partion space 0 for 0 bytes


	TAG: descriptor 266, serial_num 61994 at sector 153, crc length 796 bytes
	Extended file entry
		ICB Prior direct entries recorded (excl.)   0
		ICB Strategy type                           4
		ICB Strategy type flags                     0 0
		ICB Maximum number of entries (non strat 4) 1
		ICB     indirect entries/depth              0
		ICB File type                               4
		ICB Parent ICB in logical block 0 of mapped partition 0
		ICB Flags                                   3
			File/directory information using : internal in the ICB
			File flags :
		Uid                                         -1
		Gid                                         -1
		Permissions                                 3def
		Link count                                  3
		Record format                               0
		Record display attributes                   0
		Record length                               0
		Information length                          596
		Object size                                 596
		Logical blocks recorded                     0
		Access time                                 (2008 01 26 at 17:01:52.37.77.10)
		Modification time                           (2008 01 26 at 17:01:52.37.77.14)
		Creation time                               (2007 08 04 at 10:57:18.06.07.00)
		Attribute time                              (2007 08 04 at 11:52:25.75.25.17)
		Checkpoint                                  1
		Extended attributes ICB at at sector 0 within partion space 0 for 0 bytes
		Streamdir ICB at at sector 0 within partion space 0 for 0 bytes
		Implementation `*Apple Mac OS X UDF FS` (MacOS [03 01 02 00 00 00 ]) (flags=0)
		UniqueID                                    0
		Length of extended attribute area           0
		Length of allocation descriptors            596
		Allocation descriptors : 

	 [ blob at internal blob here for 596 bytes ] 

			checking writable filesets
			used/freed space tables
	For partition mapping 0->8192
	Unalloced space bitmap
	TAG: descriptor 264, serial_num 61994 at sector 16, crc length 8 bytes
		Space bitmap
			Number of bits                      2236160
			Number of bytes                     279520
			Marked parts at :
				[00000014 - 00000015]    [00000155 - 00000157]    [00000172 - 00000172]    [00000181 - 00000183]
				[00000226 - 00000226]    [00000242 - 00000243]    [00000250 - 00000251]    [00000267 - 00000268]
				[00000280 - 00000280]    [00000282 - 00000287]    [00000289 - 00000290]    [00000294 - 00000303]
				[00000305 - 00000311]    [00000316 - 00022367]    [01922330 - 02236160]
		Free space found on this partition
			[00000014 - 00000015]   [00000155 - 00000157]   [00000172 - 00000172]   [00000181 - 00000183]   [00000226 - 00000226]   
			[00000242 - 00000243]   [00000250 - 00000251]   [00000267 - 00000268]   [00000280 - 00000280]   [00000282 - 00000287]   
			[00000289 - 00000290]   [00000294 - 00000303]   [00000305 - 00000311]   [00000316 - 00022367]   [01922330 - 02097147]   
			[02097148 - 02236159]   
		Physical partition's unallocated space : 687972352

UDF volume sets marked alive :
Volume set `0939115C UDF Volume Set` (1 volume) with 8193 partitions
	Partition number 8192 at device `/dev/cd0' session 0 from sector 272(+0) for 2236160 sectors
	Primary volume `UDF Volume` (part 1/1) created by implementator `*Microsoft Windows' 
		contains logical volume  ``
			mapping 0 on 8192 as direct recording data metadata




Resulting list of alive sets :

UDF volume sets marked alive :
Volume set `0939115C UDF Volume Set` (1 volume) with 8193 partitions
	Partition number 8192 at device `/dev/cd0' session 0 from sector 272(+0) for 2236160 sectors
	Primary volume `UDF Volume` (part 1/1) created by implementator `*Microsoft Windows' 
		contains logical volume  ``
			mapping 0 on 8192 as direct recording data metadata


Closing discs
Disc access statistics
	sector reads        148  (296 Kbyte)
	sector written        0  (0 Kbyte)
	switches              0

Fix: 

Not a real fix but an option:

I can mount UDF formatted DVD RAM media with sysutils/udfclient (option
fusefs):

udfclientfs /dev/cd0 /cdrom

and read/copy the content.
How-To-Repeat: mount_udf /dev/acd0 /cdrom results in mount_udf: /dev/acd0: Invalid argument
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2008-02-23 14:35:50 UTC
Responsible Changed
From-To: freebsd-i386->freebsd-bugs

This does not sound i386-specific. 

I wonder if it is related to kern/120967?
Comment 2 Andriy Gapon 2008-02-23 22:24:21 UTC
CC: Mark Linimon: no, it's not related.

As a maintainer of sysutils/udfclient port and a guy who spent a lot of
time on in-kernel UDF FS, I can tell that this problem is caused by
FreeBSD fs/udf supporting only older UDF standards. Newer UDF features
(>=2.00), like extended file entries, are not supported.

So, I am not sure how to qualify this PR: a bug, a feature request, or ...
One thing is for sure: FreeBSD UDF fs doesn't get attention that it
actually needs.

-- 
Andriy Gapon
Comment 3 Robert Watson freebsd_committer 2008-03-08 21:22:42 UTC
Responsible Changed
From-To: freebsd-bugs->scottl

Assign to udf author Scott Long, who seems to be collecting udf PRs.
Comment 4 Andriy Gapon 2008-04-15 20:08:53 UTC
Oliver,

if you still have that disk around and have an opportunity to check it
with FreeBSD, could you please try the patch attached?
The patch is against RELENG_7 but it should apply cleanly to not so
distant releases/branches.
This patch contains larger fixes for various UDF problems and in
addition it also contains very basic support for UDF 2.X. Technically
speaking it adds support for Extended File Entry, but not anything else.

Just in case, to apply the patch you need the following:
1. FreeBSD sources :-)
2. cd /usr/src
3. patch -p1 < /path/to/the/patch
4. cd sys/modules/udf
5. make obj && make depend && make && make install
6. kldload udf

The above assumes that you use udf as module. If you have it built into
kernel you then instead of 5 and 6 you would need to build the kernel
and reboot.

-- 
Andriy Gapon
Comment 5 alexbestms 2010-07-19 03:07:19 UTC
freebsd is still missing udf 2.x support. if wikipedia is correct the
latest revision is udf 2.60 from 2005.

reinoud zandijk has taken scotts udf 1.x work and extended it to
support udf 2.60. [1] the code is in the netbsd (and also openbsd)
tree. maybe somebody is willing to backport it to freebsd.

cheers.
alex

[1] http://mail-index.netbsd.org/current-users/2006/02/02/0027.html

-- 
Alexander Best
Comment 6 Andriy Gapon 2010-07-19 07:39:22 UTC
on 19/07/2010 05:07 Alexander Best said the following:
> freebsd is still missing udf 2.x support. if wikipedia is correct the
> latest revision is udf 2.60 from 2005.
> 
> reinoud zandijk has taken scotts udf 1.x work and extended it to
> support udf 2.60. [1] the code is in the netbsd (and also openbsd)
> tree. maybe somebody is willing to backport it to freebsd.

Yeah.
http://www.freebsd.org/projects/ideas/ideas.html#p-portudf
-- 
Andriy Gapon
Comment 7 mrT 2017-10-19 15:39:27 UTC
In the header of this bug report the tag: Importance
currently reads: Normal Affects Only Me
This is incorrect. 
This issue affects others. I am presently using PCBSD10.3 and this exact
issue is still present. I have also noted from google that it has affected several others. Anyone who wants to mount a modern UDF CD/DVD ROM will not be able to on FreeBSD (at least with version 10.3).

I suspect correcting this tag could have an impact on getting some attention to this problem.
Comment 8 SF 2018-05-15 23:43:58 UTC
mount_udf is clearly a problem, i cant mount or read any kind of new dvd. something like this seems to me important because it heavily impacts your workflow if things like this dont work. we now have bhyve and this requires using newer kinds of media, making iso-images and other stuff.
Comment 9 Frank Sapone 2018-10-11 00:47:45 UTC
This is still a problem.  I've been debating for years to switch to FreeBSD as I really enjoy the BSD license over GPL.  With XFCE4 FreeBSD works fairly well.  However, I installed virtualbox so I could install Windows 7 in a VM for things that I will not be able to use natively.  I am unable to mount my Windows 7 DVD because of this.
Comment 10 Scott Long freebsd_committer 2018-10-11 01:57:45 UTC
Hi.  mount_udf and the udf kernel code was originally my baby, but I did some very naive things in it that worked for mainstream DVD-ROM media but were not fully compliant with the spec.  I can work on this for a few evenings, but I don't have a way to easily create a DVD-RAM test case.  Would it work to do a 'dd' image of your test disk and make it available to me to download?  That might help to accelerate my efforts on this.
Comment 11 Frank Sapone 2018-10-11 02:02:10 UTC
Hi Scott,

Glad to see a response.  Was not expecting one!

The DVD is simply the Windows 7 install DVD, but you could achieve the same result with the freely downloadable Windows 10 DVD and burning it.  The Windows 10 ISO is unfortunately downloaded by a tool so I don't know how well it work on FreeBSD with Wine: https://www.microsoft.com/en-us/software-download/windows10.

If it helps, I could make a stripped down Windows 7 ISO that removes the large WIM files and upload that somewhere or email you a link.

Thanks,
Frank
Comment 12 SF 2018-10-11 07:05:23 UTC
Is dd equal to illegal disk copy tools? You need to copy your disk exactly equal the way it is if you want to do any testing. This means i have to make an illegal copy for you, can we do this? Rights could be an problem, i could help you otherwise by testing it myself on my own machine. There is many things i can test, i will give you some information what protocol is required on those disks. You can work on this.
Comment 13 scineram 2020-03-06 17:19:45 UTC
Hi!

This would be nice to have. Wanted to create fat32 Windows 10 installer USB, but couldn't mount downloaded udf iso with these symptoms.