cifs: convert tcpSem to a mutex
authorJeff Layton <jlayton@redhat.com>
Mon, 1 Dec 2008 12:09:36 +0000 (07:09 -0500)
committerSteve French <sfrench@us.ibm.com>
Fri, 26 Dec 2008 02:29:09 +0000 (02:29 +0000)
Mutexes are preferred for single-holder semaphores...

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/cifsglob.h
fs/cifs/connect.c
fs/cifs/transport.c

index 82e28f5515c8de441b42f86d6fbde91a51f91ada..9b002cca6bb76aaedce99386f39620dff0c5df74 100644 (file)
@@ -151,7 +151,7 @@ struct TCP_Server_Info {
        atomic_t num_waiters;   /* blocked waiting to get in sendrecv */
 #endif
        enum statusEnum tcpStatus; /* what we think the status is */
-       struct semaphore tcpSem;
+       struct mutex srv_mutex;
        struct task_struct *tsk;
        char server_GUID[16];
        char secMode;
index 701daf411a4bb7e3a63d3085b8fb0453d025f6e0..61b68a0ee2ff339d4da8bf17bf51c8f2d3f15d4e 100644 (file)
@@ -156,7 +156,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
        }
        read_unlock(&cifs_tcp_ses_lock);
        /* do not want to be sending data on a socket we are freeing */
-       down(&server->tcpSem);
+       mutex_lock(&server->srv_mutex);
        if (server->ssocket) {
                cFYI(1, ("State: 0x%x Flags: 0x%lx", server->ssocket->state,
                        server->ssocket->flags));
@@ -182,7 +182,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
                }
        }
        spin_unlock(&GlobalMid_Lock);
-       up(&server->tcpSem);
+       mutex_unlock(&server->srv_mutex);
 
        while ((server->tcpStatus != CifsExiting) &&
               (server->tcpStatus != CifsGood)) {
@@ -2175,7 +2175,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
                        to the struct since the kernel thread not created yet
                        so no need to spinlock this init of tcpStatus */
                        srvTcp->tcpStatus = CifsNew;
-                       init_MUTEX(&srvTcp->tcpSem);
+                       mutex_init(&srvTcp->srv_mutex);
 
                        /*
                         * since we're in a cifs function already, we know that
index 8e0d1c397c73c2cdac65b5e90aa33a22987a896f..cd4ed65d6cd96f07f08b3bf4bce76f66e95881f3 100644 (file)
@@ -516,11 +516,11 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
           and avoid races inside tcp sendmsg code that could cause corruption
           of smb data */
 
-       down(&ses->server->tcpSem);
+       mutex_lock(&ses->server->srv_mutex);
 
        rc = allocate_mid(ses, in_buf, &midQ);
        if (rc) {
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                cifs_small_buf_release(in_buf);
                /* Update # of requests on wire to server */
                atomic_dec(&ses->server->inFlight);
@@ -541,7 +541,7 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
        midQ->when_sent = jiffies;
 #endif
 
-       up(&ses->server->tcpSem);
+       mutex_unlock(&ses->server->srv_mutex);
        cifs_small_buf_release(in_buf);
 
        if (rc < 0)
@@ -698,11 +698,11 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
           and avoid races inside tcp sendmsg code that could cause corruption
           of smb data */
 
-       down(&ses->server->tcpSem);
+       mutex_lock(&ses->server->srv_mutex);
 
        rc = allocate_mid(ses, in_buf, &midQ);
        if (rc) {
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                /* Update # of requests on wire to server */
                atomic_dec(&ses->server->inFlight);
                wake_up(&ses->server->request_q);
@@ -713,7 +713,7 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
                cERROR(1, ("Illegal length, greater than maximum frame, %d",
                        in_buf->smb_buf_length));
                DeleteMidQEntry(midQ);
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                /* Update # of requests on wire to server */
                atomic_dec(&ses->server->inFlight);
                wake_up(&ses->server->request_q);
@@ -733,7 +733,7 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
        atomic_dec(&ses->server->inSend);
        midQ->when_sent = jiffies;
 #endif
-       up(&ses->server->tcpSem);
+       mutex_unlock(&ses->server->srv_mutex);
 
        if (rc < 0)
                goto out;
@@ -861,16 +861,16 @@ send_nt_cancel(struct cifsTconInfo *tcon, struct smb_hdr *in_buf,
 
        header_assemble(in_buf, SMB_COM_NT_CANCEL, tcon, 0);
        in_buf->Mid = mid;
-       down(&ses->server->tcpSem);
+       mutex_lock(&ses->server->srv_mutex);
        rc = cifs_sign_smb(in_buf, ses->server, &midQ->sequence_number);
        if (rc) {
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                return rc;
        }
        rc = smb_send(ses->server->ssocket, in_buf, in_buf->smb_buf_length,
              (struct sockaddr *) &(ses->server->addr.sockAddr),
              ses->server->noblocksnd);
-       up(&ses->server->tcpSem);
+       mutex_unlock(&ses->server->srv_mutex);
        return rc;
 }
 
@@ -936,16 +936,16 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifsTconInfo *tcon,
           and avoid races inside tcp sendmsg code that could cause corruption
           of smb data */
 
-       down(&ses->server->tcpSem);
+       mutex_lock(&ses->server->srv_mutex);
 
        rc = allocate_mid(ses, in_buf, &midQ);
        if (rc) {
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                return rc;
        }
 
        if (in_buf->smb_buf_length > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4) {
-               up(&ses->server->tcpSem);
+               mutex_unlock(&ses->server->srv_mutex);
                cERROR(1, ("Illegal length, greater than maximum frame, %d",
                        in_buf->smb_buf_length));
                DeleteMidQEntry(midQ);
@@ -965,7 +965,7 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifsTconInfo *tcon,
        atomic_dec(&ses->server->inSend);
        midQ->when_sent = jiffies;
 #endif
-       up(&ses->server->tcpSem);
+       mutex_unlock(&ses->server->srv_mutex);
 
        if (rc < 0) {
                DeleteMidQEntry(midQ);