aboutsummaryrefslogtreecommitdiff
path: root/sys/geom/raid3
Commit message (Collapse)AuthorAgeFilesLines
...
* When kern.geom.raid3.use_malloc tunnable is set to 1, malloc(9) instead ofPawel Jakub Dawidek2006-07-091-43/+88
| | | | | | | | | | | uma(9) will be used for memory allocation. In case of problems or tracking bugs, there are more useful tools for malloc(9) debugging than for uma(9) debugging, like memguard(9) and redzone(9). MFC after: 1 week Notes: svn path=/head/; revision=160203
* Remove bogus assertion.Pawel Jakub Dawidek2006-07-071-1/+0
| | | | | | | | Reported by: Bradley W. Dutton <brad-fbsd-stable@duttonbros.com> MFC after: 3 days Notes: svn path=/head/; revision=160155
* Allow to close access even if device is already destroyed.Pawel Jakub Dawidek2006-07-031-3/+5
| | | | | | | | | Reported by: Ulrich Spoerlein <uspoerlein@gmail.com> PR: kern/98093 MFC after: 1 week Notes: svn path=/head/; revision=160081
* Use G_RAID3_FOREACH_SAFE_BIO() macro instead of G_RAID3_FOREACH_BIO() inPawel Jakub Dawidek2006-05-041-6/+4
| | | | | | | | | | | | two places where g_io_request() is called. g_io_request() can free bio structure so we can't reference it after and G_RAID3_FOREACH_BIO() macro was doing this. Found by: Coverity Prevent analysis tool (with my new models) MFC after: 1 day Notes: svn path=/head/; revision=158290
* We shouldn't lock the topology here - we will panic on assertion insidePawel Jakub Dawidek2006-04-301-2/+0
| | | | | | | | | | g_raid3_bump_syncid(). Reported by: Bradley W. Dutton <brad-fbsd-stable@duttonbros.com> MFC after: 1 day Notes: svn path=/head/; revision=158195
* - Don't hold the device sx lock when going to sleep.Pawel Jakub Dawidek2006-04-281-6/+23
| | | | | | | | | | | - Prevent possible live-lock in case of memory problems by freeing already completed requests first. Reported and tested by: markus, Bradley W. Dutton <brad-fbsd-stable@duttonbros.com> MFC after: 1 day Notes: svn path=/head/; revision=158117
* - Remove dead code.Pawel Jakub Dawidek2006-04-281-9/+9
| | | | | | | | | | - Comment possible event miss, which isn't critical, but probably can be fixed by replacing the event lock usage with the queue lock. MFC after: 2 weeks Notes: svn path=/head/; revision=158116
* Be sure to not destroy device twice. This is not possible in theory, butPawel Jakub Dawidek2006-04-281-2/+13
| | | | | | | | | with this change there is even no theoretical race. MFC after: 2 weeks Notes: svn path=/head/; revision=158114
* Fix storing offset of already synchronized data. Offset in entire array wasPawel Jakub Dawidek2006-04-181-3/+5
| | | | | | | | | | | | | | | | stored in metadata instead of an offset in single disk. After reboot/crash synchronization process started from a wrong offset skipping (not synchronizing) part of the component which can lead to data corrutpion (when synchronization process was interrupted on initial synchronization) or other strange situations like 'graid3 status' showing value more than 100%. Reported, reviewed and tested by: ru Reported by: Dmitry Morozovsky <marck@rinet.ru> MFC after: 1 day Notes: svn path=/head/; revision=157838
* Introduce and use delayed-destruction functionality from a pre-sync hook,Pawel Jakub Dawidek2006-04-103-55/+82
| | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=157630
* Preserve previous behaviour of kern.geom.raid3.n{64,16,4}k tunables were 0Pawel Jakub Dawidek2006-03-281-1/+1
| | | | | | | | | | means unlimited. Reported by: ru MFC after: 3 days Notes: svn path=/head/; revision=157222
* Increase debug level for "Thread exiting." message. It's not that importantPawel Jakub Dawidek2006-03-251-1/+1
| | | | | | | | | and is 0 by accident. MFC after: 3 days Notes: svn path=/head/; revision=157134
* Update copyright for 2006.Pawel Jakub Dawidek2006-03-192-2/+2
| | | | Notes: svn path=/head/; revision=156878
* kern.geom.raid3.sync_requests=2 seems to be a better default - it stillPawel Jakub Dawidek2006-03-191-3/+3
| | | | | | | | | keeps disks very busy, but makes system much more responsive. While here, kill extra space. Notes: svn path=/head/; revision=156876
* Fix build on 64-bit platforms.Ruslan Ermilov2006-03-131-2/+2
| | | | Notes: svn path=/head/; revision=156684
* - Reimplement I/O data allocation to prevent deadlocks.Pawel Jakub Dawidek2006-03-133-352/+672
| | | | | | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=156612
* When inserting a new component md_provsize metadata field wasn't set, whichPawel Jakub Dawidek2006-03-101-0/+1
| | | | | | | | | | | means that old problem was triggered (when two providers end at the same offset, eg. ad0 and ad0s1 and the wrong was is picked up by gmirror/graid3). Reported by: Michal Suszko <dry@dry.pl> MFC after: 3 days Notes: svn path=/head/; revision=156527
* Do not use bio structure after g_io_deliver(), it may not longer by valid.Pawel Jakub Dawidek2006-02-221-1/+1
| | | | | | | | Found and fixed by: Vsevolod Lobko <seva@ip.net.ua> MFC after: 3 days Notes: svn path=/head/; revision=155906
* On component state change to ACTIVE don't forget to update metadata.Pawel Jakub Dawidek2006-02-121-3/+2
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=155582
* Use time_uptime instead of time_second, as the latter may go backwards.Pawel Jakub Dawidek2006-02-121-4/+4
| | | | | | | | Suggested by: ru MFC after: 3 days Notes: svn path=/head/; revision=155581
* Allow to set kern.geom.raid3.disconnect_on_failure from loader.conf.Pawel Jakub Dawidek2006-02-121-0/+2
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=155560
* - Add kern.geom.raid3.disconnect_on_failure sysctl/tunnable (default to 1Pawel Jakub Dawidek2006-02-112-31/+76
| | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=155546
* Correct typo. 'fbp' is NULL here so this will result in a panic.Pawel Jakub Dawidek2006-02-111-1/+1
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=155544
* Mark array as CLEAN when there are no write requests inPawel Jakub Dawidek2006-02-112-101/+53
| | | | | | | | | | | 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 Notes: svn path=/head/; revision=155540
* Remove trailing spaces.Pawel Jakub Dawidek2006-02-013-23/+23
| | | | Notes: svn path=/head/; revision=155174
* Fix typo which cased that 64kB elements limit was not set properly andPawel Jakub Dawidek2006-01-301-1/+1
| | | | | | | | | | 16kB elements limit wasn't set at all. Submitted by: Vsevolod Lobko <seva@ip.net.ua> MFC after: 3 days Notes: svn path=/head/; revision=155070
* Remove dead code.Pawel Jakub Dawidek2006-01-181-2/+0
| | | | | | | | | Found by: Coverity Prevent(tm) Coverity ID: CID105 MFC after: 3 days Notes: svn path=/head/; revision=154539
* Check for g_read_data(9) errors properly:Maxim Sobolev2005-11-301-1/+1
| | | | | | | | | | | | | o The only indication of error condition is NULL value returned by the function; o value pointed to by error argument is undefined in the case when operation completes successfully. Discussed with: phk Notes: svn path=/head/; revision=152967
* Normalize a significant number of kernel malloc type names:Robert Watson2005-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | - Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat. - Remove punctuation that is incompatible with using memory type names as file names, such as '/' characters. - Disambiguate some collisions by adding subsystem prefixes to some memory types. - Generally prefer lower case to upper case. - If the same type is defined in multiple architecture directories, attempt to use the same name in additional cases. Not all instances were caught in this change, so more work is required to finish this conversion. Similar changes are required for UMA zone names. Notes: svn path=/head/; revision=151897
* Fix possible live-lock under heavy load where we can't allocate morePawel Jakub Dawidek2005-10-281-1/+12
| | | | | | | | | | | memory for request. I was sure graid3 should handle such situations well, but green@ reported it is not and we want to fix it before 6.0. Submitted by: green Notes: svn path=/head/; revision=151822
* Use root_mount KPI for RAID3 to delay root file system mount.Pawel Jakub Dawidek2005-07-272-0/+28
| | | | | | | | | | | | 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. Notes: svn path=/head/; revision=148440
* cp can't be NULL.Pawel Jakub Dawidek2005-05-111-7/+5
| | | | | | | Noticed by: Coverity Prevent analysis tool Notes: svn path=/head/; revision=146118
* gp can't be NULL.Pawel Jakub Dawidek2005-05-111-9/+7
| | | | | | | Noticed by: Coverity Prevent analysis tool Notes: svn path=/head/; revision=146117
* If an error occurs, clean up before returning from g_raid3_connect_disk().Pawel Jakub Dawidek2005-03-261-14/+17
| | | | Notes: svn path=/head/; revision=144144
* Check for return values.Pawel Jakub Dawidek2005-03-261-0/+8
| | | | | | | | Submitted by: sam Found by: Coverity Prevent analysis tool Notes: svn path=/head/; revision=144142
* - Add md_provsize field to metadata, which will help withPawel Jakub Dawidek2005-02-272-9/+59
| | | | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=142727
* Update copyright in files changed this year.Pawel Jakub Dawidek2005-02-163-3/+3
| | | | Notes: svn path=/head/; revision=141994
* Increase default synchronization speed.Pawel Jakub Dawidek2005-01-091-1/+1
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=139940
* - Fix 'rebuild' command - it can no longer relay on retaste eventPawel Jakub Dawidek2005-01-043-50/+34
| | | | | | | | | | | (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 Notes: svn path=/head/; revision=139671
* Remove unused #include.Pawel Jakub Dawidek2005-01-031-1/+0
| | | | Notes: svn path=/head/; revision=139622
* Stop explicitly touching td_base_pri outside of the scheduler and simplyJohn Baldwin2004-12-301-1/+4
| | | | | | | | set a thread's priority via sched_prio() when that is the desired action. The schedulers will start managing td_base_pri internally shortly. Notes: svn path=/head/; revision=139451
* Remove debug code.Pawel Jakub Dawidek2004-12-281-10/+2
| | | | Notes: svn path=/head/; revision=139379
* - Add genid field to the metadata which will allow to improve reliability a bit.Pawel Jakub Dawidek2004-12-253-61/+206
| | | | | | | | | | | | | | | | | | 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. Notes: svn path=/head/; revision=139295
* Now, when force device destruction is done on shutdown, hide warning,Pawel Jakub Dawidek2004-12-211-1/+1
| | | | | | | | | that device cannot be destroyed immediately, under debug=1. Suggested by: simon Notes: svn path=/head/; revision=139146
* Improve reliability and clean up code a bit.Pawel Jakub Dawidek2004-12-211-189/+140
| | | | | | | For more details check src/sys/geom/mirror/g_mirror.c rev.1.47,1.48,1.49,1.50. Notes: svn path=/head/; revision=139144
* bioq_insert_head() function is already in subr_disk.c.Pawel Jakub Dawidek2004-12-131-10/+0
| | | | Notes: svn path=/head/; revision=138801
* When initializing device, set d_softc and d_no fields for all components,Pawel Jakub Dawidek2004-12-041-3/+4
| | | | | | | | | | | because we know it then and we need it when inserting a component which wasn't destroyed while device was running. Reported by: Michael Handler <handler@grendel.net> MFC after: 1 week Notes: svn path=/head/; revision=138374
* Before trying to update metadata (so open consumer for writing), be surePawel Jakub Dawidek2004-11-091-11/+26
| | | | | | | | | | | | | that the events queue is empty. In other case we're able to hit the race where for example da0s1 is tasted by some other class, which means that da0 is open with exclusive bit set, which means that we can't open da0 for writing if it is our component. Reported by: Attila Nagy <bra@fsn.hu> (and somebody else sometime ago, but I cannot find who it was) Notes: svn path=/head/; revision=137490
* Don't rely on DIRTY flag to be sure that consumer if open, becausePawel Jakub Dawidek2004-11-091-1/+1
| | | | | | | | DIRTY flag can be removed in idle process. Use consumer's acw field instead to avoid opening consumer twice. Notes: svn path=/head/; revision=137487
* For BIO_READ check if provider is open for reading and for BIO_WRITE,Pawel Jakub Dawidek2004-11-091-3/+11
| | | | | | | | | check if provider is open for writing. This fixes panic when device is open only for writing and we send write request. Notes: svn path=/head/; revision=137485