History log of /haiku/src/add-ons/kernel/partitioning_systems/intel/intel.cpp
Revision Date Author Comments
# 9274ca84 11-Mar-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel partition map: implement changing the active partition

Implement the needed parts in both the userland add-on (loaded in
DriveSetup) and the kernel side one (used by disk system manager in the
kernel).

This allows changing the active partition in DriveSetup.

Change-Id: Ia65768b5f8f11d626ef24621ae7735723dcbc39d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3771
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 3d916a2c 11-Jan-2014 Jonathan Schleifer <js@webkeks.org>

Intel Partition Table: Remove dummy atomic_add.

This dummy was intended for boot code, however, atomic_add seems to be
already properly defined in boot code.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 7f7e76e4 20-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit compilation fixes for write_overlay and intel partitioning system modules.


# 285f4cf4 12-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added optional partition_module_info::uninitialize() hook. It is supposed to
destroy the partitioning system's on-disk structure.
* Adjusted the existing partitioning system implementations accordingly.
Actually implemented the hook for the intel partitioning system.
* Added Uninitialize() method to KDiskSystem and KPartitioningSystem. The latter
implements the method calling the new module hook.
* _user_uninitialize_partition(): Also let the disk system uninitialize the
on-disk structure.

This fixes the failure to initialize a disk device with BFS, when it contains a
valid partition map with at least one partition.


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


# bdcd7fca 30-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Remove kernel/disk_device_manager from Jamfiles (the add-ons now need to
specify the path).
* Minor cleanup.


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


# d0f743e7 21-Aug-2009 Bryce Groff <bgroff@hawaii.edu>

* Added parameter passing to/from the kernel to userland.
* Removed dependency on deprecated ep_validate_create_child()
* Removed hard coded sector size.
* Style cleanup.


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


# 2ea893b2 29-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Bryce Groff: Style cleanup.


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


# 1cc5e469 08-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added offset and size parameters to create_child_partition() and
KPartition::CreateChild(). CreateChild() calls AddChild(), which publishes
the new partition, though at that point offset and size were not set, so that
the published devices would not be usable.


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


# 199f3324 13-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed SECTOR_SIZE in the read-only part of the intel partition scanner;
however, it's still used in the write part.
* Made the read-only code block size agnostic. Only tested with an Apple
iPod so far, and it recognizes its partition fine now. Next test on real
hardware.
* Cleanup.


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


# ca2a5874 27-Aug-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Disabled support for nested partition maps for the time being. Since
we're quite lenient parsing the partition descriptors, we recognized
pretty much any partition that by accident has a PTS signature and that
no other disk system supports. Should fix bug #2668.


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


# 27ba18f4 20-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Turned off debugging output (intel.cpp still puts out some stuff, but only
when compiled for the kernel).
* Minor cleanup.


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


# d5157b61 30-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* Reverted r26128 again; it should not be necessary after r26177 anymore.


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


# ea538ece 24-Jun-2008 Michael Lotz <mmlr@mlotz.ch>

If the intel partitioning system doesn't detect any children and is not
directly on a device (i.e. has a parent), then don't indicate that we want to
support it at all, but just return -1. Most probably it is actually a
filesystem and not a partition. Indicating that we might support it a bit
could lead to the situation that the partition was associated with the intel
partitioning system in the end because the module for the actually present
filesystem wasn't yet loaded in the first initial device scan (during early
boot when looking for the boot partition).
The later rescan wouldn't touch that partition anymore as it was already
(wrongly) associated with the intel partitioning system, therefore leading to
unrecognized partitions as seen in bug #2424. By not pretending to support the
partition when we most probably don't, a later rescan that has all filesystems
available therefore has a chance of identifying that partition correctly.

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


# 1da9f5ce 10-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Added BDiskSystem::ShortName() and everything needed to get it there.
* Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system
by short/pretty/module name - since they should all be unique, I put them
in a single namespace, please complain if you don't like that :-)
* Cleaned up DiskSystem.h and DiskDeviceRoster.h according to the updated
header guidelines.
* Renamed ntfs pretty name from "ntfs File System" to "Windows NT File System".


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


