le
ada7c51edc
Make it possible to rebuild degraded RAID5 plexes. Note that it is
...
currently not possible to do this while the volume is mounted.
MFC in: 1 week
2004-09-30 12:57:35 +00:00
phk
dd7446483c
Protect the start/end counts on consumers and providers with the up/down
...
mutexes.
Make it possible to also protect the disk statistics (at a minor cost in
performance) by setting bit 2 of kern.geom.collectstats.
2004-09-28 11:56:37 +00:00
pjd
5b9c332a3c
- Set maximum request size to MAXPHYS (128kB), instead of DFLPHYS (64kB).
...
- Set minimum request size to sectorsize, instead of 512 bytes.
Approved by: phk (some time ago)
2004-09-28 08:34:27 +00:00
pjd
63dd0f756b
Just use MAXPHYS as maximum I/O request size, instead of using my own
...
#define for this purpose.
No functional change.
2004-09-28 07:33:37 +00:00
pjd
ef6747fa18
Decrease kern.geom.raid3.timeout to 4, so it is smaller than
...
vfs.root.mountdelay by default.
2004-09-27 22:12:14 +00:00
pjd
25b7bcde0d
Deny invalid I/O requests which comes from userland here, because later
...
we'll get a panic.
MT5 candidate.
Reviewed by: phk
2004-09-27 22:10:01 +00:00
pjd
34196975cf
Avoid race while synchronizing components. It is very hard to bump into,
...
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)
2004-09-27 20:32:35 +00:00
pjd
cad6af1c8f
Minor, but very important condition fix. The current one can never be true.
2004-09-27 19:32:26 +00:00
pjd
4081d9d5d1
Decrease kern.geom.mirror.timeout to 4, so it is smaller than
...
vfs.root.mountdelay by default.
2004-09-27 13:47:37 +00:00
pjd
9b6a1c588a
Forgot to commit addition of ds_resync field.
2004-09-26 20:42:35 +00:00
pjd
9871848b34
Avoid race while synchronizing components. It is very hard to bump into,
...
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
2004-09-26 20:41:07 +00:00
pjd
48183ebbc3
Simplify code a bit.
2004-09-26 20:30:15 +00:00
phk
54ba36ef3e
Assert topology is held in g_dev_getprovider().
...
Don't call devsw(). It is not necessary, and we do not need to hold dev_lock
to compare the devsw pointer to our own since we do not dereference it.
2004-09-24 06:43:20 +00:00
pjd
d7954bf77f
This is not needed anymore, it is forced in GEOM now.
...
Actually, it can even cause some problems, because GEOM requires sectorsize
to be more than 0 on first access, not on provider creation, so we can skip
valid providers by doing this check here.
Reported by: Divacky Roman <xdivac02@stud.fit.vutbr.cz>
Sven Willenberger <sven@dmv.com>
2004-09-20 17:26:25 +00:00
fjoe
2a220bb5b0
Use correct malloc type when freeing memory allocated by g_read_data.
...
PR: 71431
Submitted by: daichi
2004-09-19 10:27:46 +00:00
le
5dae52591b
Single concat or striped plexes don't need no special initialization
...
if their subdisks are all available, so let them be brought up.
2004-09-18 18:03:20 +00:00
le
18ba8315a7
Re-vamp how I/O is handled in volumes and plexes.
...
Analogous to the drive level, give each volume and plex a worker thread
that picks up and processes incoming and completed BIOs.
This should fix the data corruption issues that have come up a few
weeks ago and improve performance, especially of RAID5 plexes.
The volume level needs a little work, though.
2004-09-18 13:44:43 +00:00
fjoe
76d2723d97
g_nop_create: destroy newly created provider in case of errors.
2004-09-16 15:28:48 +00:00
le
eb087a4ece
Give the DRIVE geom a worker thread that picks up incoming bios,
...
sends them down, and takes care of the finished bios. This makes it
easier to handle I/O errors at drive level.
2004-09-13 21:01:36 +00:00
le
a4de4268bd
Rename gv_kill_thread() to gv_kill_plex_thread(), since there are more
...
threads to come.
2004-09-13 17:44:47 +00:00
le
876ffa30db
Save the config back to disk when a drive goes down.
2004-09-13 17:33:52 +00:00
le
b19a8d0082
Read a whole sector instead of GV_HDR_LEN, since a sector might be
...
bigger (i.e. on CD-ROMs).
2004-09-13 17:27:58 +00:00
pjd
a5693287e1
Make kern.geom.debugflags sysctl tunable from /boot/loader.conf.
...
It will help to debug problems when booting.
Approved by: phk
2004-09-13 14:58:27 +00:00
phk
3e1bf8d8b5
Fix a problem that shows up if less than the full complement of
...
lock sectors are defined ("number_of_keys" argument to gbde init being
less than 4 in the default compile).
2004-09-11 17:58:53 +00:00
phk
9b11b1fb2c
Respect that G_BDE_MAXKEYS is a compile time variable.
2004-09-11 17:57:51 +00:00
fjoe
7531fcdf4d
Do not compile in zlib.c. Add a dependency on module instead.
2004-09-08 17:27:31 +00:00
pjd
555e9e698d
Show current status of mirror device directly.
...
Suggested by: Krzysztof Ciep³ucha <kris@home.pl>
2004-09-08 16:37:22 +00:00
phk
38ae102f61
For removable devices without media we set a zero mediasize but a non-zero
...
sectorsize in order to avoid a lot of checks around various divisions etc.
Enforce the sectorsize being > 0 with a KASSERT on successful open.
Fix scsi_cd.c to return 2k sectors when no media inserted.
2004-09-05 21:15:58 +00:00
pjd
4689077c9e
Allow to configure debug level from /boot/loader.conf.
2004-08-30 18:50:06 +00:00
phk
02b88adf06
Add more KASSERTS and checks.
2004-08-30 09:33:06 +00:00
pjd
3bedfb04b2
GCC, ehh.
2004-08-29 14:29:30 +00:00
pjd
354291a750
Use sc->sc_mediasize instead of sc->sc_provider->mediasize which contains
...
exactly the same value, but is shorter.
2004-08-28 02:35:43 +00:00
pjd
2d011d4672
Warn the user if we are not going to use whole provider space.
...
Requested by: Michael Handler <handler@grendel.net>
2004-08-28 02:34:10 +00:00
pjd
f7c5bbc8f2
Don't allow to insert providers, which are too small.
...
Reported by: Michael Handler <handler@grendel.net>
2004-08-28 02:02:48 +00:00
le
440914a8bb
Move config_new_drive() to the correct place and rename it to
...
gv_config_new_drive().
2004-08-27 21:32:18 +00:00
phk
4759b478a2
Introduce g_alloc_bio() as a waiting variant of g_new_bio().
...
Use in places where we can sleep and where we previously failed to check
for a NULL pointer.
MT5 candidate.
2004-08-27 14:43:11 +00:00
le
0fd3e9eb56
When attaching a consumer from a volume to a plex, check if the
...
volume already has a plex attached and adjust the access counts
of the new consumer accordingly.
2004-08-26 21:04:41 +00:00
pjd
7f46afc9bf
Skip providers with not defined sector size.
...
Reported by: kuriyama
2004-08-26 12:42:47 +00:00
pjd
18cd875885
Log verification errors at level 1.
2004-08-25 19:18:07 +00:00
pjd
a2512dc38e
Dump disk number.
2004-08-25 12:14:44 +00:00
pjd
02488a6b3c
Allow to set kern.geom.mirror.timeout from /boot/loader.conf.
2004-08-23 20:42:34 +00:00
le
b83d5cd619
Compare the addresses of two RAID5 work packets directly instead
...
of the addresses of their related bios when locking one out, since
they could share a bio and this could lead to parity corruption.
2004-08-23 17:50:18 +00:00
le
a52623fe58
Implement the possibility to remove drives.
2004-08-22 17:07:55 +00:00
pjd
7e2ef21ad9
Implementation of 'verify reading' algorithm, which uses parity data for
...
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
2004-08-22 16:21:12 +00:00
le
9c58beacac
Add forgotten format specifier in a KASSERT and shut up the compiler.
...
Submitted by: Gavin Atkinson <gavin.atkinson@ury.york.ac.uk>
2004-08-22 13:34:24 +00:00
pjd
2acdd880f4
Add version history.
2004-08-21 21:15:03 +00:00
pjd
c3c6740d1a
Implement new reading algorithm, which will use parity component for reading
...
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
[...]
2004-08-21 18:11:46 +00:00
le
7f135ded9a
A volume can be up if it has a degraded RAID5 plex.
2004-08-19 12:03:27 +00:00
pjd
ad8a5e508d
We really don't want to receive spoil event for synchroniztion consumers.
2004-08-18 23:33:37 +00:00
phk
90dd7ea538
Do not override the class provided dumpconf function.
2004-08-18 21:42:08 +00:00