Commit Graph

745 Commits

Author SHA1 Message Date
oster
f23a530674 Per a suggestion from Manuel, make numBlocks and partitionSize
unsigned for now.  This prevents rf_reasonable_label() from rejecting
a valid label when these fields have an integer overflow.  The reality
is that these need to be 64-bit quantities, but that will come later.
2006-09-05 01:55:21 +00:00
christos
df7450f605 Fix uninitialized variables. 2006-08-28 02:58:16 +00:00
christos
ecdff16f80 - use dk_lookup instead of our home-spun version.
- allow raid to be configured in a wedge
- allow wedges to be configured in a raid
- add autoconfiguration of wedges in a raid
2006-08-27 05:07:12 +00:00
christos
35ca6c8b5b Fix all the -D*DEBUG* code that it was rotting away and did not even compile.
Mostly from Arnaud Lacombe, many thanks!
2006-08-17 17:11:27 +00:00
oster
803c52c2a4 sc_size should be a 64-bit quantity. Notice by Matthias Drochner. 2006-08-07 20:02:22 +00:00
oster
ff30fd25f5 Fix a minor typo in a comment. 2006-08-07 17:08:18 +00:00
ad
3029ac48c7 - Use the LWP cached credentials where sane.
- Minor cosmetic changes.
2006-07-21 16:48:45 +00:00
oster
8c090abdfc Do the "don't allocate > 1K on the stack" thing for raidioctl(). 2006-06-12 22:49:35 +00:00
kardel
de4337ab21 merge FreeBSD timecounters from branch simonb-timecounters
- 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
2006-06-07 22:33:33 +00:00
elad
2867b68bc3 integrate kauth. 2006-05-14 21:42:26 +00:00
oster
4fafa4cc7a un-bitrot some of this code (which is not included by default in kernels),
and make it build again.  XXX: Paritylogging bits still won't build.
2006-04-26 17:08:48 +00:00
christos
24f5b2aec3 Coverity CID 1127: Prevent NULL deref. 2006-04-14 22:43:12 +00:00
christos
4d098765d0 Turn on RAID KASSERTS if __COVERITY__ 2006-04-14 22:40:09 +00:00
simonb
ad09581b8e Don't access b_fspriv.bf_private in struct buf directly - use the
b_private macro.

OK'd by oster@
2006-04-12 23:33:39 +00:00
thorpej
d717ea85c2 Use device_is_a() and device_unit(). 2006-03-28 17:32:20 +00:00
rtr
421623e0f4 free storage of clabel before bailing out.
coverity 2745 / run 11
2006-03-25 13:15:41 +00:00
oster
6c4936b6da This one is good for making one's brain hurt. Turns out that the
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).
2006-03-23 03:43:54 +00:00
simonb
92610d767b Use tabs instead of spaces with previous change. 2006-03-19 05:46:50 +00:00
david
f16962165c Fix memory leaks when some components of a raid where missing during
autoconfig.

