Hi Jason, Thanks for the report. Please file a bug report if one is not filed already.
Thanks Tim > Hi, Evan > > When porting libbe test suite to SPARC, I found an issue. > When I create a zone firstly, then try to fork 2 processes > at same time, one process is "beadm create newbe", the other > is "beadm create newbe1" by the "multi_driver" x86 binary in > attachment, I found only one process could create a BE > successfully. The issue happens on SPARC as well as X86 > platform only if there is a zone created beforehand. > > Here is the journal in test suite results, I update the report > wiki page. > http://greatwall.prc/~xz201216/snap/sparc_porting/regression/soe-t2000-11/sorted_results/snap_function/FAIL/tc_snap_function.54 > > Here is how to reproduce it.. > # zonecfg -z z1 > ....... > # zoneadm -z z1 install > ...... > > # ./multi_driver -i 2 -p 'beadm create newbe' -p 'beadm create newbe1' > Process 1: beadm create newbe > Ret code: 1 > ====== stdout ====== > > ==================== > ====== stderr ====== > Unable to create newbe. > BE newbe already exists. Please choose a different BE name. > > ==================== > > Process 2: beadm create newbe1 > Ret code: 0 > ====== stdout ====== > > ==================== > ====== stderr ====== > > ==================== > > After that, only "newbe1" is created in this case, but > in other time "newbe" will be created while "newbe1" is > failed. > > Then I tried the test driver "tbeadm" with same command. > It showed there is a race when create snapshot for zone > dataset. As following. > # ./multi_driver -i 2 -p '/export/tbeadm create newbe' -p > '/export/tbeadm create newbe1' > Process 1: /export/tbeadm create newbe > Ret code: 45 > ====== stdout ====== > > ==================== > ====== stderr ====== > be_get_uuid: failed to get uuid property from BE root dataset user > properties. > be_copy_zones: failed to snapshot zone BE > (rpool/zones/z1/ROOT/zbe at zbe-1): dataset already exists > be_copy: failed to process zones > be_copy: destroying partially created boot environment > > ==================== > > Process 2: /export/tbeadm create newbe1 > Ret code: 0 > ====== stdout ====== > > ==================== > ====== stderr ====== > be_get_uuid: failed to get uuid property from BE root dataset user > properties. > > ==================== > > It is a conflict when create multiple processes when dispatch auto > names, maybe we > need to create locks to make sure the success prevent the situation. > > > Hope your comments. > > > Thanks > Jason > > > ------------------------------------------------------------------------ > > _______________________________________________ > caiman-discuss mailing list > caiman-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/caiman-discuss