613
614
615 struct bitmapdata {
616 uchar_t *data;
617 size_t len;
618 };
619
620 static int
621 rdc_read_bitmap(rdc_k_info_t *krdc, struct bitmapdata *data)
622 {
623 rdc_u_info_t *urdc;
624 int sts;
625
626 if (krdc == NULL) {
627 return (-1);
628 }
629
630 if (data != NULL) {
631 data->data = kmem_alloc(krdc->bitmap_size, KM_SLEEP);
632 data->len = krdc->bitmap_size;
633
634 if (data->data == NULL) {
635 return (-1);
636 }
637 }
638
639 mutex_enter(&krdc->bmapmutex);
640
641 urdc = &rdc_u_info[krdc->index];
642 if (rdc_get_vflags(urdc) & RDC_BMP_FAILED) {
643 mutex_exit(&krdc->bmapmutex);
644 return (-1);
645 }
646
647 if (krdc->bitmapfd == NULL) {
648 mutex_exit(&krdc->bmapmutex);
649 return (-1);
650 }
651
652 if (data == NULL && krdc->dcio_bitmap == NULL) {
653 mutex_exit(&krdc->bmapmutex);
654 return (-1);
655 }
656
|
613
614
615 struct bitmapdata {
616 uchar_t *data;
617 size_t len;
618 };
619
620 static int
621 rdc_read_bitmap(rdc_k_info_t *krdc, struct bitmapdata *data)
622 {
623 rdc_u_info_t *urdc;
624 int sts;
625
626 if (krdc == NULL) {
627 return (-1);
628 }
629
630 if (data != NULL) {
631 data->data = kmem_alloc(krdc->bitmap_size, KM_SLEEP);
632 data->len = krdc->bitmap_size;
633 }
634
635 mutex_enter(&krdc->bmapmutex);
636
637 urdc = &rdc_u_info[krdc->index];
638 if (rdc_get_vflags(urdc) & RDC_BMP_FAILED) {
639 mutex_exit(&krdc->bmapmutex);
640 return (-1);
641 }
642
643 if (krdc->bitmapfd == NULL) {
644 mutex_exit(&krdc->bmapmutex);
645 return (-1);
646 }
647
648 if (data == NULL && krdc->dcio_bitmap == NULL) {
649 mutex_exit(&krdc->bmapmutex);
650 return (-1);
651 }
652
|