From Coverity CIDs 2328, 2324, 2323, 1125
2006-03-19 05:31:38 +00:00
oster
0a0615d52a dag_h will always be NULL in this case, and thus we can eliminate a
bit of dead code.  Addresses Coverity CID 728 NetBSD Scan 5.
2006-03-18 17:34:31 +00:00
oster
17ebfc7e6c Fix lossage related to device_is_a() changes. Fix from cube@ (thanks!).
Tested by me.
2006-03-01 21:41:49 +00:00
oster
7e6acfc4fe - minor comment cleanup
- nuke an extraneous memset() (RF_Malloc() already does that)
from RAIDFRAME_GET_INFO in raidioctl().
2006-02-24 03:20:22 +00:00
thorpej
58853410ae Use device_class() instead of accessing dv_class directly. 2006-02-21 04:32:38 +00:00
oster
99bb7dc022 RAIDframe was erroneously re-initializing the Parity Stripe Status
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!
2006-02-14 01:13:33 +00:00
oster
4476a2943b rf_DiskUnlockFunc and rf_DiskUnlockFuncForThreads are never used. Punt them.
rf_DiskUnlockUndoFunc is in the same boat.  Punt it too.
2006-01-09 01:33:27 +00:00
oster
0d6d84878e Really move all of the bp initalization bits into InitBP(). 2006-01-08 22:26:30 +00:00
oster
96c9402704 For the normal (read/write) case, do all the buffer initialization
inside of InitBP().
2006-01-08 22:06:26 +00:00
oster
aad92944f5 Cleanup the initialization of buffers a bit, and remove some old code
that works around a bug that no longer exists.  From yamt. Thanks!
(a bit more cleanup to follow)
2006-01-08 21:53:26 +00:00
yamt
5bb3912ab6 raidstrategy: fix weird ENOSPC when reading from/writing to a raw partition. 2006-01-08 09:11:21 +00:00
yamt
5bca923bc4 raidioctl:
- don't ignore raidread_component_label error.
- remove an unnessesary memset.
2006-01-08 09:09:53 +00:00
oster
55da57e0c1 Remove the component buffer bits, now that I know there is a
"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.
2006-01-07 16:08:44 +00:00
yamt
7b826aac85 initialize necessary members of struct buf. PR/32462 from Reinoud Zandijk. 2006-01-06 09:21:44 +00:00
yamt
690d424f28 - add simple functions to allocate/free a buffer for i/o.
- make bufpool static.
2006-01-04 10:13:05 +00:00
oster
35f400bfd9 We need to mark used spares as failed if they encounter IO errors!
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*
2006-01-04 04:56:41 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
yamt
aec75b1cc6 - change the way to specify a bufq strategy. (by string rather than by number)
- 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)
2005-10-15 17:29:10 +00:00
oster
96ba5552fa Re-work the handling of incoming I/O in RAIDframe:
- 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
2005-09-25 19:47:17 +00:00
oster
feaabee0c2 This disk_detach() should be pseudo_disk_detach(). 2005-09-24 22:51:55 +00:00
oster
5593466f1b Remove an RF_ASSERT that is just plain wrong. 2005-09-24 20:24:11 +00:00
yamt
bc505ef8dd use pseudo_disk_{init,attach,detach} where appropriate. 2005-08-20 12:01:04 +00:00
oster
97682553c4 If rf_SubmitReconBuffer indicates the submission was blocked (for
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.
2005-07-18 15:32:01 +00:00
oster
77708271bf - initialize numRUsTotal before we indicate that we are doing a reconstruct.
- make numRUsComplete and numRUsTotal 64-bit quantities like
everything else that records this information.
2005-06-08 02:00:53 +00:00
christos
ba7574326e - avoid variable shadowing
- add a lot of const
- remove parameters from functin declarations
2005-05-29 22:03:09 +00:00
perry
f31bd063e9 nuke trailing whitespace 2005-02-27 00:26:58 +00:00
oster
e800226bf6 Convert a few "void *"'s to "struct buf *"'s. No functional changes. 2005-02-13 20:27:48 +00:00
oster
be864067da The 'next' argument to rf_CreateDiskQueueData is always NULL. Since
there is no particular reason to pass an extra NULL argument, turf it,
and initialize p->next to NULL within the function.
2005-02-12 03:44:41 +00:00
oster
0b15470982 Add a 'waitflag' argument to rf_CreateDiskQueueData() and use it to
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.
2005-02-12 03:27:33 +00:00
oster
04a30b5e78 It's not a bad idea to update the component labels whether or not the
reconstruction was successful.
2005-02-06 02:29:36 +00:00
oster
00b2fb8253 CreateDiskQueueData() doesn't need to use void * for raidPtr.
RF_Raid_t is well known in RF, and there's no reason not to use it here.
2005-02-05 23:53:44 +00:00
oster
339f61b703 rf_GetNextReconEvent() *will* return a valid event, so no need for
the assert.  (we'd have panic'ed in there long before this assert
if that wasn't the case).

Minor whitespace changes.
2005-02-05 23:39:12 +00:00