Lines Matching defs:urdc

84  * set (e.g. changes to urdc->flags), such as enabled to disabled and vice
369 rdc_u_init(rdc_u_info_t *urdc)
371 const int index = (int)(urdc - &rdc_u_info[0]);
373 if (urdc->secondary.addr.maxlen)
374 free_rdc_netbuf(&urdc->secondary.addr);
375 if (urdc->primary.addr.maxlen)
376 free_rdc_netbuf(&urdc->primary.addr);
378 bzero(urdc, sizeof (rdc_u_info_t));
380 urdc->index = index;
381 urdc->maxqfbas = rdc_maxthres_queue;
382 urdc->maxqitems = rdc_max_qitems;
383 urdc->asyncthr = rdc_asyncthr;
428 rdc_u_info_t *urdc;
433 urdc = &rdc_u_info[index];
443 if (urdc->primary.addr.maxlen)
444 free_rdc_netbuf(&(urdc->primary.addr));
446 if (urdc->secondary.addr.maxlen)
447 free_rdc_netbuf(&(urdc->secondary.addr));
449 bzero(urdc, sizeof (rdc_u_info_t));
450 urdc->index = index;
609 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
629 if (urdc->group_name[0] == 0)
635 if (strncmp(utmp->group_name, urdc->group_name,
638 if (strncmp(utmp->primary.intf, urdc->primary.intf,
644 if (strncmp(utmp->secondary.intf, urdc->secondary.intf,
668 !RDC_IS_DISKQ(ktmp->group) && urdc->disk_queue[0] != '\0') {
678 urdc->autosync = utmp->autosync; /* Same as rest */
680 (void) strncpy(urdc->disk_queue, utmp->disk_queue, NSC_MAXPATH);
690 urdc->autosync = -1; /* Unknown */
704 if (urdc->disk_queue[0] == '\0') {
719 urdc->disk_queue);
722 bzero(urdc->disk_queue, NSC_MAXPATH);
738 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
762 (void) strncpy(tmpq, urdc->disk_queue, NSC_MAXPATH);
763 bzero(urdc->disk_queue, sizeof (urdc->disk_queue));
772 if (urdc->group_name[0] == 0)
778 if (strncmp(utmp->group_name, urdc->group_name,
781 if (strncmp(utmp->primary.intf, urdc->primary.intf,
784 if (strncmp(utmp->secondary.intf, urdc->secondary.intf,
805 bzero(urdc->disk_queue, sizeof (urdc->disk_queue));
806 (void) strncpy(urdc->disk_queue, utmp->disk_queue, NSC_MAXPATH);
823 if (urdc->disk_queue[0] == 0) {
833 rdc_set_flags(urdc, RDC_ASYNC);
836 rdc_clr_flags(urdc, RDC_ASYNC);
884 (void) strncpy(urdc->disk_queue, tmpq, NSC_MAXPATH);
894 rdc_set_flags(rdc_u_info_t *urdc, int flags)
896 rdc_k_info_t *krdc = &rdc_k_info[urdc->index];
912 urdc->flags |= vflags;
921 urdc->sync_flags |= sflags;
927 urdc->bmap_flags |= bflags;
937 rdc_clr_flags(rdc_u_info_t *urdc, int flags)
939 rdc_k_info_t *krdc = &rdc_k_info[urdc->index];
951 urdc->flags &= ~vflags;
958 urdc->sync_flags &= ~sflags;
964 urdc->bmap_flags &= ~bflags;
973 rdc_get_vflags(rdc_u_info_t *urdc)
975 return (urdc->flags | urdc->sync_flags | urdc->bmap_flags);
983 rdc_init_flags(rdc_u_info_t *urdc)
985 urdc->flags = 0;
986 urdc->mflags = 0;
987 urdc->sync_flags = 0;
988 urdc->bmap_flags = 0;
996 rdc_set_mflags(rdc_u_info_t *urdc, int flags)
998 rdc_k_info_t *krdc = &rdc_k_info[urdc->index];
1008 rdc_set_flags(urdc, flags); /* set flags on local urdc */
1010 urdc->mflags |= flags;
1012 urdc = &rdc_u_info[krdc->index];
1013 if (!IS_ENABLED(urdc))
1015 urdc->mflags |= flags;
1024 rdc_clr_mflags(rdc_u_info_t *urdc, int flags)
1026 rdc_k_info_t *krdc = &rdc_k_info[urdc->index];
1037 rdc_clr_flags(urdc, flags); /* clear flags on local urdc */
1041 * all the urdc's that are chained up.
1045 * First look through all the urdc's and remove bits from
1063 urdc->mflags &= ~flags;
1076 rdc_get_mflags(rdc_u_info_t *urdc)
1078 return (urdc->mflags);
1083 rdc_set_flags_log(rdc_u_info_t *urdc, int flags, char *why)
1085 DTRACE_PROBE2(rdc_set_flags_log, int, urdc->index, int, flags);
1087 rdc_set_flags(urdc, flags);
1094 urdc->secondary.intf, urdc->secondary.file, why);
1097 urdc->secondary.intf, urdc->secondary.file, why);
1100 urdc->secondary.intf, urdc->secondary.file, why);
1124 rdc_u_info_t *urdc = &rdc_u_info[index];
1130 spcs_s_add(kstatus, RDC_EGETSIZE, urdc->secondary.intf,
1131 urdc->secondary.file, tmp1);
1135 if (remote_size < (unsigned long long)urdc->volume_size) {
1137 urdc->volume_size, tmp1, sizeof (tmp1), 0);
1144 spcs_s_add(kstatus, RDC_ESIZE, urdc->primary.intf,
1145 urdc->primary.file, tmp1, urdc->secondary.intf,
1146 urdc->secondary.file, tmp2);
1160 rdc_u_info_t *urdc;
1186 * size mis-matches between urdc->volume_size and
1197 urdc = &rdc_u_info[index];
1201 if (!(rdc_get_vflags(urdc) & RDC_LOGGING)) {
1211 if (IS_MANY(krdc) && IS_STATE(urdc, RDC_PRIMARY)) {
1215 urdc = &rdc_u_info[krdc->index];
1216 if (!IS_ENABLED(urdc))
1227 urdc = &rdc_u_info[krdc->index];
1240 urdc = &rdc_u_info[index];
1241 urdc->bits_set = RDC_COUNT_BITMAP(krdc);
1242 if (IS_MANY(krdc) && IS_STATE(urdc, RDC_PRIMARY)) {
1247 if (!IS_ENABLED(urdc))
1257 if (rdc_get_vflags(urdc) & (RDC_SYNC_NEEDED | RDC_RSYNC_NEEDED)) {
1259 rdc_clr_flags(urdc, RDC_SYNC_NEEDED | RDC_RSYNC_NEEDED);
1278 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
1282 if (!IS_ENABLED(urdc))
1285 if (strncmp(urdc->primary.file, rdc_set->primary.file,
1289 urdc->primary.file, rdc_set->primary.file);
1295 bcmp(urdc->primary.addr.buf, rdc_set->primary.addr.buf,
1296 urdc->primary.addr.len) != 0) {
1299 urdc->primary.file);
1304 if (strncmp(urdc->secondary.file, rdc_set->secondary.file,
1308 urdc->secondary.file, rdc_set->secondary.file);
1314 bcmp(urdc->secondary.addr.buf, rdc_set->secondary.addr.buf,
1315 urdc->secondary.addr.len) != 0) {
1318 urdc->secondary.file);
1334 rdc_u_info_t *urdc;
1341 urdc = &rdc_u_info[index];
1346 ASSERT(urdc->index == index);
1348 if (!IS_ENABLED(urdc))
1351 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
1352 if (strncmp(pathname, urdc->primary.bitmap,
1356 if (strncmp(pathname, urdc->secondary.bitmap,
1374 rdc_u_info_t *urdc;
1380 urdc = &rdc_u_info[index];
1384 ASSERT(urdc->index == index);
1386 if (!IS_ENABLED(urdc))
1392 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
1393 if (strncmp(pathname, urdc->primary.file,
1397 if (strncmp(pathname, urdc->secondary.file,
1424 rdc_u_info_t *urdc;
1431 urdc = &rdc_u_info[index];
1435 ASSERT(urdc->index == index);
1440 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
1441 if (strncmp(pathname, urdc->primary.file,
1445 if (strncmp(pathname, urdc->secondary.file,
1466 rdc_u_info_t *urdc;
1473 urdc = &rdc_u_info[index];
1479 if (strncmp(urdc->secondary.file,
1482 if (strncmp(urdc->secondary.intf,
1507 rdc_u_info_t *urdc;
1514 urdc = &rdc_u_info[index];
1518 ASSERT(urdc->index == index);
1523 if (strncmp(urdc->primary.file, rdc_set->primary.file,
1526 if (strncmp(urdc->primary.intf, rdc_set->primary.intf,
1529 if (strncmp(urdc->secondary.file, rdc_set->secondary.file,
1532 if (strncmp(urdc->secondary.intf, rdc_set->secondary.intf,
1556 rdc_u_info_t *urdc;
1563 urdc = &rdc_u_info[index];
1567 ASSERT(urdc->index == index);
1572 if (strncmp(urdc->secondary.file, file,
1575 if (strncmp(urdc->secondary.intf, intf,
1598 rdc_u_info_t *urdc;
1605 urdc = &rdc_u_info[index];
1610 ASSERT(urdc->index == index);
1612 if (!IS_ENABLED(urdc))
1615 if (strcmp(urdc->primary.file, rdc_set->primary.file) != 0)
1618 if (strcmp(urdc->secondary.file, rdc_set->secondary.file) != 0)
1621 if (bcmp(urdc->primary.addr.buf, rdc_set->primary.addr.buf,
1622 urdc->primary.addr.len) != 0) {
1626 if (bcmp(urdc->secondary.addr.buf, rdc_set->secondary.addr.buf,
1627 urdc->secondary.addr.len) != 0) {
1651 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
1661 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
1663 pathname = urdc->primary.file;
1679 pathname = urdc->secondary.file;
1743 rdc_u_info_t *urdc;
1750 urdc = &rdc_u_info[index];
1754 ASSERT(urdc->index == index);
1759 if (!IS_STATE(urdc, RDC_PRIMARY)) {
1760 if (strncmp(pathname, urdc->secondary.file,
1773 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
1777 krdc->remote_fd = nsc_open(urdc->direct_file,
1785 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
1787 urdc->direct_file[0] = 0;
1818 rdc_u_info_t *urdc;
1824 urdc = &rdc_u_info[krdc->index];
1835 mindex, urdc->primary.file, urdc->secondary.file);
1844 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) &&
1855 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
1863 if (urdc->direct_file[0] != 0) {
1999 rdc_u_info_t *urdc;
2116 /* Set urdc->volume_size */
2129 urdc = &rdc_u_info[index];
2132 /* copy relevant parts of rdc_set to urdc field by field */
2134 (void) strncpy(urdc->primary.intf, rdc_set->primary.intf,
2136 (void) strncpy(urdc->secondary.intf, rdc_set->secondary.intf,
2139 (void) strncpy(urdc->group_name, rdc_set->group_name, NSC_MAXPATH);
2140 (void) strncpy(urdc->disk_queue, rdc_set->disk_queue, NSC_MAXPATH);
2142 dup_rdc_netbuf(&rdc_set->primary.addr, &urdc->primary.addr);
2143 (void) strncpy(urdc->primary.file, rdc_set->primary.file, NSC_MAXPATH);
2144 (void) strncpy(urdc->primary.bitmap, rdc_set->primary.bitmap,
2147 dup_rdc_netbuf(&rdc_set->secondary.addr, &urdc->secondary.addr);
2148 (void) strncpy(urdc->secondary.file, rdc_set->secondary.file,
2150 (void) strncpy(urdc->secondary.bitmap, rdc_set->secondary.bitmap,
2153 urdc->setid = rdc_set->setid;
2160 if (urdc->disk_queue[0] && (options & RDC_OPT_SYNC)) {
2212 rdc_init_flags(urdc);
2213 (void) strncpy(urdc->direct_file, rdc_set->direct_file, NSC_MAXPATH);
2216 rdc_set_flags(urdc, RDC_FCAL_FAILED);
2225 rdc_set_flags(urdc, RDC_PRIMARY);
2231 urdc->syshostid = rdc_set->syshostid;
2244 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2251 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2258 urdc->sync_pos = 0;
2261 urdc->maxqfbas = rdc_set->maxqfbas;
2263 urdc->maxqfbas = rdc_maxthres_queue;
2266 urdc->maxqitems = rdc_set->maxqitems;
2268 urdc->maxqitems = rdc_max_qitems;
2271 urdc->asyncthr = rdc_set->asyncthr;
2273 urdc->asyncthr = rdc_asyncthr;
2275 if (urdc->autosync == -1) {
2278 urdc->autosync = 1;
2280 urdc->autosync = 0;
2283 urdc->netconfig = rdc_set->netconfig;
2294 rdc_set_flags(urdc, RDC_ASYNC);
2296 svp = rdc_create_svinfo(rhost, addrp, urdc->netconfig);
2302 urdc->netconfig = NULL; /* This will be no good soon */
2324 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2330 rdc_set_flags(urdc, RDC_ENABLED | RDC_LOGGING);
2336 rdc_clr_flags(urdc, RDC_ENABLED);
2338 spcs_s_add(kstatus, RDC_EREGISTER, urdc->primary.file);
2341 urdc->secondary.file);
2344 urdc->primary.file);
2350 cmn_err(CE_NOTE, "!SNDR: enabled %s %s", urdc->primary.file,
2351 urdc->secondary.file);
2354 rdc_write_state(urdc);
2368 if (rdc_get_vflags(urdc) & RDC_ENABLED) {
2386 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2393 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2400 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2407 rdc_u_init(urdc);
2460 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
2480 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
2482 ASSERT(IS_ENABLED(urdc));
2486 if (IS_ASYNC(urdc) && RDC_IS_DISKQ(krdc->group) &&
2487 ((!IS_STATE(urdc, RDC_LOGGING)) && (!QEMPTY(q)))) {
2490 spcs_s_add(kstatus, RDC_EQNOTEMPTY, urdc->disk_queue);
2497 cmn_err(CE_NOTE, "!SNDR: disabled %s %s", urdc->primary.file,
2498 urdc->secondary.file);
2502 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2509 if (IS_ASYNC(urdc) && !RDC_IS_DISKQ(krdc->group)) {
2532 urdc->primary.file);
2558 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2575 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2591 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
2619 rdc_u_init(urdc);
2669 rdc_allow_pri_sync(rdc_u_info_t *urdc, int options)
2671 rdc_k_info_t *krdc = &rdc_k_info[urdc->index];
2676 ASSERT(rdc_get_vflags(urdc) & RDC_PRIMARY);
2824 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
2842 "0x%x", rc, rdc_get_vflags(urdc));
2864 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
2887 if (!IS_STATE(urdc, RDC_FULL))
2894 rdc_set_flags_log(urdc, RDC_VOL_FAILED, "nsc_write failed");
2896 rdc_write_state(urdc);
2921 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
2930 if (IS_STATE(urdc, RDC_SLAVE))
3048 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
3068 if (IS_STATE(urdc, RDC_QUEUING) && !IS_STATE(urdc, RDC_FULL)) {
3105 ASSERT(urdc->volume_size != 0);
3106 size = urdc->volume_size;
3115 rdc_clr_flags(urdc, RDC_LOGGING);
3116 rdc_set_flags(urdc, RDC_SYNCING);
3139 if (!(rdc_get_vflags(urdc) & RDC_FULL)) {
3192 if (!(rdc_get_vflags(urdc) & RDC_FULL)) {
3263 if (rdc_get_vflags(urdc) & RDC_SLAVE)
3281 if (rdc_get_vflags(urdc) & RDC_SLAVE) {
3294 if (!(rdc_get_vflags(urdc) & RDC_FULL))
3306 rdc_set_flags_log(urdc, RDC_VOL_FAILED,
3309 rdc_write_state(urdc);
3338 sts, rdc_get_vflags(urdc));
3361 ASSERT(!IS_ASYNC(urdc));
3402 urdc->sync_pos = offset;
3425 urdc->sync_pos = rc;
3458 if (IS_STATE(urdc, RDC_QUEUING))
3459 rdc_clr_flags(urdc, RDC_QUEUING);
3467 rdc_clr_flags(urdc, RDC_SYNCING);
3468 if (rdc_get_vflags(urdc) & RDC_SLAVE) {
3470 rdc_clr_mflags(urdc, RDC_SLAVE);
3474 rdc_set_flags(urdc, RDC_ASYNC);
3477 rdc_clr_mflags(urdc, RDC_RSYNC_NEEDED);
3481 rdc_set_flags_log(urdc, RDC_LOGGING, "sync failed to complete");
3484 rdc_write_state(urdc);
3506 rdc_u_info_t *urdc;
3527 urdc = &rdc_u_info[index];
3542 if (!IS_STATE(urdc, RDC_LOGGING)) {
3543 spcs_s_add(kstatus, RDC_ESETNOTLOGGING, urdc->secondary.intf,
3544 urdc->secondary.file);
3556 if (!(rdc_get_vflags(urdc) & RDC_PRIMARY)) {
3564 if ((options & RDC_OPT_REVERSE) && (IS_STATE(urdc, RDC_QUEUING))) {
3576 krdc->intf = rdc_add_to_if(svp, &(urdc->primary.addr),
3577 &(urdc->secondary.addr), 1);
3580 spcs_s_add(kstatus, RDC_EADDTOIF, urdc->primary.intf,
3581 urdc->secondary.intf);
3586 if (urdc->volume_size == 0) {
3590 if (urdc->volume_size == 0) {
3604 if ((rdc_get_vflags(urdc) & RDC_BMP_FAILED) && (krdc->bitmapfd)) {
3615 if ((ubad = rdc_allow_pri_sync(urdc, options)) != NULL) {
3632 if (!rdc_get_vflags(urdc) & RDC_SYNCING) {
3648 (rdc_get_mflags(urdc) & RDC_RSYNC_NEEDED)) {
3657 urdc->sync_pos = 0;
3665 spcs_s_add(kstatus, RDC_ECONNOPEN, urdc->secondary.intf,
3666 urdc->secondary.file);
3679 spcs_s_add(kstatus, RDC_ERSTATE, urdc->secondary.intf,
3680 urdc->secondary.file, urdc->primary.intf,
3681 urdc->primary.file);
3700 rdc_set_mflags(urdc, RDC_SLAVE | RDC_RSYNC_NEEDED);
3702 rdc_clr_flags(urdc, RDC_VOL_FAILED);
3704 rdc_write_state(urdc);
3717 rdc_clr_flags(urdc, RDC_FCAL_FAILED);
3718 rdc_write_state(urdc);
3722 ASSERT(urdc->volume_size != 0);
3724 BMAP_LOG_BYTES(urdc->volume_size)) > 0) {
3730 rdc_clr_flags(urdc, RDC_SYNCING);
3733 rdc_clr_mflags(urdc, RDC_SLAVE);
3737 rdc_set_flags(urdc, RDC_ASYNC);
3739 rdc_set_flags_log(urdc, RDC_LOGGING,
3741 rdc_write_state(urdc);
3744 rdc_clr_flags(urdc, RDC_FULL);
3752 rdc_set_flags(urdc, RDC_FULL);
3771 (!(IS_STATE(urdc, RDC_QUEUING)))) {
3774 rdc_clr_flags(urdc, RDC_ASYNC);
3786 if (IS_STATE(urdc, RDC_DISKQ_FAILED)) {
3797 (IS_STATE(urdc, RDC_QUEUING))) {
3799 rdc_clr_flags(urdc, RDC_SYNCING);
3806 thrcount = urdc->asyncthr;
3874 urdc->bits_set = RDC_COUNT_BITMAP(krdc);
3880 urdc->primary.file, urdc->group_name);
3918 urdc->sync_pos, siztmp1, sizeof (siztmp1),
3941 urdc->primary.file, urdc->group_name);
3958 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
3975 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
3977 ASSERT(IS_ENABLED(urdc));
3984 cmn_err(CE_NOTE, "!SNDR: suspended %s %s", urdc->primary.file,
3985 urdc->secondary.file);
3989 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
3992 if (IS_ASYNC(urdc) && !RDC_IS_DISKQ(krdc->group)) {
4015 urdc->primary.file);
4041 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4058 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4074 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4102 rdc_u_init(urdc);
4150 rdc_u_info_t *urdc;
4247 /* Set urdc->volume_size */
4260 urdc = &rdc_u_info[index];
4263 /* copy relevant parts of rdc_set to urdc field by field */
4265 (void) strncpy(urdc->primary.intf, rdc_set->primary.intf,
4267 (void) strncpy(urdc->secondary.intf, rdc_set->secondary.intf,
4270 (void) strncpy(urdc->group_name, rdc_set->group_name, NSC_MAXPATH);
4272 dup_rdc_netbuf(&rdc_set->primary.addr, &urdc->primary.addr);
4273 (void) strncpy(urdc->primary.file, rdc_set->primary.file, NSC_MAXPATH);
4274 (void) strncpy(urdc->primary.bitmap, rdc_set->primary.bitmap,
4277 dup_rdc_netbuf(&rdc_set->secondary.addr, &urdc->secondary.addr);
4278 (void) strncpy(urdc->secondary.file, rdc_set->secondary.file,
4280 (void) strncpy(urdc->secondary.bitmap, rdc_set->secondary.bitmap,
4282 (void) strncpy(urdc->disk_queue, rdc_set->disk_queue, NSC_MAXPATH);
4283 urdc->setid = rdc_set->setid;
4285 if ((options & RDC_OPT_SYNC) && urdc->disk_queue[0]) {
4296 rdc_init_flags(urdc);
4345 (void) strncpy(urdc->direct_file, rdc_set->direct_file, NSC_MAXPATH);
4348 rdc_set_flags(urdc, RDC_FCAL_FAILED);
4357 rdc_set_flags(urdc, RDC_PRIMARY);
4364 urdc->syshostid = rdc_set->syshostid;
4377 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4381 if (urdc->volume_size == 0) {
4384 rdc_set_mflags(urdc, RDC_RSYNC_NEEDED);
4386 rdc_set_flags(urdc, RDC_SYNC_NEEDED);
4387 rdc_set_flags(urdc, RDC_VOL_FAILED);
4394 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4401 urdc->sync_pos = 0;
4405 urdc->maxqfbas = rdc_maxthres_queue;
4406 urdc->maxqitems = rdc_max_qitems;
4407 urdc->autosync = 0;
4408 urdc->asyncthr = rdc_asyncthr;
4410 urdc->netconfig = rdc_set->netconfig;
4421 rdc_set_flags(urdc, RDC_ASYNC);
4423 svp = rdc_create_svinfo(rhost, addrp, urdc->netconfig);
4430 urdc->netconfig = NULL; /* This will be no good soon */
4443 rdc_clr_flags(urdc, RDC_QUEUING);
4460 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4467 rdc_set_flags(urdc, RDC_ENABLED | RDC_LOGGING);
4473 rdc_clr_flags(urdc, RDC_ENABLED);
4475 spcs_s_add(kstatus, RDC_EREGISTER, urdc->primary.file);
4478 urdc->secondary.file);
4481 urdc->primary.file);
4487 cmn_err(CE_NOTE, "!SNDR: resumed %s %s", urdc->primary.file,
4488 urdc->secondary.file);
4491 rdc_write_state(urdc);
4501 spcs_s_add(kstatus, RDC_EBITMAP, urdc->primary.bitmap);
4503 spcs_s_add(kstatus, RDC_EBITMAP, urdc->secondary.bitmap);
4505 if (rdc_get_vflags(urdc) & RDC_ENABLED) {
4516 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4523 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4530 ASSERT(IS_CONFIGURED(krdc) && !IS_ENABLED(urdc));
4537 rdc_u_init(urdc);
4625 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
4632 void (*flag_op)(rdc_u_info_t *urdc, int flag);
4636 if (!IS_ENABLED(urdc))
4641 if ((flag & RDC_QUEUING) && (!IS_STATE(urdc, RDC_SYNCING)) &&
4650 if (!(rdc_get_vflags(urdc) & RDC_PRIMARY))
4652 else if ((urdc->group_name[0] == 0) ||
4653 (rdc_get_vflags(urdc) & RDC_LOGGING) ||
4654 (rdc_get_vflags(urdc) & RDC_SYNCING))
4676 urdc->group_name, urdc->primary.intf, urdc->secondary.intf);
4682 rdc_set_flags_log(urdc, RDC_LOGGING, why);
4684 flag_op(urdc, RDC_QUEUING);
4750 rdc_write_state(urdc);
4760 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
4764 rdc_clr_flags(urdc, RDC_SYNCING);
4765 rdc_set_flags_log(urdc, RDC_LOGGING,
4768 rdc_write_state(urdc);
4785 if (rdc_get_vflags(urdc) & RDC_SYNCING)
4789 flag_op(urdc, RDC_QUEUING);
4801 if (!(rdc_get_vflags(urdc) & RDC_LOGGING)) {
4802 rdc_set_flags_log(urdc, RDC_LOGGING, why);
4804 rdc_write_state(urdc);
4843 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
4855 if (rdc_get_vflags(urdc) & RDC_PRIMARY)
4856 krdc->intf = rdc_add_to_if(svp, &(urdc->primary.addr),
4857 &(urdc->secondary.addr), 1);
4859 krdc->intf = rdc_add_to_if(svp, &(urdc->secondary.addr),
4860 &(urdc->primary.addr), 0);
4864 spcs_s_add(kstatus, RDC_EADDTOIF, urdc->primary.intf,
4865 urdc->secondary.intf);
4871 if (rdc_get_vflags(urdc) & RDC_SYNCING) {
4873 spcs_s_add(kstatus, RDC_ESYNCING, urdc->primary.file);
4925 rdc_u_info_t *urdc;
4940 urdc = &rdc_u_info[index];
4941 if (!(rdc_get_vflags(urdc) & RDC_PRIMARY)) {
4968 if ((rdc_get_vflags(urdc) & (RDC_SYNCING | RDC_PRIMARY)) !=
4976 if (rdc_get_vflags(urdc) & RDC_SYNCING) {
5005 rdc_u_info_t *urdc;
5041 urdc = &rdc_u_info[index];
5042 if (rdc_isactive_if(&(urdc->primary.addr), &(urdc->secondary.addr)))
5062 rdc_u_info_t *urdc;
5077 urdc = &rdc_u_info[index];
5098 if ((rdc_get_vflags(urdc) & RDC_BMP_FAILED) && (krdc->bitmapfd))
5102 if (strncmp(urdc->primary.bitmap, uparms->rdc_set->primary.bitmap,
5104 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
5108 (void) strncpy(urdc->primary.bitmap,
5114 if (strncmp(urdc->secondary.bitmap, uparms->rdc_set->secondary.bitmap,
5116 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
5117 (void) strncpy(urdc->secondary.bitmap,
5140 if (!(rdc_get_vflags(urdc) & RDC_LOGGING) && rc == -2) {
5153 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) &&
5154 strncmp(urdc->direct_file, uparms->rdc_set->direct_file,
5156 if (!(rdc_get_vflags(urdc) & RDC_LOGGING)) {
5161 (void) strncpy(urdc->direct_file, uparms->rdc_set->direct_file,
5164 if (urdc->direct_file[0]) {
5166 rdc_set_flags(urdc, RDC_FCAL_FAILED);
5168 rdc_clr_flags(urdc, RDC_FCAL_FAILED);
5175 if (strncmp(urdc->group_name, uparms->rdc_set->group_name,
5178 if (!(rdc_get_vflags(urdc) & RDC_LOGGING))
5182 (void) strncpy(orig_group, urdc->group_name, NSC_MAXPATH);
5183 (void) strncpy(urdc->group_name, uparms->rdc_set->group_name,
5193 (void) strncpy(urdc->group_name, orig_group,
5197 urdc->primary.intf, urdc->primary.file,
5198 urdc->secondary.intf, urdc->secondary.file,
5207 if (!(rdc_get_vflags(urdc) & RDC_LOGGING))
5219 rdc_set_flags(urdc, RDC_ASYNC);
5226 rdc_clr_flags(urdc, RDC_ASYNC);
5241 if (!(rdc_get_vflags(urdc) & RDC_LOGGING))
5256 if (!(rdc_get_vflags(urdc) & RDC_LOGGING))
5268 bzero(&urdc->disk_queue,
5269 sizeof (urdc->disk_queue));
5273 rdc_clr_flags(urdc, RDC_ASYNC);
5283 if (!(rdc_get_vflags(urdc) & RDC_LOGGING))
5295 rdc_set_flags(urdc, RDC_ASYNC);
5313 spcs_s_add(kstatus, RDC_EMASTER, urdc->primary.intf,
5314 urdc->primary.file, urdc->secondary.intf,
5315 urdc->secondary.file);
5319 dup_rdc_netbuf(&urdc->primary.addr, &saddr);
5320 dup_rdc_netbuf(&urdc->secondary.addr, &paddr);
5321 free_rdc_netbuf(&urdc->primary.addr);
5322 free_rdc_netbuf(&urdc->secondary.addr);
5323 dup_rdc_netbuf(&saddr, &urdc->secondary.addr);
5324 dup_rdc_netbuf(&paddr, &urdc->primary.addr);
5327 /* copy primary parts of urdc to rdc_set field by field */
5328 (void) strncpy(rdc_set.primary.intf, urdc->primary.intf,
5330 (void) strncpy(rdc_set.primary.file, urdc->primary.file,
5332 (void) strncpy(rdc_set.primary.bitmap, urdc->primary.bitmap,
5335 /* Now overwrite urdc primary */
5336 (void) strncpy(urdc->primary.intf, urdc->secondary.intf,
5338 (void) strncpy(urdc->primary.file, urdc->secondary.file,
5340 (void) strncpy(urdc->primary.bitmap, urdc->secondary.bitmap,
5343 /* Now ovwewrite urdc secondary */
5344 (void) strncpy(urdc->secondary.intf, rdc_set.primary.intf,
5346 (void) strncpy(urdc->secondary.file, rdc_set.primary.file,
5348 (void) strncpy(urdc->secondary.bitmap, rdc_set.primary.bitmap,
5351 if (rdc_get_vflags(urdc) & RDC_PRIMARY) {
5352 rdc_clr_flags(urdc, RDC_PRIMARY);
5359 rdc_set_flags(urdc, RDC_PRIMARY);
5367 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) &&
5385 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) &&
5386 (rdc_get_vflags(urdc) & RDC_SYNC_NEEDED)) {
5389 rdc_clr_flags(urdc, RDC_SYNC_NEEDED);
5390 rdc_set_mflags(urdc, RDC_RSYNC_NEEDED);
5392 } else if (rdc_get_vflags(urdc) & RDC_RSYNC_NEEDED) {
5395 rdc_clr_flags(urdc, RDC_RSYNC_NEEDED);
5396 rdc_set_flags(urdc, RDC_SYNC_NEEDED);
5403 rdc_write_state(urdc);
5419 spcs_s_add(kstatus, RDC_ENOTLOGGING, urdc->primary.intf,
5420 urdc->primary.file, urdc->secondary.intf,
5421 urdc->secondary.file);
5429 rdc_u_info_t *urdc;
5445 urdc = &rdc_u_info[index];
5466 if ((rdc_get_vflags(urdc) & RDC_BMP_FAILED) && (krdc->bitmapfd)) {
5472 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) && urdc->direct_file[0]) {
5474 rdc_set_flags(urdc, RDC_FCAL_FAILED);
5476 rdc_clr_flags(urdc, RDC_FCAL_FAILED);
5481 if ((rdc_get_vflags(urdc) & RDC_VOL_FAILED)) {
5483 rdc_clr_flags(urdc, RDC_VOL_FAILED);
5490 rdc_set_flags_log(urdc, RDC_LOGGING, "set reset");
5494 if ((rdc_get_vflags(urdc) & RDC_DISKQ_FAILED))
5510 rdc_u_info_t *urdc;
5527 urdc = &rdc_u_info[index];
5549 urdc->maxqfbas = uparms->rdc_set->maxqfbas;
5550 rdc_write_state(urdc);
5553 q->maxqfbas = urdc->maxqfbas;
5559 urdc->maxqitems = uparms->rdc_set->maxqitems;
5560 rdc_write_state(urdc);
5563 q->maxqitems = urdc->maxqitems;
5572 spcs_s_add(kstatus, RDC_EQNOQUEUE, urdc->primary.intf,
5573 urdc->primary.file, urdc->secondary.intf,
5574 urdc->secondary.file);
5592 spcs_s_add(kstatus, RDC_EQNOQUEUE, urdc->primary.intf,
5593 urdc->primary.file, urdc->secondary.intf,
5594 urdc->secondary.file);
5607 urdc->asyncthr = uparms->rdc_set->asyncthr;
5608 rdc_write_state(urdc);
5611 q->asyncthr = urdc->asyncthr;
5618 urdc->autosync = 0;
5620 urdc->autosync = 1;
5622 rdc_write_state(urdc);
5628 q->autosync = urdc->autosync;
5647 rdc_u_info_t *urdc;
5686 urdc = &rdc_u_info[index];
5689 * sneak out qstate in urdc->flags
5691 * in urdc->flags. the real qstate is kept in
5697 urdc->flags |= RDC_QNOBLOCK;
5702 rc = rdc_status_copy32(urdc, ptr, sizeof (struct rdc_set32),
5706 rc = ddi_copyout(urdc, ptr, sizeof (struct rdc_set), mode);
5709 urdc->flags &= ~RDC_QNOBLOCK;
5892 rdc_u_info_t *urdc;
5895 urdc = &rdc_u_info[index];
5897 if (!IS_ENABLED(urdc)) {
5900 if (!(rdc_get_vflags(urdc) & RDC_LOGGING)) {
5905 urdc->secondary.intf, urdc->secondary.file);
5912 limit, urdc->secondary.intf, urdc->secondary.file);
5937 rdc_u_info_t *urdc;
5959 urdc = &rdc_u_info[vec[index]];
5974 urdc->bits_set = RDC_COUNT_BITMAP(krdc);
5986 urdc->secondary.intf,
5987 urdc->secondary.file);
6290 rdc_u_info_t *urdc = &rdc_u_info[krdc->index];
6293 ASSERT(IS_ENABLED(urdc));
6298 if ((rdc_get_vflags(urdc) & RDC_PRIMARY) &&
6316 rdc_u_info_t *urdc;
6321 urdc = &rdc_u_info[index];
6325 urdc->volume_size = size;
6329 return (rs == 0 ? urdc->volume_size : 0);
6341 rdc_u_info_t *urdc;
6349 urdc = &rdc_u_info[index];
6364 if (!IS_ENABLED(urdc)) {