Commit Graph

1036 Commits

Author SHA1 Message Date
sos
6cdbc9992f Make struct buf->b_offset reflect the real byte offset which got
in via the uio struct. This enables device drivers to use != DEV_BSIZE
blocking on devices with wierd sector/block sizes (ie CDROM's).
1998-08-19 10:50:32 +00:00
julian
0262543b5f There is no such thing any more as "struct bdevsw".
There is only cdevsw (which should be renamed in a later edit to deventry
or something). cdevsw contains the union of what were in both bdevsw an
cdevsw entries.  The bdevsw[] table stiff exists and is a second pointer
to the cdevsw entry of the device. it's major is in d_bmaj rather than
d_maj. some cleanup still to happen (e.g. dsopen now gets two pointers
to the same cdevsw struct instead of one to a bdevsw and one to a cdevsw).

rawread()/rawwrite() went away as part of this though it's not strictly
the same  patch, just that it involves all the same lines in the drivers.

cdroms no longer have write() entries (they did have rawwrite (?)).
tapes no longer have support for bdev operations.

Reviewed by: Eivind Eklund and Mike Smith
	Changes suggested by eivind.
1998-07-04 22:30:26 +00:00
julian
4363221ba2 VOP_STRATEGY grows an (struct vnode *) argument
as the value in b_vp is often not really what you want.
(and needs to be frobbed). more cleanups will follow this.
Reviewed by: Bruce Evans <bde@freebsd.org>
1998-07-04 20:45:42 +00:00
dfr
1d5f38ac22 This commit fixes various 64bit portability problems required for
FreeBSD/alpha.  The most significant item is to change the command
argument to ioctl functions from int to u_long.  This change brings us
inline with various other BSD versions.  Driver writers may like to
use (__FreeBSD_version == 300003) to detect this change.

The prototype FreeBSD/alpha machdep will follow in a couple of days
time.
1998-06-07 17:13:14 +00:00
julian
e8a4faf045 Slightly more correct initialisation of the new buf struct for soft-updates.
Submitted by: Chris Csanady <ccsanady@friley585.res.iastate.edu>
Suggested by: Kirk McKusick
1998-03-09 20:39:26 +00:00
jkh
b3147e8cdb Properly bzero() structures after they're returned from getccdbuf().
Submitted by:	Chris Csanady <ccsanady@friley585.res.iastate.edu>
1998-02-22 10:01:23 +00:00
jkh
e7e4c82493 Revert part of my previous patch - I don't see the *need*
to call splbio() from within an interrupt handler here. :-)
1998-02-15 08:28:26 +00:00
jkh
3923d0f80a missing spl() call and off by one error in the handling of the partitions.
Submitted by:	Chris Csanady <ccsanady@friley585.res.iastate.edu>
Obtained from:	OpenBSD
1998-02-15 08:14:39 +00:00
eivind
6a06ff15fe Remove unused devfs include. (Julian or Satoshi might want to add proper
DEVFS support here; just including the header file doesn't do any good, and
would make this depend on opt_devfs.h)
1998-01-31 03:19:06 +00:00
phk
c1b747455e There is no ccdread() nor ccdwrite(). 1997-11-18 14:39:04 +00:00
phk
f593ffbdd7 Statizice. 1997-10-24 14:24:55 +00:00
phk
48ec947acb Remove a #ifndef __FreeBSD__ chunk. 1997-10-11 07:35:25 +00:00
bde
eb2f083ba6 Removed unused #includes. 1997-06-14 13:56:12 +00:00
sos
cea09de5eb Make ccd use the maxsecsize sector size as denominator, this
fixes ccd on != 512byte devices..
1997-05-01 19:18:40 +00:00
bde
117209856b Don't include <sys/ioctl.h> in the kernel. Stage 1: don't include
it when it is not used.  In most cases, the reasons for including it
went away when the special ioctl headers became self-sufficient.
1997-03-24 11:25:10 +00:00
peter
94b6d72794 Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not
ready for it yet.
1997-02-22 09:48:43 +00:00
mpp
87b55298dc Make ccd compile again after the Lite2 merge.
VOP_UNLOCK was being called with the wrong number of arguments.
1997-02-10 16:24:33 +00:00
jkh
808a36ef65 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
dyson
fcc949180d Fix CCD for bounced devices. 1997-01-10 04:09:13 +00:00
phk
bca885205d Remove devconf, it never grew up to be of any use. 1996-09-06 23:09:20 +00:00
asami
7918737d5b Fail when odd number of disks are specified with mirror flag. Memory
leak fixes.  Miscellaneous cleanup.