# bf95c9ae 07-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* The shadow_changed() FS and partitioning system hooks take an
additional partition_data* child parameter now.
* _user_get_partitionable_spaces() doesn't need to copy the buffer into
the kernel, since it is no input parameter. It also copies back the
actual partitionable spaces count on error, now -- B_BUFFER_OVERFLOW
is returned when the buffer was too small, but then the count must be
returned too.
* Fixed several instances of syscall implementations that unloaded a disk
system, although they didn't load it in the first place. This screwed
up the load count with undesirable consequences.
* _user_create_child_partition() would set the size to the supplied
offset.
* Fixed broken loop in KPhysicalPartition::CreateShadowPartition().
* KPartition::RemoveChild() notified the listeners about the wrong
event.
* Intel partitioning module:
- The *_get_partitionable_spaces() correctly return B_BUFFER_OVERFLOW
now, if the supplied buffer is too small.
- Implemented a part of pm_shadow_changed(), which creates and updates
the PartitionMap, so that the validate_*() hooks have a chance to
work at all.



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


# db5c68ca 04-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added the partition size as parameter to the file and partitioning
system initialize() hooks. It's often the only info about the
partition one needs and thus locking the partition just to get it is
no longer necessary.
* intel partitioning system:
- Removed passing around block sizes. We require 512 byte sectors
anyway. In fact using the parent partition's block size was even
wrong.
- Simplified writing the partition map sector.
- Simplified and corrected the partition map initialization.
- We don't fail identifying a partition anymore, if the partition map
contains no partitions. We would never identify a freshly
initialized partition map before.
- Made pm_identify() more intelligent: It determines the priority to
return depending on whether the partition is the device itself and
whether we have recognized child partitions.


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


# bcc2eb0c 04-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved the write support code into a separate source file.


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


# 76a8ec23 22-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added disk system flags for whether a partition name and partition
content name are supported.
* Added file_system_module_info::flags (analogously to
partition_module_info::flags) which indicate which disk device
features the FS supports.
* Replaced the
file_system_module_info/partition_module_info::supports_*()
hooks by a get_supported_operations() hook and for partitioning
systems additionally a get_supported_child_operations() hook.
* Updated file and partitioning systems accordingly.
* Updated fs_shell accordingly.
* Updated the DDM accordingly. The syscall interface remains unchanged,
though.
* _user_supports_initializing_partition() also checks whether the parent
partitioning system is content now.


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


# c6aab459 12-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Small readability changes to the supported types functions.
* Moved the module definition to the end of the source file, so that the
lengthy prototype could be be removed.
* Fixed the *_supports_initializing() hooks.


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


# d96381dd 02-Aug-2007 Jérôme Duval <korli@users.berlios.de>

reverted r21757 which is now fixed by the following
added $(HAIKU_GCC_LIBGCC) to HAIKU_KERNEL_ADDON_END_GLUE_CODE as suggested by Ingo


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


# af8bd8f6 30-Jul-2007 Jérôme Duval <korli@users.berlios.de>

fixed ppc build: replaced a cast to float with a multiplication as the cast requires __floatdisf from libgcc
the other solution would have been to link against libgcc.a. please comment.


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


# 288102e6 26-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Style cleanup.
* Moved method documentation from headers to source files.
* Removed test code.
* Added TODOs where I spotted problems.


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


# 92b8ea1d 24-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Write support for the Intel partitioning system module. Courtesy of
Tomas Kucera.


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


# 8d9e5a45 29-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Turned on debugging in the Intel partitioning system add-on, and the partition
stuff of the boot loader to help with bug #238.
* Minor cleanup (added license headers, fixed debug output)


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


# 8503c000 20-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

I just realized I never commited this. This enables Haiku to boot from a logical partition in an extended partition that used to be a BFS partition and has enough of the old super block left for BFS to think it's a valid BFS partition... fix found together with Ingo Weinhold

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


