summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_bsd.c
Commit message (Collapse)AuthorAgeFilesLines
* Simplify the GEOM OAM api: Drop the request type, and let everythingphk2003-06-011-18/+18
| | | | | | | | hinge on the "verb" parameter which the class gets to interpret as it sees fit. Move the entire request into the kernel and move changed parameters back when done.
* Use bcmp() to compare hash strings.phk2003-06-011-1/+1
|
* Remove unused variables.phk2003-05-311-23/+2
| | | | | | Remove #ifdef notyet which will never become. Found by: FlexeLint
* Remove the G_CLASS_INITIALIZER, we do not need it anymore.phk2003-05-311-1/+0
|
* Fix the WARNING for wrong rawoffset, I tested incompatible units.phk2003-05-061-2/+2
| | | | Approved by: re/jhb
* Don't warn if the rawoffset is zero, that is actually the best value itphk2003-05-051-1/+1
| | | | could have.
* Turn the check that rawoffset == mbroffset into a warning instead.phk2003-05-051-3/+5
|
* Only accept a rawoffset if it is identical to the mbroffset.phk2003-05-041-0/+4
|
* Add a way to read the current mbroffset from a BSD label class.phk2003-05-041-1/+7
|
* Remove debugging printfs which should not have been committed.phk2003-05-041-3/+0
|
* Add a OAM interface for changing the label and writing the boot code.phk2003-05-031-26/+126
|
* Make bsd_disklabel_le_enc calculate the checksum and fill it in.phk2003-05-021-263/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (If there is a legitimate need to correctly encode and pack a disklabel with an invalid checksum custom tools can be built for that.) Make bsd_disklabel_le_dec() validate the magics, number of partitions (against a new parameter) and the checksum. Vastly simplify the logic of the GEOM::BSD class implementation: Let g_bsd_modify() always take a byte-stream label. This simplifies all users, except the ioctl's which now have to convert to a byte-stream first. Their loss. g_bsd_modify() is called with topology held now, and it returns with it held. Always update the md5sum in g_bsd_modify(), otherwise the check is no use after the first modification of the label. Make the MD5 over the bytestream version of the label. Move the rawoffset hack to g_bsd_modify() and remove all the inram/ondisk conversions. Don't configure hotspots in g_bsd_modify(), do it in taste instead, we do not support moving the label to a different location on the fly anyway. This passes all current regression tests.
* Use g_slice_spoiled() rather than g_std_spoiled()phk2003-05-021-2/+2
|
* Rename g_call_me() to g_post_event(), and give it a flagphk2003-04-231-2/+2
| | | | argument to determine if we can M_WAITOK in malloc.
* Make more of the "hotspot" stuff generic:phk2003-04-191-16/+11
| | | | | | | Give the class a way to specify the necessary action for read/delete/write: ALLOW, DENY, START or CALL. Update geom_bsd to use this.
* These two files fell off during my previous commit: put the encodingphk2003-04-171-125/+5
| | | | decoding functions for struct disklabel in a separate .c file.
* Time has run from the "run GEOM in userland" harness, and the new regressionphk2003-04-131-8/+0
| | | | | | | test is built to test GEOM as running in the kernel. This commit is basically "unifdef -D_KERNEL" to remove the mainly #include related code to support the userland-harness.
* Retire the "frontstuff" record keeping, it was no match for thephk2003-04-121-1/+0
| | | | in-band meta-data of BSD labels and a more complex solution will be needed.
* Remove all references to BIO_SETATTR. We will not be using it.phk2003-04-031-2/+0
|
* Use <sys/endian.h> instead of geom_enc.c for endianess-agnostification.phk2003-04-031-81/+82
|
* Add handling for cancelled events in the g_call_me() methods.phk2003-04-021-4/+8
|
* Change events to have an array of "void *" references, and give thephk2003-04-021-4/+4
| | | | | | | | | | | event posting functions varargs to fill these. Attribute g_call_me() to appropriate g_geom's where necessary. Add a flag argument to g_call_me() methods which will be used to signal cancellation of events in the future. This commit should be a no-op.
* Premptively change initializations of struct g_class to use C99phk2003-03-241-3/+2
| | | | | sparse struct initializations before we extend the struct with new OAM related member functions.
* Including <sys/stdint.h> is (almost?) universally only to be able to usephk2003-03-181-1/+0
| | | | | %j in printfs, so put a newsted include in <sys/systm.h> where the printf prototype lives and save everybody else the trouble.
* Fix yet another fallout of our M_* song and dance.phk2003-03-101-1/+1
|
* Mark some args unused so this compiles in userland.phk2003-01-281-1/+1
|
* Implement DIOCBSDBB ioctl which overwrites first BBSIZE bytes of BSDphk2003-01-261-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | | labeled disk. This is complicated by the fact that BBSIZE is greater than the PAGE_SIZE limit ioctl inflicts on arguments which are automatically copied in. As long as we don't need access to userland memory (copyin/out) we can deal with the ioctl using g_callme() which executes it from the GEOM event thread. Once we need copyin/out, we need to return the bio with EDIRIOCTL in order to make geom_dev call us back in the original process context where copyin will work. Unfortunately, that results in us getting called with Giant, so we have to DROP_GIANT/PICKUP_GIANT around the code where we diddle GEOMs internals. Sometimes you just can't win... ... But it does make geom_bsd.c an almost complete example of the GEOM beastiarium.
* Fix typo.phk2003-01-131-1/+1
|
* Output the fstype of each partition in a disklabel in the configurationjhb2003-01-101-0/+7
| | | | text similar to the way that the MBR module dumps its slice types.
* BSD disklabels expose the controling label though the 'c' partition, andphk2003-01-061-12/+26
| | | | | | | | | | some trick is necessary to prevent further BSD geoms from attaching to that. Our old trick was to make sure we don't attach to a geom from the "BSD" class, but this doesn't work if an intermediary geom obscures this fact. Instead, calculate the MD5 checksum of the label we target and ask if anybody below us loves that label. If they do we don't. Coded by: gordon.
* Constification and some s/int/u_int/ changes.phk2002-12-161-7/+7
|
* Don't interpret the hotspots relative to all slices on a slicer, butphk2002-12-131-1/+4
| | | | relative to the parent device.
* Use the hotspot code to prevent people from overwriting their disklabelphk2002-12-021-11/+90
| | | | | | with stuff which would ruin the day for any open parititons. Approved by: re
* Always recalculate the SRM checksum if the label is at 64 bytes offset.phk2002-11-081-3/+13
| | | | Tested by: jhb
* Fix to support pc98.nyan2002-11-071-0/+5
| | | | | | It is mostly merged from MBR specific part. Reviewed by: phk
* Add more compatibility junk.phk2002-10-281-8/+18
|
* Now that the sectorsize and mediasize are properties of the provider,phk2002-10-201-13/+5
| | | | | | | | | | | don't take the detour over the I/O path to discover them using getattr(), we can just pick them out directly. Do note though, that for now they are only valid after the first open of the underlying disk device due compatibility with the old disk_create() API. This will change in the future so they will always be valid. Sponsored by: DARPA & NAI Labs.
* Make the sectorsize a property of providers so we can include it in the XMLphk2002-10-201-0/+2
| | | | | | output. Sponsored by: DARPA & NAI Labs
* Style(9) and english(9) fixes.phk2002-10-201-55/+54
| | | | Submitted by: schweikh
* Fix argument order mistake when decoding disklabels from on-disk format.phk2002-10-051-1/+1
| | | | | Detected by: jhay Sponsored by: DARPA & NAI Labs.
* Don the asbestos underwear and add the code which lets DIOCWDINFOphk2002-09-301-7/+23
| | | | | | write modified disklabels back to disk. Sponsored by: DARPA & NAI Labs.
* Retire g_io_fail() and let g_io_deliver() take an error argument instead.phk2002-09-301-8/+12
| | | | Sponsored by: DARPA & NAI Labs.
* Extensively rework the geom_bsd method, put a lot of comments in, bettingphk2002-09-271-104/+424
| | | | | | | | | | | | | | | | | | | | | | | | | | | | that this will make people use this for their future copy&paste operations. Rework the detection of raw-disk offsets in disklabels. This actually unearthed a number of bugs in the (now) previous version. Also accept labels which don't have a magic RAW_PART, provided they don't confuse us too much. Change the order of our sanity-checks on labels found on disks to be more robust. Check against MAXPARTITIONS in our sanity-check and reject disklabels we cannot cope with. Create new g_bsd_modify() function to implment disklabel modifying ioctls. Implement DIOCSDINFO and DIOCWDINFO with the provision that the latter still not writes your change back to disk. I didn't have the nerves for that yet. In the start routine, use g_call_me() for complex ioctls to prevent sleeping. Sponsored by: DARPA & NAI Labs.
* Add the new g_slice_config() call, which can add/delete/change a slice,phk2002-09-271-0/+4
| | | | | | | | | with support for trying, doing and forcing. This will eventually replace g_slice_addslice() which gets changed from grabbing topology to requing it in this commit as well. Sponsored by: DARPA & NAI Labs.
* Correctly en/decode MAXPARTITIONS partitions.phk2002-09-271-16/+8
| | | | Sponsored by: DARPA & NAI Labs.
* "Fix" printf format issues by using %jphk2002-09-131-2/+3
| | | | Sponsored by: DARPA & NAI Labs.
* Remove "magicspace". It looks good on paper, it doesn't work in practice.phk2002-09-061-13/+1
| | | | Sponsored by: DARPA & NAI Labs.
* Improve some on the naming.phk2002-06-091-1/+1
| | | | Submitted by: iedowse
* Change the registration of magic spaces so it does its own memory management.phk2002-06-051-9/+7
| | | | Sponsored by: DARPA & NAI Labs.
* Introduce the concept of "magic spaces", and implement them in most ofphk2002-05-211-1/+15
| | | | | | | | | | | | | | | | the relevant classes. Some methods may implement various "magic spaces", this is reserved or magic areas on the disk, set a side for various and sundry purposes. A good example is the BSD disklabel and boot code on i386 which occupies a total of four magic spaces: boot1, the disklabel, the padding behind the disklabel and boot2. The reason we don't simply tell people to write the appropriate stuff on the underlying device is that (some of) the magic spaces might be real-time modifiable. It is for instance possible to change a disklabel while partitions are open, provided the open partitions do not get trampled in the process. Sponsored by: DARPA & NAI Labs.
OpenPOWER on IntegriCloud