static int stmfAddViewEntry003() { int ret = 0; int i; boolean_t foundA = B_FALSE, foundB = B_FALSE; stmfViewEntry viewEntry; stmfGuidList *luList; stmfGuid guidA, guidB; stmfLogicalUnitProperties luProps; char sbdadmDeleteLuA[MAXPATHLEN]; char sbdadmDeleteLuB[MAXPATHLEN]; char guidAsciiBufA[33]; char guidAsciiBufB[33]; int stmfRet; bzero(&viewEntry, sizeof (viewEntry)); (void) system("touch /tmp/stmfAddViewEntryA.lu"); (void) system("touch /tmp/stmfAddViewEntryB.lu"); (void) system("sbdadm create-lu -s 10g /tmp/stmfAddViewEntryA.lu"); (void) system("sbdadm create-lu -s 10g /tmp/stmfAddViewEntryB.lu"); stmfRet = stmfGetLogicalUnitList(&luList); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 1; goto cleanup1; } for (i = 0; i < luList->cnt; i++) { stmfRet = stmfGetLogicalUnitProperties(&(luList->guid[i]), &luProps); if (strncmp(luProps.alias, "/tmp/stmfAddViewEntryA.lu", sizeof (luProps.alias)) == 0) { foundA = B_TRUE; bcopy(&luList->guid[i], &guidA, sizeof (guidA)); } if (strncmp(luProps.alias, "/tmp/stmfAddViewEntryB.lu", sizeof (luProps.alias)) == 0) { foundB = B_TRUE; bcopy(&luList->guid[i], &guidB, sizeof (guidB)); } } if (!foundA || !foundB) { ret = 1; goto cleanup1; } guidToAscii(&guidA, guidAsciiBufA); guidToAscii(&guidB, guidAsciiBufB); (void) snprintf(sbdadmDeleteLuA, sizeof (sbdadmDeleteLuA), "%s %s", "sbdadm delete-lu", guidAsciiBufA); (void) snprintf(sbdadmDeleteLuB, sizeof (sbdadmDeleteLuA), "%s %s", "sbdadm delete-lu", guidAsciiBufB); viewEntry.allHosts = B_TRUE; viewEntry.allTargets = B_TRUE; viewEntry.luNbrValid = B_TRUE; viewEntry.luNbr[0] = 232 >> 8; viewEntry.luNbr[1] = 232 & 0xff; stmfRet = stmfAddViewEntry(&guidA, &viewEntry); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 1; goto cleanup2; } stmfRet = stmfAddViewEntry(&guidB, &viewEntry); if (stmfRet != STMF_ERROR_LUN_IN_USE) { ret = 2; goto cleanup2; } cleanup3: (void) stmfRemoveViewEntry(&guidA, 0); cleanup2: (void) system(sbdadmDeleteLuA); (void) system(sbdadmDeleteLuB); cleanup1: (void) system("rm /tmp/stmfAddViewEntryA.lu"); (void) system("rm /tmp/stmfAddViewEntryB.lu"); return (ret); }
static int stmfRemoveViewEntry001() { int ret = 0; int i; boolean_t found = B_FALSE; stmfViewEntry viewEntry; stmfGuidList *luList; stmfLogicalUnitProperties luProps; stmfViewEntryList *viewEntryList; char sbdadmDeleteLu[MAXPATHLEN]; char guidAsciiBuf[33]; int stmfRet; bzero(&viewEntry, sizeof (viewEntry)); (void) system("touch /tmp/stmfRemoveViewEntry.lu"); (void) system("sbdadm create-lu -s 10g /tmp/stmfRemoveViewEntry.lu"); stmfRet = stmfGetLogicalUnitList(&luList); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 1; goto cleanup1; } for (i = 0; i < luList->cnt; i++) { stmfRet = stmfGetLogicalUnitProperties(&(luList->guid[i]), &luProps); if (strncmp(luProps.alias, "/tmp/stmfRemoveViewEntry.lu", sizeof (luProps.alias)) == 0) { found = B_TRUE; break; } } if (!found) { ret = 2; goto cleanup1; } guidToAscii(&luList->guid[i], guidAsciiBuf); (void) snprintf(sbdadmDeleteLu, sizeof (sbdadmDeleteLu), "%s %s", "sbdadm delete-lu", guidAsciiBuf); viewEntry.allHosts = B_TRUE; viewEntry.allTargets = B_TRUE; viewEntry.luNbrValid = B_FALSE; stmfRet = stmfAddViewEntry(&(luList->guid[i]), &viewEntry); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 3; goto cleanup2; } stmfRet = stmfGetViewEntryList(&(luList->guid[i]), &viewEntryList); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 4; goto cleanup2; } if (viewEntryList->cnt > 0) { if ((viewEntryList->ve[0].allHosts != B_TRUE) || (viewEntryList->ve[0].allTargets != B_TRUE)) { ret = 5; goto cleanup2; } if (viewEntryList->ve[0].luNbrValid != B_TRUE) { ret = 6; goto cleanup2; } } stmfRet = stmfRemoveViewEntry(&(luList->guid[i]), viewEntryList->ve[0].veIndex); if (stmfRet != STMF_STATUS_SUCCESS) { ret = 7; goto cleanup2; } stmfFreeMemory(viewEntryList); stmfRet = stmfGetViewEntryList(&(luList->guid[i]), &viewEntryList); if (stmfRet != STMF_ERROR_NOT_FOUND) { ret = 8; goto cleanup2; } cleanup2: (void) system(sbdadmDeleteLu); cleanup1: (void) system("rm /tmp/stmfRemoveViewEntry.lu"); return (ret); }