--- a/usr/src/uts/common/io/comstar/lu/stmf_sbd/sbd.c Mon Jun 22 13:27:48 2009 -0600
+++ b/usr/src/uts/common/io/comstar/lu/stmf_sbd/sbd.c Mon Jun 22 12:41:29 2009 -0700
@@ -49,7 +49,7 @@
#define SBD_IS_ZVOL(zvol) (strncmp("/dev/zvol", zvol, 9))
-extern sbd_status_t sbd_pgr_meta_write(sbd_lu_t *sl);
+extern sbd_status_t sbd_pgr_meta_init(sbd_lu_t *sl);
extern sbd_status_t sbd_pgr_meta_load(sbd_lu_t *sl);
static int sbd_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg,
@@ -1599,7 +1599,7 @@
goto scm_err_out;
}
- if (sbd_pgr_meta_write(sl) != SBD_SUCCESS) {
+ if (sbd_pgr_meta_init(sl) != SBD_SUCCESS) {
*err_ret = SBD_RET_META_CREATION_FAILED;
ret = EIO;
goto scm_err_out;
--- a/usr/src/uts/common/io/comstar/lu/stmf_sbd/sbd_pgr.c Mon Jun 22 13:27:48 2009 -0600
+++ b/usr/src/uts/common/io/comstar/lu/stmf_sbd/sbd_pgr.c Mon Jun 22 12:41:29 2009 -0700
@@ -51,6 +51,7 @@
char *sbd_get_devid_string(sbd_lu_t *);
void sbd_base16_str_to_binary(char *c, int, uint8_t *);
+sbd_status_t sbd_pgr_meta_init(sbd_lu_t *);
sbd_status_t sbd_pgr_meta_load(sbd_lu_t *);
sbd_status_t sbd_pgr_meta_write(sbd_lu_t *);
static void sbd_swap_pgr_info(sbd_pgr_info_t *);
@@ -279,6 +280,25 @@
}
sbd_status_t
+sbd_pgr_meta_init(sbd_lu_t *slu)
+{
+ sbd_pgr_info_t *spi = NULL;
+ uint32_t sz;
+ sbd_status_t ret;
+
+ sz = sizeof (sbd_pgr_info_t);
+ spi = (sbd_pgr_info_t *)kmem_zalloc(sz, KM_SLEEP);
+ spi->pgr_data_order = SMS_DATA_ORDER;
+ spi->pgr_sms_header.sms_size = sz;
+ spi->pgr_sms_header.sms_id = SMS_ID_PGR_INFO;
+ spi->pgr_sms_header.sms_data_order = SMS_DATA_ORDER;
+
+ ret = sbd_write_meta_section(slu, (sm_section_hdr_t *)spi);
+ kmem_free(spi, sz);
+ return (ret);
+}
+
+sbd_status_t
sbd_pgr_meta_load(sbd_lu_t *slu)
{
sbd_pgr_t *pgr = slu->sl_pgr;
@@ -296,7 +316,7 @@
/* No PGR section found, means volume made before PGR support */
if (ret == SBD_NOT_FOUND) {
/* So just create a default PGR section */
- ret = sbd_pgr_meta_write(slu);
+ ret = sbd_pgr_meta_init(slu);
}
return (ret);
}