| Age | Commit message (Collapse) | Author |
|
|
|
- allow raid to be configured in a wedge
- allow wedges to be configured in a raid
- add autoconfiguration of wedges in a raid
|
|
Mostly from Arnaud Lacombe, many thanks!
|
|
|
|
|
|
- Minor cosmetic changes.
|
|
|
|
- struct timeval time is gone
time.tv_sec -> time_second
- struct timeval mono_time is gone
mono_time.tv_sec -> time_uptime
- access to time via
{get,}{micro,nano,bin}time()
get* versions are fast but less precise
- support NTP nanokernel implementation (NTP API 4)
- further reading:
Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf
NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
|
|
|
|
and make it build again. XXX: Paritylogging bits still won't build.
|
|
|
|
|
|
b_private macro.
OK'd by oster@
|
|
|
|
coverity 2745 / run 11
|
|
original RAIDframe code had the same bug with dag_h being used when
possibly NULL. Use dagList as the starting point for any potential
dag_h's. Move the initialization of dag_h in this part to a
little later. Loop now runs through in equivalent lock-step with the
construction of the dagList earlier in the function.
Addresses Coverity CID 1129 (id=6841 Run 5).
|
|
|
|
autoconfig.
From Coverity CIDs 2328, 2324, 2323, 1125
|
|
bit of dead code. Addresses Coverity CID 728 NetBSD Scan 5.
|
|
Tested by me.
|
|
- nuke an extraneous memset() (RF_Malloc() already does that)
from RAIDFRAME_GET_INFO in raidioctl().
|
|
|
|
pool each time a new array was configured. This causes grief
with things like 'vmstat -m' by causing it to loop. Make RAIDframe
only initialize PSS bits once.
Pointed out by simonb@. Fix tested by simonb@. Thanks!
|
|
rf_DiskUnlockUndoFunc is in the same boat. Punt it too.
|
|
|
|
inside of InitBP().
|
|
that works around a bug that no longer exists. From yamt. Thanks!
(a bit more cleanup to follow)
|
|
|
|
- don't ignore raidread_component_label error.
- remove an unnessesary memset.
|
|
"private" structure in struct buf that can be used to keep track of
the request associated with this buffer (the buffer used here is one
allocated from rf_CreateDiskQueueData(), so it's ours to do with what
we please). Shrinks code a little, reduces the run-time memory
footprint a bit, and simplifies both rf_DispatchKernelIO() and
KernelWakeupFunc().
Thanks to yamt for his "why is rf_DispatchKernelIO using another buf"
question which prompted me to revisit this code.
|
|
|
|
- make bufpool static.
|
|
Commit fixes problem reported (privately) by Jeff Rizzo.
XXX: Note that we are still are unable to allow a reconstruct of
a failed spare -- it's easy enough to attempt to do it, but the
code in rf_ContinueReconstructFailedDisk() isn't anywhere close to
ready to allow it. Yet another reason why the whole disk/spare thing
needs to be re-worked. *sigh*
|
|
|
|
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
|
|
- introduce rf_buf_queue_check() which checks to see if there
is work to do in the incoming buffer queue
- rf_RaidIOThread() is now responsible for calling raidstart(), and is
also now the only place that calls raidstart()
- raidstrategy() now just queues requests in buf_queue
and signals rf_RaidIOThread() that work has arrived
Hopefully addresses PR#30233
|
|
|
|
|
|
|
|
whatever reason), return 0 instead of the default
RF_RECON_READ_STOPPED. Returning RF_RECON_READ_STOPPED would result
in rf_ContinueReconstructFailedDisk() thinking that the given
component was "done" and breaking out of the main reconstruction loop
far too early. Reconstruction still worked correctly as long as there
were no errors, but RAIDframe wouldn't be in a position to properly
handle read/write errors during reconstruction.
This fixes the "raidctl's progress bar spins at 0% until
reconstruction finishes" problem.
|
|
- make numRUsComplete and numRUsTotal 64-bit quantities like
everything else that records this information.
|
|
- add a lot of const
- remove parameters from functin declarations
|
|
|
|
|
|
there is no particular reason to pass an extra NULL argument, turf it,
and initialize p->next to NULL within the function.
|
|
determine if we are willing to wait for memory to come from the
diskqueuedata (dqd) and bufpool pools. Cleanup the mess related to
code calling rf_CreateDiskQueueData() with different expectations
(and/or blatent disregard) of what might happen if there were
insufficient pool resources.
|
|
reconstruction was successful.
|
|
RF_Raid_t is well known in RF, and there's no reason not to use it here.
|
|
the assert. (we'd have panic'ed in there long before this assert
if that wasn't the case).
Minor whitespace changes.
|
|
|