Partially submitted by:	Matt White <mwhite+@CMU.EDU>
1996-07-24 23:45:24 +00:00
phk
507c870974 Make a "DWIM" function for adding [bc]devsw entries for bdev drivers.
Saves about 280 butes of source per driver, 56 bytes in object size
and another 56 bytes moves from data to bss.

No functional change intended nor expected.

GENERIC should be about one k smaller now :-)
1996-07-23 21:52:43 +00:00
phk
31ff7912a4 Substitute raw{read|write} for ccd{read|write} 1996-07-21 09:28:03 +00:00
gpalmer
57c3ebc617 Clean up -Wunused warnings.
Reviewed by:		bde
1996-06-12 05:11:41 +00:00
asami
f05c60927e Add #ifndef/#endif around the "#define CCD_OFFSET 16", so you can override
it in your kernel config file.

Requested (in essence) by:	phk
1996-05-13 09:17:42 +00:00
asami
8b28728241 Leave 16 lines in front of each component partition. It's now safe to
use sd87a or sd237e even if they start at the beginning of the slice.

You can also use sd85c if you prefer, although you need to change the
type field in the disklabel to "4.2BSD".
1996-05-13 08:38:15 +00:00
asami
0128db8c55 Add missing "int" to static var. 1996-04-24 09:42:22 +00:00
asami
b50b9c7209 Change how mirror writes are handled, according to the discussion on the
mailing list.

When initiating a write, ccdbuffer() returns two "struct ccdbuf *"s
linked together by the cb_mirror field.  "cb_pflags &
CCDPF_MIRROR_DONE" is set to 0 on both of them.

When a component returns to ccdiodone(), it checks if "cb_pflags &
CCDPF_MIRROR_DONE" is set or not.  If not, it sets the partner's
flag and returns.  If it is, it means its partner has already
returned, so it will go to the regular cleanup (which is in the
fallthrough code).

There should be no performance or functionality changes unless the
higher-level scsi driver does something with the resid value.  The change
is purely aesthetical and prepares us for the parity implementation.
1996-03-26 02:29:11 +00:00
asami
a4491a591a Ported to 2.2-current. Uses [bc]devsw_add(), and is also now a proper
pseudo-device.

Doesn't use devfs correctly yet.
1996-03-21 04:13:25 +00:00
asami
8b9cb8fedd Fix one warning and fix one bug found while looking at another warning (but
caused by a different reason):

. #ifndef __FreeBSD__ around check for negative size, FreeBSD size_t is
  unsigned

. Disable mirror/parity if interleave size is 0 (i.e., serial concatenation).
1996-01-31 11:25:46 +00:00
asami
565f8b6987 Mirror support. When CCDF_MIRROR is set:
(1) The reads are always done from the first n/2 disks.

(2) Each write is done twice, to the "data" disk (in the first half) and
    the "mirror" disk (in the second half).

ccdbuffer() now takes an extra argument (struct ccdbuf **) and stores
the pointer to ccdbuf in there.  In case of a mirrored write, it
allocates and stores two pointers.  The "residual" is also doubled
for mirrored writes so that ccdiodone() can correctly tell when all
the writes are done.
1996-01-31 03:28:21 +00:00
asami
7b3fa6ae27 Prepare for adding mirroring. Check for flags (mirror forces uniform),
reduce the size to half, etc.  Right now it only uses the first n/2 disks
for both read and write.
1996-01-30 22:34:53 +00:00
asami
23f4e3fcb8 Prepare to add support for parity. Report the post-parity size,
allocate space around parity blocks.
1996-01-02 23:32:54 +00:00
asami
bcd430b53f Added $Id$. 1995-12-28 00:22:45 +00:00
asami
dbb28d7d47 Changes to make it work on FreeBSD-2.1. 1995-12-27 10:53:21 +00:00
asami
afa3f75484 ccd.c and ccd.4 from NetBSD-current circa 12/25/95. 1995-12-27 10:49:19 +00:00