summaryrefslogtreecommitdiffstats
path: root/sys/geom/raid3/g_raid3.h
Commit message (Collapse)AuthorAgeFilesLines
* Now, that we have gjournal in the tree add possibility to configurepjd2006-11-011-4/+10
| | | | | | gmirror and graid3 in a way that it is not resynchronized after a power failure or system crash. It is safe when gjournal is running on top of gmirror/graid3.
* Introduce and use delayed-destruction functionality from a pre-sync hook,pjd2006-04-101-1/+5
| | | | | | | | | | which means that devices will be destroyed on last close. This fixes destruction order problems when, eg. RAID3 array is build on top of RAID1 arrays. Requested, reviewed and tested by: ru MFC after: 2 weeks
* Update copyright for 2006.pjd2006-03-191-1/+1
|
* - Reimplement I/O data allocation to prevent deadlocks.pjd2006-03-131-8/+39
| | | | | | | | | | | | | | | | | | | Submitted by: green - Speed up synchronization process by using configurable number of I/O requests in parallel. + Add kern.geom.raid3.sync_requests tunable which defines how many parallel I/O requests should be used. + Retire kern.geom.raid3.reqs_per_sync and kern.geom.raid3.syncs_per_sec sysctls. - Fix race between regular and synchronization requests. - Reimplement raid3's data synchronization - do not use the topology lock for this purpose, as it may case deadlocks. - Stop synchronization from pre-sync hook. - Fix some other minor issues. Tested by: Mike Tancsa <mike@sentex.net> MFC after: 3 days
* - Add kern.geom.raid3.disconnect_on_failure sysctl/tunnable (default to 1pjd2006-02-111-0/+1
| | | | | | | | | | | | | | | to preserve currect behaviour). When set to 0, components are not disconnected - graid3 will try to still use them (only first error will be logged). This is helpful when we have two broken components, but in different places, so actually all data is available. Such buggy component will be visible in 'graid3 list' output with flag BROKEN. - Never disconnect the last valid component. If we detect errors there we will just pass them up. This wasn't reasonable to deny access to the whole provider because of one broken sector. Prodded by: ru MFC after: 3 days
* Mark array as CLEAN when there are no write requests inpjd2006-02-111-0/+2
| | | | | | | | kern.geom.raid3.idletime seconds. Write, not any requests. Mark array as clean immediatelly on last write close. Prodded by: ru MFC after: 3 days
* Remove trailing spaces.pjd2006-02-011-2/+2
|
* Use root_mount KPI for RAID3 to delay root file system mount.pjd2005-07-271-0/+2
| | | | | | | | | Actually, one cannot setup root file system on RAID3 device, but when other file system exist in /etc/fstab which are placed on RAID3 device, boot process will be interrupted when these devices are missing. MFC after: 3 days X-MFC-note: MFC only to RELENG_6, as RELENG_5 doesn't have root_mount KPI.
* - Add md_provsize field to metadata, which will help withpjd2005-02-271-3/+45
| | | | | | | | | | | | | | | | | shared-last-sector problem. After this change, even if there is more than one provider with the same last sector, the proper one will be chosen based on its size. It still doesn't fix the 'c' partition problem (when da0s1 can be confused with da0s1c) and situation when 'a' partition starts at offset 0 (then da0s1a can be confused with da0s1 and da0s1c). One can use '-h' option there, when creating device or avoid sharing last sector. Actually, when providers share the same last sector and their size is equal, they provide exactly the same data, so the name (da0s1, da0s1a, da0s1c) isn't important at all. - Provide backward compatibility. - Update copyright's year. MFC after: 1 week
* Update copyright in files changed this year.pjd2005-02-161-1/+1
|
* - Fix 'rebuild' command - it can no longer relay on retaste eventpjd2005-01-041-7/+5
| | | | | | | | (we ignore it). - Remove code used for handling spoil events, as spoiling is not possible anymore, because we keep consumers open for writing all the time. MFC after: 4 days
* - Add genid field to the metadata which will allow to improve reliability a bit.pjd2004-12-251-16/+74
| | | | | | | | | | | | | | | After this change, when component is disconnected because of an I/O error, it will not be connected and synchronized automatically, it will be logged as broken and skipped. Autosynchronization can occur, when component is disconnected (on orphan event) and connected again - there were no I/O error, so there is no need to not connected the component, but when there were writes while it wasn't connected, it will be synchronized. This fix cases, when component is disconnected because of I/O error and can be connected again and again. - Bump version number. - Implement backward compatibility mechanism. After this change when metadata in old version is detected, it is automatically upgraded to the new (current) version.
* - Mark all raid3 components as clean after kern.geom.raid3.idletime seconds.pjd2004-11-051-0/+1
| | | | - Make kern.geom.raid3.timeout variable tunable.
* Just use MAXPHYS as maximum I/O request size, instead of using my ownpjd2004-09-281-2/+0
| | | | | #define for this purpose. No functional change.
* Avoid race while synchronizing components. It is very hard to bump into,pjd2004-09-271-0/+1
| | | | | | | | | but it is possible: 1. Read data from good component for synchronization. 2. Write data to the same area. 3. Write synchronization data, which are now stale. Found by: tegge (for gmirror)
* Implementation of 'verify reading' algorithm, which uses parity data forpjd2004-08-221-2/+16
| | | | | | | | verification of regular data when device is in complete state. On verification error, EIO error is returned for the bio and sysctl kern.geom.raid3.stat.parity_mismatch is increased. Suggested by: phk
* Add version history.pjd2004-08-211-0/+5
|
* Implement new reading algorithm, which will use parity component for readingpjd2004-08-211-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | as well, even if device is in complete state. I observe 40% of speed-up with this option for random read operations, but slowdown for sequential reads. Basically, without this option reading from a RAID3 device built from 5 components (c0-c4) looks like this: Request no. Used components 1 c0+c1+c2+c3 2 c0+c1+c2+c3 3 c0+c1+c2+c3 With the new feature: Request no. Used components 1 c0+c1+c2+c3 2 (c1^c2^c3^c4)+c1+c2+c3 3 c0+(c0^c2^c3^c4)+c2+c3 4 c0+c1+(c0^c1^c3^c4)+c3 5 c0+c1+c2+(c0^c1^c2^c4) 6 c0+c1+c2+c3 [...]
* Introduce GEOM RAID3 class, i.e. kernel module, which implements RAID3pjd2004-08-161-0/+306
transformation and graid3(8) userland utility, which can be used for configuration. No manual page yet, sorry. Hardware provided by: Daniel Seuffert
OpenPOWER on IntegriCloud