summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
AgeCommit message (Collapse)Author
2013-03-06fix parens in a messageyamt
2013-02-18Fix a few spelling issues. No functional changes.oster
2012-12-10Fix off by one read.msaitoh
2012-10-30fix a problem in half-configured raid devices, found when a "raidctl -c"mrg
failed, and a "raidctl -C" was run afterwards, triggering mutex locking issues. fix this by moving alloc and destroy of mutex/condvar for a raid device into separate functions, and call the destroy function from the DO_RAID_FAIL() macro. probably needs a netbsd-6 pullup. sigh.
2012-08-09Implement DIOCGSTRATEGY and DIOCSSTRATEGY to allow raidframe to usebuhrow
different buffer queue strategies. Initialize raid sets to use the default buffer queue strategy for the given architecture, rather than forcing raidframe to use fcfs in all cases. This should cause raidframe to use the same buffer queue strategy as the underlying disks. On I386, I see performance enhancements of between 14 and 16% with raid5 sets with no other change. See http://mail-index.NetBSD.org/tech-kern/2012/08/08/msg013758.html for a discussion of this issue.
2012-07-19Initialize values to squelch gcc.pooka
from Greg Oster
2012-04-07If our raid is now accessed from wedges, adjust the root to be the wedgechristos
that corresponds to partition a. Is there a better way?
2012-02-20Add logic to the main reconstruction loop to handle RAID5 with rotatedoster
spares. While here, observe that we were actually doing one more stripe than we thought we were, and correct that too (it didn't matter for non-RAID5_RS, but it definitely does for RAID5_RS). Add some bounds-checking at the beginning to handle the case where the number of stripes in the set is smaller than the sliding reconstruction window. XXX: this problem likely needs to be fixed for PARITY_DECLUSTERING too.
2012-02-20comment, and effectively remove, a DIAGNOSTIC check thatoster
is invalid for RAID5_RS.
2012-02-16Add the ability to autoconfigure raid components on raw disks.buhrow
This change causes components on raw disks, as opposed to components inside partitions or wedges, to be autoconfigured if the raid set is configured for autoconfiguration. Approved by oster@ and mrg@ for submission after the NetBSD-6 tag. I've been running these changes in production at my day job for over a year without a problem. See http://mail-index.NetBSD.org/tech-kern/2010/11/09/msg009167.html for the original discussion of this patch and for a version of this patch that works with NetBSD-5.x systems.
2011-11-05Statically initialize the raidautoconfig variable when RAID_AUTOCONFIG is set,erh
instead of setting it in code, so it can easily be checked and changed in an on-disk kernel with gdb. Use a separate raidautoconfigdone variable to keep track of whether raid configuration has actually occurred.
2011-10-14Change the vnode locking protocol of VOP_GETATTR() to request at leasthannken
a shared lock. Make all calls outside of file systems respect it. The calls from file systems need review. No objections from tech-kern.
2011-09-07Newline is \n, not /n.mbalmer
2011-08-31NULL does not need a castplunky
2011-08-03Address part of PR kern/44972. From YAMAMOTO Takashi. Thanks!oster
2011-08-03Remove unused 'struct lwp *' from rf_getdisksize. No functional changes.oster
2011-08-01According to the Oxford Dictionary of Etymology, a wether is a male sheepmbalmer
or ram.
2011-07-30Add an FSILENT flag and use it to suppress "Medium Not Present" scsipijmcneill
spam when trying to access offline drives at boot.
2011-07-29In rf_disks.c make sure ser_values and ser_count arrays areoster
initialized before use. Validate the component label before considering a component for use, and make sure we only consider components that are optimal. Fixes PR#44251. All atf RAIDframe tests now pass.
2011-05-28rf_ReconstructInPlace: don't leave a vnode open on errors.yamt
fixes a part of PR/44972.
2011-05-27don't forget to destroy mutex.yamt
2011-05-24Suggested to oster@ and approved via private e-mail as a help tobuhrow
people who are getting reconstruction failures.
2011-05-23rf_panicbuf is already format, so don't pass it as format string tojoerg
panic()
2011-05-11convert the main raidPtr mutex to a kmutex, and add a couple of cv's tomrg
cover the old sleep/wakeup points for adding_hot_spare and waitForReconCond. convert all remaining simple_lock's to kmutexes (they're not used or compiled right now... even with all options enabled) and remove the support for them. this leaves just a pair of tsleep()/wakeup() calls using old scheduling APIs.
2011-05-11convert regionBufferPool.mutex/cond and parityBufferPool.mutex/condmrg
to kmutex/cv.
2011-05-11convert parityLogPool.mutex to a kmutex.mrg
2011-05-11convert regionInfo[regionID].mutex to a kmutex.mrg
2011-05-11convert reintMutex to a kmutex.mrg
2011-05-11convert parityLogDiskQueue.mutex to a kmutex/cv.mrg
XXX: some splbio() usage to clean up here
2011-05-10convert RF_CommonLogData_s/RF_ReconMap_s mutex to a kmutex/cv.mrg
2011-05-10print "raidN: detached" when unconfiguring a raid device.mrg
2011-05-05convert stripelocks to kmutex.mrg
2011-05-05RF_BROADCAST_COND() is no more.mrg
2011-05-05convert access_suspend_mutex to a kmutex/cv.mrg
2011-05-05convert the diskqueue mutex into a kmutexmrg
2011-05-05finish porting mcpair users to kmutex, and fix a couple of declarationsmrg
in rf_netbsdkintf.c. fixes i386/conf/ALL build.
2011-05-03convert the pssTable mutex into a kmutex/cv.mrg
2011-05-02convert rb_mutex to a kmutex/cv.mrg
2011-05-02use a unique wchan identifier for node_queue_cv than the old default.mrg
2011-05-02re-apply the reverted previous, after fixing the missed wakeup:mrg
convert eq_mutex to a kmutex/cv. convert ltsleep() used for plain timeout into kpause().
2011-05-02rever the previous for now; it hangs reconstruction.mrg
2011-05-01convert eq_mutex to a kmutex.mrg
convert ltsleep() used for plain timeout into kpause().
2011-05-01convert rf_debug_mem_mutex to a kmutex, and fix RF_DEBUG_MEM option.mrg
2011-05-01convert rf_tracing_mutex to a kmutex.mrg
2011-05-01convert the (unused) rf_sparet_wait_mutex to a real mutex/cv.mrg
2011-05-01convert mcpair to kmutex.mrg
2011-04-30- convert rf_printf_mutex to a kmutexmrg
- convert rf_rad_lock and the per-raid "cv" to per-raid kmutex/and real cv - use rf_mutex_init() in places, and move it with the similar definitions
2011-04-27prepare to convert more raidframe old lock/sleep APIs to mutex/condvar:mrg
- remove RF_DECLARE_EXTERN_MUTEX and RF_DECLARE_STATIC_MUTEX, the qualifier can be provided at the use point with the normal define - rename the *LGMGR_MUTEX() macros to *mutex2() names, and add some more defines for use: rf_declare_mutex2() rf_declare_cond2() rf_lock_mutex2() rf_unlock_mutex2() rf_init_mutex2() rf_destroy_mutex2() rf_init_cond2() rf_destroy_cond2() rf_wait_cond2() rf_signal_cond2() rf_broadcast_cond2() - use the new names for the configureMutex(), which previous used some combo of direct mutex* calls and macros - convert the node_queue to use a mutex/cv combo - in rf_ShutdownEngine() and DAGExecutionThread(), also signal the former from the latter when it is done and about to exit - convert iodone_lock to use the new macros
2011-04-23move the iodone setup and tear down into rf_engine.c. this fixesmrg
"raidctl -u" and should also help the case where we fail to setup a device part of the way through.
2011-04-23convert the iodone_lock to a mutex, and use a condvar for signalling.mrg
this only handles the smallest use of old simple_lock/tsleep/wakeup APIs inside raidframe, and it points out that cv(9)'s have only one wait channel per cv, whereas each tsleep() caller can specify a different wait channel. this change removes the difference between normal raidio and waiting for IO during shutdown. i've tested this one 3 systems, ran atf, and had mlelstv and rmind review the change.