# f2162522 31-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* More debug output.
* We apparently cannot use constants like kPartitionTypeIntelExtended
in static array initializers in the kernel.
* Fixed misunderstanding between Axel (boot loader) and me (Intel
partitioning system module) how to deal with the cookie the
identify() hook returns. We switch to a someone cleaner method by
always invoking free_identify_cookie() for it, even if it were passed
to scan(). Since we want to keep the cookie, we add a reference
counter to it.
This should fix a couple of issues with recognizing the boot partition.


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


# 569750e5 02-Oct-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Refactored a bit -- pulled the partition map parser out. Userland add-on disabled for the time being, due to build problems.


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


# 1fac18e1 25-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

This fixes the intel/apple/amiga partitioning modules.
String references, const or not, require the static object to be initialized
by a constructor; it will be put into the BSS region.
Now, kernel modules are not linked against crtbegin.o, and the kernel does
not call any init functions on the module.


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


# 15832d7b 07-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

Removed a warning.


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


# b132797e 07-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

Made the module working in the boot loader.


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


# 738e4a70 29-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Support for the added partition content size attribute.


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


# ee1ebe37 24-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added ShadowPartitionChanged() to KDiskSystem and respective hooks
to the module interfaces. So the disk system will be informed, when a
shadow partition has changed and it is allowed to do necessary
adjustions (e.g. adjusting the cookie, the parameters, or on
partitioning system initialization even creating special child
partitions (apple partitioning system)).
* Added `int32 *index' parameter to ValidateCreateChild(). So the
partitioning system can report at which index the new child shall be
inserted.


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


# d3774a9b 21-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

The content_type field in partition_data is now set by the system. Implemented querying hooks for resizing a child partition of the partition map.


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


# 3ee6c178 20-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Some fixes of/changes to the API. Shortened names where possible.


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


# 708a31ba 19-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added SupportsSetting[Content]Parameters() to the KDiskSystem interface and respective functions to the module interface. Some re-ordering of methods/functions for aesthetical reasons. :-)


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


# 18b90323 18-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added flags for disk systems.


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


# 1f3f1294 16-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a IsSubSystemFor() method to the KDiskSystem interface and respective calls for the module interfaces.


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


# 0fbb290f 15-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Some changes to/fixes of the KDiskSystem interface and the disk system module interface.


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


# c54d68a8 08-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Should have waited a few more minutes... Renamed the methods {B,K}Partition::Is{Mountable,Partitionable}() to Contains{File,Partitioning}System(). Similar change for the respective flags (B_PARTITION_{MOUNTABLE,PARTITIONABLE}).


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


# 55bf93d8 08-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed handling of partition and device flags and statuses.


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


# 38cf1a98 22-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Small fixes. Make use of the types of types defined in <DiskDeviceTypes.h>.


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


# e5e5ddc1 13-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

ep_scan_partition(): Removed erroneous check for cookie (it's unused here), and fixed child index counting.


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


# 852d12ef 13-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Ported the intel partitioning system module to the new interface
(disk device manager) and moved it to a nicer place.
First tests look good, though my hard disk structure doesn't even
have extended partitions. Going to install Linux now...


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


# 3d916a2cd7dc80785fec66f063556f6f5dce1b9b 11-Jan-2014 Jonathan Schleifer <js@webkeks.org>

Intel Partition Table: Remove dummy atomic_add.

This dummy was intended for boot code, however, atomic_add seems to be
already properly defined in boot code.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 7f7e76e4615a652686e68102907732d114968b58 20-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

64-bit compilation fixes for write_overlay and intel partitioning system modules.


# 285f4cf441dbc269553bee753d151cbf0074f232 12-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added optional partition_module_info::uninitialize() hook. It is supposed to
destroy the partitioning system's on-disk structure.
* Adjusted the existing partitioning system implementations accordingly.
Actually implemented the hook for the intel partitioning system.
* Added Uninitialize() method to KDiskSystem and KPartitioningSystem. The latter
implements the method calling the new module hook.
* _user_uninitialize_partition(): Also let the disk system uninitialize the
on-disk structure.

This fixes the failure to initialize a disk device with BFS, when it contains a
valid partition map with at least one partition.


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


# bdcd7fcadc390466fb110a55e0932bedc1232b14 30-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Remove kernel/disk_device_manager from Jamfiles (the add-ons now need to
specify the path).
* Minor cleanup.


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


# d0f743e7405b9b723f6488fb8963c0d698fbb20d 21-Aug-2009 Bryce Groff <bgroff@hawaii.edu>

* Added parameter passing to/from the kernel to userland.
* Removed dependency on deprecated ep_validate_create_child()
* Removed hard coded sector size.
* Style cleanup.


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


# 2ea893b2a01db7fe83a90d0933e4f563206408ea 29-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Bryce Groff: Style cleanup.


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


# 1cc5e46925a7e64708d7565fe2c1ac3f448c9d58 08-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added offset and size parameters to create_child_partition() and
KPartition::CreateChild(). CreateChild() calls AddChild(), which publishes
the new partition, though at that point offset and size were not set, so that
the published devices would not be usable.


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


# 199f33248dcde6cb2803ee4bd5938817ed30239e 13-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed SECTOR_SIZE in the read-only part of the intel partition scanner;
however, it's still used in the write part.
* Made the read-only code block size agnostic. Only tested with an Apple
iPod so far, and it recognizes its partition fine now. Next test on real
hardware.
* Cleanup.


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


# ca2a5874fa7d75b44d0c9e552a0977e60383443e 27-Aug-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Disabled support for nested partition maps for the time being. Since
we're quite lenient parsing the partition descriptors, we recognized
pretty much any partition that by accident has a PTS signature and that
no other disk system supports. Should fix bug #2668.


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


# 27ba18f4123ec65b8f091927ca7eb5c62b6b6733 20-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Turned off debugging output (intel.cpp still puts out some stuff, but only
when compiled for the kernel).
* Minor cleanup.


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


# d5157b61d2a9fc06743a78f407fba3866b4f0abe 30-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* Reverted r26128 again; it should not be necessary after r26177 anymore.


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


# ea538ecee88b37a9fbb24cb901ff97032a380fbc 24-Jun-2008 Michael Lotz <mmlr@mlotz.ch>

If the intel partitioning system doesn't detect any children and is not
directly on a device (i.e. has a parent), then don't indicate that we want to
support it at all, but just return -1. Most probably it is actually a
filesystem and not a partition. Indicating that we might support it a bit
could lead to the situation that the partition was associated with the intel
partitioning system in the end because the module for the actually present
filesystem wasn't yet loaded in the first initial device scan (during early
boot when looking for the boot partition).
The later rescan wouldn't touch that partition anymore as it was already
(wrongly) associated with the intel partitioning system, therefore leading to
unrecognized partitions as seen in bug #2424. By not pretending to support the
partition when we most probably don't, a later rescan that has all filesystems
available therefore has a chance of identifying that partition correctly.

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


# 1da9f5cea5ea4d32c539a01cd94a7b605e941beb 10-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Added BDiskSystem::ShortName() and everything needed to get it there.
* Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system
by short/pretty/module name - since they should all be unique, I put them
in a single namespace, please complain if you don't like that :-)
* Cleaned up DiskSystem.h and DiskDeviceRoster.h according to the updated
header guidelines.
* Renamed ntfs pretty name from "ntfs File System" to "Windows NT File System".


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


# bf95c9aee6c36516e5e98a4f8953659c402bbf74 07-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* The shadow_changed() FS and partitioning system hooks take an
additional partition_data* child parameter now.
* _user_get_partitionable_spaces() doesn't need to copy the buffer into
the kernel, since it is no input parameter. It also copies back the
actual partitionable spaces count on error, now -- B_BUFFER_OVERFLOW
is returned when the buffer was too small, but then the count must be
returned too.
* Fixed several instances of syscall implementations that unloaded a disk
system, although they didn't load it in the first place. This screwed
up the load count with undesirable consequences.
* _user_create_child_partition() would set the size to the supplied
offset.
* Fixed broken loop in KPhysicalPartition::CreateShadowPartition().
* KPartition::RemoveChild() notified the listeners about the wrong
event.
* Intel partitioning module:
- The *_get_partitionable_spaces() correctly return B_BUFFER_OVERFLOW
now, if the supplied buffer is too small.
- Implemented a part of pm_shadow_changed(), which creates and updates
the PartitionMap, so that the validate_*() hooks have a chance to
work at all.



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


# db5c68ca46ce6f291fa5c047035418f6ccc89817 04-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added the partition size as parameter to the file and partitioning
system initialize() hooks. It's often the only info about the
partition one needs and thus locking the partition just to get it is
no longer necessary.
* intel partitioning system:
- Removed passing around block sizes. We require 512 byte sectors
anyway. In fact using the parent partition's block size was even
wrong.
- Simplified writing the partition map sector.
- Simplified and corrected the partition map initialization.
- We don't fail identifying a partition anymore, if the partition map
contains no partitions. We would never identify a freshly
initialized partition map before.
- Made pm_identify() more intelligent: It determines the priority to
return depending on whether the partition is the device itself and
whether we have recognized child partitions.


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


# bcc2eb0c727b067c4f4aa2f163372cc70b6fe069 04-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved the write support code into a separate source file.


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


# 76a8ec23db391176bac91f33c5f1fc6e8e41866c 22-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added disk system flags for whether a partition name and partition
content name are supported.
* Added file_system_module_info::flags (analogously to
partition_module_info::flags) which indicate which disk device
features the FS supports.
* Replaced the
file_system_module_info/partition_module_info::supports_*()
hooks by a get_supported_operations() hook and for partitioning
systems additionally a get_supported_child_operations() hook.
* Updated file and partitioning systems accordingly.
* Updated fs_shell accordingly.
* Updated the DDM accordingly. The syscall interface remains unchanged,
though.
* _user_supports_initializing_partition() also checks whether the parent
partitioning system is content now.


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


# c6aab4598bd9fa9dcca6f930b0906d25f6df867a 12-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Small readability changes to the supported types functions.
* Moved the module definition to the end of the source file, so that the
lengthy prototype could be be removed.
* Fixed the *_supports_initializing() hooks.


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


# d96381dd5d784bc17f799cc7e3030274128967cf 02-Aug-2007 Jérôme Duval <korli@users.berlios.de>

reverted r21757 which is now fixed by the following
added $(HAIKU_GCC_LIBGCC) to HAIKU_KERNEL_ADDON_END_GLUE_CODE as suggested by Ingo


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


# af8bd8f6b4889110b95b88999375e68c7f3eacff 30-Jul-2007 Jérôme Duval <korli@users.berlios.de>

fixed ppc build: replaced a cast to float with a multiplication as the cast requires __floatdisf from libgcc
the other solution would have been to link against libgcc.a. please comment.


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


# 288102e6c3dedbc9a4fbb295fc9234ec06c7aa18 26-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Style cleanup.
* Moved method documentation from headers to source files.
* Removed test code.
* Added TODOs where I spotted problems.


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


# 92b8ea1d4406a8743e60ef420d8684255316202f 24-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Write support for the Intel partitioning system module. Courtesy of
Tomas Kucera.


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


# 8d9e5a451e2fb58549aba969c921614bb15d2607 29-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Turned on debugging in the Intel partitioning system add-on, and the partition
stuff of the boot loader to help with bug #238.
* Minor cleanup (added license headers, fixed debug output)


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


# 8503c000b3dda0175f20ada4b5f9d736dd8d91a5 20-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

I just realized I never commited this. This enables Haiku to boot from a logical partition in an extended partition that used to be a BFS partition and has enough of the old super block left for BFS to think it's a valid BFS partition... fix found together with Ingo Weinhold

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


# f2162522b06c959f240c6e2f3a81717a92b95b80 31-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* More debug output.
* We apparently cannot use constants like kPartitionTypeIntelExtended
in static array initializers in the kernel.
* Fixed misunderstanding between Axel (boot loader) and me (Intel
partitioning system module) how to deal with the cookie the
identify() hook returns. We switch to a someone cleaner method by
always invoking free_identify_cookie() for it, even if it were passed
to scan(). Since we want to keep the cookie, we add a reference
counter to it.
This should fix a couple of issues with recognizing the boot partition.


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


# 569750e57f75b9e440f4cdbfd780ec49da53aace 02-Oct-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Refactored a bit -- pulled the partition map parser out. Userland add-on disabled for the time being, due to build problems.


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


# 1fac18e1bbeab965f29873811b766ee3de2ebe8f 25-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

This fixes the intel/apple/amiga partitioning modules.
String references, const or not, require the static object to be initialized
by a constructor; it will be put into the BSS region.
Now, kernel modules are not linked against crtbegin.o, and the kernel does
not call any init functions on the module.


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


# 15832d7b04f9a51f8fcd469dfe80a302672c4011 07-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

Removed a warning.


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


# b132797ec38dac2755fdc8954689aa1318f45f52 07-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

Made the module working in the boot loader.


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


# 738e4a700bed894c7bf11f36e46c14ce6ba6309e 29-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Support for the added partition content size attribute.


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


# ee1ebe375c693d182c224ee71770db13fc446ddf 24-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added ShadowPartitionChanged() to KDiskSystem and respective hooks
to the module interfaces. So the disk system will be informed, when a
shadow partition has changed and it is allowed to do necessary
adjustions (e.g. adjusting the cookie, the parameters, or on
partitioning system initialization even creating special child
partitions (apple partitioning system)).
* Added `int32 *index' parameter to ValidateCreateChild(). So the
partitioning system can report at which index the new child shall be
inserted.


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


