Age | Commit message (Collapse) | Author |
|
type on the chunks is not the same, we don't actually care because we
are going to clear their metadata anyway, so don't error out. This
allows assembling a new RAID based on a drive that is zeroed and one
that used to be part of a softraid in its previous life.
ok jsing@
|
|
the sensor does not show the drive state as "unknown".
ok phessler@
|
|
doesnt make sense to use M_CANFAIL flag.
ok dlg jsing
|
|
is at least one bio status message. It is a much nicer user experience when
we properly report failures, however in the case that we fail to do this,
getting an errno back from the ioctl is somewhat better than simply
printing "unknown error" from bioctl(8).
|
|
softraid volume and backing disk when i/o errors occur.
Original issue reported by Paul de Weerd.
Suggestions from jsing@.
ok deraadt@ mikeb@
|
|
OK jsg@
|
|
failure as early as possible.
ok mlarkin claudio
|
|
in progress. This eliminates the spurious and harmless "0% done" message
in the output of 'bioctl softraid0' reported by various on misc.
ok jsing
|
|
Problem found by Michael McConville.
Tested & ok stsp@
|
|
having five copies of the same code.
ok krw@
|
|
defined. Carrying on is pointless. And will currently cause a NULL
pointer deref anyway.
NULL deref found by mmcc@ and his friend clang.
ok deraadt@
|
|
|
|
greater than the sector size of the softraid volume. i.e. 512-byte
hot spares should work on 4096-byte volumes but 4096-byte hotspares
will not work on 512-byte volumes.
Pointed out, errors corrected and ok jsing@
|
|
replaced by comment for first chunk of code.
Pointed out by jsing@.
|
|
chunk and perhaps save the next person reading the code some
confusion.
|
|
'cid = i;' when break'ing. Makes code consistent with same search
later. No functional change and shrinks later functional diff.
|
|
chunks more obviously the same. Reduces size of upcoming diff. No
functional change.
|
|
volume sector size. Determine volume sector size in sr_meta_init().
Pointed out, tweaked and ok jsing@
|
|
sectors. Volumes created will present a sector size equal to the
largest sector size of the constituent disks.
Softraid Metadata version cranks to 6 due to new field.
ok jsing@ with tweaks that will follow soon.
|
|
case check if it was set and bail out with a useful message if not.
In the other the variable was the wrong one anyway, and we can just
use the correct variable.
Found by & ok jsg@
|
|
ok tb@
|
|
use the constants where needed.
ok jsing@
|
|
Originally from pelikan@, recent prodding from bluhm@ and jsg@.
ok pelikan@ millert@ bluhm@
|
|
obvious idiom.
ok bluhm@ jsing@
|
|
ok jsing@
|
|
since they are now relative to chunks. Use 'blkno' as normal variable
name for daddr_t items rather than mix of 'blkno, blk, offset.
Change field name ssd_data_offset to ssd_data_blkno since it is a
block and not byte quantity.
No intentional functional change.
|
|
|
|
of the destination fields.
ok jsing@
|
|
address) to 64 signed or unsigned ints. Add some paranoia checks
during partition size calculations to account for the fact that
partition sizes (DL_GETPSIZE()) are unsigned values.
More daddr_t rectification to do.
ok jsing@
|
|
block offsets until actual i/o is constructed and needs the physical
offset. Eliminate a number of <<DEV_BSIZE shifts as a bonus.
No intentional functional change.
Fixed and ok jsing@
|
|
where appropriate. Noop for disks with 512-byte sectors. i.e. the
only kind currently allowed in softraid volumes. But starts laying
the groundwork to allow disks with other sector sizes.
ok jsing@
|
|
|
|
ok deraadt krw millert
|
|
ok jsing krw
|
|
volume, ignoring any device name specified in the bio(4) ioctl struct.
One of bio(4)'s design flaws is that the device name is hardcoded in many
of the ioctl structs, making it basically unusable with DUIDs. In the case
of `bioctl -d' the bioctl(8) code actually uses opendev(3) on the given
name, then issues the ioctl directly to the resulting device. As such, we
already know which device (or in this case, softraid volume) the ioctl was
intended for, however the current softraid(4) code ignores this and instead
attempts to perform a lookup using the name in the bio(4) ioctl struct.
This diff splits the sr_bio_ioctl() code into two parts - one that implements
the API required by bio(4) and the other that contains the ioctl handling
code, which now takes an optional pointer to the softraid discipline. If an
ioctl is issued to a SCSI device associated with a softraid volume, pass
the corresponding softraid discipline struct through and to the bio ioctl
handler and use it in preference to performing a device name lookup.
Amongst other things, this makes bioctl -d now work with DUIDs.
ok krw@
|
|
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
interrupt context to a taskq running in a thread. however, there
is a concern that if we do that then we allow accidental use of
sleeping APIs in this work, which will make it harder to move the
work back to interrupts in the future.
guenther and kettenis came up with the idea of marking a proc with
CANTSLEEP which the sleep paths can check and panic on.
this builds on that so you create taskqs that run with CANTSLEEP
set except when they need to sleep for more tasks to run.
the taskq_create api is changed to take a flags argument so users
can specify CANTSLEEP. MPSAFE is also passed via this flags field
now. this means archs that defined IPL_MPSAFE to 0 can now create
mpsafe taskqs too.
lots of discussion at s2k15
ok guenther@ miod@ mpi@ tedu@ pelikan@
|
|
when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.
now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.
so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.
ok krw@
|
|
|
|
|
|
objective: vnode.h doesn't include uvm_extern.h anymore.
followup changes: include uvm_extern.h or lock.h where necessary.
ok and help from deraadt
|
|
to include that than rdnvar.h. ok deraadt dlg
|
|
|
|
|
|
many years and wide spread demand for support never materialized.
time to pack it in.
|
|
ok mpi@ kspillner@
|
|
CIRCLEQ_* is deprecated and not called in the tree. The other queue types
have *_END macros which were added for symmetry with CIRCLEQ_END. They are
defined as NULL. There's no reason to keep the other *_END macro calls.
ok millert@
|
|
from the volume metadata rather than the currently defined data offset.
This allows rebuilds to work correctly when the volume metadata has a
different data offset to that currently in use (for example, volumes
created prior to softraid gaining boot support).
Found the hard way by henning@
ok deraadt@
|
|
|
|
much help and ok from deraadt@
|