summaryrefslogtreecommitdiffstats
path: root/sys/geom
Commit message (Collapse)AuthorAgeFilesLines
* o When creating the EBR scheme, set the number of entriesmarcel2009-02-211-0/+2
| | | | | | | | | | | | properly. Otherwise the minimum of 1 is used and you can only insert a single partition/slice and only at sector 0 (index 1). o When adding a partition/slice, recalculate the index after the start and size of the partition/slice are adjusted to make them a multiple of the track size. Since the precheck method sets the index based on the start of the partition as provided by the user, we know that we're off by at most 1 and adjusting the index is safe.
* Add bootcode handling.marcel2009-02-211-13/+46
|
* Provide compatibility symlink for logical partitions:marcel2009-02-204-1/+81
| | | | | | | | | | 1. Extend geom_dev by having it create the symlink (i.e. call make_dev_alias) based on the DIOCGPROVIDERALIAS ioctl. In this way the functionaility is generic and thus usable by any geom/provider. 2. Have g_part handle said ioctl through the devalias method, so that it's under control of the scheme itself. By design the alias will not be created for newly added partitions.
* Fix an infinite loop created when the last logical partition ismarcel2009-02-201-3/+3
| | | | removed.
* Add a default implementation for pre-check. It shouldmarcel2009-02-171-2/+12
| | | | | | always succeed if not implemented. Pointy hat: marcel
* Remove gpt_offset and related code. It was introduced for usemarcel2009-02-172-26/+0
| | | | | by the BSD scheme, ended up not to be needed. Remove to avoid abuse and to keep the bloat to a minimum.
* Add support to add, delete and modify logical partitions, as wellmarcel2009-02-161-6/+251
| | | | | as to create and destroy the extended partitioning scheme. In other words: full support.
* Add method precheck to the g_part interface. The precheckmarcel2009-02-153-20/+43
| | | | | | | | | | | | | | | | | | | | | method allows schemes to reject the ctl request, pre-check the parameters and/or modify/set parameters. There are 2 use cases that triggered the addition: 1. When implementing a R/O scheme, deletes will still happen to the in-memory representation. The scheme is not involved in that operation. The pre-check method can be used to fail the delete up-front. Without this the write to disk will typically fail, but at that time the delete already happened. 2. The EBR scheme uses a linked list to record slices. There's no index. The EBR scheme defines the index as a function of the start LBA of the partition. The add verb picks an index for the range and then invokes the add method of the scheme to fill in the blanks. It is too late for the add method to change the index. The pre-check is used to set the index up-front. This also (silently) overrides/nullifies any (pointless) user-specified index value.
* - Use the correct argument when determining the buffer size.lulf2009-02-111-1/+1
| | | | | PR: kern/131575 MFC after: 2 days
* Fix g_part_dumpconf and g_part_name prototpyes.imp2009-02-104-21/+16
| | | | Submitted by: marcel@
* Add the EBR scheme. The EBR scheme supports the Extended Boot Recordsmarcel2009-02-082-0/+345
| | | | | | | | found inside extended partitions and used to create logical partitions. At this time write/modify support is not (yet) present. The EBR and MBR schemes both check the parent scheme. The MBR will back-off when nested under another MBR, whereas the EBR only nests under a MBR.
* Allow gpe_offset to be set by the scheme. When gpe_offset is zero,marcel2009-02-081-2/+7
| | | | | or invalid, initialize it to the start of the partition. Adjust the mediasize when the offset lies somewhere inside the partition.
* o Add the "PART::scheme" attribute that returns the name of themarcel2009-02-081-0/+7
| | | | | | | | | | | | | | | underlying partitioning scheme. o Put the start and end of the partition in the XML configuration. The start and end are the LBAs of the first and last sector (resp.) of the partition. They are currently identical to the offset and size attributes, which describe the partition as an offset and size in bytes, but may not in the future. The start and end will be used for the logical partition boundaries and may include metadata. The offset and size will always represent the useful storage space within the partition. Typically these two notions are the same, but for logical partitions in an extended partition, the EBR is more naturally treated as being part of the partition.
* Fix g_part_*dumpconf to return void to match kobj definition.imp2009-02-082-10/+8
| | | | Fix g_part_*name to return a const char * rather than a char *.
* In g_handleattr(), set bp->bio_completed also for the casemarcel2009-02-031-1/+2
| | | | | where len is 0. Otherwise g_getattr() will never succeed when it is handled by g_handleattr_str().
* Constify val in g_handleattr() and str in g_handleattr_str().marcel2009-02-012-4/+5
| | | | This allows passing string constants to g_handleattr_str().
* Remove unused unrhdr from GEOM character device module.ed2009-01-241-17/+1
| | | | | | Now that make_dev() doesn't require unit numbers to be unique, there is no need to use an unrhdr here to generate the numbers. Remove the entire init-routine, because it is optional.
* Prevent a panic that happens on SMP machines when removing a disk withtrasz2009-01-111-1/+11
| | | | | | | | many writes queued up. Reviewed by: phk, scottl Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
* - Don't enforce an upper-bound to the number of sectors or heads,marius2009-01-061-7/+15
| | | | | | | | | | | | | | | | | | | | | allowing the full 16-bit width of the corresponding fields in the VTOC8 label to be used. The removed limits basically only held true for providers labeled using the synthetic geometry provided by cam_calc_geometry(9) but neither SCSI disks labeled with Solaris nor sufficiently large ATA disks. - Given that providers (originally) labeled with Solaris typically use the native geometry as reported by the target while FreeBSD typically uses a synthetic one put the message complaining about mismatching geometries between what the label indicates and what GEOM thinks the provider has, which we generally can't help, under bootverbose in order to not unnecessarily scare users. - For informational purposes add the non-matching values to the message complaining about them, similar to what r186501 did for g_part_bsd_read() except also indicating the origin of the values. - Make it clear that the messages emitted by this code refer to the VTOC8 support rather than to another existing scheme or to VTOC32.
* Don't enforce an upper-bound to the number of sectors or headsmarcel2009-01-061-4/+2
| | | | | that that the provider has. The limits we imposed were PC BIOS specific and not always applicable.
* Improve probing.marcel2009-01-041-5/+9
| | | | | | | | | o Don't check the dummy fields. o The entry is unused if either dp_mid is 0 or dp_sid is 0. o The start or end cylinder cannot be 0. o The start CHS cannot be equal to the end CHS. Submitted by: nyan
* - Fix an issue with access permissions to underlying disks used by a gvinumlulf2008-12-271-0/+10
| | | | | | | | plex. If the plex is a raid5 plex, and is being written to, parity data might have to be read from the underlying disks, requiring them to be opened for reading as well as writing. MFC after: 1 week
* When the geometry does not match the label, print out the values.obrien2008-12-261-3/+4
|
* Implement g_vfs_orphan(). Without it, the filesystem never closestrasz2008-12-161-10/+25
| | | | | | | | | | | the device, which means refcount on periph drivers never drops, which means cam_sim_free() never returns, which results in umass sleeping there ad infinitum. Submitted by: pjd Reviewed by: scottl, pjd Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
* - Add missing word in comment.lulf2008-12-081-1/+1
|
* Make it possible to use gjournal for the root filesystem. Previously,trasz2008-12-062-0/+18
| | | | | | | | | an unclean shutdown would make it impossible to mount rootfs at boot. PR: kern/128529 Reviewed by: pjd Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
* Trivial patch to show on which geom has the error been detected.ivoras2008-12-011-1/+2
| | | | | | Submitted by: Rick C. Petty Approved by: gnn (mentor) MFC after: 1 month
* Allow boot code to be smaller than what the scheme expects.marcel2008-12-014-5/+20
| | | | | This effectively changes the boot code size to be an upper bound and makes the interface more flexible.
* Allow dumpon to a partition of type FS_UNUSED as well.marcel2008-11-261-2/+3
|
* - Fix a potential NULL pointer reference. Note that this should not happen inlulf2008-11-251-1/+17
| | | | | | | | | practice, but it is a good programming practice and allows the kernel to not depend on userland correctness. - While there, make sizeof usage match the rest of the code. Found with: Coverity Prevent(tm) CID: 660, 662
* - Fix a potential NULL pointer reference. Note that this cannot happen inlulf2008-11-255-6/+51
| | | | | | | | practice, but it is a good programming practice nontheless and it allows the kernel to not depend on userland correctness. Found with: Coverity Prevent(tm) CID: 655-659, 664-667
* Partition type FS_UNUSED does not mean the partition entrymarcel2008-11-181-3/+1
| | | | | | | is unused. Unused partition entries have a partition size of zero. Therefore, partitions can have type FS_UNUSED. MFC after: 3 days
* Fix a panic caused by a corrupted table when the header ismarcel2008-11-061-4/+7
| | | | | | | | | still valid. We were checking the state of the header and not the table. PR: 119868 Based on a patch from: Jaakko Heinonen <jh@saunalahti.fi> MFC after: 1 week
* Improve VFS locking:attilio2008-11-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Implement real draining for vfs consumers by not relying on the mnt_lock and using instead a refcount in order to keep track of lock requesters. - Due to the change above, remove the mnt_lock lockmgr because it is now useless. - Due to the change above, vfs_busy() is no more linked to a lockmgr. Change so its KPI by removing the interlock argument and defining 2 new flags for it: MBF_NOWAIT which basically replaces the LK_NOWAIT of the old version (which was unlinked from the lockmgr alredy) and MBF_MNTLSTLOCK which provides the ability to drop the mountlist_mtx once the mnt interlock is held (ability still desired by most consumers). - The stub used into vfs_mount_destroy(), that allows to override the mnt_ref if running for more than 3 seconds, make it totally useless. Remove it as it was thought to work into older versions. If a problem of "refcount held never going away" should appear, we will need to fix properly instead than trust on such hackish solution. - Fix a bug where returning (with an error) from dounmount() was still leaving the MNTK_MWAIT flag on even if it the waiters were actually woken up. Just a place in vfs_mount_destroy() is left because it is going to recycle the structure in any case, so it doesn't matter. - Remove the markercnt refcount as it is useless. This patch modifies VFS ABI and breaks KPI for vfs_busy() so manpages and __FreeBSD_version will be modified accordingly. Discussed with: kib Tested by: pho
* Add support for reading Tivo Series 1 partitioning. This likely needsimp2008-11-021-12/+52
| | | | | | | | | a little refinement, but is good enough to commit as is. # Should look to see if I should move swab(3) into the kernel or just # provide the unoptimized routine here. Reviewed by: marcel@
* Revert r184136. Instead, push the check for crashdumpmap overflow into thekib2008-10-311-1/+1
| | | | | | | | MD i386 and amd64 dump code. Requested by: jhb Retested by: pho MFC after: 3 days (+ 176304 + 184136)
* - Import macros used in gmirror for printing gvinum debug messages and makinglulf2008-10-2610-72/+94
| | | | | | the output more standardized. - Add a sysctl to set the verbosity of the debug messages. - While there, fixup typos and wording in the messages.
* Invalid BSD disklabels have been created by sysinstall andmarcel2008-10-251-1/+6
| | | | | | | | | | | | | | | are possibly still being created. The d_secperunit field contains the number of sectors of the disk and not of the slice/partition to which the disklabel applies. Rather than reject the disklabel, we now silently adjust the field. Existing code, like bslabel(8), does not seem to check the label that extensively and seems to adjust fields as a side-effect as well. In other words, it's not that important apparently, so gpart should not be too strict about it. Reported by: nyan@ Reported by: Andriy Gapon <avg@icyb.net.ua>
* Allow dumps to partitions with a tag of 0. The legacymarcel2008-10-221-2/+5
| | | | | sunlabel implementation in FreeBSD does not use VTOC information and as such as no partition types.
* Do not overflow crashdumpmap.kib2008-10-211-1/+1
| | | | | | Reported and tested by: pho Reviewed by: jhb MFC after: 1 week
* The active and bootable flags are not part of the type.marcel2008-10-201-11/+82
| | | | | | | | | | Export the active and bootable flags as attributes in the configuration XML and allow them to be manipulated with the set/unset commands. Since libdisk treats the flags as part of the partition type, preserve behavior by keeping them included in the configuration text.
* Remove the struct thread unuseful argument from bufobj interface.attilio2008-10-102-3/+3
| | | | | | | | | | | | | | | | | | | | | In particular following functions KPI results modified: - bufobj_invalbuf() - bufsync() and BO_SYNC() "virtual method" of the buffer objects set. Main consumers of bufobj functions are affected by this change too and, in particular, functions which changed their KPI are: - vinvalbuf() - g_vfs_close() Due to the KPI breakage, __FreeBSD_version will be bumped in a later commit. As a side note, please consider just temporary the 'curthread' argument passing to VOP_SYNC() (in bufsync()) as it will be axed out ASAP Reviewed by: kib Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>
* - Use the new gv_write_header function to write out the header when removing alulf2008-10-021-1/+1
| | | | drive to make sure that the header is in the correct format.
* - Remove unneeded macro since the config_length field in the header was changedlulf2008-10-021-5/+0
| | | | to 64 bit in the new format.
* - Make gvinum header on-disk structure consistent on all platforms by storinglulf2008-10-013-8/+232
| | | | | | | | | | | the gvinum header in fields of fixed size and in a big endian byte order rather than the size and byte order of the actual platform. Note that the change is backwards compatible with the old gvinum configuration format, but will save the configuration in the new format when the 'saveconfig' command is executed. Submitted by: Rick C. Petty <rick-freebsd -at- kiwi-computer.com>
* Return G_PART_PROBE_PRI_HIGH instead of G_PART_PROBE_PRI_NORMmarcel2008-09-291-1/+1
| | | | | | | | | if the probe succeeds. This guarantees that the BSD scheme wins over the MBR scheme when MBR gets to probe first. Build- or link-time conditions can cause schemes to end up in the linker set in a different order. Normally BSD is before MBR in the linker set and as such get to probe first. But typically when the kernel gets rebuild or relinked, this can change.
* Insert the null scheme at the head. This does not change anymarcel2008-09-291-1/+1
| | | | | functionality, but creates an invariant: the first element on the list is always the null scheme.
* Export the partition name in the conftxt and confxml output.marcel2008-09-271-6/+12
| | | | | | | The conftxt output is used by libdisk, and the confxml output is used by gpart itself (gpart show -l). Submitted by: nyan@
* Hold the root mount while we're tasting. It is possiblemarcel2008-09-271-0/+4
| | | | | | that a nested partition (typically the BSD disklabel) is not done tasting while the root file system is being mounted. While this is rare, it's still possible.
* Allow 255 sectors/track for the BSD disklabel. The previous limitmarcel2008-09-271-1/+1
| | | | | | | of 63 sectors/track is too PC BIOS specific. On pc98, where the BSD disklabel is used as well, 255 sectors/track is not uncommon. Submitted by: nyan@
OpenPOWER on IntegriCloud