Re-send the mail since last mail was rejected.

I put the multi_driver on /net/greatwall.prc/Projects/Install. The
binary is a tool can fork multiple processes at the same time.

Jason
Jason Zhao wrote:
> 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


Reply via email to