mmcam: Use a static length sbuf buffer

We cannot sleep during cam proto_announce and sbuf sleeps so use
a static length buffer like nvme(4)

Reviewed by:	kibab
Differential Revision:	https://reviews.freebsd.org/D25949
This commit is contained in:
Emmanuel Vadot 2020-08-04 20:02:23 +00:00
parent 25f965fdaa
commit cd2f74af6f
2 changed files with 11 additions and 7 deletions

View File

@ -68,7 +68,6 @@
#include <cam/mmc/mmc.h>
#include <dev/mmc/mmcreg.h>
void mmc_print_ident(struct mmc_params *ident_data);
struct ccb_pathinq;
struct cam_sim;
void mmc_path_inq(struct ccb_pathinq *cpi, const char *hba,

View File

@ -411,13 +411,11 @@ mmccam_start_discovery(struct cam_sim *sim) {
}
/* This func is called per attached device :-( */
void
mmc_print_ident(struct mmc_params *ident_data)
static void
mmc_print_ident(struct mmc_params *ident_data, struct sbuf *sb)
{
struct sbuf *sb;
bool space = false;
sb = sbuf_new_auto();
sbuf_printf(sb, "Relative addr: %08x\n", ident_data->card_rca);
sbuf_printf(sb, "Card features: <");
if (ident_data->card_features & CARD_FEATURE_MMC) {
@ -463,13 +461,20 @@ mmc_print_ident(struct mmc_params *ident_data)
static void
mmc_proto_announce(struct cam_ed *device)
{
mmc_print_ident(&device->mmc_ident_data);
struct sbuf sb;
char buffer[256];
sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN);
mmc_print_ident(&device->mmc_ident_data, &sb);
sbuf_finish(&sb);
sbuf_putbuf(&sb);
}
static void
mmc_proto_denounce(struct cam_ed *device)
{
mmc_print_ident(&device->mmc_ident_data);
mmc_proto_announce(device);
}
static void