cifs: use new enum for ses_status
authorShyam Prasad N <sprasad@microsoft.com>
Thu, 7 Apr 2022 13:15:49 +0000 (13:15 +0000)
committerSteve French <stfrench@microsoft.com>
Tue, 24 May 2022 19:11:17 +0000 (14:11 -0500)
ses->status today shares statusEnum with server->tcpStatus.
This has been confusing, and tcon->status has deviated to use
a new enum. Follow suit and use new enum for ses_status as well.

Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifs_debug.c
fs/cifs/cifsglob.h
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/misc.c
fs/cifs/smb2pdu.c
fs/cifs/smb2transport.c
fs/cifs/transport.c

index 0effc4c..c098735 100644 (file)
@@ -387,7 +387,7 @@ skip_rdma:
                                (ses->serverNOS == NULL)) {
                                seq_printf(m, "\n\t%d) Address: %s Uses: %d Capability: 0x%x\tSession Status: %d ",
                                        i, ses->ip_addr, ses->ses_count,
-                                       ses->capabilities, ses->status);
+                                       ses->capabilities, ses->ses_status);
                                if (ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST)
                                        seq_printf(m, "Guest ");
                                else if (ses->session_flags & SMB2_SESSION_FLAG_IS_NULL)
@@ -399,7 +399,7 @@ skip_rdma:
                                        "\n\tSMB session status: %d ",
                                i, ses->ip_addr, ses->serverDomain,
                                ses->ses_count, ses->serverOS, ses->serverNOS,
