Lines Matching defs:di

213 static struct kerneldumpcomp *kerneldumpcomp_create(struct dumperinfo *di,
215 static void kerneldumpcomp_destroy(struct dumperinfo *di);
415 struct dumperinfo *di;
417 TAILQ_FOREACH(di, &dumper_configs, di_next) {
418 error = dumpsys(di);
1061 struct dumperinfo *di;
1072 TAILQ_FOREACH(di, &dumper_configs, di_next) {
1073 if (di != TAILQ_FIRST(&dumper_configs))
1075 sbuf_cat(&sb, di->di_devname);
1088 static int _dump_append(struct dumperinfo *di, void *virtual, size_t length);
1186 kerneldumpcomp_create(struct dumperinfo *di, uint8_t compression)
1205 format, di->maxiosize, kerneldump_gzlevel, di);
1210 kdcomp->kdc_buf = malloc(di->maxiosize, M_DUMPER, M_WAITOK | M_NODUMP);
1215 kerneldumpcomp_destroy(struct dumperinfo *di)
1219 kdcomp = di->kdcomp;
1231 dumper_destroy(struct dumperinfo *di)
1234 if (di == NULL)
1237 zfree(di->blockbuf, M_DUMPER);
1238 kerneldumpcomp_destroy(di);
1240 zfree(di->kdcrypto, M_EKCD);
1242 zfree(di, M_DUMPER);
1360 dumper_ddb_remove(struct dumperinfo *di)
1362 TAILQ_REMOVE(&dumper_configs, di, di_next);
1367 dumper_config_match(const struct dumperinfo *di, const char *devname,
1373 if (strcmp(di->di_devname, devname) != 0)
1382 if (di->kdcomp != NULL) {
1383 if (di->kdcomp->kdc_format != kda->kda_compression)
1388 if (di->kdcrypto != NULL) {
1389 if (di->kdcrypto->kdc_encryption != kda->kda_encryption)
1410 struct dumperinfo *di, *sdi;
1426 TAILQ_FOREACH_SAFE(di, &dumper_configs, di_next, sdi) {
1427 if (dumper_config_match(di, devname, kda)) {
1429 TAILQ_REMOVE(&dumper_configs, di, di_next);
1430 dumper_destroy(di);
1442 dump_check_bounds(struct dumperinfo *di, off_t offset, size_t length)
1445 if (di->mediasize > 0 && length != 0 && (offset < di->mediaoffset ||
1446 offset - di->mediaoffset + length > di->mediasize)) {
1447 if (di->kdcomp != NULL && offset >= di->mediaoffset) {
1455 (intmax_t)offset, (intmax_t)di->mediaoffset,
1456 (uintmax_t)length, (intmax_t)di->mediasize);
1459 if (length % di->blocksize != 0) {
1464 if (offset % di->blocksize != 0) {
1501 dump_encrypted_write(struct dumperinfo *di, void *virtual, off_t offset,
1509 kdc = di->kdcrypto;
1518 error = dump_write(di, buf, offset, nbytes);
1534 struct dumperinfo *di;
1538 di = arg;
1540 if (length % di->blocksize != 0) {
1547 rlength = rounddown(length, di->blocksize);
1549 error = _dump_append(di, base, rlength);
1554 memmove(di->blockbuf, (uint8_t *)base + rlength, resid);
1555 bzero((uint8_t *)di->blockbuf + resid, di->blocksize - resid);
1556 di->kdcomp->kdc_resid = resid;
1559 return (_dump_append(di, base, length));
1568 dump_write_headers(struct dumperinfo *di, struct kerneldumpheader *kdh)
1580 if (hdrsz > di->blocksize)
1584 kdc = di->kdcrypto;
1594 if (di->dumper_hdr != NULL)
1595 return (di->dumper_hdr(di, kdh));
1597 if (hdrsz == di->blocksize)
1600 buf = di->blockbuf;
1601 memset(buf, 0, di->blocksize);
1608 error = dump_write(di, kdc->kdc_dumpkey,
1609 di->mediaoffset + di->mediasize - di->blocksize - extent -
1616 error = dump_write(di, buf,
1617 di->mediaoffset + di->mediasize - 2 * di->blocksize - extent -
1618 keysize, di->blocksize);
1620 error = dump_write(di, buf, di->mediaoffset + di->mediasize -
1621 di->blocksize, di->blocksize);
1652 dump_start(struct dumperinfo *di, struct kerneldumpheader *kdh)
1664 kdc = di->kdcrypto;
1676 if (di->dumper_start != NULL) {
1677 error = di->dumper_start(di, key, keysize);
1680 span = SIZEOF_METADATA + dumpextent + 2 * di->blocksize +
1682 if (di->mediasize < span) {
1683 if (di->kdcomp == NULL)
1694 dumpextent = di->mediasize - span + dumpextent;
1701 di->dumpoff = di->mediaoffset + di->mediasize - di->blocksize -
1704 di->origdumpoff = di->dumpoff;
1709 _dump_append(struct dumperinfo *di, void *virtual, size_t length)
1714 if (di->kdcrypto != NULL)
1715 error = dump_encrypted_write(di, virtual, di->dumpoff, length);
1718 error = dump_write(di, virtual, di->dumpoff, length);
1720 di->dumpoff += length;
1730 dump_append(struct dumperinfo *di, void *virtual, size_t length)
1734 if (di->kdcomp != NULL) {
1736 if (length > di->maxiosize)
1738 buf = di->kdcomp->kdc_buf;
1740 return (compressor_write(di->kdcomp->kdc_stream, buf, length));
1742 return (_dump_append(di, virtual, length));
1749 dump_write(struct dumperinfo *di, void *virtual, off_t offset, size_t length)
1753 error = dump_check_bounds(di, offset, length);
1756 return (di->dumper(di->priv, virtual, offset, length));
1766 dump_finish(struct dumperinfo *di, struct kerneldumpheader *kdh)
1770 if (di->kdcomp != NULL) {
1771 error = compressor_flush(di->kdcomp->kdc_stream);
1773 /* We have residual data in di->blockbuf. */
1774 error = _dump_append(di, di->blockbuf, di->blocksize);
1777 di->dumpoff -= di->blocksize - di->kdcomp->kdc_resid;
1778 di->kdcomp->kdc_resid = 0;
1787 kdh->dumplength = htod64(di->dumpoff - di->origdumpoff);
1791 compressor_reset(di->kdcomp->kdc_stream);
1794 error = dump_write_headers(di, kdh);
1798 (void)dump_write(di, NULL, 0, 0);
1803 dump_init_header(const struct dumperinfo *di, struct kerneldumpheader *kdh,
1817 kdh->dumpkeysize = htod32(kerneldumpcrypto_dumpkeysize(di->kdcrypto));
1821 kdh->blocksize = htod32(di->blocksize);
1828 if (di->kdcomp != NULL)
1829 kdh->compression = di->kdcomp->kdc_format;