On 09/15/2016 08:29 AM, Parthasarathy Bhuvaragan wrote:
>
> On 09/14/2016 10:20 PM, Jon Maloy wrote:
>> Hi Partha,
>> It looks good. I am especially happy that you got rid of the "connected" 
>> field, which I have been requesting for several years.
>> I only have a couple of comments:
>>
>> 1: It disturbs me that TIPC_UNCONNECTED and TIPC_LISTENING sockets goes to 
>> state TIPC_DISCONNECTING before they are deleted, without ever having been 
>> connected. This is counterintuitive and cannot be necessary.
> Changing the names of the new states should make the transitions more 
> logical as below:
> TIPC_UNCONNECTED => TIPC_OPEN
> TIPC_DISCONNECTING => TIPC_CLOSE
> So in this case, all open sockets needs to be closed. Its valid for 
> both connectionless and connection oriented sockets as for connection 
> oriented sockets there is no difference between DISCONNECTING and CLOSE.

Sounds better, although I think TIPC_CLOSING, or maybe TIPC_RELEASING 
would be even better.

>
> I need that we get names for the states correct, as I will export them 
> to user space for socket diagnostics.
>
> BTW, why do we even support shutdown() on connectionless sockets? The 
> function handles states relevant only for connection oriented sockets.
>> 2: "connection less" should be "connectionless".  In several places.
> I will fix this. I need to fix the description in tipc_poll() too.

When you have done this and the above name changes, you can add an 
Acked-by: from me.

///jon

>> 3: We really must rename/retype the confusing "handle" field used in 
>> TIPC_SKB_CB()->handle. I believe it should be made a u32 and called "read" 
>> or "offset" or similar.  Maybe a separate patch before or after this series? 
>>                 
> I will look into that, and post it separately.
>> Regards
>> ///jon
>>
>>
>>> -----Original Message-----
>>> From: Parthasarathy Bhuvaragan
>>> Sent: Tuesday, 13 September, 2016 06:52
>>> To:tipc-discussion@lists.sourceforge.net; Jon Maloy<jon.ma...@ericsson.com>;
>>> ma...@donjonn.com; Ying Xue<ying....@windriver.com>
>>> Subject: [PATCH net-next v3 00/12] tipc: create socket FSM using sk_state 
>>> only
>>>
>>> The following issues with the current socket layer hinders socket 
>>> diagnostics
>>> implementation, which led to this patch series. The series does not add any
>>> functional change.
>>>
>>> 1. tipc socket state is derived from multiple variables like
>>>     sock->state, tsk->probing_state and tsk->connected. This style forces
>>>     us to export multiple attributes to the user space, which has to be
>>>     backward compatible.
>>>
>>> 2. Abuse of sock->state cannot be exported to user-space without
>>>     requiring tipc specific hacks in the user-space.
>>>     - For connection less (CL) sockets sock->state is overloaded to
>>>       tipc state SS_READY.
>>>     - For connection oriented (CO) listening socket sock->state is
>>>       overloaded to tipc state SS_LISTEN.
>>>
>>> This series is split into three:
>>> 1. A bug fix in patch-1
>>> 2. Express all tipc states using a single variable. This is done in 
>>> patch#2-5.
>>> 3. Migrate the new tipc states to sk->sk_state. This is done in patch#6-12.
>>>
>>> The figures below represents the FSM after this series:
>>>
>>> Unconnected Sockets:
>>> +------------------+        +--------------------+
>>> | TIPC_UNCONNECTED |------->| TIPC_DISCONNECTING |
>>> +------------------+        +--------------------+
>>>
>>> Stream Server Listening Socket:
>>> +------------------+        +-------------+
>>> | TIPC_UNCONNECTED |------->| TIPC_LISTEN |
>>> +------------------+        +-------------+
>>>                                    |
>>> +--------------------+            |
>>> | TIPC_DISCONNECTING |<-----------+
>>> +--------------------+
>>>
>>> Stream Server Data Socket:
>>> +-----------------+        +------------------+
>>> |TIPC_UNCONNECTED |------> | TIPC_ESTABLISHED |<---+
>>> +-----------------+        +------------------+    |
>>>                                 ^   |    |          |
>>>                                 |   |    +----------+
>>>                                 |   v
>>> +------------------+      +-------------+
>>> |TIPC_DISCONNECTING|<-----|TIPC_PROBING |
>>> +------------------+      +-------------+
>>>
>>> Stream Socket Client:
>>> +-----------------+       +-----------------+
>>> |TIPC_UNCONNECTED |------>| TIPC_CONNECTING |
>>> +-----------------+       +-----------------+
>>>                                    |
>>>                                    |
>>>                                    v
>>>                            +------------------+
>>>                            | TIPC_ESTABLISHED |<---+
>>>                            +------------------+    |
>>>                                 ^   |    |         |
>>>                                 |   |    +---------+
>>>                                 |   v
>>> +------------------+      +-------------+
>>> |TIPC_DISCONNECTING|<-----|TIPC_PROBING |
>>> +------------------+      +-------------+
>>>
>>> NOTE:
>>> This is just a base refractoring required for socket diagnostics.
>>> Implementation of TIPC socket diagnostics will be sent as a
>>> separate series.
>>>
>>> ---
>>> I plan to submit this series after v4.8 release cycle.
>>>
>>> v3: - Address comments from Ying Xue<ying....@windriver.com>  in
>>>        patch #7, #11.
>>>      - Rebase on latest netnext which contains fixes for broadcast NACK
>>>        that seems to make ptts regression stable.
>>>      - Ran ptts suits for 6000 iterations for 5+ hours.
>>>
>>> v2: - Address comments from Ying Xue<ying....@windriver.com>  in
>>>        patch #4, #5, #12.
>>>      - Added a note that the socket diagnostics will be sent as
>>>        another series.
>>> v1: - I base the following patch series as the first version:
>>>        [RFC PATCH v1 00/12] tipc: create socket FSM using sk_state only
>>>
>>> Parthasarathy Bhuvaragan (12):
>>>    tipc: set kern=0 in sk_alloc() during tipc_accept()
>>>    tipc: rename tsk->remote to tsk->peer for consistent naming
>>>    tipc: remove tsk->connected for connection less sockets
>>>    tipc: remove tsk->connected from tipc_sock
>>>    tipc: remove probing_intv from tipc_sock
>>>    tipc: remove socket state SS_READY
>>>    tipc: create TIPC_LISTEN as a new sk_state
>>>    tipc: create TIPC_PROBING/TIPC_ESTABLISHED as new sk_states
>>>    tipc: create TIPC_UNCONNECTED as a new sk_state
>>>    tipc: create TIPC_DISCONNECTING as a new sk_state
>>>    tipc: create TIPC_CONNECTING as a new sk_state
>>>    tipc: remove SS_CONNECTED sock state
>>>
>>>   include/uapi/linux/tipc.h |  12 ++
>>>   net/tipc/socket.c         | 339 
>>> ++++++++++++++++++++++++++--------------------
>>>   2 files changed, 203 insertions(+), 148 deletions(-)
>>>
>>> --
>>> 2.1.4
>

------------------------------------------------------------------------------
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to