-                               ses->capabilities, ses->status);
+                               ses->capabilities, ses->ses_status);
                        }
 
                        seq_printf(m, "\n\tSecurity type: %s ",
index 011c440..711cf51 100644 (file)
  * CIFS vfs client Status information (based on what we know.)
  */
 
-/* associated with each tcp and smb session */
+/* associated with each connection */
 enum statusEnum {
        CifsNew = 0,
        CifsGood,
@@ -114,8 +114,15 @@ enum statusEnum {
        CifsNeedReconnect,
        CifsNeedNegotiate,
        CifsInNegotiate,
-       CifsNeedSessSetup,
-       CifsInSessSetup,
+};
+
+/* associated with each smb session */
+enum ses_status_enum {
+       SES_NEW = 0,
+       SES_GOOD,
+       SES_EXITING,
+       SES_NEED_RECON,
+       SES_IN_SETUP
 };
 
 /* associated with each tree connection to the server */
@@ -930,7 +937,7 @@ struct cifs_ses {
        struct mutex session_mutex;
        struct TCP_Server_Info *server; /* pointer to server info */
        int ses_count;          /* reference counter */
-       enum statusEnum status;  /* updates protected by cifs_tcp_ses_lock */
+       enum ses_status_enum ses_status;  /* updates protected by cifs_tcp_ses_lock */
        unsigned overrideSecFlg;  /* if non-zero override global sec flags */
        char *serverOS;         /* name of operating system underlying server */
        char *serverNOS;        /* name of network operating system of server */
index a9dccd1..6371b9e 100644 (file)
@@ -75,7 +75,7 @@ cifs_mark_open_files_invalid(struct cifs_tcon *tcon)
 
        /* only send once per connect */
        spin_lock(&cifs_tcp_ses_lock);
-       if ((tcon->ses->status != CifsGood) || (tcon->status != TID_NEED_RECON)) {
+       if ((tcon->ses->ses_status != SES_GOOD) || (tcon->status != TID_NEED_RECON)) {
                spin_unlock(&cifs_tcp_ses_lock);
                return;
        }
index da1579f..df4bcc5 100644 (file)
@@ -241,7 +241,7 @@ cifs_mark_tcp_ses_conns_for_reconnect(struct TCP_Server_Info *server,
                if (!mark_smb_session && !CIFS_ALL_CHANS_NEED_RECONNECT(ses))
                        goto next_session;
 
-               ses->status = CifsNeedReconnect;
+               ses->ses_status = SES_NEED_RECON;
 
                list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
                        tcon->need_reconnect = true;
@@ -1828,7 +1828,7 @@ cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx)
 
        spin_lock(&cifs_tcp_ses_lock);
        list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
-               if (ses->status == CifsExiting)
+               if (ses->ses_status == SES_EXITING)
                        continue;
                if (!match_session(ses, ctx))
                        continue;
@@ -1848,7 +1848,7 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
        cifs_dbg(FYI, "%s: ses_count=%d\n", __func__, ses->ses_count);
 
        spin_lock(&cifs_tcp_ses_lock);
-       if (ses->status == CifsExiting) {
+       if (ses->ses_status == SES_EXITING) {
                spin_unlock(&cifs_tcp_ses_lock);
                return;
        }
@@ -1864,13 +1864,13 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
        /* ses_count can never go negative */
        WARN_ON(ses->ses_count < 0);
 
-       if (ses->status == CifsGood)
-               ses->status = CifsExiting;
+       if (ses->ses_status == SES_GOOD)
+               ses->ses_status = SES_EXITING;
        spin_unlock(&cifs_tcp_ses_lock);
 
        cifs_free_ipc(ses);
 
-       if (ses->status == CifsExiting && server->ops->logoff) {
+       if (ses->ses_status == SES_EXITING && server->ops->logoff) {
                xid = get_xid();
                rc = server->ops->logoff(xid, ses);
                if (rc)
@@ -2090,7 +2090,7 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx)
        ses = cifs_find_smb_ses(server, ctx);
        if (ses) {
                cifs_dbg(FYI, "Existing smb sess found (status=%d)\n",
-                        ses->status);
+                        ses->ses_status);
 
                spin_lock(&ses->chan_lock);
                if (cifs_chan_needs_reconnect(ses, server)) {
@@ -4001,11 +4001,13 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
        spin_unlock(&ses->chan_lock);
 
        spin_lock(&cifs_tcp_ses_lock);
-       if (ses->status == CifsExiting) {
+       if (ses->ses_status == SES_EXITING) {
                spin_unlock(&cifs_tcp_ses_lock);
                return 0;
        }
-       ses->status = CifsInSessSetup;
+
+       if (!is_binding)
+               ses->ses_status = SES_IN_SETUP;
        spin_unlock(&cifs_tcp_ses_lock);
 
        if (!is_binding) {
@@ -4031,15 +4033,13 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
        if (rc) {
                cifs_server_dbg(VFS, "Send error in SessSetup = %d\n", rc);
                spin_lock(&cifs_tcp_ses_lock);
-               if (ses->status == CifsInSessSetup)
-                       ses->status = CifsNeedSessSetup;
+               if (ses->ses_status == SES_IN_SETUP)
+                       ses->ses_status = SES_NEED_RECON;
                spin_unlock(&cifs_tcp_ses_lock);
        } else {
                spin_lock(&cifs_tcp_ses_lock);
-               if (ses->status == CifsInSessSetup)
-                       ses->status = CifsGood;
-               /* Even if one channel is active, session is in good state */
-               ses->status = CifsGood;
+               if (ses->ses_status == SES_IN_SETUP)
+                       ses->ses_status = SES_GOOD;
                spin_unlock(&cifs_tcp_ses_lock);
 
                spin_lock(&ses->chan_lock);
@@ -4509,7 +4509,7 @@ int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const stru
 
        /* only send once per connect */
        spin_lock(&cifs_tcp_ses_lock);
-       if (tcon->ses->status != CifsGood ||
+       if (tcon->ses->ses_status != SES_GOOD ||
            (tcon->status != TID_NEW &&
            tcon->status != TID_NEED_TCON)) {
                spin_unlock(&cifs_tcp_ses_lock);
@@ -4577,7 +4577,7 @@ int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const stru
 
        /* only send once per connect */
        spin_lock(&cifs_tcp_ses_lock);
-       if (tcon->ses->status != CifsGood ||
+       if (tcon->ses->ses_status != SES_GOOD ||
            (tcon->status != TID_NEW &&
            tcon->status != TID_NEED_TCON)) {
                spin_unlock(&cifs_tcp_ses_lock);
index a5b5b15..e869c2a 100644 (file)
@@ -69,7 +69,7 @@ sesInfoAlloc(void)
        ret_buf = kzalloc(sizeof(struct cifs_ses), GFP_KERNEL);
        if (ret_buf) {
                atomic_inc(&sesInfoAllocCount);
-               ret_buf->status = CifsNew;
+               ret_buf->ses_status = SES_NEW;
                ++ret_buf->ses_count;
                INIT_LIST_HEAD(&ret_buf->smb_ses_list);
                INIT_LIST_HEAD(&ret_buf->tcon_list);
index f5321a3..084be3a 100644 (file)
@@ -179,7 +179,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon,
                }
        }
        spin_unlock(&cifs_tcp_ses_lock);
-       if ((!tcon->ses) || (tcon->ses->status == CifsExiting) ||
+       if ((!tcon->ses) || (tcon->ses->ses_status == SES_EXITING) ||
            (!tcon->ses->server) || !server)
                return -EIO;
 
index 01b7326..55e79f6 100644 (file)
@@ -780,7 +780,7 @@ smb2_get_mid_entry(struct cifs_ses *ses, struct TCP_Server_Info *server,
                return -EAGAIN;
        }
 
-       if (ses->status == CifsNew) {
+       if (ses->ses_status == SES_NEW) {
                if ((shdr->Command != SMB2_SESSION_SETUP) &&
                    (shdr->Command != SMB2_NEGOTIATE)) {
                        spin_unlock(&cifs_tcp_ses_lock);
@@ -789,7 +789,7 @@ smb2_get_mid_entry(struct cifs_ses *ses, struct TCP_Server_Info *server,
                /* else ok - we are setting up session */
        }
 
-       if (ses->status == CifsExiting) {
+       if (ses->ses_status == SES_EXITING) {
                if (shdr->Command != SMB2_LOGOFF) {
                        spin_unlock(&cifs_tcp_ses_lock);
                        return -EAGAIN;
index c667e6d..05eca41 100644 (file)
@@ -726,7 +726,7 @@ static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf,
                        struct mid_q_entry **ppmidQ)
 {
        spin_lock(&cifs_tcp_ses_lock);
-       if (ses->status == CifsNew) {
+       if (ses->ses_status == SES_NEW) {
                if ((in_buf->Command != SMB_COM_SESSION_SETUP_ANDX) &&
                        (in_buf->Command != SMB_COM_NEGOTIATE)) {
                        spin_unlock(&cifs_tcp_ses_lock);
@@ -735,7 +735,7 @@ static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf,
                /* else ok - we are setting up session */
        }
 
-       if (ses->status == CifsExiting) {
+       if (ses->ses_status == SES_EXITING) {
                /* check if SMB session is bad because we are setting it up */
                if (in_buf->Command != SMB_COM_LOGOFF_ANDX) {
                        spin_unlock(&cifs_tcp_ses_lock);
@@ -1187,7 +1187,7 @@ compound_send_recv(const unsigned int xid, struct cifs_ses *ses,
         * Compounding is never used during session establish.
         */
        spin_lock(&cifs_tcp_ses_lock);
-       if ((ses->status == CifsNew) || (optype & CIFS_NEG_OP) || (optype & CIFS_SESS_OP)) {
+       if ((ses->ses_status == SES_NEW) || (optype & CIFS_NEG_OP) || (optype & CIFS_SESS_OP)) {
                spin_unlock(&cifs_tcp_ses_lock);
 
                mutex_lock(&server->srv_mutex);
@@ -1260,7 +1260,7 @@ compound_send_recv(const unsigned int xid, struct cifs_ses *ses,
         * Compounding is never used during session establish.
         */
        spin_lock(&cifs_tcp_ses_lock);
-       if ((ses->status == CifsNew) || (optype & CIFS_NEG_OP) || (optype & CIFS_SESS_OP)) {
+       if ((ses->ses_status == SES_NEW) || (optype & CIFS_NEG_OP) || (optype & CIFS_SESS_OP)) {
                struct kvec iov = {
                        .iov_base = resp_iov[0].iov_base,
                        .iov_len = resp_iov[0].iov_len