Poul-Henning Kamp
d2bae332d6
Remove the absolute count g_access_abs() function since experience has
...
shown that it is not useful.
Rename the relative count g_access_rel() function to g_access(), only
the name has changed.
Change all g_access_rel() calls in our CVS tree to call g_access() instead.
Add an #ifndef BURN_BRIDGES #define of g_access_rel() for source
code compatibility.
2004-02-12 22:42:11 +00:00
Poul-Henning Kamp
f865123ec4
Give both consumers and providers a {void *private, u_int index} which
...
the implementing class can use to hang internal info from.
2004-02-12 20:32:11 +00:00
Pawel Jakub Dawidek
72e330954e
Added g_print_bio() function to print informations about given bio.
...
Approved by: phk, scottl (mentor)
2004-02-11 18:21:32 +00:00
Pawel Jakub Dawidek
18e88d825c
Now we have g_topology_assert_not(), so use it to detect deadlocks.
...
Approved by: phk, scottl (mentor)
2004-02-10 15:55:17 +00:00
Pawel Jakub Dawidek
692498b0cd
Added macro which will be used to assert, that the topology lock is not held.
...
Approved by: phk, scottl (mentor)
2004-02-10 15:53:28 +00:00
Poul-Henning Kamp
99cf2f941c
don't call sbuf_clear() right after sbuf_new(), it is not necessary.
2004-02-10 10:54:19 +00:00
Poul-Henning Kamp
df3df337b8
Polish the work/state engine in preparation for HW-crypto support.
2004-02-08 10:19:18 +00:00
Poul-Henning Kamp
d091e630f1
Add a missing error case return.
...
Problem reported by: Flemming Jacobsen <fj@batmule.dk>
2004-02-08 09:39:02 +00:00
Poul-Henning Kamp
3aa5a3ad90
We don't need to hold Giant to create the worker kthread.
2004-02-07 23:01:17 +00:00
Pawel Jakub Dawidek
12047230cd
Allow decreasing access count even if there is no disk anymore.
...
This will allow closing disks that were removed while opened.
Approved by: phk, scottl (mentor)
2004-02-06 23:10:49 +00:00
Lukas Ertl
5b2f81ec4b
Fix memory leak.
...
PR: kern/58634
Submitted by: le
Approved by: phk
2004-02-06 22:51:04 +00:00
Poul-Henning Kamp
0ed4f6a180
Allow a GEOM class to unload if it has no geoms or a method function to
...
get rid of them.
Prodded by: pjd
2004-02-02 19:49:41 +00:00
Pawel Jakub Dawidek
cff2ddaeb2
- Use proper names in KASSERTs.
...
- Typos.
Approved by: phk, scottl (mentor)
2004-02-02 17:50:09 +00:00
Poul-Henning Kamp
abc2e0fd56
Check error return from g_clone_bio(). (netchild@)
...
Rearrange code to avoid duplication (phk@)
Submitted by: netchild@
2004-02-02 13:36:06 +00:00
Poul-Henning Kamp
793ffa8e55
Don't mingle malloc/g_event flags.
...
Spotted by: pjd@
2004-02-02 10:58:07 +00:00
Poul-Henning Kamp
5fcf4e4398
Bring back the geom_bioqueues, they _are_ a good idea.
...
ATA will uses these RSN.
2004-01-28 08:39:18 +00:00
Poul-Henning Kamp
57ab2e0468
Make sure to keep track of canceled events.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-23 21:09:38 +00:00
Poul-Henning Kamp
799426f877
Add KASSERTS.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-23 21:02:49 +00:00
Poul-Henning Kamp
f5b3481451
Plug an insignificant memoryleak.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-23 20:40:25 +00:00
Poul-Henning Kamp
752e0f0196
Add missing newline in printf.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-23 20:36:21 +00:00
Poul-Henning Kamp
bbf53bc053
Remove the MD5_KEY debugging tool
2004-01-23 11:47:06 +00:00
Poul-Henning Kamp
8cae62eee9
Remove no longer necessary debug printfs
2004-01-23 10:56:16 +00:00
Poul-Henning Kamp
cbb650409c
Print the correct pointer in a KASSERT.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-11 10:02:42 +00:00
Poul-Henning Kamp
cfa35456ca
KASSERT against no-op access requests.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2004-01-09 16:10:32 +00:00
Poul-Henning Kamp
8592d7a760
Prevent withering of the provider we're orphaning from happening until
...
we do it ourselves.
Nailed by: Simon Heath <heath@cng.fr>
2003-12-23 11:37:05 +00:00
Don Lewis
2cf0d8a6ef
Correct usage of mtx_init() API. This is not a functional change since
...
the code happened to work because MTX_DEF and NULL are both defined as 0.
Reviewed by: phk
2003-12-07 23:20:53 +00:00
Poul-Henning Kamp
d0265773dc
KASSERT against multiple orphanings of providers.
2003-12-07 10:04:43 +00:00
Scott Long
774114995e
Re-arrange and consolidate some random debugging stuff
2003-12-07 05:04:49 +00:00
Poul-Henning Kamp
0ecc7670a9
Call class->init() an class->fini() while the class is hooked up,
...
rather than right before and right after. This allows these routines
to manipulate the mesh.
KASSERT that nobody creates a geom on an alien class.
Assert topology in g_valid_obj().
Approved by: re@
2003-11-18 18:17:39 +00:00
Poul-Henning Kamp
e0d617c1f7
Fix a harmless bug and add a ')' in a debugging printf.
...
Submitted by: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
2003-11-18 07:54:12 +00:00
Poul-Henning Kamp
b3ecca4d0a
This is a crude bandaid for 5.2 to protect against providers which disappear
...
while being tasted. I can moderately easy trigger this with atapi-cd, but
I do not fully understand the circumstances.
2003-11-15 18:44:43 +00:00
Poul-Henning Kamp
c12ec49eda
Make sure to return errors if we have any.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2003-11-12 09:46:54 +00:00
Poul-Henning Kamp
7b3c545769
Close the right consumers if we run into trouble opening them all.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2003-10-24 18:47:31 +00:00
Poul-Henning Kamp
87ac8d11c2
Fix two old/new consumer confusions.
...
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2003-10-24 18:46:23 +00:00
Poul-Henning Kamp
d55b513f6e
Fix a braino memory leak.
...
Found by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
2003-10-22 20:28:46 +00:00
Poul-Henning Kamp
43bff1a7ab
Forgotten commit: If a provider has zero sectorsize, it is an
...
indication of lack of media.
Tripped up: peter
2003-10-22 06:32:20 +00:00
Poul-Henning Kamp
d1b8bf476c
Remove KASSERT check for negative bio_offsets, add "normal" EIO
...
error return for same.
2003-10-19 19:06:54 +00:00
Poul-Henning Kamp
3916828f7b
Retire bio_blkno entirely.
...
bio_offset is the field drivers should use.
bio_pblkno remains as a convenient place to store the number of
the device drivers.
2003-10-18 17:53:34 +00:00
Poul-Henning Kamp
e83d1f3b9c
Assume that bp->bio_offset is correctly initialized.
...
This fixes non-power-of-2 blocksize GEOM I/O.
2003-10-12 11:35:55 +00:00
Poul-Henning Kamp
b144e6ffeb
Destroy providers maked with G_PF_WITHER when the last consumer has detached.
2003-10-12 11:34:35 +00:00
Poul-Henning Kamp
f4db0cbe58
Interior decoration changes.
2003-10-07 09:28:07 +00:00
Poul-Henning Kamp
f7eeab176c
Allow our bio tools to be used for local bio-chopping by not mandating
...
a bio_from value. bio_to is still mandated (mostly for debuggign) and
shall be copied from the parent bio.
2003-10-06 09:07:35 +00:00
Poul-Henning Kamp
90916ef730
Introduce a per provider wither flag
2003-10-06 09:05:44 +00:00
Poul-Henning Kamp
5774cead7a
Return ENODEV in case the driver has no dump routine.
2003-09-29 07:44:23 +00:00
Poul-Henning Kamp
70cd771337
The present defaults for the open and close for device drivers which
...
provide no methods does not make any sense, and is not used by any
driver.
It is a pretty hard to come up with even a theoretical concept of
a device driver which would always fail open and close with ENODEV.
Change the defaults to be nullopen() and nullclose() which simply
does nothing.
Remove explicit initializations to these from the drivers which
already used them.
2003-09-27 12:01:01 +00:00
Poul-Henning Kamp
3eb6ffdf43
Add more KASSERTS().
2003-09-26 20:52:46 +00:00
Poul-Henning Kamp
eb98005f8d
Be more careful in dumpconf: softc may be NULL for departing devices.
...
Allow drivers to initialize the d_devstat if they want magic params.
2003-09-23 07:53:59 +00:00
Poul-Henning Kamp
e060b6bd03
Reorder a couple of KASSERTS to give more sensible messages.
...
Found by: GEOM 101 class of '03
2003-09-11 00:49:02 +00:00
Poul-Henning Kamp
d5ce9dac89
Correct bzero length so we clear the entire key structure.
2003-09-08 18:35:26 +00:00
Poul-Henning Kamp
a8c1568e29
Bzero the right number of bytes.
...
Found by: Juergen Buchmueller <pullmoll@stop1984.com>
2003-09-06 18:37:17 +00:00
Poul-Henning Kamp
f03bec944d
Make sure to return ENOIOCTL if the ioctl is not handled.
2003-09-04 21:23:46 +00:00
Poul-Henning Kamp
497c334767
Simplify the ioctl handling in GEOM.
...
This replaces the current ioctl processing with a direct call path
from geom_dev() where the ioctl arrives (from SPECFS) to any directly
connected GEOM class.
The inverse of the above is no longer supported. This is the
situation were you have one or more intervening GEOM classes, for
instance a BSDlabel on top of a MBR or PC98. If you want to issue
MBR or PC98 specific ioctls, you will need to issue them on a MBR
or PC98 providers.
This paves the way for inviting CD's, FD's and other special cases
inside GEOM.
2003-09-01 20:45:32 +00:00
Poul-Henning Kamp
ce1ee7895e
Try to close the race between disk_destroy() and a subsequent disk_create().
2003-09-01 12:03:13 +00:00
Poul-Henning Kamp
bff1e2999d
Add the new g_dev_getprovider() function, the swap_pager needs it now.
...
Spotted by: mr
2003-08-30 18:33:55 +00:00
Paul Saab
e65b213768
Change the the size fields to daddr_t to support greater than 2TB ccd volumes.
...
Reviewed by: phk
2003-08-22 11:21:06 +00:00
Poul-Henning Kamp
f63679713e
Make CCD unloadable.
2003-08-22 11:04:47 +00:00
Poul-Henning Kamp
1f75de94ea
Don't panic over the fact that unloading failed if we already knew that.
2003-08-22 11:00:54 +00:00
Poul-Henning Kamp
e30b2eda02
Block all GETATTR calls hitting the CCD, we wouldn't know which child
...
device should handle them.
This prevents for instance GEOM::ioctl requests from reaching a
lower BSDlabel node, which ps@ found would confuse newfs(8).
2003-08-22 10:28:19 +00:00
Poul-Henning Kamp
92b5e86ebf
Check for null softc pointers, these happens when a ccd is withering.
...
Found by: David Schultz <dschultz@OCF.Berkeley.EDU>
2003-08-22 10:22:46 +00:00
Poul-Henning Kamp
4ba5a129c5
Replace a panic with a .1Hz retry loop.
...
Not a perfect solution, but far cheaper than one.
2003-08-13 12:35:25 +00:00
Poul-Henning Kamp
f0ffd81bc2
In case we encounter a zero sectorsize provider in g_io_check(), fail
...
the request with a printf rather than a divide by zero error.
2003-08-13 06:42:56 +00:00
Poul-Henning Kamp
a35006e814
Kick Giant compatibility one layer up.
2003-08-02 10:11:58 +00:00
Poul-Henning Kamp
114ebb2f28
Fix a memory leak in CCD's mirror code.
2003-07-29 20:04:06 +00:00
Poul-Henning Kamp
3f5187f276
Implement DOSPTYP_EXTLBA more completely: loop until we find no more
...
partitions.
Submitted by: Rudolf Cejka <cejkar@fit.vutbr.cz>
PR: 53719
2003-07-29 10:09:13 +00:00
Poul-Henning Kamp
d32622aaee
Handle geoms which are withering away specially in the dump functions.
2003-07-08 21:12:40 +00:00
Poul-Henning Kamp
fd02a4233e
Only dump 512 bytes of debugging.
...
Always wait for things to settle before returning.
2003-07-02 08:07:07 +00:00
Poul-Henning Kamp
44be139bbb
Sleep on "-" in our normal state to simplify debugging.
2003-06-18 10:33:09 +00:00
Poul-Henning Kamp
22db1e9ff5
Add "GEOM_FOX", a class which detects and selects between multiple
...
redundant paths to the same device.
This class reacts to a label in the first sector of the device,
which is created the following way:
# "0123456789abcdef012345..."
# "<----magic-----><-id-...>
echo "GEOM::FOX someid" | dd of=/dev/da0 conv=sync
NB: Since the fact that multiple disk devices are in fact the same
device is not known to GEOM, the geom taste/spoil process cannot
fully catch all corner cases and this module can therefore be
confused if you do the right wrong things.
NB: The disk level drivers need to do the right thing for this to
be useful, and that is not by definition currently the case.
2003-06-18 09:29:28 +00:00
David E. O'Brien
50b1faef38
Use __FBSDID().
...
Approved by: phk
2003-06-11 06:49:16 +00:00
Poul-Henning Kamp
ec421aec25
Fix error handling for ENOMEM style issues.
2003-06-09 19:12:19 +00:00
Poul-Henning Kamp
84c080a85e
Improve the root-dev prompt facility for printing devices which could
...
possibly be a root filesystem.
2003-06-07 15:46:53 +00:00
Poul-Henning Kamp
ac2ba9e3d5
Wait for everything to settle before we try to print the list of
...
geom devices.
2003-06-07 15:32:09 +00:00
Poul-Henning Kamp
b61e8fed30
Make sure we return an error message if the geom parameter is not
...
located.
2003-06-07 15:31:44 +00:00
Poul-Henning Kamp
c44c213f24
Polishing and nitpicking.
2003-06-07 11:06:44 +00:00
Poul-Henning Kamp
df2c3922e9
Drop a memory-corruption debugging test-tool.
2003-06-07 10:55:48 +00:00
Poul-Henning Kamp
a1a9b44569
Add missing va_end() calls.
...
Noticed by: tmm
2003-06-07 10:16:53 +00:00
Poul-Henning Kamp
d6c5e71627
Introduce g_provider_by_name() function, and use it.
2003-06-04 18:17:52 +00:00
Poul-Henning Kamp
3a3fcd72dd
Make this a true GEOM class:
...
Attach to the component devices using GEOM semantics.
Create a GEOM provider instead of using disk_create()
Use the GEOM OAM api for configuration.
I saw approx ~1% speedup in througput and ~7% in latency in a
simple minded test of a two-disk striped device.
This file was repo-copied from src/sys/dev/ccd/ccd.c.
This is not yet linked into the build.
2003-06-04 18:16:09 +00:00
Poul-Henning Kamp
ce64e0f2c9
Add a KASSERT to prevent the same GEOM class from being processed loaded
...
twice.
Enforce that classes should have different names while we are here.
2003-06-04 17:51:10 +00:00
Poul-Henning Kamp
0f557e0ac0
Further devilification of CCD:
...
Change the list interface to simplify things.
Remove old list ioctls which bogusly exported the softc to userland.
Move the softc and associated structures from the public header to
the source file.
2003-06-02 21:29:04 +00:00
Poul-Henning Kamp
189337d81f
Begin deevilification of CCD:
...
Make CCD a GEOM class.
For now only use this for implementing a OAM config method which
can return a list of configured CCD devices in the format which
"ccdconfig -g[v]" would normally output.
2003-06-02 20:50:03 +00:00
Poul-Henning Kamp
786a6905ec
Return an indicative error message.
2003-06-02 20:35:37 +00:00
Poul-Henning Kamp
83d771de78
Simplify the GEOM OAM api: Drop the request type, and let everything
...
hinge on the "verb" parameter which the class gets to interpret as
it sees fit.
Move the entire request into the kernel and move changed parameters
back when done.
2003-06-01 13:47:51 +00:00
Poul-Henning Kamp
a6c58fec6c
constify g_sanity()
2003-06-01 13:30:39 +00:00
Poul-Henning Kamp
58223589d5
Use bcmp() to compare hash strings.
2003-06-01 09:18:49 +00:00
Poul-Henning Kamp
b77052e617
Remove unused variable.
...
Remove unneeded return;
Found by: FlexeLint
2003-05-31 19:41:33 +00:00
Poul-Henning Kamp
3bae8877f4
Remove unused variables.
...
Found by: FlexeLint
2003-05-31 19:40:43 +00:00
Poul-Henning Kamp
7fd69a8064
Remove unused variables.
...
Rename struct h0h0 to g_hh01 in order to make it unique over files.
Found by: FlexeLint
2003-05-31 19:37:21 +00:00
Poul-Henning Kamp
c543626797
Remove unused variables.
...
Remove #ifdef notyet which will never become.
Found by: FlexeLint
2003-05-31 19:30:52 +00:00
Poul-Henning Kamp
23bfa598a8
Remove unused variable.
...
Remove unneeded return.
Found by: FlexeLint
2003-05-31 19:29:38 +00:00
Poul-Henning Kamp
68283a9b5a
Remove unused variable.
...
Found by: FlexeLint
2003-05-31 19:28:53 +00:00
Poul-Henning Kamp
ce67c955ca
Add a destroy_geom method to the slice "library".
...
If a slice class has no destroy_geom method, use this one.
This should allow all slicers to kldload.
2003-05-31 19:25:05 +00:00
Poul-Henning Kamp
fc29c9de5c
Don't use & in front of arrays.
...
Found by: FlexeLint
2003-05-31 19:23:11 +00:00
Poul-Henning Kamp
a980e07369
Remove unused variable.
...
Found by: FlexeLint
2003-05-31 19:08:23 +00:00
Poul-Henning Kamp
d6b602d4b2
Remove unused variable.
...
Found by: FlexeLint
2003-05-31 18:55:18 +00:00
Poul-Henning Kamp
6c87f8d5ea
Introduce a init and fini member functions on a class.
...
Use ->init() and ->fini() to handle the mutex in geom_disk.c
Remove the g_add_class() function and replace it with a standardized
g_modevent() function.
This adds the basic infrastructure for loading/unloading GEOM classes
2003-05-31 18:13:07 +00:00
Poul-Henning Kamp
f075585f67
Remove the G_CLASS_INITIALIZER, we do not need it anymore.
2003-05-31 16:59:27 +00:00
Poul-Henning Kamp
7e28a78f0e
Use le_uuid_dec() since GPT UUID's are always in LE format.
...
Tested by: Marcel
2003-05-31 16:48:43 +00:00
Poul-Henning Kamp
43f0db6cc5
Don't do silly thing if the disk_create() event gets canceled.
...
Approved by: re/scottl
2003-05-25 16:57:10 +00:00
Poul-Henning Kamp
67fd2837cd
Return ENXIO if the softc pointer is NULL, in all likelyhood the
...
disk is in the process of disappearing.
Approved by: re/rwats*
2003-05-21 18:52:29 +00:00