+9
−4
Loading
The previous patches described as optimizations also fixed some issues. They seem sufficient to cover all the error cases, but the real source of the problem lies in foreach_session() initiated by the device backend, which can use sessions that were never seen by the backend. The backends are only notified when a session is *started*, but foreach_session() iterates through all the sessions - even those that were never started. Vhost SCSI, for example, in the foreach_session() callbacks used to expect svsession->svdev to be always set, but that field is only set when the session gets started. A perfect solution would to introduce a new backend callback to be called on new connection. Vhost SCSI could set e.g. svsession->svdev inside. For now we go with much easier solution that prevents sessions from being used in foreach-session() unless they were started at least once. (...and e.g. got their ->svdev set) Change-Id: Ida30a1f27f99977360d08a71a64fc92931b25b75 Signed-off-by:Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449394 Reviewed-by:
Changpeng Liu <changpeng.liu@intel.com> Reviewed-by:
Jim Harris <james.r.harris@intel.com> Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com>