summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
AgeCommit message (Collapse)Author
2018-01-18implement 32-bit compat support for raidframe.mrg
convert several raidframe ioctls to be bitsize idempotent so that they work the same in 32 and 64 bit worlds, allowing netbsd32 to configure and query raid properly. remove useless 'row' in a few places. add COMPAT_80 and put the old ioctls there. raidframeio.h: RAIDFRAME_TEST_ACC - remove, unused RAIDFRAME_GET_COMPONENT_LABEL - convert to label not pointer to label RAIDFRAME_CHECK_RECON_STATUS_EXT RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT RAIDFRAME_CHECK_COPYBACK_STATUS_EXT - convert to progress info not pointer to info RAIDFRAME_GET_INFO - version entirely. raidframevar.h: - rf_recon_req{} has row, flags and raidPtr removed (they're not a useful part of this interface.) - RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed. - RF_RaidDisk_s{} is re-ordered slightly to fix alignment padding - the actual data was already OK. - InstallSpareTable() loses row argument rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32. rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK, RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT, RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT, RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO. move several of the per-ioctl code blocks into separate functions. add rf_recon_req_internal{} to replace old usage of global rf_recon_req{} that had unused void * in the structure, ruining it's 32/64 bit ABI. add missing case for RAIDFRAME_GET_INFO50. adjust raid tests to use the new .conf format, and add a case to test the old method as well. raidctl: deal with lack of 'row' members in a couple of places. fail request no longer takes row. handle "START array" sections with just "numCol numSpare", ie no "numRow" specified. for now, generate old-style configuration but update raidctl.8 to specify the new style (keeping reference to the old style.) note that: RF_ComponentLabel_s::{row,num_rows} and RF_SingleComponent_s::row are obsolete but not removed yet.
2017-11-14check the result of pool_prime.christos
2017-11-09add a "booted_method" string to aid in debugging double boot matches.christos
2017-06-01remove checks for failure after memory allocation calls that cannot fail:chs
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create() all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
2017-04-05rf_get_component_caches(): remove useless conditionjdolecek
2017-04-05add support for DIOCGCACHE; contrary to DIOCCACHESYNC, query any non-deadjdolecek
disk in the set, even currently reconstring one
2017-01-13more faithful to the original (from coypu)christos
2017-01-13Don't consider a disk hosed if we did not find a column for it; dedup code.christos
2017-01-04PR/51776: David Binderman: Remove unused variable.christos
2017-01-04PR/51775: David Binderman: Remove unused variable.christos
2016-12-11Ensure variables are initialized. Fixes error due to -Wmaybe-unitialized.nat
2016-12-10raidframe: use existing routines to print an error and panic.maya
fixes the i386 ALL build with clang which complained about the format string not being a string literal, and lets us get rid of rf_panicbuf. note: kern_assert is not KASSERT. it should panic as long as the string is not NULL. No functional change intended.
2016-10-15Cleanup/remove unused asm_count. Reported by David Binderman in PR#51552.oster
Thanks!
2016-09-19fix mistake fallthrough in the ioctl switch introduced in previous commitjdolecek
2016-09-19fix DIOCCACHESYNC ioctl on ld(4) and raid(4) to work again; it got brokenjdolecek
when the code was switched over to dk_ioctl() - countrary to disk_ioctl(), dk_ioctl() returns ENOTTY for ioctls it doesn't support, so must be called as last resort, not first bug was introduced in rev 1.83 (2015-05-02) for ld(4), and 1.335 (2016-01-03) for raid(4)
2016-04-27provide an empty DPRINTFchristos
2016-04-27Extend the "a" partition hack to also mean the first partition on the raid,christos
for non-disklabel based raidframe disks that need root.
2016-01-07Don't use for (...); by using an explicit continue as body.joerg
2016-01-07gc unused flagschristos
2016-01-07CID 1347189: Null pointer dereferencesmlelstv
2016-01-06Add a SET_LAST_UNIT ioctl.christos
2016-01-05revert bp->b_error checking; biowait() is a no-op in that case and it ischristos
valid to call biowait() after biodone. (thanks chuq)
2016-01-05When autoconfiguring RAID sets:mlelstv
Pseudo devices like vnd and cgd can be opened but may still need some configuration. Ignore these quietly.
2016-01-05handle possible errors from bdev_strategy.mlelstv
2016-01-04prevent unconfigure/detach while background threads are running.mlelstv
2016-01-04Fix dump on raid.mlelstv
- offset dump by RF_PROTECTED_SECTORS (thanks oster@ for noticing) - call component dump function with byte count instead of block count - return -1 instead of errno values in dk_size for error conditions. There are still issues with dumping. - the raid device must be open, neither reading the disklabel nor flushing the component labels in rfmarkdirty is possible when dumping. - dumping to a wedge component fails because the wedge driver only allows dumping to swap partitions, not raid partitions.
2016-01-03refactor driver to use common code in dksubr.mlelstv
2016-01-02No longer detach opened device directly in RAIDFRAME_SHUTDOWN ioctl,mlelstv
instead just mark the device for shutdown and detach on last close. Also don't manually print the detached message but leave this to config_detach(). This avoids a duplicate message when shutting down.
2016-01-02RAIDF_INITED state also includes disk attachments, don't undo operationsmlelstv
that haven't been committed.
2016-01-02Unlock and free in raid_detach to handle error paths.mlelstv
2016-01-02use bdev_strategy wrapper to properly use KERNEL_LOCK.mlelstv
2015-12-26Another use-after-free()pgoyette
2015-12-26If the "finalizer" should fail to register for any reason, just reportpgoyette
the situation (as a WARNING) and continue. Don't return the error code to the caller. Failure to register should not really happen - if it does, all we really lose is auto-configuration of raid-sets.
2015-12-26Resolve a use-after-free reference to the softc. From mlelstv@pgoyette
2015-12-26Modularize the raidframe driver, including rework of the unit attachpgoyette
code to permit detaching (and possible module unloading). Also, convert tsleep()/wakeup() locking to use cv_wait_sig()/cv_broadcast(). Tested in non-modular, modular-builtin, and modular-loaded-at-runtime environments.
2015-12-08Replace DIOCGPART -> DIOCGPARTINFO which returns the data needed instead ofchristos
pointers.
2015-09-06More on PR 41200: headers that declare ioctls should include sys/ioccom.h.dholland
This covers (I think) all the MI headers outside of external/ (and dist/).
2015-08-20include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.christos
2015-07-10mark all the device entry points static.mrg
2015-04-26Use C99-style initializers for struct dkdriver.mlelstv
2015-01-03Also print b_error in the IO Error messageprlw1
2015-01-02We have three sets of DTYPE_ constants in the kernel:christos
altq Drop Type disklabel Disk Type file Descriptor Type (not to mention constants that contain the string DTYPE). Let's make them two, by changing the disklabel one to be DisK TYPE since the other disklabel constants seem to do that. Not many userland programs use these constants (and the ones that they do are mostly in ifdefs). They will be fixed shortly.
2014-12-31make more drivers use disk_ioctl, and add a dev parameter to it so thatchristos
we can merge the "easy" disklabel ioctls to it. Ultimately all this will go do dk_ioctl once all the drivers have been converted.
2014-12-31Centralize wedge ioctls in disk_ioctl.christos
2014-12-31disk_blocksize and disk_set_info relay the same informationmlelstv
to the disk subsystem. Make disk_set_info also set blocksize shift values. Remove every call to disk_blocksize. Keep disk_blocksize for ABI compatibility, make it also set dg_secsize.
2014-12-21Stop useless disklabel warning if there are wedges, using GPT partition.taca
Fix PR kern/47989. XXX: Pullup 6 and 7 (maybe 5)
2014-11-14Adjust comment to reflect reality. (5th arg, not 4th)oster
2014-11-14Fix a long-standing bug related to rebooting while aoster
reconstruct-to-spare is underway but not yet complete. The issue was that a component was being marked as a used_spare when the rebuild started, not when the rebuild was actually finished. Marking it as a used_spare meant that the component label on the spare was being updated such that after a reboot the component would be considered up-to-date, regardless of whether the rebuild actually completed! This fix includes: 1) Add an additional state "rf_ds_rebuilding_spare" which is used to denote that a spare is currently being rebuilt from the live components. 2) Update the comments on the disk states, which were out-of-sync with reality. 3) When rebuilding to a spare component, that spare now enters the state rf_ds_rebuilding_spare instead of the state rf_ds_used_spare. 4) When the rebuild is actually complete then the spare component enters the rf_ds_used_spare state. rf_ds_used_spare is now used exclusively for the case where the rebuilding to the spare has completed successfully. XXX: Someday we need to teach raidctl(8) about this new state, and take out the backwards compatibility code in rf_netbsdkintf.c (see RAIDFRAME_GET_INFO in raidioctl()). For today, this fix needs to be generic enough that it can get backported without major grief. XXX: Needs pullup to netbsd-5*, netbsd-6*, and netbsd-7 Fixes PR#49244.
2014-11-04support DIOCMWEDGES ioctl.mlelstv
2014-10-18src is too big these days to tolerate superfluous apostrophes. It'ssnj
"its", people!