History log of /haiku/src/add-ons/kernel/file_systems/udf/Icb.h
Revision Date Author Comments
# ee3c8867 23-Oct-2012 Jérôme Duval <jerome.duval@gmail.com>

UDF: use mirror metadata file when needed

* style fixes
* try the mirror metadata file in case read fails on the main file


# c530d46c 09-Oct-2012 Jérôme Duval <jerome.duval@gmail.com>

UDF: support for metadata partition (feature from 2.50)

* added Icb::FindBlock() to find block in extents.
* MetadataPartition uses extents descriptors found in the metadatafile
to lookup blocks on a physical partition
* uses struct timespec instead of time_t
* added init_entities() to call C++ structures constructors. This is
called at module initialization, C++ constructors are currently not called when
a kernel module is loaded.
* tested with a sample bluray ISO.


# af15ee68 28-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

* Implement udf_io and udf_get_file_map.
* Add file map and cache and do reads through the file_cache for file ICBs.
* Move the private _Read() backend from the header to the implementation file.
* Read() is now only used for directory iteration.
* Turned off the verbose debug output.
* Minor cleanup.

This fixes the abuse of the block_cache, should allow executables on UDF and
won't panic on protected content.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35652 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f3f1911 27-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

The whole reading was seriously confused. It tried to use the block cache for
multiple blocks at a time which it doesn't do as it always only returns one
block (and actually completely ignores the provided offset and length).
It only didn't crash after that because it would in the end always only memcpy
length >> block shift bytes which ends up being pretty small in most cases.
Since it does block wise mapping it can't do multiple blocks anyway, and really
using the block cache for this is all wrong because this should really use a
file map to resolve the block mapping and then use the file cache instead.
Still this at least gets it working. Beware though that protected DVD content
will make the block cache panic, as reading these blocks without prior setting
the drive up correctly will fail (the drive will stall the reads).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35651 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20d84995 20-Sep-2009 Rene Gollent <anevilyak@gmail.com>

Various changes to get this mostly compiling, with the exception of a template issue I don't yet completely understand.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9fd15595 22-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Replace wrong file_cache call with block_cache_get_etc() in Icb::_Read()
* Clean up

I've succefully copied data from a udf partition.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27159 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56b5c637 22-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Replaced some more PRINT with TRACE
* applying our coding guidelines here and there but not everywhere :-)
* no functional changes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27150 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a4124725 18-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Removed DirectoryIterator.{h,cpp} and included them in Icp.{h,cpp}
* Porting Icb to new file cache system


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27017 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7d4d702e 31-Aug-2006 Jérôme Duval <korli@users.berlios.de>

fix build for R5


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18726 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c7000cc7 21-Aug-2004 Oliver Tappe <zooey@hirschkaefer.de>

- fixed some issues when compiling with gcc-2.95.3. At least three more
problems remain, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8615 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e0c7a1e 10-Jul-2004 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Add COMPILE_FOR_R5 wrappers with extern "C" declarations for when
we compile the R5 add-on, since we're using the Haiku fsproto.h, and the
linker doesn't like it when the fsproto.h declarations are extern "C"'d.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 638d6f03 12-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

Since fsproto.h is now C++ safe, it must be correctly included.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7928 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21ea9aea 02-Dec-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Removed category stuff from UdfDebug.h since it ended
up not being as useful as I'd hoped, and I need to use the
same debugging macros for makeudfimage as for udf.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5544 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c6a0588 02-Dec-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

DiskStructures.{h,cpp} -> UdfStructures.{h,cpp}


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5528 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1379caca 24-Nov-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Removed "udf_" prefix from udf on-disk data structures, as they already
live in the Udf:: namespace, and I'll be referencing them fully qualified in
makeudfimage and don't feel like typing udf twice each time.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5474 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43c2ddb4 11-Nov-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Upgraded my vocabulary.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5319 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d2fe364c 18-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Switched from %lld to %Ld so R5 kernel dprintf statements would actually
print something useful for 64-bit integers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4746 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c52519cf 12-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Switched from local cpp.h/cpp.cpp to global kernel_cpp.h/kernel_cpp.cpp


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a64f0e9f 09-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Now uses new SinglyLinkedList template parameters.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4602 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0ff5acc 05-Aug-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Added AccessTime() and ModificationTime().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4230 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dc4d426 31-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Implemented file reading


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4157 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b8f1212a 10-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Added Type(), IsFile(), IsDirectory(), and GetDirectoryIterator()


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e1016e4f 04-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Icb class initial checkin.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ee3c8867434cd7d42c5efa26e591ab87eb484358 23-Oct-2012 Jérôme Duval <jerome.duval@gmail.com>

UDF: use mirror metadata file when needed

* style fixes
* try the mirror metadata file in case read fails on the main file


# c530d46cca3cb9bde36e243e634796eb2e17a23a 09-Oct-2012 Jérôme Duval <jerome.duval@gmail.com>

UDF: support for metadata partition (feature from 2.50)

* added Icb::FindBlock() to find block in extents.
* MetadataPartition uses extents descriptors found in the metadatafile
to lookup blocks on a physical partition
* uses struct timespec instead of time_t
* added init_entities() to call C++ structures constructors. This is
called at module initialization, C++ constructors are currently not called when
a kernel module is loaded.
* tested with a sample bluray ISO.


