#
365923 |
|
20-Sep-2020 |
eugen |
MFC r365830: make it possible recovering broken GPT after some LBAs cut off
If pre-formatted device has GPT and a partition covering last available LBAs and the device is attached using a bridge reducing amount of LBAs, then it could be not enough forcing GEOM to use primary GPT. Also, we should make it possible to recover GPT and this requires either deleting or resizing the partition.
This change enables "gpart delete" and "gpart resize" commands on corrupted GPT with following "gpart recover".
It still does not allow modifying corrupted GPT without preliminary setting sysctl kern.geom.part.check_integrity=0
Reported by: Alex Korchmar
|
#
365668 |
|
12-Sep-2020 |
eugen |
MFC r365477: geom_part: extend kern.geom.part.check_integrity to work on GPT
In short, this change allows accessing partition and recovering secondary GPT in case it is unaccessible but primary table is fine.
Reported by: Alex Korchmar
|
#
339286 |
|
10-Oct-2018 |
emaste |
MFC r333233: gpart: add fat32lba MBR partition type
FAT32 partition with LBA addressing.
Sponsored by: The FreeBSD Foundation
|
#
332521 |
|
16-Apr-2018 |
kevans |
MFC r323108, r323125, r326047-r326049
r323108: Add efimedia attribute for all GPT partitions.
r323125: The hard drive media device path contains the size of the partition, not its end. This makes the GEOM efimedia attribute match the FreeBSD:Boot1Device environment variable now.
r326047: Implement efi media tagging for MBR partitioning types.
r326048: Remove trailing whitespace (one I just introduced and a bunch of others in the same directory).
r326049: While the EFI spec allows numbers to be in many forms, libefivar produces hex numbers for the dsn. Since that come is from EDK2, change this for symmetry, by generating the dsn as a hex number.
[Missed as part of the efivar/efibootmgr MFCs]
Reported by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
|
#
330733 |
|
10-Mar-2018 |
asomers |
MFC r329273, r329275, r329277, r329284, r329344
r329273: geli: append "/eli" to the underlying provider's physical path
If the underlying provider's physical path is null, then the geli device's physical path will be, too. Otherwise, it will append "/eli". This will make geli work better with zfsd(8).
PR: 224962 Differential Revision: https://reviews.freebsd.org/D13979
r329275: gpart: append partition name to the underlying provider's physical path
If the underlying provider's physical path is null, then the gpart device's physical path will be, too. Otherwise, it will append the partition name, such as "/p1" or "/s1/a". This will make gpart work better with zfsd(8).
PR: 224965 Differential Revision: https://reviews.freebsd.org/D14010
r329277: Add mtree entry for 329275
X-MFC-With: 329275 Sponsored by: Spectra Logic Corp
r329284: zfsd: Allow zfsd to work on any type of GEOM provider
cddl/usr.sbin/zfsd/zfsd_event.cc Remove the check for da and ada devices. This way zfsd can work on md, geli, glabel, gstripe, etc devices. geli in particular is useful combined with ZFS. gnop is also useful for simulating drive pulls in the ZFSD test suite.
Also, eliminate the DevfsEvent class entirely. Move its responsibilities into GeomEvent. We can get everything we need to know just from listening to GEOM events.
lib/libdevdctl/event.cc Fix GeomEvent::DevName for CREATE events. Oddly, the relevant field is named "cdev" for CREATE events but "devname" for disk events.
Relnotes: Yes (probably worth mentioning the geli part) Sponsored by: Spectra Logic Corp
r329344: Optimize zfsd for the happy case
If there are no damaged pools, then ignore all GEOM events. We only use them to fix damaged pools. However, still pay attention to ZFS events.
X-MFC-With: 329284 Sponsored by: Spectra Logic Corp
|
#
320566 |
|
02-Jul-2017 |
araujo |
MFC r320390:
With r318394 seems it breaks gpart(8) in some embedded systems such like PCEngines, RPI1-B, Alix and APU2 boards as well as NanoBSD with the following message:
vnode_pager_generic_getpages_done: I/O read error 5
Seems the breakage was because it was missed to include acr in glabel update.
Reported by: Peter Blok <pblok@bsd4all.org>, madpilot, imp and trasz. Reviewed by: trasz Tested by: Peter Blok and madpilot. Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D11365
|
#
318394 |
|
17-May-2017 |
araujo |
MFC r315112, r315196
r315112: Add the capability to refresh the gpart(8) label without need a reboot.
gpart(8) has functionality to change the label of an GPT partition. This functionality works like it should, however, after a label change the /dev/gpt/ entries remain unchanged. glabel(8) status output remains unchanged. The change only takes effect after a reboot.
PR: 162690 Submitted by: sub.mesa@gmail, Ben RUBSON <ben.rubson@gmail.com>, ae Reviewed by: allanjude, bapt, bcr Differential Revision: https://reviews.freebsd.org/D9935
r315196: After r315112 I broke the tests with eli, instead to pass 0, I should pass M_NOWAIT to g_media_changed() that will call g_post_event() with this flag.
Reported by: lwhsu, ngie and ae
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
292788 |
|
27-Dec-2015 |
allanjude |
Add some additional GPT partition types
4 ChromeOS GPT types 2 Microsoft partition types the new OpenBSD partition type
Approved by: marcel (mentor) MFC after: 1 week Relnotes: yes Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3841
|
#
285889 |
|
26-Jul-2015 |
ae |
Report the scheme and provider names in warning message about unaligned partition.
PR: 201873 MFC after: 1 week
|
#
280687 |
|
26-Mar-2015 |
mav |
Make GEOM_PART work in presence of previous withered self.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
|
#
279935 |
|
12-Mar-2015 |
ae |
Add GUID and alias for Apple Core Storage partition.
PR: 196241 MFC after: 1 week
|
#
274661 |
|
18-Nov-2014 |
imp |
Implement the historic DIOCGDINFO ioctl for gpart on BSD partitions. Several utilities still use this interface and require additional information since gpart was activated than before. This allows fsck of a UFS partition without having to specify it is UFS, per historic behavior.
|
#
268256 |
|
04-Jul-2014 |
nwhitehorn |
After EFI support was added to the installer, it needed to allow boot partitions of types other than "freebsd-boot" (in particular, "efi"). This allows the removal of some nasty hacks for supporting PowerPC systems, in particular aliasing freebsd-boot to apple-boot on APM and an IBM-specific code on MBR.
This changes the installer to use the correct names, which also breaks a degeneracy in the meaning of "freebsd-boot" that allows the addition of support for some newer IBM systems that can boot from GPT in addition to MBR. Since I have no idea how to detect which those systems are, leave the default on IBM PPC systems as MBR for now.
|
#
267992 |
|
28-Jun-2014 |
hselasky |
Pull in r267961 and r267973 again. Fix for issues reported will follow.
|
#
267985 |
|
27-Jun-2014 |
gjb |
Revert r267961, r267973:
These changes prevent sysctl(8) from returning proper output, such as:
1) no output from sysctl(8) 2) erroneously returning ENOMEM with tools like truss(1) or uname(1) truss: can not get etype: Cannot allocate memory
|
#
267961 |
|
27-Jun-2014 |
hselasky |
Extend the meaning of the CTLFLAG_TUN flag to automatically check if there is an environment variable which shall initialize the SYSCTL during early boot. This works for all SYSCTL types both statically and dynamically created ones, except for the SYSCTL NODE type and SYSCTLs which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to be used in the case a tunable sysctl has a custom initialisation function allowing the sysctl to still be marked as a tunable. The kernel SYSCTL API is mostly the same, with a few exceptions for some special operations like iterating childrens of a static/extern SYSCTL node. This operation should probably be made into a factored out common macro, hence some device drivers use this. The reason for changing the SYSCTL API was the need for a SYSCTL parent OID pointer and not only the SYSCTL parent OID list pointer in order to quickly generate the sysctl path. The motivation behind this patch is to avoid parameter loading cludges inside the OFED driver subsystem. Instead of adding special code to the OFED driver subsystem to post-load tunables into dynamically created sysctls, we generalize this in the kernel.
Other changes: - Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask" to "hw.pcic.intr_mask". - Removed redundant TUNABLE statements throughout the kernel. - Some minor code rewrites in connection to removing not needed TUNABLE statements. - Added a missing SYSCTL_DECL(). - Wrapped two very long lines. - Avoid malloc()/free() inside sysctl string handling, in case it is called to initialize a sysctl from a tunable, hence malloc()/free() is not ready when sysctls from the sysctl dataset are registered. - Bumped FreeBSD version to indicate SYSCTL API change.
MFC after: 2 weeks Sponsored by: Mellanox Technologies
|
#
267357 |
|
11-Jun-2014 |
ae |
Add aliases for DragonFlyBSD's partition types.
MFC after: 2 weeks
|
#
265336 |
|
04-May-2014 |
ae |
Add an advice what to do when partition was automatically resized.
X-MFC after: r256690
|
#
265333 |
|
04-May-2014 |
ae |
Add better error description for case when we are doing resize and scheme-specific method returns EBUSY.
MFC after: 1 week
|
#
259925 |
|
26-Dec-2013 |
marck |
Add GPT UUID for VMware vSAN meta-data partition.
Approved by: ae MFC after: 2 weeks
|
#
256880 |
|
22-Oct-2013 |
mav |
Merge GEOM direct dispatch changes from the projects/camlock branch.
When safety requirements are met, it allows to avoid passing I/O requests to GEOM g_up/g_down thread, executing them directly in the caller context. That allows to avoid CPU bottlenecks in g_up/g_down threads, plus avoid several context switches per I/O.
The defined now safety requirements are: - caller should not hold any locks and should be reenterable; - callee should not depend on GEOM dual-threaded concurency semantics; - on the way down, if request is unmapped while callee doesn't support it, the context should be sleepable; - kernel thread stack usage should be below 50%.
To keep compatibility with GEOM classes not meeting above requirements new provider and consumer flags added: - G_CF_DIRECT_SEND -- consumer code meets caller requirements (request); - G_CF_DIRECT_RECEIVE -- consumer code meets callee requirements (done); - G_PF_DIRECT_SEND -- provider code meets caller requirements (done); - G_PF_DIRECT_RECEIVE -- provider code meets callee requirements (request). Capable GEOM class can set them, allowing direct dispatch in cases where it is safe. If any of requirements are not met, request is queued to g_up or g_down thread same as before.
Such GEOM classes were reviewed and updated to support direct dispatch: CONCAT, DEV, DISK, GATE, MD, MIRROR, MULTIPATH, NOP, PART, RAID, STRIPE, VFS, ZERO, ZFS::VDEV, ZFS::ZVOL, all classes based on g_slice KPI (LABEL, MAP, FLASHMAP, etc).
To declare direct completion capability disk(9) KPI got new flag equivalent to G_PF_DIRECT_SEND -- DISKFLAG_DIRECT_COMPLETION. da(4) and ada(4) disk drivers got it set now thanks to earlier CAM locking work.
This change more then twice increases peak block storage performance on systems with manu CPUs, together with earlier CAM locking changes reaching more then 1 million IOPS (512 byte raw reads from 16 SATA SSDs on 4 HBAs to 256 user-level threads).
Sponsored by: iXsystems, Inc. MFC after: 2 months
|
#
256690 |
|
17-Oct-2013 |
ae |
Add an automatic resize support to the GEOM_PART class.
When parent provider has been resized, the scheme specific G_PART_RESIZE method does an update of scheme's metadata. But all changes are not saved to disk, until `gpart commit` will be called.
Discussed with: trasz MFC after: 1 month
|
#
253938 |
|
04-Aug-2013 |
marcel |
Remove inclusion of <sys/diskmbr.h>. We have no business knowing anything related to MBR in this file.
|
#
251588 |
|
09-Jun-2013 |
marcel |
Change the set and unset ctlreqs by making the index argument optional. This allows setting attributes on tables. One simply does not provide an index in that case. Otherwise the entry corresponding the index has the attribute set or unset.
Use this change to fix a relatively longstanding bug in our GPT scheme that's the result of rev 198097 (relatively harmless) followed by rev 237057 (damaging). The damaging part being that our GPT scheme always has the active flag set on the PMBR slice. This is in violation with EFI. Existing EFI implementions for both x86 and ia64 reject the GPT. As such, GPT disks created by us aren't usable under EFI because of that.
After this change, GPT disks never have the active flag set on the PMBR slice. In order to make the GPT disk bootable under some x86 BIOSes, the reason of rev 198097, one must now set the active attribute on the gpt table. The kernel will apply this to the PMBR slice For (S)ATA: gpart set -a active ada0
To fix an existing GPT disk that has the active flag set in the PMBR, and that does not need the flag, use (again for (S)ATA): gpart unset -a active ada0
The EBR, MBR & PC98 schemes, which also impement at least 1 attribute, now check to make sure the entry passed is valid. They do not have attributes that apply to the table.
|
#
248517 |
|
19-Mar-2013 |
kib |
The geom_part provider supports unmapped bio iff the underlying provider does so, since geom_part never inspects the bio_data.
Sponsored by: The FreeBSD Foundation Tested by: pho
|
#
247961 |
|
07-Mar-2013 |
gavin |
Support the FAT16 partition type in gpart(8)
PR: kern/174714 Submitted by: 4721 at hushmail dot com MFC after: 1 week
|
#
241296 |
|
06-Oct-2012 |
avg |
g_part_taste: directly destroy consumer and geom here, no need for withering
Besides withered but still alive consumers may interfere with re-tatsing.
MFC after: 16 days
|
#
239790 |
|
28-Aug-2012 |
ed |
Remove unneeded G_PF_CANDELETE flag.
This flag is only used by GEOM so it can be propagated to the character device's SI_CANDELETE. Unfortunately, SI_CANDELETE seems to do nothing.
|
#
238886 |
|
29-Jul-2012 |
mav |
Implement media change notification for DA and CD removable media devices. It includes three parts: 1) Modifications to CAM to detect media media changes and report them to disk(9) layer. For modern SATA (and potentially UAS) devices it utilizes Asynchronous Notification mechanism to receive events from hardware. Active polling with TEST UNIT READY commands with 3 seconds period is used for incapable hardware. After that both CD and DA drivers work the same way, detecting two conditions: "NOT READY: Medium not present" after medium was detected previously, and "UNIT ATTENTION: Not ready to ready change, medium may have changed". First one reported to disk(9) as media removal, second as media insert/change. To reliably receive second event new AC_UNIT_ATTENTION async added to make UAs broadcasted to all periphs by generic error handling code in cam_periph_error(). 2) Modifications to GEOM core to handle media remove and change events. Media removal handled by spoiling all consumers attached to the provider. Media change event also schedules provider retaste after spoiling to probe new media. New flag G_CF_ORPHAN was added to consumers to reflect that consumer is in process of destruction. It allows retaste to create new geom instance of the same class, while previous one is still dying. 3) Modifications to some GEOM classes: DEV -- to report media change events to devd; VFS -- to handle spoiling same as orphan to prevent accessing replaced media. PART class already handles spoiling alike to orphan.
Reviewed by: silence on geom@ and scsi@ Tested by: avg Sponsored by: iXsystems, Inc. / PC-BSD MFC after: 2 months
|
#
238657 |
|
20-Jul-2012 |
trasz |
Make it possible to resize opened partitions.
Sponsored by: FreeBSD Foundation
|
#
236023 |
|
25-May-2012 |
marcel |
Add a partition type for nandfs to the apm, bsd, gpt and vtoc8 schemes. The gpart alias for these partition types is "freebsd-nandfs".
|
#
234417 |
|
18-Apr-2012 |
marck |
VMware environments are not unusual now. Add VMware partitions recognition (both MBR for ESXi <= 4.1 and GPT for ESXi 5) to g_part.
Reviewed by: ae Approved by: ae MFC after: 2 weeks
|
#
233342 |
|
23-Mar-2012 |
ae |
Check that scheme is not already registered. This may happens when a KLD is preloaded with loader(8) and leads to infinity loops.
Also do not return EEXIST error code from MOD_LOAD handler, because we have undocumented(?) ability replace kernel's module with preloaded one. And if we have so, then preloaded module will be initialized first. Thus error in MOD_LOAD handler will be triggered for the kernel.
PR: kern/165573 MFC after: 3 weeks
|
#
233175 |
|
19-Mar-2012 |
ae |
Make kern.geom.part node not static. Also add CTLFLAG_TUN to the check_integrity sysctl.
MFC after: 1 month
|
#
233000 |
|
15-Mar-2012 |
ae |
Add MODULE_DEPEND() to geom_part modules.
MFC after: 2 weeks
|
#
231929 |
|
20-Feb-2012 |
ae |
If nested scheme allows dump kernel to its partition, we may allow dump for the parent partition too.
MFC after: 2 weeks
|
#
231751 |
|
15-Feb-2012 |
ae |
Add PART::type attribute handler. It returns partition type as string.
MFC after: 2 weeks
|
#
230990 |
|
04-Feb-2012 |
emaste |
Correct typo in comment (numbver)
|
#
230861 |
|
01-Feb-2012 |
ae |
The scheme code may not know about some inconsistency in the metadata. So, add an integrity check after recovery attempt.
MFC after: 1 week
|
#
227309 |
|
07-Nov-2011 |
ed |
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
#
226880 |
|
28-Oct-2011 |
ae |
Our geom withering function could take some time before geom with its providers and consumers will be destroyed. Before take some actions with a geom, check that it is not destroyed at the moment.
Tested by: nwhitehorn MFC after: 1 week
|
#
222642 |
|
03-Jun-2011 |
ae |
Add diagnostic message about not aligned partitions.
Idea from: ivoras
|
#
221992 |
|
16-May-2011 |
ae |
Make diagnostic messages more specific. With bootverbose print out all inconsistencies of integrity in the partition table, not first found only.
Requested by: kib
|
#
221984 |
|
16-May-2011 |
ae |
Add diagnostic messages for integrity checks.
|
#
221972 |
|
15-May-2011 |
ae |
Add a sysctl kern.geom.part.check_integrity for those who has corrupt partition tables and lost an ability to boot after r221788. Also unhide an error message from bootverbose, this would help to easier determine the problem.
|
#
221788 |
|
11-May-2011 |
ae |
Add basic metadata integrity check. In case when partition table was probed and read successfull, but it contains invalid values (e.g. overlapped partitions, offset or size is out of bounds), then table will be rejected.
MFC after: 1 month
|
#
218014 |
|
28-Jan-2011 |
ae |
Add new user-friendly aliases for partition types for the MBR and EBR schemes: fat32, ebr, linux-data, linux-raid, linux-swap and linux-lvm. Add bios-boot GUID and alias for the GPT scheme. It used by GRUB 2 loader. Also do sorting definitions of types in diskmbr.h and in g_part.c.
PR: bin/120990, kern/147664 MFC after: 2 weeks
|
#
217040 |
|
06-Jan-2011 |
nwhitehorn |
Add an entry to the gpart XML to determine if the geom has pending changes that need to be committed (or undone).
MFC after: 2 weeks
|
#
215118 |
|
11-Nov-2010 |
ae |
Fix regression introduced in r215088: gpart(8) reports "arg0 'provider': Invalid argument" after creating new partition table. Move code for search of existing geom into g_part_find_geom function and use this function instead of g_part_parm_geom in g_part_ctl_create.
Approved by: kib (mentor)
|
#
215088 |
|
10-Nov-2010 |
ae |
In r212554 name of G_PART_PARM_GEOM and G_PART_PARM_PROVIDER ctlreq parameters was changed to "arg0". Fix the last place where it is used.
Approved by: kib (mentor)
|
#
214352 |
|
25-Oct-2010 |
ae |
Reimplemented "gpart destroy -F". Now it does all work in kernel. This was needed for recover implementation.
Implement the recover command for GPT. Now GPT will marked as corrupt when any of three types of corruption will be detected: 1. Damaged primary GPT header or table 2. Damaged secondary GPT header or table 3. Secondary header is not located in the last LBA Marked GPT becomes read-only. Any changes with corrupt table are prohibited. Only "destroy" and "recover" commands are allowed.
Discussed with: geom@ (mostly silence) Tested by: Ilya A. Arhipov Approved by: mav (mentor) MFC after: 2 weeks
|
#
213769 |
|
13-Oct-2010 |
rpaulo |
The canonical way to print __func__ when using KASSERT() is to write ("%s", __func__). This avoids clang's -Wformat-string warnings.
|
#
213662 |
|
09-Oct-2010 |
ae |
Replace strlen(_PATH_DEV) with sizeof(_PATH_DEV) - 1.
Suggested by: kib Approved by: kib (mentor) MFC after: 5 days
|
#
213174 |
|
25-Sep-2010 |
ae |
Some schemes can allocate memory for internal purposes but when GEOM does withering this memory doesn't freed. Add G_PART_DESTROY call to g_part_wither. Also add missed g_free() call to G_PART_READ method for MBR and PC98 schemes.
Submitted by: jh (previous version) Reviewed by: pjd Approved by: kib (mentor)
|
#
212706 |
|
15-Sep-2010 |
pjd |
Change message when setting or unsetting attribute less confusing. Before:
ada0 has <attrib> set
After:
<attrib> set on ada0
MFC after: 2 weeks
|
#
212703 |
|
15-Sep-2010 |
pjd |
Make the message that informs about bootcode being written to disk less confusing.
Note there is still no information about 'partcode' being written to disk (gpart bootcode -p <partcode> <disk>).
Maybe in the future all the messages printed by gpart(8) on success could be hidden under -v?
PR: bin/150239 Reported by: Roddi <roddi@me.com> Submitted by: arundel MFC after: 2 weeks
|
#
212614 |
|
14-Sep-2010 |
pjd |
- Change all places where G_TYPE_ASCNUM is used to G_TYPE_NUMBER. It turns out the new type wasn't really needed. - Reorganize code a little bit.
|
#
212609 |
|
14-Sep-2010 |
pjd |
Simplify the code a bit.
|
#
212554 |
|
13-Sep-2010 |
pjd |
- Remove gc_argname field. It was introduced for gpart(8), but if I understand everything correctly, we don't really need it. - Provide default numeric value as strings. This allows to simplify a lot of code. - Bump version number.
|
#
210792 |
|
03-Aug-2010 |
ae |
Check that table is not NULL before access, it can be NULL for some cases.
Approved by: mav (mentor) MFC after: 2 weeks
|
#
210746 |
|
02-Aug-2010 |
ae |
Release access for consumers that are opened, but will be destroyed indirectly by orphan method.
PR: 148688 Silence from: marcel Approved by: mav (mentor) MFC after: 2 weeks
|
#
210401 |
|
23-Jul-2010 |
ae |
Prevent access after free to table entry in case when user deletes partition that not yet created (changes doesn't committed to disk).
PR: 148687 Approved by: mav (mentor) MFC after: 7 days
|
#
209536 |
|
26-Jun-2010 |
rpaulo |
Add NTFS partition type to GEOM_MBR.
|
#
207181 |
|
25-Apr-2010 |
marcel |
Re-calculate a geometry when reprobing as well.
PR: kern/145452 Reported by: "Andrey V. Elsukov" <bu7cher@yandex.ru>
|
#
207178 |
|
24-Apr-2010 |
marcel |
Fix undo for schemes that have internal partitions. Internal partitions do not constitute user-visible or active partitions and as such should not prevent undoing pending operations.
While here, initialize the last usable sector for the placeholder geom based on the null scheme, created to allow undoing the destruction of a scheme. This gives consistent output with "gpart show".
Based on a patch from: "Andrey V. Elsukov" <bu7cher@yandex.ru>
|
#
207094 |
|
23-Apr-2010 |
marcel |
Implement the resize verb and add support for resizing partitions for all schemes but EBR. Quality work by Andrey!
Submitted by: "Andrey V. Elsukov" <bu7cher@yandex.ru>
|
#
201645 |
|
06-Jan-2010 |
mav |
Change the way in which zero stripesize is handled. Instead of reporting zero stripeoffset in such case (as if device has no stripes), report offset from the beginning of the media (as if device has single infinite stripe).
This gives partitioning tools information, required to guess better partition alignment, in case if hardware doesn't report it's stripe size. For example, it should give disklabel info about odd offset made by fdisk.
|
#
200539 |
|
14-Dec-2009 |
rpaulo |
Add Microsoft and NetBSD partition types handling.
|
#
200534 |
|
14-Dec-2009 |
rpaulo |
Simplify partition type parsing by using a data-oriented model. While there add more Apple and Linux partition types.
|
#
197898 |
|
09-Oct-2009 |
pjd |
If provider is open for writing when we taste it, skip it for classes that depend on on-disk metadata. This was we won't attach to providers that are used by other classes. For example we don't want to configure partitions on da0 if it is part of gmirror, what we really want is partitions on mirror/foo.
During regular work it works like this: if provider is open for writing a class receives the spoiled event from GEOM and detaches, once provider is closed the taste event is send again and class can rediscover its metadata if it is still there. This doesn't work that way when new class arrives, because GEOM gives all existing providers for it to taste, also those open for writing. Classes have to decided on their own if they want to deal with such providers (eg. geom_dev) or not (classes modified by this commit).
Reported by: des, Oliver Lehmann <lehmann@ans-netz.de> Tested by: des, Oliver Lehmann <lehmann@ans-netz.de> Discussed with: phk, marcel Reviewed by: marcel MFC after: 3 days
|
#
197449 |
|
24-Sep-2009 |
marcel |
Don't create more partitions than can fit in the table by checking that the index is within bounds.
|
#
195436 |
|
08-Jul-2009 |
marcel |
Revert revisions 188839 and 188868. Use of the ioctl in geom_dev.c is invalid because the ioctl happens without prior open. The ioctl got introduced to provide backward compatibility for extended partitions, but it ended up not being used because it didn't work as expected. Since there are no consumers of the ioctl and the implementation is broken, the best fix is to remove the code entirely.
Spotted by: phk Approved by: re (kensmith)
|
#
191130 |
|
15-Apr-2009 |
marcel |
Add a compat option to the EBR scheme that controls the naming of the partitions (GEOM_PART_EBR_COMPAT). When compatibility is enabled, changes to the partitioning are disallowed.
Remove the device name aliasing added previously to provide backward compatibility, but which in practice doesn't give us anything.
Enable compatibility on amd64 and i386.
|
#
190878 |
|
10-Apr-2009 |
thompsa |
Revert r190676,190677
The geom and CAM changes for root_hold are the wrong solution for USB design quirks.
Requested by: scottl
|
#
190676 |
|
03-Apr-2009 |
thompsa |
Add a how argument to root_mount_hold() so it can be passed NOWAIT and be called in situations where sleeping isnt allowed.
|
#
190232 |
|
21-Mar-2009 |
ivoras |
Be more explicit and complain if kernel dumps are perfomed on unsupported partition types. This is to help users used to the old behaviour.
Reviewed by: marcel Approved by: gnn (mentor)
|
#
190058 |
|
19-Mar-2009 |
ivoras |
Make GEOM provider names starting with "/dev/" acceptable as well as their "raw" names. While there, change the formatting of extended MSDOS partitions so that the dot (".") is not used to separate two numbers (which kind of looks like the whole is a decimal number). Use "+" instead, which also hints that the second part of the name is the offset from the start of the partition in the first part of the name. Also change the offset from decimal to hexadecimal notation, simply for aesthetic reasons and future compatibility.
GEOM_PART is the default in 8-CURRENT but not yet in 7-STABLE so this changeset can be MFC-ed without causing major problems from the second part.
Reviewed by: marcel Approved by: gnn (mentor) MFC after: 2 weeks
|
#
188839 |
|
20-Feb-2009 |
marcel |
Provide compatibility symlink for logical partitions: 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.
|
#
188705 |
|
17-Feb-2009 |
marcel |
Remove gpt_offset and related code. It was introduced for use by the BSD scheme, ended up not to be needed. Remove to avoid abuse and to keep the bloat to a minimum.
|
#
188659 |
|
15-Feb-2009 |
marcel |
Add method precheck to the g_part interface. The precheck 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.
|
#
188352 |
|
08-Feb-2009 |
marcel |
Allow gpe_offset to be set by the scheme. When gpe_offset is zero, or invalid, initialize it to the start of the partition. Adjust the mediasize when the offset lies somewhere inside the partition.
|
#
188329 |
|
08-Feb-2009 |
marcel |
o Add the "PART::scheme" attribute that returns the name of the 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.
|
#
186807 |
|
06-Jan-2009 |
marcel |
Don't enforce an upper-bound to the number of sectors or heads that that the provider has. The limits we imposed were PC BIOS specific and not always applicable.
|
#
185497 |
|
30-Nov-2008 |
marcel |
Allow boot code to be smaller than what the scheme expects. This effectively changes the boot code size to be an upper bound and makes the interface more flexible.
|
#
183454 |
|
29-Sep-2008 |
marcel |
Insert the null scheme at the head. This does not change any functionality, but creates an invariant: the first element on the list is always the null scheme.
|
#
183419 |
|
27-Sep-2008 |
marcel |
Hold the root mount while we're tasting. It is possible 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.
|
#
182798 |
|
05-Sep-2008 |
rpaulo |
Fix build.
|
#
182797 |
|
05-Sep-2008 |
rpaulo |
Keep entries sorted.
|
#
182793 |
|
05-Sep-2008 |
rpaulo |
Include the vendor in the partition name.
|
#
182784 |
|
05-Sep-2008 |
rpaulo |
Detect Apple HFS GPT slices.
|
#
181463 |
|
09-Aug-2008 |
des |
Add sbuf_new_auto as a shortcut for the very common case of creating a completely dynamic sbuf.
Obtained from: Varnish MFC after: 2 weeks
|
#
179853 |
|
17-Jun-2008 |
marcel |
Add the set and unset verbs used to set and clear attributes for partition entries. Implement the setunset method for the MBR scheme to control the active flag.
|
#
178444 |
|
23-Apr-2008 |
marcel |
Implement the G_PART_DUMPCONF method for all 6 schemes. Also call the method for the (indent == NULL) case (i.e. the kern.geom.conftxt sysctl). The purpose is to extend the conftxt output with scheme- specific fields which can be used by libdisk. In particular, have the schemes dump the xs and xt fields, which contain the backward compatible values for class type and partition type. This allows libdisk to work with the legacy slicers as well as with gpart and helps/promotes migration.
|
#
178180 |
|
13-Apr-2008 |
marcel |
Add the bootcode verb for installing boot code. Boot code is supported for the MBR, GPT and PC98 schemes, where GPT installs boot code into the PMBR.
|
#
177510 |
|
22-Mar-2008 |
marcel |
Redefine G_PART_SCHEME_DECLARE() from populating a private linker set to declaring a proper module. The module event handler is part of the gpart core and will add the scheme to an internal list on module load and will remove the scheme from the internal list on module unload. This makes it possible to dynamically load and unload partitioning schemes.
|
#
174499 |
|
09-Dec-2007 |
marcel |
Fix a bug in the add verb, where we failed to keep the list of partitions in index-order. This is assumed by the APM, MBR and BSD partitioning schemes.
|
#
174465 |
|
08-Dec-2007 |
marcel |
Internal partitions can not be deleted or modified.
|
#
174456 |
|
08-Dec-2007 |
marcel |
Skip internal partitions in the check for (user) partitions for the destroy command. Previously a freshly created BSD disklabel could not be destroyed because of the internal partition.
|
#
174326 |
|
06-Dec-2007 |
marcel |
Add a BSD disklabel backend to g_part: o Disklabels can have between 8 and 20 partitions (inclusive). o No device special file is created for the raw partition. o Switch ia64 to use this backend. o No support for boot code yet.
|
#
172940 |
|
24-Oct-2007 |
jhb |
First cut at support for booting a GPT labeled disk via the BIOS bootstrap on i386 and amd64 machines. The overall process is that /boot/pmbr lives in the PMBR (similar to /boot/mbr for MBR disks) and is responsible for locating and loading /boot/gptboot. /boot/gptboot is similar to /boot/boot except that it groks GPT rather than MBR + bsdlabel. Unlike /boot/boot, /boot/gptboot lives in its own dedicated GPT partition with a new "FreeBSD boot" type. This partition does not have a fixed size in that /boot/pmbr will load the entire partition into the lower 640k. However, it is limited in that it can only be 545k. That's still a lot better than the current 7.5k limit for boot2 on MBR. gptboot mostly acts just like boot2 in that it reads /boot.config and loads up /boot/loader. Some more details: - Include uuid_equal() and uuid_is_nil() in libstand. - Add a new 'boot' command to gpt(8) which makes a GPT disk bootable using /boot/pmbr and /boot/gptboot. Note that the disk must have some free space for the boot partition. - This required exposing the backend of the 'add' function as a gpt_add_part() function to the rest of gpt(8). 'boot' uses this to create a boot partition if needed. - Don't cripple cgbase() in the UFS boot code for /boot/gptboot so that it can handle a filesystem > 1.5 TB. - /boot/gptboot has a simple loader (gptldr) that doesn't do any I/O unlike boot1 since /boot/pmbr loads all of gptboot up front. The C portion of gptboot (gptboot.c) has been repocopied from boot2.c. The primary changes are to parse the GPT to find a root filesystem and to use 64-bit disk addresses. Currently gptboot assumes that the first UFS partition on the disk is the / filesystem, but this algorithm will likely be improved in the future. - Teach the biosdisk driver in /boot/loader to understand GPT tables. GPT partitions are identified as 'disk0pX:' (e.g. disk0p2:) which is similar to the /dev names the kernel uses (e.g. /dev/ad0p2). - Add a new "freebsd-boot" alias to g_part() for the new boot UUID.
MFC after: 1 month Discussed with: marcel (some things might still change, but am committing what I have so far)
|
#
172857 |
|
21-Oct-2007 |
marcel |
Add the freebsd-zfs alias. Both APM and GPT have ZFS partition types.
|
#
170897 |
|
17-Jun-2007 |
marcel |
Have gpart synthesize a disk geometry if the underlying provider don't have it. Some partitioning schemes, as well as file systems, operate on the geometry and without it such schemes (e.g. MBR) and file systems (e.g. FAT) can't be created. This is useful for memory disks.
|
#
170361 |
|
06-Jun-2007 |
marcel |
Call sbuf_finish() before sbuf_data() and sbuf_len().
|
#
169588 |
|
15-May-2007 |
marcel |
Fix a dereference in KASSERT.
|
#
169585 |
|
15-May-2007 |
marcel |
o Implement automatic commit. It's enabled when the flags parameter exists and contains the 'C' flag. o The partition label can be the empty string. It's how labels are cleared. o When an action fails, lower permissions when they were raised in order to allow the action. A failed action will not result in any uncommitted changes. o Allow the flags paremeter to be present but empty. It's the equivalent of not being present.
|
#
169404 |
|
09-May-2007 |
marcel |
Write the output parameter (if present) for the add, create, delete destroy and modify verbs.
|
#
169398 |
|
08-May-2007 |
marcel |
When reverting the creation of a partitioning scheme on a provider, the failure to probe an existing partitioning scheme means that no previous partitioning scheme existed. Don't error. Just destroy the geom.
|
#
169389 |
|
08-May-2007 |
marcel |
MFp4: 119373: o Remove the query verb, along with the request and response parameters. o Add the version and output parameters. 119390: [APM,GPT] Properly clear deleted entries. 119394: o Make the alias the standard and use the '!' to prefix literal partition types. o Treat schemes and partition types as case insensitive. 119462: [GPT] Fix a page fault caused when modifying a partition entry without a new partition type.
|
#
169065 |
|
27-Apr-2007 |
marcel |
Put the scheme (APM, GPT, etc) in the XML.
|
#
166551 |
|
07-Feb-2007 |
marcel |
Evolve the ctlreq interface added to geom_gpt into a generic partitioning class that supports multiple schemes. Current schemes supported are APM (Apple Partition Map) and GPT. Change all GEOM_APPLE anf GEOM_GPT options into GEOM_PART_APM and GEOM_PART_GPT (resp).
The ctlreq interface supports verbs to create and destroy partitioning schemes on a disk; to add, delete and modify partitions; and to commit or undo changes made.
|