mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 07:04:10 +08:00
[CIFS] Cleanup use of CONFIG_CIFS_STATS2 ifdef to make transport routines more readable
Christoph had requested that the stats related code (in CONFIG_CIFS_STATS2) be moved into helpers to make code flow more readable. This patch should help. For example the following section from transport.c spin_unlock(&GlobalMid_Lock); atomic_inc(&ses->server->num_waiters); wait_event(ses->server->request_q, atomic_read(&ses->server->inFlight) < cifs_max_pending); atomic_dec(&ses->server->num_waiters); spin_lock(&GlobalMid_Lock); becomes simpler (with the patch below): spin_unlock(&GlobalMid_Lock); cifs_num_waiters_inc(server); wait_event(server->request_q, atomic_read(&server->inFlight) < cifs_max_pending); cifs_num_waiters_dec(server); spin_lock(&GlobalMid_Lock); Reviewed-by: Jeff Layton <jlayton@redhat.com> CC: Christoph Hellwig <hch@infradead.org> Signed-off-by: Steve French <sfrench@us.ibm.com> Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru>
This commit is contained in:
parent
e6a99d3126
commit
789e666123
@ -176,7 +176,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
|
||||
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
seq_printf(m, " In Send: %d In MaxReq Wait: %d",
|
||||
atomic_read(&server->inSend),
|
||||
atomic_read(&server->in_send),
|
||||
atomic_read(&server->num_waiters));
|
||||
#endif
|
||||
|
||||
|
@ -291,7 +291,7 @@ struct TCP_Server_Info {
|
||||
struct fscache_cookie *fscache; /* client index cache cookie */
|
||||
#endif
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_t inSend; /* requests trying to send */
|
||||
atomic_t in_send; /* requests trying to send */
|
||||
atomic_t num_waiters; /* blocked waiting to get in sendrecv */
|
||||
#endif
|
||||
};
|
||||
@ -672,12 +672,54 @@ struct mid_q_entry {
|
||||
bool multiEnd:1; /* both received */
|
||||
};
|
||||
|
||||
struct oplock_q_entry {
|
||||
struct list_head qhead;
|
||||
struct inode *pinode;
|
||||
struct cifs_tcon *tcon;
|
||||
__u16 netfid;
|
||||
};
|
||||
/* Make code in transport.c a little cleaner by moving
|
||||
update of optional stats into function below */
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
|
||||
static inline void cifs_in_send_inc(struct TCP_Server_Info *server)
|
||||
{
|
||||
atomic_inc(&server->in_send);
|
||||
}
|
||||
|
||||
static inline void cifs_in_send_dec(struct TCP_Server_Info *server)
|
||||
{
|
||||
atomic_dec(&server->in_send);
|
||||
}
|
||||
|
||||
static inline void cifs_num_waiters_inc(struct TCP_Server_Info *server)
|
||||
{
|
||||
atomic_inc(&server->num_waiters);
|
||||
}
|
||||
|
||||
static inline void cifs_num_waiters_dec(struct TCP_Server_Info *server)
|
||||
{
|
||||
atomic_dec(&server->num_waiters);
|
||||
}
|
||||
|
||||
static inline void cifs_save_when_sent(struct mid_q_entry *mid)
|
||||
{
|
||||
mid->when_sent = jiffies;
|
||||
}
|
||||
#else
|
||||
static inline void cifs_in_send_inc(struct TCP_Server_Info *server)
|
||||
{
|
||||
}
|
||||
static inline void cifs_in_send_dec(struct TCP_Server_Info *server)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void cifs_num_waiters_inc(struct TCP_Server_Info *server)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void cifs_num_waiters_dec(struct TCP_Server_Info *server)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void cifs_save_when_sent(struct mid_q_entry *mid)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/* for pending dnotify requests */
|
||||
struct dir_notify_req {
|
||||
|
@ -266,15 +266,11 @@ static int wait_for_free_request(struct TCP_Server_Info *server,
|
||||
while (1) {
|
||||
if (atomic_read(&server->inFlight) >= cifs_max_pending) {
|
||||
spin_unlock(&GlobalMid_Lock);
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_inc(&server->num_waiters);
|
||||
#endif
|
||||
cifs_num_waiters_inc(server);
|
||||
wait_event(server->request_q,
|
||||
atomic_read(&server->inFlight)
|
||||
< cifs_max_pending);
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_dec(&server->num_waiters);
|
||||
#endif
|
||||
cifs_num_waiters_dec(server);
|
||||
spin_lock(&GlobalMid_Lock);
|
||||
} else {
|
||||
if (server->tcpStatus == CifsExiting) {
|
||||
@ -381,15 +377,13 @@ cifs_call_async(struct TCP_Server_Info *server, struct kvec *iov,
|
||||
mid->callback = callback;
|
||||
mid->callback_data = cbdata;
|
||||
mid->midState = MID_REQUEST_SUBMITTED;
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_inc(&server->inSend);
|
||||
#endif
|
||||
|
||||
cifs_in_send_inc(server);
|
||||
rc = smb_sendv(server, iov, nvec);
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_dec(&server->inSend);
|
||||
mid->when_sent = jiffies;
|
||||
#endif
|
||||
cifs_in_send_dec(server);
|
||||
cifs_save_when_sent(mid);
|
||||
mutex_unlock(&server->srv_mutex);
|
||||
|
||||
if (rc)
|
||||
goto out_err;
|
||||
|
||||
@ -575,14 +569,10 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses,
|
||||
}
|
||||
|
||||
midQ->midState = MID_REQUEST_SUBMITTED;
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_inc(&ses->server->inSend);
|
||||
#endif
|
||||
cifs_in_send_inc(ses->server);
|
||||
rc = smb_sendv(ses->server, iov, n_vec);
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_dec(&ses->server->inSend);
|
||||
midQ->when_sent = jiffies;
|
||||
#endif
|
||||
cifs_in_send_dec(ses->server);
|
||||
cifs_save_when_sent(midQ);
|
||||
|
||||
mutex_unlock(&ses->server->srv_mutex);
|
||||
|
||||
@ -703,14 +693,11 @@ SendReceive(const unsigned int xid, struct cifs_ses *ses,
|
||||
}
|
||||
|
||||
midQ->midState = MID_REQUEST_SUBMITTED;
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_inc(&ses->server->inSend);
|
||||
#endif
|
||||
|
||||
cifs_in_send_inc(ses->server);
|
||||
rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length));
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_dec(&ses->server->inSend);
|
||||
midQ->when_sent = jiffies;
|
||||
#endif
|
||||
cifs_in_send_dec(ses->server);
|
||||
cifs_save_when_sent(midQ);
|
||||
mutex_unlock(&ses->server->srv_mutex);
|
||||
|
||||
if (rc < 0)
|
||||
@ -843,14 +830,10 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
}
|
||||
|
||||
midQ->midState = MID_REQUEST_SUBMITTED;
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_inc(&ses->server->inSend);
|
||||
#endif
|
||||
cifs_in_send_inc(ses->server);
|
||||
rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length));
|
||||
#ifdef CONFIG_CIFS_STATS2
|
||||
atomic_dec(&ses->server->inSend);
|
||||
midQ->when_sent = jiffies;
|
||||
#endif
|
||||
cifs_in_send_dec(ses->server);
|
||||
cifs_save_when_sent(midQ);
|
||||
mutex_unlock(&ses->server->srv_mutex);
|
||||
|
||||
if (rc < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user