# af15ee68f1946a47cad0c4de56dfd9b3de213d77 28-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

* Implement udf_io and udf_get_file_map.
* Add file map and cache and do reads through the file_cache for file ICBs.
* Move the private _Read() backend from the header to the implementation file.
* Read() is now only used for directory iteration.
* Turned off the verbose debug output.
* Minor cleanup.

This fixes the abuse of the block_cache, should allow executables on UDF and
won't panic on protected content.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35652 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f3f1911cd6e567963d84907261869e525e065be 27-Feb-2010 Michael Lotz <mmlr@mlotz.ch>

The whole reading was seriously confused. It tried to use the block cache for
multiple blocks at a time which it doesn't do as it always only returns one
block (and actually completely ignores the provided offset and length).
It only didn't crash after that because it would in the end always only memcpy
length >> block shift bytes which ends up being pretty small in most cases.
Since it does block wise mapping it can't do multiple blocks anyway, and really
using the block cache for this is all wrong because this should really use a
file map to resolve the block mapping and then use the file cache instead.
Still this at least gets it working. Beware though that protected DVD content
will make the block cache panic, as reading these blocks without prior setting
the drive up correctly will fail (the drive will stall the reads).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35651 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20d84995300bd9c3c5fd62bf8ba599aa7c7e0de9 20-Sep-2009 Rene Gollent <anevilyak@gmail.com>

Various changes to get this mostly compiling, with the exception of a template issue I don't yet completely understand.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33213 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9fd15595d64d2ef4a28eca7ccd711eb4218ac67e 22-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Replace wrong file_cache call with block_cache_get_etc() in Icb::_Read()
* Clean up

I've succefully copied data from a udf partition.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27159 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56b5c637832b59034b3de9194743e088700dc3db 22-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Replaced some more PRINT with TRACE
* applying our coding guidelines here and there but not everywhere :-)
* no functional changes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27150 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a41247254616ec78e3c67297653b4b5f4475abb4 18-Aug-2008 Salvatore Benedetto <salvatore.benedetto@gmail.com>

* Removed DirectoryIterator.{h,cpp} and included them in Icp.{h,cpp}
* Porting Icb to new file cache system


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27017 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda8ac43fc2c0c0bac6a7e4016efa9b71e1 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7d4d702e05668402b956fac51c3beb8e4e4361cd 31-Aug-2006 Jérôme Duval <korli@users.berlios.de>

fix build for R5


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18726 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c7000cc7b3746aca453b9d875d389ed8eae65067 21-Aug-2004 Oliver Tappe <zooey@hirschkaefer.de>

- fixed some issues when compiling with gcc-2.95.3. At least three more
problems remain, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8615 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e0c7a1e3755578af83cc797aacce98ebec9ce0d 10-Jul-2004 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Add COMPILE_FOR_R5 wrappers with extern "C" declarations for when
we compile the R5 add-on, since we're using the Haiku fsproto.h, and the
linker doesn't like it when the fsproto.h declarations are extern "C"'d.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 638d6f03301db8932839569ca9b6b6c357dda2eb 12-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

Since fsproto.h is now C++ safe, it must be correctly included.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7928 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21ea9aea0c8dab99f5dad0686b870ff6c5c006a6 02-Dec-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Removed category stuff from UdfDebug.h since it ended
up not being as useful as I'd hoped, and I need to use the
same debugging macros for makeudfimage as for udf.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5544 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c6a058880769a0e754a9c3a59c9793683aa6de3 02-Dec-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

DiskStructures.{h,cpp} -> UdfStructures.{h,cpp}


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5528 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1379caca11ed925f1b61435601cfd323d57a19d9 24-Nov-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Removed "udf_" prefix from udf on-disk data structures, as they already
live in the Udf:: namespace, and I'll be referencing them fully qualified in
makeudfimage and don't feel like typing udf twice each time.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5474 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43c2ddb4810bd7959be809fee56b9b83fe16a944 11-Nov-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Upgraded my vocabulary.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5319 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d2fe364ca9380aeefaaedc2275f978992bb7900a 18-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Switched from %lld to %Ld so R5 kernel dprintf statements would actually
print something useful for 64-bit integers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4746 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c52519cfcd3c75d581521082002825cefd75ab03 12-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Switched from local cpp.h/cpp.cpp to global kernel_cpp.h/kernel_cpp.cpp


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a64f0e9fc237caba86bb141b887e7137ee26da45 09-Sep-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Now uses new SinglyLinkedList template parameters.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4602 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0ff5accb67ea9441a93c5bfe0d7baf62e0dba4d 05-Aug-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Added AccessTime() and ModificationTime().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4230 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dc4d42634f015dae2df48fdafa76ce22f71f4f0 31-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Implemented file reading


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4157 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b8f1212a9148f70f67cf9b9948aea42d9e7bc63d 10-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Added Type(), IsFile(), IsDirectory(), and GetDirectoryIterator()


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e1016e4f8a90133f99af154c826d4f78c1f0ae92 04-Jul-2003 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

Icb class initial checkin.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3826 a95241bf-73f2-0310-859d-f6bbb57e9c96