Lines Matching defs:rtxnp

179  * (md_rentxn_t rtxn or rtxnp).
189 md_rename_lock(md_rendelta_t *delta, md_rentxn_t *rtxnp)
195 ASSERT(rtxnp);
197 if (!delta || !rtxnp) {
198 (void) mdsyserror(&rtxnp->mde, EINVAL);
202 op = rtxnp->op;
208 if (op == MDRNOP_RENAME && mnum == rtxnp->to.mnum) {
214 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP, mnum);
220 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP, mnum);
240 md_rentxn_t *rtxnp)
363 md_rename_listfolks(md_rendelta_t **dlpp, md_rentxn_t *rtxnp)
367 ASSERT(rtxnp);
370 ASSERT((rtxnp->op == MDRNOP_EXCHANGE) || (rtxnp->op == MDRNOP_RENAME));
371 ASSERT(rtxnp->from.uip);
372 ASSERT(rtxnp->from.unp);
374 if ((!rtxnp->from.uip) || (!rtxnp->from.unp)) {
375 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP,
376 rtxnp->from.mnum);
380 if (!MD_HAS_PARENT(MD_PARENT(rtxnp->from.unp))) {
389 if (MD_PARENT(rtxnp->from.unp) == MD_MULTI_PARENT) {
390 (void) mdmderror(&rtxnp->mde, MDE_RENAME_SOURCE_BAD,
391 rtxnp->from.mnum);
395 if ((rtxnp->op == MDRNOP_RENAME) ||
396 (MD_PARENT(rtxnp->from.unp) != MD_SID(rtxnp->to.unp))) {
401 md_makedevice(md_major, MD_PARENT(rtxnp->from.unp)),
403 MD_UNIT(MD_PARENT(rtxnp->from.unp)),
404 MDI_UNIT(MD_PARENT(rtxnp->from.unp)),
405 &rtxnp->mde);
411 md_makedevice(md_major, MD_SID(rtxnp->to.unp)),
413 rtxnp->to.unp,
414 rtxnp->to.uip,
415 &rtxnp->mde);
419 if (mdisok(&rtxnp->mde)) {
420 (void) mdsyserror(&rtxnp->mde, ENOMEM);
436 md_rename_listself(md_rendelta_t **dlpp, md_rentxn_t *rtxnp)
441 ASSERT(rtxnp);
443 ASSERT((rtxnp->op == MDRNOP_EXCHANGE) || (rtxnp->op == MDRNOP_RENAME));
444 ASSERT(rtxnp->from.unp);
445 ASSERT(rtxnp->from.uip);
447 if ((!rtxnp->from.uip) || (!rtxnp->from.unp)) {
448 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP,
449 rtxnp->from.mnum);
461 if (rtxnp->op == MDRNOP_RENAME) {
465 md_makedevice(md_major, rtxnp->from.mnum),
467 rtxnp->from.unp,
468 rtxnp->from.uip,
469 &rtxnp->mde);
472 if (MD_PARENT(rtxnp->from.unp) == MD_SID(rtxnp->to.unp)) {
480 md_makedevice(md_major, rtxnp->from.mnum),
482 rtxnp->from.unp,
483 rtxnp->from.uip,
484 &rtxnp->mde);
488 if (mdisok(&rtxnp->mde)) {
489 (void) mdsyserror(&rtxnp->mde, ENOMEM);
527 lock_dtree(md_rendelta_t *family, md_rentxn_t *rtxnp)
533 ASSERT(rtxnp);
535 if (!family || !rtxnp) {
545 if ((rc = (int)(*r->lock) (r, rtxnp)) != 0) {
564 check_dtree(md_rendelta_t *family, md_rentxn_t *rtxnp)
570 ASSERT(rtxnp);
572 if (!family || !rtxnp) {
585 if (!(rtxnp->op == MDRNOP_RENAME &&
586 md_getminor(r->dev) == rtxnp->to.mnum)) {
596 switch (rtxnp->revision) {
599 (!rtxnp->stat.trans_in_stack)) {
600 (void) mdmderror(&rtxnp->mde, MDE_RENAME_BUSY,
610 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
618 (void) mdmderror(&rtxnp->mde, MDE_RENAME_BUSY,
625 if ((rc = (int)(*r->check)(r, rtxnp)) != 0) {
631 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
650 role_swap_dtree(md_rendelta_t *family, md_rentxn_t *rtxnp)
655 ASSERT(rtxnp);
662 (*r->role_swap)(r, rtxnp);
670 ASSERT(rtxnp->rec_idx > 0);
671 ASSERT(rtxnp->rec_idx < rtxnp->n_recids);
673 if (rtxnp->rec_idx >= rtxnp->n_recids || rtxnp->rec_idx <= 0) {
682 "md_rename: role_swap_dtree(family:%p, rtxnp:%p)",
683 (void *) family, (void *) rtxnp);
686 rtxnp->recids[rtxnp->rec_idx] = 0;
688 mddb_commitrecs_wrapper(rtxnp->recids);
696 unlock_dtree(md_rendelta_t *family, md_rentxn_t *rtxnp)
702 ASSERT(rtxnp);
720 r->unlock(r, rtxnp);
736 md_rentxn_t *rtxnp)
743 ASSERT(rtxnp);
744 ASSERT(rtxnp->op == MDRNOP_RENAME);
748 ASSERT(rtxnp->rec_idx >= 0);
749 ASSERT(rtxnp->recids);
752 ASSERT(md_getminor(delta->dev) == rtxnp->from.mnum);
754 from_min = rtxnp->from.mnum;
755 to_min = rtxnp->to.mnum;
810 sv.key = rtxnp->from.key;
823 md_store_recid(&rtxnp->rec_idx, rtxnp->recids, delta->unp);
832 md_rentxn_t *rtxnp)
834 ASSERT(rtxnp);
835 ASSERT((MDRNOP_RENAME == rtxnp->op) || (rtxnp->op == MDRNOP_EXCHANGE));
836 ASSERT(rtxnp->rec_idx >= 0);
837 ASSERT(rtxnp->recids);
842 ASSERT((MD_PARENT(delta->unp) == rtxnp->from.mnum) ||
843 (MD_PARENT(delta->unp) == rtxnp->to.mnum));
845 if (MD_PARENT(delta->unp) == rtxnp->from.mnum) {
846 MD_PARENT(delta->unp) = rtxnp->to.mnum;
849 md_store_recid(&rtxnp->rec_idx, rtxnp->recids, delta->unp);
858 md_rentxn_t *rtxnp)
862 ASSERT(rtxnp);
863 ASSERT(rtxnp->op == MDRNOP_EXCHANGE);
864 ASSERT(rtxnp->rec_idx >= 0);
865 ASSERT(rtxnp->recids);
871 ASSERT(md_getminor(delta->dev) == rtxnp->to.mnum);
873 from_min = rtxnp->from.mnum;
874 to_min = rtxnp->to.mnum;
905 delta->uip->ui_kstat = rtxnp->from.kstatp;
923 md_store_recid(&rtxnp->rec_idx, rtxnp->recids, delta->unp);
932 md_rentxn_t *rtxnp)
936 ASSERT(rtxnp);
937 ASSERT(rtxnp->op == MDRNOP_EXCHANGE);
938 ASSERT(rtxnp->rec_idx >= 0);
939 ASSERT(rtxnp->recids);
945 ASSERT(md_getminor(delta->dev) == rtxnp->from.mnum);
947 from_min = rtxnp->from.mnum;
948 to_min = rtxnp->to.mnum;
979 delta->uip->ui_kstat = rtxnp->to.kstatp;
997 md_store_recid(&rtxnp->rec_idx, rtxnp->recids, delta->unp);
1022 md_rentxn_t *rtxnp)
1045 if ((MD_MULTI_PARENT != MD_PARENT(rtxnp->from.unp)) &&
1046 (MD_MULTI_PARENT != MD_PARENT(rtxnp->to.unp))) {
1114 md_rentxn_t *rtxnp
1125 ASSERT(rtxnp);
1127 from_min = rtxnp->from.mnum;
1128 to_min = rtxnp->to.mnum;
1133 (void) mdmderror(&rtxnp->mde,
1148 (void) mdmderror(&rtxnp->mde,
1154 if (!role_swap_is_valid(prev_ord, rolep->ord, r, rtxnp)) {
1155 (void) mdmderror(&rtxnp->mde,
1166 (void) mdmderror(&rtxnp->mde, MDE_RENAME_TARGET_BAD,
1178 (void) mdmderror(&rtxnp->mde,
1192 dump_txn(md_rentxn_t *rtxnp) {
1198 cmn_err(CE_NOTE, "rtxnp: %p", (void *) rtxnp);
1199 if (rtxnp) {
1201 rtxnp->beginning, OP_STR(rtxnp->op));
1205 rtxnp->revision, rtxnp->uflags,
1206 rtxnp->rec_idx, rtxnp->n_recids, (void *) rtxnp->recids,
1207 rtxnp->stat.trans_in_stack? " (trans in stack)": "");
1209 rtxnp->from.beginning);
1211 (ulong_t)rtxnp->from.mnum, (ulong_t)rtxnp->from.key);
1213 (ulong_t)rtxnp->from.unp, (ulong_t)rtxnp->from.uip);
1214 cmn_err(CE_NOTE, " end: %llx", rtxnp->from.end);
1215 cmn_err(CE_NOTE, " to: beginning: %llx", rtxnp->to.beginning);
1217 (ulong_t)rtxnp->to.mnum, (ulong_t)rtxnp->to.key);
1219 (ulong_t)rtxnp->to.unp, (ulong_t)rtxnp->to.uip);
1220 cmn_err(CE_NOTE, " end: %llx", rtxnp->to.end);
1221 cmn_err(CE_NOTE, "end: %llx\n", rtxnp->end);
1270 validate_txn_parms(md_rentxn_t *rtxnp)
1274 ASSERT(rtxnp);
1276 from_min = rtxnp->from.mnum;
1277 to_min = rtxnp->to.mnum;
1279 switch (rtxnp->revision) {
1281 if (rtxnp->uflags != 0) {
1282 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
1293 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
1298 if ((rtxnp->from.uip = MDI_UNIT(from_min)) == NULL) {
1299 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP, from_min);
1304 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP, from_min);
1308 if ((rtxnp->from.key == MD_KEYBAD) || (rtxnp->from.key == MD_KEYWILD)) {
1309 (void) mdmderror(&rtxnp->mde, MDE_INVAL_UNIT, from_min);
1313 rtxnp->from.kstatp = rtxnp->from.uip->ui_kstat;
1314 rtxnp->from.unp = MD_UNIT(from_min);
1317 (void) mdmderror(&rtxnp->mde, MDE_INVAL_UNIT, to_min);
1321 switch (rtxnp->op) {
1323 rtxnp->to.unp = MD_UNIT(to_min);
1324 rtxnp->to.uip = MDI_UNIT(to_min);
1330 if ((rtxnp->to.uip == NULL) ||
1332 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP,
1337 if ((rtxnp->to.key == MD_KEYBAD) ||
1338 (rtxnp->to.key == MD_KEYWILD)) {
1339 (void) mdmderror(&rtxnp->mde, MDE_INVAL_UNIT, to_min);
1350 if ((MD_HAS_PARENT(MD_PARENT(rtxnp->from.unp))) &&
1351 (MD_PARENT(rtxnp->from.unp) == to_min) &&
1352 MD_HAS_PARENT(MD_PARENT(rtxnp->to.unp))) {
1353 (void) mdmderror(&rtxnp->mde, MDE_RENAME_ORDER,
1358 if ((MD_HAS_PARENT(MD_PARENT(rtxnp->to.unp))) &&
1359 (MD_PARENT(rtxnp->to.unp) == from_min) &&
1360 (MD_CAPAB(rtxnp->to.unp) & MD_CAN_META_CHILD)) {
1361 (void) mdmderror(&rtxnp->mde, MDE_RENAME_ORDER,
1366 rtxnp->to.kstatp = rtxnp->to.uip->ui_kstat;
1378 (void) mdmderror(&rtxnp->mde, MDE_UNIT_ALREADY_SETUP,
1389 (void) mdmderror(&rtxnp->mde, MDE_INVAL_UNIT, to_min);
1393 rtxnp->to.unp = NULL;
1394 rtxnp->to.uip = NULL;
1395 rtxnp->to.kstatp = NULL;
1399 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
1407 rtxnp->beginning = TXN_BEG;
1409 rtxnp->from.beginning = TXNUN_BEG;
1410 rtxnp->from.end = TXNUN_END;
1412 rtxnp->to.beginning = TXNUN_BEG;
1413 rtxnp->to.end = TXNUN_END;
1415 rtxnp->end = TXN_END;
1427 md_rentxn_t *rtxnp,
1440 ASSERT(rtxnp);
1441 ASSERT((rtxnp->op == MDRNOP_RENAME) || (rtxnp->op == MDRNOP_EXCHANGE));
1444 from_min = rtxnp->from.mnum;
1451 (void) mdmderror(&rtxnp->mde, MDE_UNIT_NOT_SETUP, from_min);
1466 (void) mdmderror(&rtxnp->mde,
1487 md_rentxn_t *rtxnp,
1497 ASSERT(rtxnp);
1499 if (!family || !rtxnp) {
1511 n_added = (*add_relatives_funcp) (family, rtxnp);
1514 if (mdisok(&rtxnp->mde)) {
1515 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
1516 rtxnp->from.mnum);
1522 rtxnp->n_recids += n_added;
1532 alloc_recids(md_rendelta_t *family, md_rentxn_t *rtxnp)
1536 if (!family || !rtxnp) {
1541 rtxnp->rec_idx = 0;
1543 if (rtxnp->n_recids == 0) {
1548 rtxnp->n_recids += 1; /* terminator */
1550 rtxnp->recids = kmem_alloc(sizeof (mddb_recid_t) * rtxnp->n_recids,
1552 if (!(rtxnp->recids)) {
1557 bzero((void *) rtxnp->recids,
1558 (sizeof (mddb_recid_t) * rtxnp->n_recids));
1561 (void) mdsyserror(&rtxnp->mde, err);
1573 * Use only the cached pointers (in rtxnp.)
1576 build_dtree(md_rentxn_t *rtxnp)
1582 ASSERT(rtxnp);
1583 ASSERT((rtxnp->op == MDRNOP_RENAME) || (rtxnp->op == MDRNOP_EXCHANGE));
1585 err = set_list_rels_funcp(rtxnp, MD_CAN_PARENT, MDRNM_LIST_URFOLKS,
1592 err = set_list_rels_funcp(rtxnp, MD_CAN_DO_ANYTHING, MDRNM_LIST_URSELF,
1598 err = set_list_rels_funcp(rtxnp, MD_CAN_META_CHILD, MDRNM_LIST_URKIDS,
1605 rtxnp->n_recids = 0; /* accumulated by list_relations() */
1607 if ((err = list_relations(&family, rtxnp, add_folks, 0, 1)) != 0) {
1611 if ((err = list_relations(&family, rtxnp, add_self, 1, 1)) != 0) {
1615 err = list_relations(&family, rtxnp, add_kids, 0, md_nunits);
1623 if ((!family) || (rtxnp->n_recids == 0)) {
1624 (void) mdmderror(&rtxnp->mde, MDE_RENAME_CONFIG_ERROR,
1625 rtxnp->from.mnum);
1633 if ((err = valid_roleswap_dtree(family, rtxnp)) != 0) {
1637 if ((err = alloc_recids(family, rtxnp)) != 0) {