# d3774a9b93c7fe08c3cfa95124cffb573527cf2c 21-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

The content_type field in partition_data is now set by the system. Implemented querying hooks for resizing a child partition of the partition map.


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


# 3ee6c178d5e7a11a759fb0963bb991a39bad1faf 20-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Some fixes of/changes to the API. Shortened names where possible.


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


# 708a31badf9c4dcdd45a70ad7f11edd5ad6238ee 19-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added SupportsSetting[Content]Parameters() to the KDiskSystem interface and respective functions to the module interface. Some re-ordering of methods/functions for aesthetical reasons. :-)


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


# 18b90323d9f2b302f2083a0758a398075000d8db 18-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added flags for disk systems.


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


# 1f3f1294a80fce3af96644308de32d0c1c67b315 16-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a IsSubSystemFor() method to the KDiskSystem interface and respective calls for the module interfaces.


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


# 0fbb290f51b950366fc992907e3a3973a7e7c65e 15-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Some changes to/fixes of the KDiskSystem interface and the disk system module interface.


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


# c54d68a84e80123ad2d4bad33fb60d59dfa4ed06 08-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Should have waited a few more minutes... Renamed the methods {B,K}Partition::Is{Mountable,Partitionable}() to Contains{File,Partitioning}System(). Similar change for the respective flags (B_PARTITION_{MOUNTABLE,PARTITIONABLE}).


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


# 55bf93d80d856554438d0306e208e26c7c338f48 08-Jul-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed handling of partition and device flags and statuses.


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


# 38cf1a986ccb98c927169133d0402d7b5df32607 22-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Small fixes. Make use of the types of types defined in <DiskDeviceTypes.h>.


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


# e5e5ddc13abf6ba11b9f16be312b75e41dbb6421 13-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

ep_scan_partition(): Removed erroneous check for cookie (it's unused here), and fixed child index counting.


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


# 852d12ef4ce8c211ebb201900500f2c018634545 13-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Ported the intel partitioning system module to the new interface
(disk device manager) and moved it to a nicer place.
First tests look good, though my hard disk structure doesn't even
have extended partitions. Going to install Linux now...


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