summaryrefslogtreecommitdiffstats
path: root/sys/modules/geom
Commit message (Collapse)AuthorAgeFilesLines
* MFC r314651,r318439,r318440:ngie2017-05-3038-47/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | r314651: sys/modules: normalize .CURDIR-relative paths to SRCTOP This simplifies make output/logic Tested with: `cd sys/modules; make ALL_MODULES=` on amd64 r318439: Normalize .PATH on SRCTOP This will help Jenkins dedupe 9 warnings between the static build and the module build of ipsec(4). Missed in SRCTOP conversion in r314651. MFC with: r314651 r318440: Normalize SYSDIR on SRCTOP instead of .CURDIR This is being done to simplify pathing for CFLAGS and source files.
* MFC: r314097marius2017-05-102-0/+9
| | | | | | | | | | | | | | | - Allow different slicers for different flash types to be registered with geom_flashmap(4) and teach it about MMC for slicing enhanced user data area partitions. The FDT slicer still is the default for CFI, NAND and SPI flash on FDT-enabled platforms. - In addition to a device_t, also pass the name of the GEOM provider in question to the slicers as a single device may provide more than one provider. - Build a geom_flashmap.ko. - Use MODULE_VERSION() so other modules can depend on geom_flashmap(4). - Remove redundant/superfluous GEOM routines that either do nothing or provide/just call default GEOM (slice) functionality. - Trim/adjust includes
* MFC r314644:ngie2017-03-121-0/+1
| | | | Fix "make depend" with geom_uzip.ko: add opt_geom.h to SRCS
* Obsolete mkulzma(8) and geom_uncompress(4), their functionalitysobomax2016-02-242-18/+0
| | | | | | is now provided by mkuzip(8) and geom_uzip(4) respectively. MFC after: 1 month
* Improve mkuzip(8) and geom_uzip(4), merge in LZMA support from mkulzma(8)sobomax2016-02-231-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and geom_uncompress(4): 1. mkuzip(8): - Proper support for eliminating all-zero blocks when compressing an image. This feature is already supported by the geom_uzip(4) module and CLOOP format in general, so it's just a matter of making mkuzip(8) match. It should be noted, however that this feature while it sounds great, results in very slight improvement in the overall compression ratio, since compressing default 16k all-zero block produces only 39 bytes compressed output block, which is 99.8% compression ratio. With typical average compression ratio of amd64 binaries and data being around 60-70% the difference between 99.8% and 100.0% is not that great further diluted by the ratio of number of zero blocks in the uncompressed image to the overall number of blocks being less than 0.5 (typically). However, this may be important from performance standpoint, so that kernel are not spinning its wheels decompressing those empty blocks every time this zero region is read. It could also be important when you create huge image mostly filled with zero blocks for testing purposes. - New feature allowing to de-duplicate output image. It turns out that if you twist CLOOP format a bit you can do that as well. And unlike zero-blocks elimination, this gives a noticeable improvement in the overall compression ratio, reducing output image by something like 3-4% on my test UFS2 3GB image consisting of full FreeBSD base system plus some of the packages (openjdk, apache etc), about 2.3GB worth of file data (800+MB compressed). The only caveat is that images created with this feature "on" would not work on older versions of FeeBSDxi kernel, hence it's turned off by default. - provide options to control both features and document them in manual page. - merge in all relevant LZMA compression support from the mkulzma(8), add new option to select between both. - switch license from ad-hoc beerware into standard 2-clause BSD. 2. geom_uzip(4): - implement support for de-duplicated images; - optimize some code paths to handle "all-zero" blocks without reading any compressed data; - beef up manual page to explain that geom_uzip(4) is not limited only to md(4) images. The compressed data can be written to the block device and accessed directly via magic of GEOM(4) and devfs(4), including to mount root fs from a compressed drive. - convert debug log code from being compiled in conditionally into being present all the time and provide two sysctls to turn it on or off. Due to intended use of the module, it can be used in environments where there may not be a luxury to put new kernel with debug code enabled. Having those options handy allows debug issues without as much problem by just having access to serial console or network shell access to a box/appliance. The resulting additional CPU cycles are just few int comparisons and branches, and those are minuscule when compared to data decompression which is the main feature of the module. - hopefully improve robustness and resiliency of the geom_uzip(4) by performing some of the data validation / range checking on the TOC entries and rejecting to attach to an image if those checks fail. - merge in all relevant LZMA decompression support from the geom_uncompress(4), enable automatically when appropriate format is indicated in the header. - move compilation work into its own worker thread so that it does not clog g_up. This allows multiple instances work in parallel utilizing smp cores. - document new knobs in the manual page. Reviewed by: adrian MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D5333
* Make additional parts of sys/geom/eli more usable in userspaceallanjude2016-01-071-0/+1
| | | | | | | | | | | | | | | | | | The upcoming GELI support in the loader reuses parts of this code Some ifdefs are added, and some code is moved outside of existing ifdefs The HMAC parts of GELI are broken out into their own file, to separate them from the kernel crypto/openssl dependant parts that are replaced in the boot code. Passed the GELI regression suite (tools/regression/geom/eli) Files=20 Tests=14996 Result: PASS Reviewed by: pjd, delphij MFC after: 1 week Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D4699
* Replace sys/crypto/sha2/sha2.c with lib/libmd/sha512c.callanjude2015-12-271-1/+1
| | | | | | | | | | | | | | | | | | cperciva's libmd implementation is 5-30% faster The same was done for SHA256 previously in r263218 cperciva's implementation was lacking SHA-384 which I implemented, validated against OpenSSL and the NIST documentation Extend sbin/md5 to create sha384(1) Chase dependancies on sys/crypto/sha2/sha2.{c,h} and replace them with sha512{c.c,.h} Reviewed by: cperciva, des, delphij Approved by: secteam, bapt (mentor) MFC after: 2 weeks Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3929
* Scheduling module to introduce a fixed delay into the I/O path.imp2015-12-182-1/+8
|
* Kill MFILES and find things automatically. It turned out to be onlyimp2015-07-0310-21/+0
| | | | | | | | | lightly used. Find the proper .m file when we depend on *_if.[ch] in the srcs line, with seat-belts for false positive matches. This uses make's path mechanism. A further refinement would be to calculate this once, and then pass the resulting _MPATH to modules submakes. Differential Revision: https://reviews.freebsd.org/D2327
* Add makefile to build geom_map kld. Document some GEOM_* optionsae2015-06-081-0/+8
| | | | in NOTES and geom(4).
* Add MK_CCD knob for building and installing ccd(4), ccdconfig, etcngie2015-01-251-1/+7
| | | | | MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division
* Remove comments relevant to 6.x only.imp2014-12-201-2/+0
|
* Remove support for FreeBSD 7 and really old FreeBSD 8. The classifiersimp2014-12-201-1/+1
| | | | | | | | | have been in the base for a while, so the gymnastics here aren't needed. In addition, the bugs in subr_disk.c have been fixed since 2009, so there's no need for an identical copy of it in the tree anymore. There's really no need to binary patch g_io_request, so let's get rid of the code (not compiled in anymore) lest others think it is a good idea.
* Implement the historic DIOCGDINFO ioctl for gpart on BSDimp2014-11-181-2/+2
| | | | | | | 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.
* Add disklabel64 support to GEOM_PART class.ae2014-06-112-0/+13
| | | | | | | | | | | | | | This partitioning scheme is used in DragonFlyBSD. It is similar to BSD disklabel, but has the following improvements: * metadata has own dedicated place and isn't accessible through partitions; * all offsets are 64-bit; * supports 16 partitions by default (has reserved place for more); * has reserved place for backup label (but not yet implemented); * has UUIDs for partitions and partition types; No objections from: geom MFC after: 2 weeks Relnotes: yes
* Disconnect the following geom classes from the kernel modules build:ae2014-05-271-6/+0
| | | | | | | BSD, FOX, MBR, PC98, SUNLABEL and VOL_FFS. They all have a modern replacement. Also it is still possible build them manually. Discussed with: geom
* An all-or-nothing approach to labels isn't flexible enough. Embeddedmarcel2014-04-061-0/+4
| | | | | | | | systems need fine-grained control over what's in and what's out. That's ideal. For now, separate GPT labels from the rest and allow g_label to be built with just GPT labels. Obtained from: Juniper Networks, Inc.
* I clearly didn't test the modules... add sha256c.c to the variousjmg2014-03-161-1/+1
| | | | modules that included sha2.c...
* Fix a leftover of r260523. Remove the unnecessary dependency to zlib.h.loos2014-02-271-1/+1
| | | | Approved by: adrian (mentor)
* Build the geom_uncompress(4) module by default.loos2014-01-102-2/+3
| | | | | | | | | | | | | Fix geom_uncompress(4) module loading. Don't link zlib.c (which is a module itself) directly. The built module was verified and used to read a few mkulzma(8) images on amd64 to validate some of the informations on the manual page. While here, don't overwrite CFLAGS. Reviewed by: ray Approved by: adrian (mentor)
* Link g_label_disk_ident when building geom_label as a moduleivoras2013-04-171-0/+1
|
* It seems that it is preferable to keep support for glabel also forattilio2012-10-181-0/+1
| | | | | | | | | filesystems that we don't support natively. Revert part of r241636 to do so. This patch is not targeted for MFC. Requested by: gleb, jhb
* Disconnect non-MPSAFE NTFS from the build in preparation for droppingattilio2012-10-171-1/+0
| | | | | | | | | | | | | | GIANT from VFS. This code is particulary broken and fragile and other in-kernel implementations around, found in other operating systems, don't really seem clean and solid enough to be imported at all. If someone wants to reconsider in-kernel NTFS implementation for inclusion again, a fair effort for completely fixing and cleaning it up is expected. In the while NTFS regular users can use FUSE interface and ntfs-3g port to work with their NTFS partitions. This is not targeted for MFC.
* Add to GEOM RAID class module, supporting the DDF metadata format, asmav2012-04-301-1/+1
| | | | | | | | | | | | | | | defined by the SNIA Common RAID Disk Data Format Specification v2.0. Supports multiple volumes per array and multiple partitions per disk. Supports standard big-endian and Adaptec's little-endian byte ordering. Supports all single-layer RAID levels. Dual-layer RAID levels except RAID10 are not supported now because of GEOM RAID design limitations. Some work is still to be done, but the present code already manages basic interoperation with RAID BIOS of the Adaptec 1430SA SATA RAID controller. MFC after: 1 month Sponsored by: iXsystems, Inc.
* Add to GEOM RAID class module for reading non-degraded RAID5 volumes andmav2012-04-191-1/+1
| | | | | | | | some environment to differentiate 4 possible RAID5 on-disk layouts. Tested with Intel and AMD RAID BIOSes. MFC after: 2 weeks
* Connect geom_part_ldm module to the build.ae2012-03-192-0/+13
| | | | MFC after: 1 month
* GEOM_UNCOMPRESS module, can be used with uzip images and with new ulzma images.ray2012-01-041-0/+17
| | | | Approved by: adrian (mentor)
* Instead of allocating memory for all the keys at device attach,pjd2011-04-211-0/+1
| | | | | | | | | | | create reasonably large cache for the keys that is filled when needed. The previous version was problematic for very large providers (hundreds of terabytes or serval petabytes). Every terabyte of data needs around 256kB for keys. Make the default cache limit big enough to fit all the keys needed for 4TB providers, which will eat at most 1MB of memory. MFC after: 2 weeks
* MFgraid/head:mav2011-03-242-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new RAID GEOM class, that is going to replace ataraid(4) in supporting various BIOS-based software RAIDs. Unlike ataraid(4) this implementation does not depend on legacy ata(4) subsystem and can be used with any disk drivers, including new CAM-based ones (ahci(4), siis(4), mvs(4), ata(4) with `options ATA_CAM`). To make code more readable and extensible, this implementation follows modular design, including core part and two sets of modules, implementing support for different metadata formats and RAID levels. Support for such popular metadata formats is now implemented: Intel, JMicron, NVIDIA, Promise (also used by AMD/ATI) and SiliconImage. Such RAID levels are now supported: RAID0, RAID1, RAID1E, RAID10, SINGLE, CONCAT. For any all of these RAID levels and metadata formats this class supports full cycle of volume operations: reading, writing, creation, deletion, disk removal and insertion, rebuilding, dirty shutdown detection and resynchronization, bad sector recovery, faulty disks tracking, hot-spare disks. For Intel and Promise formats there is support multiple volumes per disk set. Look graid(8) manual page for additional details. Co-authored by: imp Sponsored by: Cisco Systems, Inc. and iXsystems, Inc.
* Bring in geom_sched, support for scheduling disk I/O requestsluigi2010-04-125-0/+30
| | | | | | | | | | | | in a device independent manner. Also include an example anticipatory scheduler, gsched_rr, which gives very nice performance improvements in presence of competing random access patterns. This is joint work with Fabio Checconi, developed last year and presented at BSDCan 2009. You can find details in the README file or at http://info.iet.unipi.it/~luigi/geom_sched/
* Add gmountver, disk mount verification GEOM class.trasz2010-01-162-0/+9
| | | | | | | | Note that due to e.g. write throttling ('wdrain'), it can stall all the disk I/O instead of just the device it's configured for. Using it for removable media is therefore not a good idea. Reviewed by: pjd (earlier version)
* Add missing reference to GPT support.ivoras2009-07-051-0/+1
| | | | | Submitted by: Paul B. Mahol onemda at gmail.com Approved by: re (kib)
* g_part_ebr.c includes opt_geom.hmarcel2009-05-301-0/+1
|
* Import the gvinum work that have been done during and after Summer of Code 2007.lulf2009-03-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The work have been under testing and fixing since then, and it is mature enough to be put into HEAD for further testing. A lot have changed in this time, and here are the most important: - Gvinum now uses one single workerthread instead of one thread for each volume and each plex. The reason for this is that the previous scheme was very complex, and was the cause of many of the bugs discovered in gvinum. Instead, gvinum now uses one worker thread with an event queue, quite similar to what used in gmirror. - The rebuild/grow/initialize/parity check routines no longer runs in separate threads, but are run as regular I/O requests with special flags. This made it easier to support mounted growing and parity rebuild. - Support for growing striped and raid5-plexes, meaning that one can extend the volumes for these plex types in addition to the concat type. Also works while the volume is mounted. - Implementation of many of the missing commands from the old vinum: attach/detach, start (was partially implemented), stop (was partially implemented), concat, mirror, stripe, raid5 (shortcuts for creating volumes with one plex of these organizations). - The parity check and rebuild no longer goes between userland/kernel, meaning that the gvinum command will not stay and wait forever for the rebuild to finish. You can instead watch the status with the list command. - Many problems with gvinum have been reported since 5.x, and some has been hard to fix due to the complicated architecture. Hopefully, it should be more stable and better handle edge cases that previously made gvinum crash. - Failed drives no longer disappears entirely, but now leave behind a dummy drive that makes sure the original state is not forgotten in case the system is rebooted between drive failures/swaps. - Update manpage to reflect new commands and extend it with some examples. Sponsored by: Google Summer of Code 2007 Mentored by: le Tested by: Rick C. Petty <rick-freebsd2008 -at- kiwi-computer.com>
* Add the EBR scheme. The EBR scheme supports the Extended Boot Recordsmarcel2009-02-082-0/+13
| | | | | | | | 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.
* Add support for PC-9800 partition tables.marcel2008-03-282-0/+13
|
* Instead of making a single geom_part.ko module, make a modulemarcel2008-03-236-15/+66
| | | | | for each partitioning scheme. The gpart code is currently non- optional.
* Remove makefiles for geom_apple and geom_gpt. These are non-existentmarcel2008-03-022-16/+0
| | | | for while.
* Add geom_part module.marcel2008-03-022-0/+19
|
* Remove WARNS from here and compile with default kernel flags.ru2008-02-211-1/+0
|
* geom_lvm(4) is now known as geom_linux_lvm(4).thompsa2008-02-201-8/+0
|
* Rename geom_lvm(4) to geom_linux_lvm(4).thompsa2008-02-201-1/+1
| | | | Requested by: des, phk
* Rename geom_lvm(4) to geom_linux_lvm(4).thompsa2008-02-201-0/+8
| | | | Requested by: des, phk
* Hook geom_lvm(4) up to the build.thompsa2008-02-112-0/+9
|
* Add GEOM VIRSTOR module to the build.pjd2007-10-261-0/+1
|
* Bring in the GEOM Virtualisation class, which allows to create huge GEOMpjd2007-09-231-0/+8
| | | | | | | | | providers with limited physical storage and add physical storage as needed. Submitted by: Ivan Voras Sponsored by: Google Summer of Code 2006 Approved by: re (kensmith)
* First cut at GEOM based multipath. This is an active/passive{/passive...}mjacob2007-02-272-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | arrangement that has no intrinsic internal knowledge of whether devices it is given are truly multipath devices. As such, this is a simplistic approach, but still a useful one. The basic approach is to (at present- this will change soon) use camcontrol to find likely identical devices and and label the trailing sector of the first one. This label contains both a full UUID and a name. The name is what is presented in /dev/multipath, but the UUID is used as a true distinguishor at g_taste time, thus making sure we don't have chaos on a shared SAN where everyone names their data multipath as "Fred". The first of N identical devices (and N *may* be 1!) becomes the active path until a BIO request is failed with EIO or ENXIO. When this occurs, the active disk is ripped away and the next in a list is picked to (retry and) continue with. During g_taste events new disks that meet the match criteria for existing multipath geoms get added to the tail end of the list. Thus, this active/passive setup actually does work for devices which go away and come back, as do (now) mpt(4) and isp(4) SAN based disks. There is still a lot to do to improve this- like about 5 of the 12 recommendations I've received about it, but it's been functional enough for a while that it deserves a broader test base. Reviewed by: pjd Sponsored by: IronPort Systems MFC: 2 months
* Don't recurse into geom_apple and geom_gpt. They have been movedmarcel2007-02-071-3/+1
| | | | into the g_part framework.
* Hook up gjournal bits to the build.pjd2006-10-311-0/+1
| | | | Sponsored by: home.pl
* Add Makefile for geom_journal kernel module.pjd2006-10-311-0/+10
| | | | Sponsored by: home.pl
OpenPOWER on IntegriCloud