316
317 mutex_init(&rdc_ping_lock, NULL, MUTEX_DRIVER, NULL);
318 mutex_init(&net_blk_lock, NULL, MUTEX_DRIVER, NULL);
319 mutex_init(&rdc_conf_lock, NULL, MUTEX_DRIVER, NULL);
320 mutex_init(&rdc_many_lock, NULL, MUTEX_DRIVER, NULL);
321 mutex_init(&rdc_net_hnd_id_lock, NULL, MUTEX_DRIVER, NULL);
322 mutex_init(&rdc_clnt_lock, NULL, MUTEX_DRIVER, NULL);
323 mutex_init(&sync_info.lock, NULL, MUTEX_DRIVER, NULL);
324
325 #ifdef DEBUG
326 mutex_init(&rdc_cntlock, NULL, MUTEX_DRIVER, NULL);
327 #endif
328
329 if ((i = nsc_max_devices()) < rdc_max_sets)
330 rdc_max_sets = i;
331 /* following case for partial installs that may fail */
332 if (!rdc_max_sets)
333 rdc_max_sets = 1024;
334
335 rdc_k_info = kmem_zalloc(sizeof (*rdc_k_info) * rdc_max_sets, KM_SLEEP);
336 if (!rdc_k_info)
337 return (ENOMEM);
338
339 rdc_u_info = kmem_zalloc(sizeof (*rdc_u_info) * rdc_max_sets, KM_SLEEP);
340 if (!rdc_u_info) {
341 kmem_free(rdc_k_info, sizeof (*rdc_k_info) * rdc_max_sets);
342 return (ENOMEM);
343 }
344
345 net_exit = ATM_NONE;
346 for (i = 0; i < rdc_max_sets; i++) {
347 krdc = &rdc_k_info[i];
348 bzero(krdc, sizeof (*krdc));
349 krdc->index = i;
350 mutex_init(&krdc->dc_sleep, NULL, MUTEX_DRIVER, NULL);
351 mutex_init(&krdc->bmapmutex, NULL, MUTEX_DRIVER, NULL);
352 mutex_init(&krdc->kstat_mutex, NULL, MUTEX_DRIVER, NULL);
353 mutex_init(&krdc->bmp_kstat_mutex, NULL, MUTEX_DRIVER, NULL);
354 mutex_init(&krdc->syncbitmutex, NULL, MUTEX_DRIVER, NULL);
355 cv_init(&krdc->busycv, NULL, CV_DRIVER, NULL);
356 cv_init(&krdc->closingcv, NULL, CV_DRIVER, NULL);
357 cv_init(&krdc->haltcv, NULL, CV_DRIVER, NULL);
358 cv_init(&krdc->synccv, NULL, CV_DRIVER, NULL);
359 }
360
361 rdc_volume_update = nsc_register_svc("RDCVolumeUpdated",
362 rdc_volume_update_svc);
363
|
316
317 mutex_init(&rdc_ping_lock, NULL, MUTEX_DRIVER, NULL);
318 mutex_init(&net_blk_lock, NULL, MUTEX_DRIVER, NULL);
319 mutex_init(&rdc_conf_lock, NULL, MUTEX_DRIVER, NULL);
320 mutex_init(&rdc_many_lock, NULL, MUTEX_DRIVER, NULL);
321 mutex_init(&rdc_net_hnd_id_lock, NULL, MUTEX_DRIVER, NULL);
322 mutex_init(&rdc_clnt_lock, NULL, MUTEX_DRIVER, NULL);
323 mutex_init(&sync_info.lock, NULL, MUTEX_DRIVER, NULL);
324
325 #ifdef DEBUG
326 mutex_init(&rdc_cntlock, NULL, MUTEX_DRIVER, NULL);
327 #endif
328
329 if ((i = nsc_max_devices()) < rdc_max_sets)
330 rdc_max_sets = i;
331 /* following case for partial installs that may fail */
332 if (!rdc_max_sets)
333 rdc_max_sets = 1024;
334
335 rdc_k_info = kmem_zalloc(sizeof (*rdc_k_info) * rdc_max_sets, KM_SLEEP);
336
337 rdc_u_info = kmem_zalloc(sizeof (*rdc_u_info) * rdc_max_sets, KM_SLEEP);
338
339 net_exit = ATM_NONE;
340 for (i = 0; i < rdc_max_sets; i++) {
341 krdc = &rdc_k_info[i];
342 bzero(krdc, sizeof (*krdc));
343 krdc->index = i;
344 mutex_init(&krdc->dc_sleep, NULL, MUTEX_DRIVER, NULL);
345 mutex_init(&krdc->bmapmutex, NULL, MUTEX_DRIVER, NULL);
346 mutex_init(&krdc->kstat_mutex, NULL, MUTEX_DRIVER, NULL);
347 mutex_init(&krdc->bmp_kstat_mutex, NULL, MUTEX_DRIVER, NULL);
348 mutex_init(&krdc->syncbitmutex, NULL, MUTEX_DRIVER, NULL);
349 cv_init(&krdc->busycv, NULL, CV_DRIVER, NULL);
350 cv_init(&krdc->closingcv, NULL, CV_DRIVER, NULL);
351 cv_init(&krdc->haltcv, NULL, CV_DRIVER, NULL);
352 cv_init(&krdc->synccv, NULL, CV_DRIVER, NULL);
353 }
354
355 rdc_volume_update = nsc_register_svc("RDCVolumeUpdated",
356 rdc_volume_update_svc);
357
|