diff options
| author | 2009-05-11 14:06:21 +0000 | |
|---|---|---|
| committer | 2009-05-11 14:06:21 +0000 | |
| commit | edc270ae040563c3429b1d74ef5ddac36f0b2432 (patch) | |
| tree | 507f1e983fa79d0ccfbce7ec883030525e74408d /sys/dev/softraid.c | |
| parent | Better config for v7. (diff) | |
| download | wireguard-openbsd-edc270ae040563c3429b1d74ef5ddac36f0b2432.tar.xz wireguard-openbsd-edc270ae040563c3429b1d74ef5ddac36f0b2432.zip | |
Move the discipline initialisation code into discipline specific functions,
rather than initialising everything in softraid.c. This makes a discipline
more self-contained and reduces the number of function declarations needed
in softraidvar.h.
ok marco@
Diffstat (limited to 'sys/dev/softraid.c')
| -rw-r--r-- | sys/dev/softraid.c | 106 |
1 files changed, 8 insertions, 98 deletions
diff --git a/sys/dev/softraid.c b/sys/dev/softraid.c index 00b6f5282fd..f5a5dbc8339 100644 --- a/sys/dev/softraid.c +++ b/sys/dev/softraid.c @@ -1,4 +1,4 @@ -/* $OpenBSD: softraid.c,v 1.131 2009/04/29 00:52:30 marco Exp $ */ +/* $OpenBSD: softraid.c,v 1.132 2009/05/11 14:06:21 jsing Exp $ */ /* * Copyright (c) 2007 Marco Peereboom <marco@peereboom.us> * Copyright (c) 2008 Chris Kuethe <ckuethe@openbsd.org> @@ -2272,114 +2272,24 @@ sr_discipline_init(struct sr_discipline *sd, int level) switch (level) { case 0: - /* fill out discipline members */ - sd->sd_type = SR_MD_RAID0; - sd->sd_max_ccb_per_wu = - (MAXPHYS / sd->sd_meta->ssdi.ssd_strip_size + 1) * - SR_RAID0_NOWU * sd->sd_meta->ssdi.ssd_chunk_no; - sd->sd_max_wu = SR_RAID0_NOWU; - - /* setup discipline pointers */ - sd->sd_alloc_resources = sr_raid0_alloc_resources; - sd->sd_free_resources = sr_raid0_free_resources; - sd->sd_start_discipline = NULL; - sd->sd_scsi_inquiry = sr_raid_inquiry; - sd->sd_scsi_read_cap = sr_raid_read_cap; - sd->sd_scsi_tur = sr_raid_tur; - sd->sd_scsi_req_sense = sr_raid_request_sense; - sd->sd_scsi_start_stop = sr_raid_start_stop; - sd->sd_scsi_sync = sr_raid_sync; - sd->sd_scsi_rw = sr_raid0_rw; - sd->sd_set_chunk_state = sr_raid0_set_chunk_state; - sd->sd_set_vol_state = sr_raid0_set_vol_state; + sr_raid0_discipline_init(sd); break; case 1: - /* fill out discipline members */ - sd->sd_type = SR_MD_RAID1; - sd->sd_max_ccb_per_wu = sd->sd_meta->ssdi.ssd_chunk_no; - sd->sd_max_wu = SR_RAID1_NOWU; - - /* setup discipline pointers */ - sd->sd_alloc_resources = sr_raid1_alloc_resources; - sd->sd_free_resources = sr_raid1_free_resources; - sd->sd_start_discipline = NULL; - sd->sd_scsi_inquiry = sr_raid_inquiry; - sd->sd_scsi_read_cap = sr_raid_read_cap; - sd->sd_scsi_tur = sr_raid_tur; - sd->sd_scsi_req_sense = sr_raid_request_sense; - sd->sd_scsi_start_stop = sr_raid_start_stop; - sd->sd_scsi_sync = sr_raid_sync; - sd->sd_scsi_rw = sr_raid1_rw; - sd->sd_set_chunk_state = sr_raid1_set_chunk_state; - sd->sd_set_vol_state = sr_raid1_set_vol_state; + sr_raid1_discipline_init(sd); break; #ifdef AOE - /* target */ + /* AOE target. */ case 'A': - /* fill out discipline members */ - sd->sd_type = SR_MD_AOE_TARG; - sd->sd_max_ccb_per_wu = sd->sd_meta->ssdi.ssd_chunk_no; - sd->sd_max_wu = SR_RAIDAOE_NOWU; - - /* setup discipline pointers */ - sd->sd_alloc_resources = sr_aoe_server_alloc_resources; - sd->sd_free_resources = sr_aoe_server_free_resources; - sd->sd_start_discipline = sr_aoe_server_start; - sd->sd_scsi_inquiry = NULL; - sd->sd_scsi_read_cap = NULL; - sd->sd_scsi_tur = NULL; - sd->sd_scsi_req_sense = NULL; - sd->sd_scsi_start_stop = NULL; - sd->sd_scsi_sync = NULL; - sd->sd_scsi_rw = NULL; - sd->sd_set_chunk_state = NULL; - sd->sd_set_vol_state = NULL; - disk = 0; /* we are not a disk */ + sr_aoe_server_discipline_init(sd); break; + /* AOE initiator. */ case 'a': - /* initiator */ - /* fill out discipline members */ - sd->sd_type = SR_MD_AOE_INIT; - sd->sd_max_ccb_per_wu = sd->sd_meta->ssdi.ssd_chunk_no; - sd->sd_max_wu = SR_RAIDAOE_NOWU; - - /* setup discipline pointers */ - sd->sd_alloc_resources = sr_aoe_alloc_resources; - sd->sd_free_resources = sr_aoe_free_resources; - sd->sd_start_discipline = NULL; - sd->sd_scsi_inquiry = sr_raid_inquiry; - sd->sd_scsi_read_cap = sr_raid_read_cap; - sd->sd_scsi_tur = sr_raid_tur; - sd->sd_scsi_req_sense = sr_raid_request_sense; - sd->sd_scsi_start_stop = sr_raid_start_stop; - sd->sd_scsi_sync = sr_raid_sync; - sd->sd_scsi_rw = sr_aoe_rw; - /* XXX reuse raid 1 functions for now FIXME */ - sd->sd_set_chunk_state = sr_raid1_set_chunk_state; - sd->sd_set_vol_state = sr_raid1_set_vol_state; + sr_aoe_discipline_init(sd); break; #endif #ifdef CRYPTO case 'C': - /* fill out discipline members */ - sd->sd_type = SR_MD_CRYPTO; - sd->sd_max_ccb_per_wu = sd->sd_meta->ssdi.ssd_chunk_no; - sd->sd_max_wu = SR_CRYPTO_NOWU; - - /* setup discipline pointers */ - sd->sd_alloc_resources = sr_crypto_alloc_resources; - sd->sd_free_resources = sr_crypto_free_resources; - sd->sd_start_discipline = NULL; - sd->sd_scsi_inquiry = sr_raid_inquiry; - sd->sd_scsi_read_cap = sr_raid_read_cap; - sd->sd_scsi_tur = sr_raid_tur; - sd->sd_scsi_req_sense = sr_raid_request_sense; - sd->sd_scsi_start_stop = sr_raid_start_stop; - sd->sd_scsi_sync = sr_raid_sync; - sd->sd_scsi_rw = sr_crypto_rw; - /* XXX reuse raid 1 functions for now FIXME */ - sd->sd_set_chunk_state = sr_raid1_set_chunk_state; - sd->sd_set_vol_state = sr_raid1_set_vol_state; + sr_crypto_discipline_init(sd); break; #endif default: |
