Lines Matching refs:sd

105 sr_crypto_discipline_init(struct sr_discipline *sd)  in sr_crypto_discipline_init()  argument
110 sd->sd_wu_size = sizeof(struct sr_crypto_wu); in sr_crypto_discipline_init()
111 sd->sd_type = SR_MD_CRYPTO; in sr_crypto_discipline_init()
112 strlcpy(sd->sd_name, "CRYPTO", sizeof(sd->sd_name)); in sr_crypto_discipline_init()
113 sd->sd_capabilities = SR_CAP_SYSTEM_DISK | SR_CAP_AUTO_ASSEMBLE; in sr_crypto_discipline_init()
114 sd->sd_max_wu = SR_CRYPTO_NOWU; in sr_crypto_discipline_init()
117 sd->mds.mdd_crypto.scr_sid[i] = (u_int64_t)-1; in sr_crypto_discipline_init()
120 sd->sd_alloc_resources = sr_crypto_alloc_resources; in sr_crypto_discipline_init()
121 sd->sd_assemble = sr_crypto_assemble; in sr_crypto_discipline_init()
122 sd->sd_create = sr_crypto_create; in sr_crypto_discipline_init()
123 sd->sd_free_resources = sr_crypto_free_resources; in sr_crypto_discipline_init()
124 sd->sd_ioctl_handler = sr_crypto_ioctl; in sr_crypto_discipline_init()
125 sd->sd_meta_opt_handler = sr_crypto_meta_opt_handler; in sr_crypto_discipline_init()
126 sd->sd_scsi_rw = sr_crypto_rw; in sr_crypto_discipline_init()
127 sd->sd_scsi_done = sr_crypto_done; in sr_crypto_discipline_init()
131 sr_crypto_create(struct sr_discipline *sd, struct bioc_createraid *bc, in sr_crypto_create() argument
137 sr_error(sd->sd_sc, "%s requires exactly one chunk", in sr_crypto_create()
138 sd->sd_name); in sr_crypto_create()
142 sd->sd_meta->ssdi.ssd_size = coerced_size; in sr_crypto_create()
144 rv = sr_crypto_meta_create(sd, &sd->mds.mdd_crypto, bc); in sr_crypto_create()
148 sd->sd_max_ccb_per_wu = no_chunk; in sr_crypto_create()
153 sr_crypto_meta_create(struct sr_discipline *sd, struct sr_crypto *mdd_crypto, in sr_crypto_meta_create() argument
159 if (sd->sd_meta->ssdi.ssd_size > SR_CRYPTO_MAXSIZE) { in sr_crypto_meta_create()
160 sr_error(sd->sd_sc, "%s exceeds maximum size (%lli > %llu)", in sr_crypto_meta_create()
161 sd->sd_name, sd->sd_meta->ssdi.ssd_size, in sr_crypto_meta_create()
173 SLIST_INSERT_HEAD(&sd->sd_meta_opt, omi, omi_link); in sr_crypto_meta_create()
175 sd->sd_meta->ssdi.ssd_opt_no++; in sr_crypto_meta_create()
182 if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_meta_create()
185 sr_crypto_create_key_disk(sd, mdd_crypto, bc->bc_key_disk); in sr_crypto_meta_create()
188 sd->sd_capabilities |= SR_CAP_AUTO_ASSEMBLE; in sr_crypto_meta_create()
197 } else if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_meta_create()
204 sr_crypto_create_keys(sd, mdd_crypto); in sr_crypto_meta_create()
212 sr_crypto_set_key(struct sr_discipline *sd, struct sr_crypto *mdd_crypto, in sr_crypto_set_key() argument
230 sr_crypto_read_key_disk(sd, mdd_crypto, bc->bc_key_disk); in sr_crypto_set_key()
252 if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_set_key()
264 sr_crypto_assemble(struct sr_discipline *sd, in sr_crypto_assemble() argument
269 rv = sr_crypto_set_key(sd, &sd->mds.mdd_crypto, bc, no_chunk, data); in sr_crypto_assemble()
273 sd->sd_max_ccb_per_wu = sd->sd_meta->ssdi.ssd_chunk_no; in sr_crypto_assemble()
343 sr_crypto_get_kdf(struct bioc_createraid *bc, struct sr_discipline *sd, in sr_crypto_get_kdf() argument
469 sr_crypto_decrypt_key(struct sr_discipline *sd, struct sr_crypto *mdd_crypto) in sr_crypto_decrypt_key() argument
474 DNPRINTF(SR_D_DIS, "%s: sr_crypto_decrypt_key\n", DEVNAME(sd->sd_sc)); in sr_crypto_decrypt_key()
512 sr_crypto_create_keys(struct sr_discipline *sd, struct sr_crypto *mdd_crypto) in sr_crypto_create_keys() argument
516 DEVNAME(sd->sd_sc)); in sr_crypto_create_keys()
554 sr_crypto_change_maskkey(struct sr_discipline *sd, struct sr_crypto *mdd_crypto, in sr_crypto_change_maskkey() argument
563 DEVNAME(sd->sd_sc)); in sr_crypto_change_maskkey()
586 sr_error(sd->sd_sc, "incorrect key or passphrase"); in sr_crypto_change_maskkey()
634 sr_crypto_create_key_disk(struct sr_discipline *sd, in sr_crypto_create_key_disk() argument
637 struct sr_softc *sc = sd->sd_sc; in sr_crypto_create_key_disk()
702 km->scmi.scm_volid = sd->sd_meta->ssdi.ssd_level; in sr_crypto_create_key_disk()
707 memcpy(&km->scmi.scm_uuid, &sd->sd_meta->ssdi.ssd_uuid, in sr_crypto_create_key_disk()
724 memcpy(&sm->ssdi.ssd_uuid, &sd->sd_meta->ssdi.ssd_uuid, in sr_crypto_create_key_disk()
738 fakesd->sd_sc = sd->sd_sc; in sr_crypto_create_key_disk()
797 sr_crypto_read_key_disk(struct sr_discipline *sd, struct sr_crypto *mdd_crypto, in sr_crypto_read_key_disk() argument
800 struct sr_softc *sc = sd->sd_sc; in sr_crypto_read_key_disk()
858 if (sr_meta_native_read(sd, dev, sm, NULL)) { in sr_crypto_read_key_disk()
863 if (sr_meta_validate(sd, dev, sm, NULL)) { in sr_crypto_read_key_disk()
920 sr_crypto_free_sessions(struct sr_discipline *sd, struct sr_crypto *mdd_crypto) in sr_crypto_free_sessions() argument
933 sr_crypto_alloc_resources_internal(struct sr_discipline *sd, in sr_crypto_alloc_resources_internal() argument
942 DEVNAME(sd->sd_sc)); in sr_crypto_alloc_resources_internal()
953 sr_error(sd->sd_sc, "unknown crypto algorithm"); in sr_crypto_alloc_resources_internal()
960 if (sr_wu_alloc(sd)) { in sr_crypto_alloc_resources_internal()
961 sr_error(sd->sd_sc, "unable to allocate work units"); in sr_crypto_alloc_resources_internal()
964 if (sr_ccb_alloc(sd)) { in sr_crypto_alloc_resources_internal()
965 sr_error(sd->sd_sc, "unable to allocate CCBs"); in sr_crypto_alloc_resources_internal()
968 if (sr_crypto_decrypt_key(sd, mdd_crypto)) { in sr_crypto_alloc_resources_internal()
969 sr_error(sd->sd_sc, "incorrect key or passphrase"); in sr_crypto_alloc_resources_internal()
979 TAILQ_FOREACH(wu, &sd->sd_wu, swu_next) { in sr_crypto_alloc_resources_internal()
993 num_keys = ((sd->sd_meta->ssdi.ssd_size - 1) >> in sr_crypto_alloc_resources_internal()
1001 sr_crypto_free_sessions(sd, mdd_crypto); in sr_crypto_alloc_resources_internal()
1006 sr_hotplug_register(sd, sr_crypto_hotplug); in sr_crypto_alloc_resources_internal()
1012 sr_crypto_alloc_resources(struct sr_discipline *sd) in sr_crypto_alloc_resources() argument
1014 return sr_crypto_alloc_resources_internal(sd, &sd->mds.mdd_crypto); in sr_crypto_alloc_resources()
1018 sr_crypto_free_resources_internal(struct sr_discipline *sd, in sr_crypto_free_resources_internal() argument
1025 DEVNAME(sd->sd_sc)); in sr_crypto_free_resources_internal()
1034 sr_hotplug_unregister(sd, sr_crypto_hotplug); in sr_crypto_free_resources_internal()
1036 sr_crypto_free_sessions(sd, mdd_crypto); in sr_crypto_free_resources_internal()
1038 TAILQ_FOREACH(wu, &sd->sd_wu, swu_next) { in sr_crypto_free_resources_internal()
1046 sr_wu_free(sd); in sr_crypto_free_resources_internal()
1047 sr_ccb_free(sd); in sr_crypto_free_resources_internal()
1051 sr_crypto_free_resources(struct sr_discipline *sd) in sr_crypto_free_resources() argument
1053 struct sr_crypto *mdd_crypto = &sd->mds.mdd_crypto; in sr_crypto_free_resources()
1054 sr_crypto_free_resources_internal(sd, mdd_crypto); in sr_crypto_free_resources()
1058 sr_crypto_ioctl_internal(struct sr_discipline *sd, in sr_crypto_ioctl_internal() argument
1066 DEVNAME(sd->sd_sc), bd->bd_cmd); in sr_crypto_ioctl_internal()
1105 if (sr_crypto_change_maskkey(sd, mdd_crypto, &kdfinfo1, in sr_crypto_ioctl_internal()
1110 rv = sr_meta_save(sd, SR_META_DIRTY); in sr_crypto_ioctl_internal()
1124 sr_crypto_ioctl(struct sr_discipline *sd, struct bioc_discipline *bd) in sr_crypto_ioctl() argument
1126 struct sr_crypto *mdd_crypto = &sd->mds.mdd_crypto; in sr_crypto_ioctl()
1127 return sr_crypto_ioctl_internal(sd, mdd_crypto, bd); in sr_crypto_ioctl()
1131 sr_crypto_meta_opt_handler_internal(struct sr_discipline *sd, in sr_crypto_meta_opt_handler_internal() argument
1145 sr_crypto_meta_opt_handler(struct sr_discipline *sd, struct sr_meta_opt_hdr *om) in sr_crypto_meta_opt_handler() argument
1147 struct sr_crypto *mdd_crypto = &sd->mds.mdd_crypto; in sr_crypto_meta_opt_handler()
1148 return sr_crypto_meta_opt_handler_internal(sd, mdd_crypto, om); in sr_crypto_meta_opt_handler()
1193 struct sr_discipline *sd = wu->swu_dis; in sr_crypto_dev_rw() local
1201 ccb = sr_ccb_rw(sd, 0, blkno, xs->datalen, xs->data, xs->flags, 0); in sr_crypto_dev_rw()
1205 DEVNAME(sd->sd_sc), sd->sd_meta->ssd_devname); in sr_crypto_dev_rw()
1265 sr_crypto_hotplug(struct sr_discipline *sd, struct disk *diskp, int action) in sr_crypto_hotplug() argument
1268 DEVNAME(sd->sd_sc), diskp->dk_name, action); in sr_crypto_hotplug()