summaryrefslogtreecommitdiff
path: root/sys/dev/softraid.c
AgeCommit message (Collapse)Author
2013-07-19Don't use uninitialized variable when a simple 0 will do.Kenneth R Westerback
Found by Maxime Villard. ok jsing@
2013-07-01When an I/O error occurs on a softraid chunk, only take it offline if theJoel Sing
discipline supports redundancy. In the non-redundant case, there is little to gain my failing the chunk, in fact it just makes any form of data recovery significantly harder. ok krw@ todd@
2013-06-11final removal of daddr64_t. daddr_t has been 64 bit for a long enoughTheo de Raadt
test period; i think 3 years ago the last bugs fell out. ok otto beck others
2013-05-21Ensure that sc_lock is held when calling sr_meta_native_bootprobe() - theJoel Sing
softraid status functions will complain otherwise. Found the hard way by ajacoutot@
2013-05-21sr_raid_startwu() is no longer called from interrupt context, hence doesJoel Sing
not need to invoke a workq-based callback.
2013-05-21Provide a function that handles the scheduling of work units. ThisJoel Sing
simplifies the discipline code, avoids code duplication and moves the scheduling logic into a single location. ok krw@
2013-05-21Make the sr_raid_startwu() function handle deferred work units, instead ofJoel Sing
the caller having to handle the state changes.
2013-05-21Fix missing work unit state initialisations.Joel Sing
2013-05-21Use a state to indicate that a work unit should only be constructed and notJoel Sing
scheduled, rather than trying to imply this from the rebuild flag.
2013-04-26Add a SR_WUF_DISCIPLINE flag that identifies work units that have resultedJoel Sing
from discipline specific I/O. Such work units are not associated with a SCSI xfer and are returned via sr_wu_put() on completion.
2013-04-23Rename ccb_flag to ccb_flags.Joel Sing
2013-04-21Convert RAID1 to the new work unit completion functions and genericJoel Sing
interrupt handler. Disciplines such as RAID1/4/5/6 need a way to intercept I/O when the work unit is complete, but before the SCSI xfer is complete. This is provided via a sd_scsi_wu_done hook, which enables work units to be restarted or otherwise modified before the SCSI xfer completion occurs. ok krw@
2013-03-31Use the discipline name instead of the product string when reporting theJoel Sing
attachment.
2013-03-31The return value of sd_free_resources() is never checked and all of theJoel Sing
implementations only ever returned zero. Change the return value from int to void instead of pretending it might mean something.
2013-03-31Fix compilation with debug.Joel Sing
2013-03-31Provide default resource allocation and free functions. Convert allJoel Sing
disciplines except for AOE and CRYPTO, which require custom handlers.
2013-03-30Provide wrappers for scsi_io_get() and scsi_io_put(), that also includeJoel Sing
the sd_sync check/wakeup. Remove some unnecessary NULL checks whilst here. ok krw@
2013-03-30Provide a default discipline interrupt handling function and migrate all ofJoel Sing
the disciplines that now have the same interrupt code. ok krw@
2013-03-29Decouple wakeups on work unit completion from the type of I/O beingJoel Sing
performed. ok krw@
2013-03-29sd_wu_pending is only decremented when scsi_done() or scsi_io_put() areJoel Sing
called. As a result, factor out the the sd_sync check/wakeup code and move it to after the scsi_done() call in sr_scsi_done(). Perform the same sd_sync check/wakeup after scsi_io_put() calls (including the addition of some that were previously missed). ok krw@
2013-03-25Factor out the code that is used to recreate work units - one copy of theJoel Sing
code is sufficient. ok krw@
2013-03-10Rename sc_dis to sc_targets, since it is an array of targets that alsoJoel Sing
happen to be softraid disciplines. ok krw@
2013-03-05Track attached softraid disciplines via a queue. This prevents the need toJoel Sing
scan the sparse SCSI targets array and simplifies code. Disciplines are now also shutdown in reverse attach order, making manually stacked softraid volumes somewhat more practical. ok krw@
2013-01-18The workunit completion needs to run at IPL_BIO, at least for now.Joel Sing
2013-01-18Tweak workunit completion.Joel Sing
2013-01-18Implement common workunit completion functions and handle the completionJoel Sing
via a workq callback. Also provide a discipline specific hook that allows it to optionally handle the final part of the workunit completion. ok krw@
2013-01-18Reset I/O counters when releasing ccbs.Joel Sing
ok krw@
2013-01-16Add a function that handles the completion of a ccb.Joel Sing
ok krw@
2013-01-16Set resid to zero if the scsi transfer completed without error.Joel Sing
ok krw@
2013-01-16Factor out code used to release ccbs from a workunit.Joel Sing
ok krw@
2013-01-15Implement a function that gets and correctly initialises a ccb for I/O,Joel Sing
along with a function that enqueues a ccb on a workunit. ok krw@
2013-01-15Keep a function pointer to the per-discipline I/O interrupt handler in theJoel Sing
discipline data structure. To be used with an upcoming diff.
2013-01-15Factor out workunit initialisation code.Joel Sing
ok krw@
2012-10-09Provide a mechanism for the kernel to directly pass a mask key through toJoel Sing
a crypto volume when it is assembling it.
2012-10-08Provide a mechanism for the kernel to pass data through to the disciplineJoel Sing
during volume assembly.
2012-10-08Change handling for volumes that are marked no-auto assemble. If we bootedJoel Sing
from the given volume ignore the no-auto assemble flag, since the root file system is located on it.
2012-10-08bzero the right variable.Joel Sing
2012-01-30Prevent softraid from being used with devices that do not have a sectorJoel Sing
size of 512 bytes - any other size is not currently supported. ok krw@
2012-01-28Only pass bio ioctls through to the softraid bio ioctl handler. Rename theJoel Sing
handler to emphasise that it is for bio ioctls only. Discovered the hard way by dhill@
2012-01-22Convert softraid(4) to new bio(4) status interface. This allows bioctl(8)Joel Sing
to provide useful feedback, rather than reporting an ioctl failure and leaving the user to consult dmesg. For now we continue to print most things to the console, even if the message is a result of an ioctl.
2012-01-22Disable the softraid disk attach hook on detach.Joel Sing
2012-01-22Ensure that the sc_lock is held before the status functions are called.Joel Sing
2012-01-21Split sr_uuid_print() into two functions - one that formats and one thatJoel Sing
prints. Also rename sr_uuid_get() to sr_uuid_generate().
2012-01-20Add bio(4) status interface structs and utility functions to softraid(4).Joel Sing
2012-01-17Check the metadata level against the assembly level before proceeding withJoel Sing
any assembly. This avoids a panic when attempting to assemble a RAID 1 (or other) volume as a RAID 0 volume. Also reorder some of the other checks and diagnostics performed during assembly.
2012-01-17Add missing ioctl DNPRINTFs and nuke some rogue commas.Joel Sing
2012-01-11Move softraid root mapping to later in the boot process - this will allowJoel Sing
us to play some tricks in setroot().
2012-01-11Make sr_boot_chunk and sr_boot_volume accessible from userland. Add aJoel Sing
number of variables that are needed to detect and assemble volumes. A sr_metadata struct can be allocated and used via the sbc_metadata pointer, which we now do in the kernel boot probe/assembly code.
2011-12-31Implement a concatenating discipline for softraid.Joel Sing
Many thanks to Marco Peereboom for his assistance with testing and debugging. Thanks also to Josh Grosse and Chris Jackman for testing.
2011-12-28Cleanup the metadata initialisation process - have sr_meta_init()Joel Sing
initialise both the volume and chunk metadata before the discipline specific sd_create() function is called. The sr_meta_init_complete() function is then called to complete the initialisation based on values provided by sd_create().