sbd.c revision de710d24d2fae4468e64da999e1d952a247f142c
0N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
338N/A#include "stmf_sbd.h"
0N/A#include "sbd_impl.h"
0N/A if (sbd_lu_count) {
0N/A while (sbd_lu_list) {
824N/A case DDI_INFO_DEVT2DEVINFO:
0N/A case DDI_INFO_DEVT2INSTANCE:
868N/A return (DDI_FAILURE);
0N/A return (DDI_SUCCESS);
824N/A case DDI_ATTACH:
824N/A return (DDI_SUCCESS);
868N/A return (DDI_FAILURE);
824N/A case DDI_DETACH:
824N/A return (DDI_SUCCESS);
824N/A return (DDI_FAILURE);
0N/A case SBD_IOCTL_SET_LU_STANDBY:
0N/A case SBD_IOCTL_IMPORT_LU:
824N/A case SBD_IOCTL_DELETE_LU:
824N/A case SBD_IOCTL_MODIFY_LU:
0N/A case SBD_IOCTL_SET_GLOBAL_LU:
0N/A case SBD_IOCTL_GET_GLOBAL_LU:
824N/A case SBD_IOCTL_GET_LU_PROPS:
0N/A case SBD_IOCTL_GET_LU_LIST:
824N/A return (SBD_ALREADY);
824N/A return (SBD_ALREADY);
824N/A return (SBD_SUCCESS);
0N/A return (SBD_NOT_FOUND);
868N/A return (SBD_SUCCESS);
824N/A (~meta_align);
824N/A goto sbd_read_meta_failure;
824N/A goto sbd_read_meta_failure;
824N/A goto sbd_read_meta_failure;
824N/A goto sbd_write_meta_failure;
0N/A goto sbd_write_meta_failure;
0N/A goto sbd_write_meta_failure;
0N/A goto sbd_write_meta_failure;
824N/A return (SBD_META_CORRUPTED);
868N/A return (SBD_SUCCESS);
824N/A return (SBD_NOT_FOUND);
0N/A goto load_meta_start_failed;
0N/A goto load_meta_start_failed;
0N/A goto load_meta_start_failed;
int alloced = 0;
return (ret);
uint8_t s;
return (ret);
return (ret);
return (ret);
int meta_size_changed = 0;
(uint8_t *)&t);
return (ret);
sbd_swap_section_hdr(&t);
return (SBD_INVALID_ARG);
return (ret);
sms_before_unused = t;
(uint8_t *)&t);
return (ret);
goto write_meta_section_again;
return (ret);
unused_start = 0;
return (ret);
sbd_swap_section_hdr(&t);
if (t.sms_size == 0) {
return (SBD_META_CORRUPTED);
if (unused_start == 0)
unused_start = 0;
return (SBD_ALLOC_FAILURE);
if (meta_size_changed) {
(~meta_align);
goto done;
goto done;
goto done;
goto done;
goto done;
sizeof (sm_section_hdr_t)) !=
sizeof (sm_section_hdr_t))) {
goto done;
goto done;
done:
return (write_meta_ret);
return (ret);
uint8_t *p;
return (ret);
return (EIO);
ret);
return (EIO);
*err_ret = 0;
int ret;
int flag;
int unused;
if (vp_valid) {
goto odf_over_open;
return (EINVAL);
return (ret);
return (EINVAL);
return (ret);
goto odf_close_data_and_exit;
goto odf_close_data_and_exit;
nbits = 0;
if (lu_size_valid) {
goto odf_close_data_and_exit;
goto odf_close_data_and_exit;
goto odf_close_data_and_exit;
goto odf_close_data_and_exit;
if (!keep_open) {
return (ret);
int flag;
return (EBUSY);
return (ENOENT);
return (EIO);
return (EIO);
return (ret);
char *namebuf;
int sz;
int alloc_sz;
int flag;
int wcd = 0;
*err_ret = 0;
return (EINVAL);
return (ENOMEM);
goto scm_err_out;
goto scm_err_out;
if (ret) {
goto scm_err_out;
goto scm_err_out;
if (wcd) {
goto over_meta_open;
goto scm_err_out;
goto over_meta_create;
goto scm_err_out;
goto scm_err_out;
goto scm_err_out;
STMF_SUCCESS) {
goto scm_err_out;
goto scm_err_out;
goto scm_err_out;
goto scm_err_out;
goto scm_err_out;
if (ret) {
goto scm_err_out;
switch (type) {
case STMF_MSG_LU_ACTIVE:
case STMF_MSG_LU_REGISTER:
case STMF_MSG_LU_DEREGISTER:
return (STMF_INVALID_ARG);
int alloc_sz;
return (STMF_INVALID_ARG);
KM_SLEEP);
if (proxy_reg_arg_len) {
return (stret);
out:
return (stret);
return (STMF_INVALID_ARG);
return (STMF_FAILURE);
return (STMF_SUCCESS);
int alloc_sz;
return (ENOMEM);
sizeof (sbd_pgr_t);
goto scs_err_out;
if (ret) {
goto scs_err_out;
return (EIO);
return (EIO);
int asz;
int ret = 0;
int flag;
int wcd = 0;
int data_opened;
int standby = 0;
return (EINVAL);
return (EALREADY);
return (ENOMEM);
sizeof (sbd_pgr_t);
return (EIO);
if (!no_register) {
goto sim_err_out;
goto sim_err_out;
goto sim_err_out;
goto sim_err_out;
goto sim_err_out;
if (ret) {
goto sim_err_out;
goto sim_sli_loaded;
goto sim_err_out;
goto sim_err_out;
goto sim_err_out;
KM_SLEEP);
data_opened = 0;
goto sim_err_out;
if (ret) {
goto sim_err_out;
if (wcd) {
if (!no_register) {
if (ret) {
goto sim_err_out;
if (sli) {
if (sli_buf_copy) {
if (standby) {
goto sim_err_out;
if (sli) {
if (sli_buf_copy) {
if (standby) {
return (EIO);
int ret = 0;
int modify_unregistered = 0;
int ua = 0;
*err_ret = 0;
return (EINVAL);
return (EINVAL);
return (EBUSY);
return (EIO);
return (EINVAL);
return (ENOENT);
goto smm_err_out;
goto smm_err_out;
ua = 0;
if (url_sz > 0)
url_sz++;
if (url_sz > 0) {
if (ret) {
goto smm_err_out;
if (modify_unregistered) {
return (ret);
int ret = 0;
*err_ret = 0;
return (EINVAL);
if (url_sz > 0)
url_sz++;
if (sbd_mgmt_url_alloc_size > 0 &&
if (url_sz > 0) {
if (sbd_mgmt_url_alloc_size == 0) {
return (ret);
goto sdl_do_dereg;
return (EBUSY);
return (EBUSY);
goto sdl_do_dereg;
return (EBUSY);
return (EBUSY);
int ret;
return (EBUSY);
return (ENOENT);
return (EIO);
if (ret) {
return (ret);
int ret;
long resid;
return (SBD_IO_PAST_EOF);
return (SBD_SUCCESS);
return (SBD_FAILURE);
&resid);
resid);
return (SBD_FAILURE);
return (SBD_SUCCESS);
int ret;
long resid;
int ioflag;
return (SBD_IO_PAST_EOF);
ioflag = 0;
return (SBD_FAILURE);
&resid);
return (SBD_FAILURE);
return (SBD_SUCCESS);
if (sbd_mgmt_url) {
return (ENOMEM);
off = 0;
if (sbd_mgmt_url) {
&sl);
return (EBUSY);
return (ENOENT);
return (EIO);
return (EBUSY);
return (ENOENT);
return (EIO);
} else if (sbd_mgmt_url) {
return (ENOMEM);
off = 0;
} else if (sbd_mgmt_url) {
char *src;
ASSERT(0);
== NULL)
return (SBD_FAILURE);
return (SBD_SUCCESS);
sbd_ctoi(char c)
int len;
char *file;
return (SBD_FAILURE);
goto done;
done:
if (meta)
return (rc);
return (SBD_SUCCESS);
return (SBD_META_CORRUPTED);
return (SBD_SUCCESS);
int i, num;
char *file;
return (ret);
int is_zfs = 0;
return (is_zfs);
int ret;
goto done;
if (ret == 0) {
goto done;
done:
return (sret);
int wce;
int ret;
*wcd = 0;
if (ret) {
char *ptr;
int unused;
int rc;
return (ENXIO);
KM_SLEEP);
int newsize;
goto again;
} else if (rc != 0) {
goto out;
if (rc != 0) {
KM_SLEEP);
out:
return (rc);
int unused;
int rc;
return (ENXIO);
goto out;
if (rc != 0) {
if (packed)
out:
return (rc);
int unused;
return (EIO);
DF_WAIT_SYNC : 0;
return (EIO);