Poul-Henning Kamp
3daf7274a1
Style improvement.
2003-05-02 12:57:40 +00:00
Poul-Henning Kamp
3110102a73
Use g_wither_geom() and plug memory leaks.
2003-05-02 12:52:51 +00:00
Poul-Henning Kamp
3e7b7bb1cb
Plug memory leaks.
2003-05-02 12:49:41 +00:00
Poul-Henning Kamp
5ffb2c8bfd
Use an uma-zone for allocation bio requests.
2003-05-02 12:36:12 +00:00
Poul-Henning Kamp
c9c29450f5
Use g_slice_spoiled() instead of g_std_spoiled().
...
Add XXX comment about minor memory leak until I can fix it.
2003-05-02 08:33:26 +00:00
Poul-Henning Kamp
7da144d91c
Use g_slice_spoiled() instead of g_std_spoiled().
2003-05-02 08:21:02 +00:00
Poul-Henning Kamp
a0c89548a3
Use g_slice_spoiled().
...
Free buffer from g_read_data().
2003-05-02 08:13:03 +00:00
Poul-Henning Kamp
c4da4e46b2
Back out all the stuff that didn't belong in the last commit.
2003-05-02 06:42:59 +00:00
Poul-Henning Kamp
e65ab0f83f
Use g_slice_spoiled() rather than g_std_spoiled().
...
Remember to free the buffer we got from g_read_data().
2003-05-02 06:36:14 +00:00
Poul-Henning Kamp
4f806d2428
Use g_slice_spoiled() not g_std_spoiled()
2003-05-02 06:34:51 +00:00
Poul-Henning Kamp
28ce9efcef
Use g_slice_spoiled() rather than g_std_spoiled()
2003-05-02 06:33:59 +00:00
Poul-Henning Kamp
afec8eb8ad
Use g_slice_spoiled() rather than g_std_spoiled().
2003-05-02 06:33:26 +00:00
Poul-Henning Kamp
15649213a6
Use a more tailored spoil routine for slices, and take advantage of
...
g_wither_geom() to do most of the work for us.
2003-05-02 06:29:33 +00:00
Poul-Henning Kamp
3ddef7422c
Style improvement.
2003-05-02 06:22:48 +00:00
Poul-Henning Kamp
03af3a23dd
Use g_wither_geom() for cleanup.
2003-05-02 06:22:32 +00:00
Poul-Henning Kamp
d6227ae71f
Rework the "withering" mechanism:
...
Introduce g_wither_geom() to do the work in one single place.
2003-05-02 06:15:27 +00:00
Poul-Henning Kamp
82b53b8dc8
Rename g_slice_init() to the more appropriate g_slice_alloc() and give
...
it a g_slice_free() partner function.
2003-05-02 05:33:27 +00:00
Poul-Henning Kamp
516b02faf7
style improvement.
2003-05-02 05:26:47 +00:00
Poul-Henning Kamp
9dfffbc959
Get rid of trivial function g_destroy_event().
2003-05-02 05:26:19 +00:00
Poul-Henning Kamp
6a543b1031
Plug some memory-leaks.
2003-05-01 21:07:08 +00:00
Poul-Henning Kamp
606402511a
Remove the now obsolete geomidorname hack.
2003-05-01 20:32:24 +00:00
Poul-Henning Kamp
c8589ad169
Add a new flag, EV_CANCELED, and use it to make g_waitfor_event() return
...
EAGAIN if an event got canceled.
2003-05-01 19:43:52 +00:00
Poul-Henning Kamp
2ab31b05ba
When events on a reference is cancelled, check our doorstep first,
...
it might be an orphan.
2003-05-01 19:24:00 +00:00
Poul-Henning Kamp
e931331eaa
Remove now unneeded special case for "geom.ctl".
2003-05-01 18:18:14 +00:00
Yoshihiro Takahashi
4b4582a84c
Remove DIOCGPC98 ioctl.
2003-05-01 14:40:16 +00:00
Yoshihiro Takahashi
50cf98ed97
- Move decoding pc98_partition function into geom_pc98_enc.c.
...
- Add encoding pc98_partition function.
2003-05-01 13:44:24 +00:00
Marcel Moolenaar
b52e9eb6b6
Don't emulate a MBR by handling the MBR::type attribute. It is
...
not needed at all. The BSD class will attach to a GPT class without
it.
2003-05-01 01:51:28 +00:00
Mark Murray
51da11a27a
Fix some easy, global, lint warnings. In most cases, this means
...
making some local variables static. In a couple of cases, this means
removing an unused variable.
2003-04-30 12:57:40 +00:00
Poul-Henning Kamp
c7f3baedf3
Fix an obscure fencepost error in GBDE's sector mapping code:
...
For certain combinations of sectorsize, mediasize and random numbers
(used to define the mapping), a multisector read or write would ignore
some subset of the sectors past the first sector in the request because
those sectors would be mapped past the end of the parent device, and
normal "end of media" truncation would zap that part of the request.
Rev 1.19+1.20 of g_bde_work.c added the check which should have alerted
me to this happening. This commit maps the request correctly and
adds KASSERTS to make sure things stay inside the parent device.
This does not change the on-disk layout of GBDE, there is no need to
backup/restore.
2003-04-29 19:46:42 +00:00
Poul-Henning Kamp
a17da2aa74
Typo in last commit: Do not press xZZ to leave vi(1).
2003-04-29 19:38:55 +00:00
Poul-Henning Kamp
ca8f372bbc
When a bio comes back from below with a zero error code, check that
...
it wrote the full length. The only case where this should be able
to happen is if we try to read/write past the end and the request
is truncated. We obviously should never try to do that, so this
code should never activate.
2003-04-29 19:37:36 +00:00
Alexander Kabaev
104a9b7e3e
Deprecate machine/limits.h in favor of new sys/limits.h.
...
Change all in-tree consumers to include <sys/limits.h>
Discussed on: standards@
Partially submitted by: Craig Rodrigues <rodrigc@attbi.com>
2003-04-29 13:36:06 +00:00
Poul-Henning Kamp
90336bb4d8
I accidentally leaked this debugging tool in with my last commit.
...
Disable it with a direct warning.
2003-04-28 17:57:12 +00:00
Poul-Henning Kamp
306babd20c
Rename g_bde_get_sector() to g_bde_get_keysector() and pick up the
...
offset from the work packet.
2003-04-28 06:38:31 +00:00
Poul-Henning Kamp
11ca41a9bb
Only attempt total cache-purge once in case of failure.
2003-04-28 06:19:41 +00:00
Poul-Henning Kamp
035694b29a
Better criteria for skipping disk reading BIO_READ work packets.
2003-04-28 06:15:39 +00:00
Poul-Henning Kamp
d8e7c92c9e
Explicitly set the sector state to JUNK if we encounter a read-error.
2003-04-28 06:10:35 +00:00
Poul-Henning Kamp
c08c56e02a
Bail as soon as the first write request has failed, there is no point
...
in trying the second write if the first one went nowhere.
2003-04-26 21:40:26 +00:00
Poul-Henning Kamp
54d2011343
Appearantly UFS no longer issues BIO_DELETE requests correctly, and
...
consequently trashes data. Disable BIO_DELETE handling in gbde for now.
2003-04-26 21:39:33 +00:00
Poul-Henning Kamp
9b99e39d61
Do an explicit retry after we have dumped the cache, rather than a
...
(potential) tail recursion.
2003-04-25 21:43:11 +00:00
Poul-Henning Kamp
e8e0742ef4
If on a BIO_READ request, we failed to allocate the bio for reading
...
our key-sector, we would end up returning the read without an error,
despite the fact that the data was not correctly decrypted.
This would result in data corruption on read, but intact data still
on the media.
2003-04-25 21:28:28 +00:00
Poul-Henning Kamp
37f5e4a6c2
Fix a problem and slightly improve the ENOMEM handling:
...
Give up the entire bio as soon as we detect a problem.
When we detect a problem, give up the bio by contributing the
remainder with ENOMEM, rather than kicking the bio back right
away.
If we failed on a non-first iteration we previously could end up
modifying fields in the bio after we delivered it. This could
account for memory corruption (none directly reported) on machines
with GBDE.
2003-04-25 21:20:57 +00:00
Poul-Henning Kamp
af6b9f17f9
Don't count a sector in the cache unless we manage to create it.
2003-04-25 20:56:27 +00:00
Poul-Henning Kamp
f2314b445d
Rename g_bde_release_sector() to g_bde_release_keysector() and pick up
...
the sector from the work item.
2003-04-25 20:35:34 +00:00
Poul-Henning Kamp
195d573278
Rename g_bde_read_sector() to g_bde_read_keysector() pick up the offset
...
in the work structure.
2003-04-25 20:16:59 +00:00
Poul-Henning Kamp
0a9c130c06
Introduce a g_waitfor_event() function which posts an event and waits for
...
it to be run (or cancelled) and use this instead of home-rolled versions.
2003-04-23 21:28:27 +00:00
Poul-Henning Kamp
a974614b05
More of the event stuff can now be private to geom_event.c
2003-04-23 20:54:42 +00:00
Poul-Henning Kamp
8cd1535a24
Rename g_call_me() to g_post_event(), and give it a flag
...
argument to determine if we can M_WAITOK in malloc.
2003-04-23 20:46:12 +00:00
Poul-Henning Kamp
d98777f8db
Remove the now unused hardcoded g_post_event() event support.
2003-04-23 20:25:33 +00:00
Poul-Henning Kamp
9ab3ea7841
Turn EV_NEW_PROVIDER into a g_call_me() event.
2003-04-23 20:16:13 +00:00
Poul-Henning Kamp
f2e9a09494
Convert EV_SPOILED event to use g_call_me().
2003-04-23 20:06:38 +00:00
Poul-Henning Kamp
9972896c00
Turn the hardwired NEW_CLASS event into a g_call_me() event.
2003-04-23 19:34:38 +00:00
Poul-Henning Kamp
b5cba4167f
Move the shutdown eventhandler stuff to a more logical place.
2003-04-23 19:15:27 +00:00
Poul-Henning Kamp
bf9ab27afb
Implement CONFIG_GEOM verbs "write label" and "write bootcode".
2003-04-23 08:23:01 +00:00
Poul-Henning Kamp
ca3d750e73
Introduce gctl_get_paraml() which gets a parameter only if it has the
...
right length.
2003-04-23 08:03:47 +00:00
Poul-Henning Kamp
fb9483af54
Make gctl_error() take printfline varargs.
2003-04-23 07:50:01 +00:00
Poul-Henning Kamp
668ae29c71
Remove unused event pointers in object structures.
...
Remove KASSERTS which checked that they were unused.
2003-04-23 06:54:44 +00:00
Poul-Henning Kamp
b874183561
Change the locking so that the _modify function is called with topology
...
held.
The only place where we want to not hold topology is when we read
(or write) the label to disk: in the case of a disk error with a
long recovery time, holding topology would prevent open/close of
any disk device.
2003-04-22 21:29:58 +00:00
Poul-Henning Kamp
b09d72daf8
We don't need to have a slice->start() function.
2003-04-22 21:24:37 +00:00
Poul-Henning Kamp
d3a1a13766
Do not mandate that slicers have a private ->start(), they may not need
...
one. KASSERT() that they have one if G_SLICE_HOT_START is used.
2003-04-22 21:19:17 +00:00
Poul-Henning Kamp
ea9ab6bed2
Implement handling of CONFIG_GEOM OAM request.
2003-04-22 21:01:46 +00:00
Poul-Henning Kamp
2c30da600e
Add "CONFIG_GEOM" operation to the OAM API.
2003-04-22 21:00:49 +00:00
Poul-Henning Kamp
70b4ddbb09
Collapse meta arguments into regular arguments, the distinction is
...
more trouble than it is worth.
2003-04-22 19:42:05 +00:00
Poul-Henning Kamp
989afda211
Implement a hotspot for the sunlabel.
...
This means that you can no longer trash your opened partitions by writing to
the sunlabel through another partition. This is similar to the semantics
implemented for BSD labels.
2003-04-21 20:14:36 +00:00
Poul-Henning Kamp
666223979c
Update GEOM::SUN to use the decoding functions in geom_sunlabel_enc.c
...
and #defines from sys/sun_disklabel.h.
2003-04-21 19:54:11 +00:00
Poul-Henning Kamp
9bd6be665d
Use #defines from <sys/sun_disklabel.h> instead of private ones.
2003-04-21 19:42:36 +00:00
Poul-Henning Kamp
941a2f8cb5
Functions to encode and decode Sun Microsystems disk partitioning data
...
structures.
Mostly by: jake
2003-04-21 18:41:12 +00:00
Poul-Henning Kamp
7220a9e779
Make more of the "hotspot" stuff generic:
...
Give the class a way to specify the necessary action for read/delete/write:
ALLOW, DENY, START or CALL.
Update geom_bsd to use this.
2003-04-19 10:14:39 +00:00
Poul-Henning Kamp
183a45f65e
Create a dedicated structure for holding hotspot information rather than
...
using slice structures for it.
2003-04-19 10:00:22 +00:00
Poul-Henning Kamp
c72e7314c2
These two files fell off during my previous commit: put the encoding
...
decoding functions for struct disklabel in a separate .c file.
2003-04-17 08:41:08 +00:00
Poul-Henning Kamp
7715475960
More correct patch: Only call biofinish if we have not already sent
...
any children down the mesh.
2003-04-14 08:49:54 +00:00
Poul-Henning Kamp
2f912fc976
Call biofinish() also when we get a malloc() failure.
2003-04-14 08:08:17 +00:00
Poul-Henning Kamp
3924ad705e
Time has run from the "run GEOM in userland" harness, and the new regression
...
test is built to test GEOM as running in the kernel.
This commit is basically "unifdef -D_KERNEL" to remove the mainly #include
related code to support the userland-harness.
2003-04-13 09:02:06 +00:00
Poul-Henning Kamp
537d9274dc
If we hit access ahead of a spoil event, we should have negative
...
delta access-counts and proceed.
2003-04-12 17:04:34 +00:00
Poul-Henning Kamp
2b454c0ae5
Fix a bug which resulted in orphanization getting confused every now
...
and then.
2003-04-12 16:36:19 +00:00
Poul-Henning Kamp
5f5a9022b2
Retire the experimental bio_taskqueue(), it was not quite as usable as
...
hoped. It can be revived from here, should other drivers be able to
use it.
2003-04-12 09:13:01 +00:00
Poul-Henning Kamp
0d3e96e39c
Retire the "frontstuff" record keeping, it was no match for the
...
in-band meta-data of BSD labels and a more complex solution will be needed.
2003-04-12 08:41:26 +00:00
Poul-Henning Kamp
6e03422af0
Move the functions for encoding decoding struct dos_partition into
...
a separate .c file so they can be used from userland as well.
2003-04-12 08:34:40 +00:00
Poul-Henning Kamp
cf83284fe3
Only be verbose if (bootverbose)
2003-04-09 13:52:40 +00:00
Poul-Henning Kamp
551e52efb8
With the magic sequence checks removed this class is downright dangerous
...
to have in your kernel since it indiscriminately attaches to anything
it is offered with a range of bogus partitions.
Stop this from happening by rejecting any label with negative numbers in
it.
2003-04-09 13:08:36 +00:00
Poul-Henning Kamp
13ac082b26
Correctly split cyl/sects bytes when we print them.
2003-04-09 09:21:33 +00:00
Poul-Henning Kamp
2692cc08db
Style issue: use do {...} while(0); for multi-exit section.
2003-04-09 08:56:26 +00:00
Poul-Henning Kamp
63f253709f
Retire the DIOCGMBR ioctl before anybody starts to use it.
2003-04-03 19:37:40 +00:00
Poul-Henning Kamp
4eba52a2d2
Remove all references to BIO_SETATTR. We will not be using it.
2003-04-03 19:19:36 +00:00
Poul-Henning Kamp
ab0ff32ea1
Update the initializer for GEOM_MBREXT, I overlooked it previously.
2003-04-03 19:05:03 +00:00
Poul-Henning Kamp
4c763c77dc
Add #define for DOSPTYP_PMBR, and use it.
2003-04-03 18:55:16 +00:00
Poul-Henning Kamp
76c4109ebb
#include <sys/endian.h> as needed.
2003-04-03 11:56:10 +00:00
Poul-Henning Kamp
4d3651f456
Remove geom_enc.c, a superset of these functions are now available in
...
<sys/endian.h>
2003-04-03 11:40:06 +00:00
Poul-Henning Kamp
d8cb8a5137
Use <sys/endian.h> instead of geom_enc.c for endianess-agnostification.
2003-04-03 11:36:53 +00:00
Poul-Henning Kamp
82db45a5af
Use sys/endian.h instead of geom_enc.c for endian-agnostfication.
2003-04-03 11:33:51 +00:00
Poul-Henning Kamp
68f156409e
Make sure we don't ignore error codes.
2003-04-03 11:19:24 +00:00
Poul-Henning Kamp
316aed030e
Add handling for cancelled events in the g_call_me() methods.
2003-04-02 21:10:04 +00:00
Poul-Henning Kamp
afcbcfaed0
Change events to have an array of "void *" references, and give the
...
event posting functions varargs to fill these.
Attribute g_call_me() to appropriate g_geom's where necessary.
Add a flag argument to g_call_me() methods which will be used to signal
cancellation of events in the future.
This commit should be a no-op.
2003-04-02 20:41:18 +00:00
Poul-Henning Kamp
8f6da0e4ac
Only orphan things if the open/close actually succeeded.
2003-04-02 13:10:40 +00:00
Poul-Henning Kamp
c7e1925c7c
Properly handle races between open/close and orphan.
...
KASSERT the race between close and strategy, it is an error in the upper
echelons if this happens,
Add XXX: comment explaining why the ioctl/orphan race is not closed.
2003-04-02 13:09:50 +00:00
Poul-Henning Kamp
4752f7570a
Include <geom/geom_disk.h> not <sys/disk.h>
2003-04-01 18:57:14 +00:00
Poul-Henning Kamp
891619a66d
Use bioq_flush() to drain a bio queue with a specific error code.
...
Retain the mistake of not updating the devstat API for now.
Spell bioq_disksort() consistently with the remaining bioq_*().
#include <geom/geom_disk.h> where this is more appropriate.
2003-04-01 15:06:26 +00:00
Poul-Henning Kamp
7c79beb3ce
Start to split the GEOM/diskdriver specific bits into geom/geom_disk.h
2003-04-01 13:19:14 +00:00
Poul-Henning Kamp
4a1e273c48
Remove the old config interface, the new OAM is sufficiently functional
...
now.
2003-04-01 07:33:56 +00:00
Poul-Henning Kamp
dfb99a70d8
Remove the old config interface now that the new OAM is functional.
2003-04-01 07:33:17 +00:00