summaryrefslogtreecommitdiffstats
path: root/sbin/bsdlabel/bsdlabel.c
Commit message (Collapse)AuthorAgeFilesLines
* It seems that libdisk(3) incorrectly sets d_secperunit value.ae2012-04-111-1/+2
| | | | | | Automatically fix it like GEOM_PART_BSD does. MFC after: 1 week
* Spelling fixes for sbin/uqs2012-01-071-5/+5
|
* Replace index() and rindex() calls with strchr() and strrchr().ed2012-01-031-2/+2
| | | | | | | | | | The index() and rindex() functions were marked LEGACY in the 2001 revision of POSIX and were subsequently removed from the 2008 revision. The strchr() and strrchr() functions are part of the C standard. This makes the source code a lot more consistent, as most of these C files also call into other str*() routines. In fact, about a dozen already perform strchr() calls.
* Use in-label sectorsize to determine position of the label whensobomax2011-12-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | writing label into a file image. The most common use - putting disklabel into ISO file. Before this change the label would always go to the offset 512, while geom_part code expects it to be in the 1st sector (i.e. 2048 incase of ISO). BSD disklabels provide good and lightweight way to logically split livecds. It is non-intrusive as far as ISO9660 goes (both boot-wise and metadata-wise) and completely transparent to anything but BSD, so you can have BSD-specific area appended after regular ISO. And with a little bit of GEOM trickery you can do even more interesting stuff with it. For example we make "hybrid" bootable CDs using this method. We create bootable ISO with kernel and such and append UFS image compressed with UZIP and it works like a charm. We put label based on the offsef of the BSD part into the ISO. The kernel boots off normal ISO9660 part, tastes label attaches it, tastes UZIP, attaches it and finally mounts UFS using GEOM_LABEL. This provides much better way of eliminating waste than doing "crunched" build. MFC after: 1 month
* Add missing static keyword.ed2011-12-111-1/+1
| | | | | All global variables and functions are marked static. Simply because this is an enum, doesn't mean we can't do so as well.
* Fix multi-line comment formatting.ae2011-11-071-1/+2
| | | | MFC after: 2 weeks
* Add recommendation to use gpart(8) when user tries write disklabelae2011-11-061-4/+15
| | | | | | or bootcode to already opened provider. MFC after: 1 week
* Remove unneeded checks.ae2011-11-061-3/+2
| | | | MFC after: 1 week
* bsdlabel(8) could automatically fill many of disklabel's deprecatedae2011-11-061-11/+35
| | | | | | | | | | | | | fields, but user could specify some of those fields when edits disklabel with `bsdlabel -e`. But without -A flag these fields might be overwritten with default values from the virgin disklabel. So, don't overwrite such fields if they are not zero. Also add checks to prevent creating disklabel with less than DEFPARTITIONS and more than MAXPARTITIONS partitions. PR: bin/162332 Tested by: Eugene Grosbein MFC after: 1 week
* To be in sync with GEOM_PART_BSD limit the maximum number of supportedae2011-11-061-1/+1
| | | | | | partitions to 20. MFC after: 1 week
* Widen fields that display partition offset/length.uqs2011-03-101-5/+5
| | | | | | | | | | This makes partitions between 50GiB and 2TiB (16TiB for 4k drives) print correctly aligned. While here, fix type of secsize. g_sectorsize() returns ssize_t, don't store this in an unsigned var. Bump WARNS to 6. MFC after: 4 weeks
* Remove dead code in bsdlabel depending on __alpha__uqs2011-03-101-35/+1
|
* Closing file descriptors when it's donekevlo2010-12-011-0/+2
|
* Fix some more warnings found by clang.brucec2010-11-221-1/+1
|
* Don't attempt to write label with GEOM_BSD based method if the class isjh2010-08-271-1/+32
| | | | | | | | | | | not available. This improves error reporting when bsdlabel(8) is unable to open a device for writing. If GEOM_BSD was unavailable, only a rather obscure error message "Class not found" was printed. PR: bin/58390 Reviewed by: ae Discussed with: marcel MFC after: 1 month
* - Check that strtoul(3) succeeds to convert the entire string in a fewjh2010-08-151-7/+14
| | | | | | | | places. - In getasciilabel(), set the disk type only when a valid type is given. PR: bin/86765 MFC after: 2 weeks
* - Don't assign the return value from read(2) to a variable of typejh2010-06-301-6/+8
| | | | | | | | | | int. - Use errx(3) instead of err(3) to print the error message on short reads in readlabel(). errno won't be set on short reads which can easily occur here due to the fixed size read request. PR: 144307 Reviewed by: bde
* Use setresuid/setresgid to drop privilegeskevlo2010-05-161-2/+8
|
* Remove the dependency on the kernel -- in particular the gctl request tomarcel2009-08-191-18/+23
| | | | | | | | | the GEOM_BSD class -- to translate the absolute offsets in the label to relative ones. This makes bslabel(8) work correctly with GEOM_PART and also when the BSD label is nested under arbitrary partitioning schemes. Inspired by: Eygene Ryabinkin <rea-fbsd@codelabs.ru> Approved by: re (kib)
* - A call to close(2) might overwrite errno and thus give a wrong error messagelulf2008-09-301-1/+2
| | | | | | | on g_providername failure. Suggested by: pjd Approved by: pjd (mentor)
* - Improve error message given on g_providername call failure.lulf2008-09-301-1/+1
| | | | | | - While there, make error messages consistent with the rest. Approved by: kib (mentor)
* - Make bsdlabel use libgeom to determine provider name, device path, the medialulf2008-09-181-22/+40
| | | | | | | | | size and the sector size. - Fix a bug where bsdlabel would try to read a regular file using the geom_bsd class. Quick review by: phk Approved by: pjd (mentor)
* Remove comment about "-r" flag from readlabel. "-r" is a no-op.rodrigc2008-03-231-1/+0
| | | | | | The is comment is left over from the old disklabel command. Reviewed by: phk
* Allow bsdlabel to operate on labels that have at most 26 partitionsmarcel2007-12-091-3/+5
| | | | | by virtue of there not being any (lower-case) letters avaliable for more partitions.
* o '-s' flag was killed in rev. 1.75. Clean getopt(3).maxim2006-10-201-1/+1
| | | | | | PR: bin/104616 Submitted by: Oliver Fromme MFC after: 1 week
* Attempt to improve the logic for automatically sizing partitionsiedowse2005-08-141-5/+62
| | | | | | | | | | | | to take into account the new default of starting the first partition after the boot blocks instead of at sector 0. If you used automatic sizing when the first partition did not start at 0, you would get an error that the automatically sized partition extended beyond the end of the disk. Note that there are probably still many more complex cases where automatic sizing and placement will not work (e.g. non-contiguous or out of order partitions).
* Fix the derivation of the GEOM name from the specified device name byrse2005-01-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | complementing the existing special case of a not existing /dev prefix with the recognition of an already existing /dev prefix. This implicitly solves the following two issues related to working on GEOM devices /dev/foo/bar (which have the GEOM provider name "foo/bar") with the expected commands like "bsdlabel /dev/foo/bar": 1. the error "Geom not found" when trying to write or edit the BSD label (because previously the incorrect GEOM name "bar" instead of "foo/bar" was derived from "/dev/foo/bar"). 2. the multiple times reported "magically introduced" partition offset of 63 blocks and the resulting errors like "partition extends past end of unit" and "partition c doesn't start at 0!". This implicitly resulted because bsdlabel(8) determines the "MBR offset" via GEOM and (intentionally) silently falls back to an offset of 0 if it could not be queried (which is the case if the name was incorrectly derived). Usually (at least on PCs) the offset for the first slice is 63 blocks and bsdlabel(8) automatically subtracts them from the absolute offsets in the read on-disk BSD label, resulting in the display of an effective offset of 0. If the GEOM query fails, the assumed offset of 0 is subtracted and an incorrect effective offset of 63 is displayed and tried to be worked upon. Reviewed by: pjd MFC after: 1 week
* The disk labels generated by bsdlabel can no address more thanbrooks2004-09-091-0/+3
| | | | | | | | | | | 0xffffffff sectors. Document this limit and avoid installing bogus labels on disks with more sectors. Allowing the installation of labels addressing as much of the disk as possiable may be a useful addition in some situations, but this was easy to implement and should reduce confusion. PR: bin/71408
* The multiplier prefix is actually a multiplier suffix.des2004-08-091-1/+1
|
* Use fallthrough to simplify the multiplier logic; optimistically adddes2004-08-081-9/+14
| | | | | support for the T multiplier; improve the error message for unrecognized multipliers.
* Fix some whitespace issues, and move a curly brace out of an #ifdef todes2004-08-081-13/+14
| | | | avoid confusing auto-indenting editors.
* Implement a '-f' flag to teach bsdlabel to work on files instead ofluigi2004-03-301-6/+33
| | | | disk partitions.
* When installing boot blocks into an Alpha BSD label, setup the location,jhb2004-03-151-0/+10
| | | | | | | | length, and flags fields at the end of the SRM boot sector so that SRM can find the bootstrap code. This fixes bsdlabel -m alpha to generate bootable disklabels. Reviewed by: phk
* Only automatically create an 'a' partition when there is nothingphk2003-10-181-4/+22
| | | | but a 'c' partition.
* Remove the hardcoded default block/frag/cpg values from bsdlabeliedowse2003-10-051-44/+5
| | | | | | | | | and the logic for setting them according to the partition size. Instead, unspecified filesystem values are left at 0 so that newfs will use its own defaults. It just caused confusion to have the defaults duplicated in two different places. Reviewed by: phk
* When we initialize a disk with a virgin label, create also an 'a'phk2003-08-271-0/+4
| | | | | partition which starts after the bootstrap area and fills the entire disk.
* Augh! Fix the sparc64 build:phk2003-06-071-0/+8
| | | | | If we don't have a default label location for the compiled architecture, insist that a -m <architecture> option is specified.
* Sanitize setting of labeloffset and labelsector.phk2003-06-071-11/+4
|
* Give ia64 the exact same semantics as i386 with respect to non-512phk2003-06-041-1/+2
| | | | byte sector devices.
* Unbreak ia64. 'nuff said.marcel2003-06-041-0/+4
|
* Fix sectorsize != 512 on i386 and pc98. Add test cases for same.phk2003-06-021-6/+19
|
* Simplify the GEOM OAM api: Drop the request type, and let everythingphk2003-06-011-6/+6
| | | | | | | | 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.
* Protext copyright[].obrien2003-05-311-3/+2
|
* Add pc98 archtecture entry.phk2003-05-131-0/+4
| | | | Approved by: re/rwatson
* Before reading an ascii label, initialize with defaults so thatphk2003-05-091-0/+1
| | | | | | getasciipartspec() has a sectorisize in case it needs one. Approved by: re/jhb
* Sigh, this shows just how much one can be conditioned my the environment:phk2003-05-091-9/+7
| | | | | | | | Just because we for the last ten years have fought for every byte in the boot code on i386, doesn't mean that other architectures could not actually have space to spare there. Remore debugging message.
* Add transparent handling of mbroffset for backwards compatibility.phk2003-05-041-1/+25
|
* More axe-work:phk2003-05-031-102/+115
| | | | | | | | | Hide all the historical fields of the label, unless people ask for them with -A, set them to intelligently chosen defaults otherwise. Distill the manual page to remove inaccuracies, misundertandings and obsolete information. It can probably still be done better but now at least it is not misinforming people.
* Some minor remodelling with a large axe.phk2003-05-031-279/+171
|
* Use new geom.ctl based OAM instead of ioctls.phk2003-05-031-95/+94
| | | | Various cleanup.
OpenPOWER on IntegriCloud