Name services team, Per http://www.opensolaris.org/jive/message.jspa?messageID=177109#178420 I made a list of libscf calls which can block on name service calls. It is included at the end of this mail. From you I ask for a list of name service calls which might block on libscf calls. An exhaustive list doesn't seem to be necessary at this time, since as you can see from my list, libscf calls only block on getuseruid().
I fully expect that our lists will portray cycles which represent possible deadlocks between svc.configd and nscd. In that case I believe we will have to negotiate qualifiers for the semantics which will break those cycles. Finally, once we agree on the blocking semantics of our interfaces, I think we should establish an authoritative location for them, which will probably imply amendment procedures. Block comments in the source base or an ARC contract might be good candidates. David Public libscf functions which might block on name service calls: - scf_instance_add_pg(), scf_instance_delete(), scf_iter_next_value(), scf_pg_delete(), scf_property_get_value(), scf_scope_add_service(), scf_service_add_instance(), scf_service_add_pg(), scf_service_delete(), scf_transaction_commit(), and scf_transaction_start() might block on getuseruid(). No other libscf functions will block on name service calls.