cifs: simple stats should always be enabled
CONFIG_CIFS_STATS should always be enabled as Pavel recently noted. Simple statistics are not a significant performance hit, and removing the ifdef simplifies the code slightly. Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com> Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
This commit is contained in:
parent
9da6ec7775
commit
fcabb89299
|
@ -49,16 +49,9 @@ config CIFS
|
||||||
|
|
||||||
If you need to mount to Samba, Azure, Macs or Windows from this machine, say Y.
|
If you need to mount to Samba, Azure, Macs or Windows from this machine, say Y.
|
||||||
|
|
||||||
config CIFS_STATS
|
|
||||||
bool "CIFS statistics"
|
|
||||||
depends on CIFS
|
|
||||||
help
|
|
||||||
Enabling this option will cause statistics for each server share
|
|
||||||
mounted by the cifs client to be displayed in /proc/fs/cifs/Stats
|
|
||||||
|
|
||||||
config CIFS_STATS2
|
config CIFS_STATS2
|
||||||
bool "Extended statistics"
|
bool "Extended statistics"
|
||||||
depends on CIFS_STATS
|
depends on CIFS
|
||||||
help
|
help
|
||||||
Enabling this option will allow more detailed statistics on SMB
|
Enabling this option will allow more detailed statistics on SMB
|
||||||
request timing to be displayed in /proc/fs/cifs/DebugData and also
|
request timing to be displayed in /proc/fs/cifs/DebugData and also
|
||||||
|
|
|
@ -365,7 +365,6 @@ skip_rdma:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
static ssize_t cifs_stats_proc_write(struct file *file,
|
static ssize_t cifs_stats_proc_write(struct file *file,
|
||||||
const char __user *buffer, size_t count, loff_t *ppos)
|
const char __user *buffer, size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
|
@ -481,7 +480,6 @@ static const struct file_operations cifs_stats_proc_fops = {
|
||||||
.release = single_release,
|
.release = single_release,
|
||||||
.write = cifs_stats_proc_write,
|
.write = cifs_stats_proc_write,
|
||||||
};
|
};
|
||||||
#endif /* STATS */
|
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_SMB_DIRECT
|
#ifdef CONFIG_CIFS_SMB_DIRECT
|
||||||
#define PROC_FILE_DEFINE(name) \
|
#define PROC_FILE_DEFINE(name) \
|
||||||
|
@ -539,9 +537,7 @@ cifs_proc_init(void)
|
||||||
proc_create_single("DebugData", 0, proc_fs_cifs,
|
proc_create_single("DebugData", 0, proc_fs_cifs,
|
||||||
cifs_debug_data_proc_show);
|
cifs_debug_data_proc_show);
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
proc_create("Stats", 0644, proc_fs_cifs, &cifs_stats_proc_fops);
|
proc_create("Stats", 0644, proc_fs_cifs, &cifs_stats_proc_fops);
|
||||||
#endif /* STATS */
|
|
||||||
proc_create("cifsFYI", 0644, proc_fs_cifs, &cifsFYI_proc_fops);
|
proc_create("cifsFYI", 0644, proc_fs_cifs, &cifsFYI_proc_fops);
|
||||||
proc_create("traceSMB", 0644, proc_fs_cifs, &traceSMB_proc_fops);
|
proc_create("traceSMB", 0644, proc_fs_cifs, &traceSMB_proc_fops);
|
||||||
proc_create("LinuxExtensionsEnabled", 0644, proc_fs_cifs,
|
proc_create("LinuxExtensionsEnabled", 0644, proc_fs_cifs,
|
||||||
|
@ -579,9 +575,7 @@ cifs_proc_clean(void)
|
||||||
remove_proc_entry("DebugData", proc_fs_cifs);
|
remove_proc_entry("DebugData", proc_fs_cifs);
|
||||||
remove_proc_entry("cifsFYI", proc_fs_cifs);
|
remove_proc_entry("cifsFYI", proc_fs_cifs);
|
||||||
remove_proc_entry("traceSMB", proc_fs_cifs);
|
remove_proc_entry("traceSMB", proc_fs_cifs);
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
remove_proc_entry("Stats", proc_fs_cifs);
|
remove_proc_entry("Stats", proc_fs_cifs);
|
||||||
#endif
|
|
||||||
remove_proc_entry("SecurityFlags", proc_fs_cifs);
|
remove_proc_entry("SecurityFlags", proc_fs_cifs);
|
||||||
remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs);
|
remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs);
|
||||||
remove_proc_entry("LookupCacheEnabled", proc_fs_cifs);
|
remove_proc_entry("LookupCacheEnabled", proc_fs_cifs);
|
||||||
|
|
|
@ -931,7 +931,6 @@ struct cifs_tcon {
|
||||||
__u32 tid; /* The 4 byte tree id */
|
__u32 tid; /* The 4 byte tree id */
|
||||||
__u16 Flags; /* optional support bits */
|
__u16 Flags; /* optional support bits */
|
||||||
enum statusEnum tidStatus;
|
enum statusEnum tidStatus;
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
atomic_t num_smbs_sent;
|
atomic_t num_smbs_sent;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
|
@ -965,7 +964,6 @@ struct cifs_tcon {
|
||||||
__u64 bytes_read;
|
__u64 bytes_read;
|
||||||
__u64 bytes_written;
|
__u64 bytes_written;
|
||||||
spinlock_t stat_lock; /* protects the two fields above */
|
spinlock_t stat_lock; /* protects the two fields above */
|
||||||
#endif /* CONFIG_CIFS_STATS */
|
|
||||||
FILE_SYSTEM_DEVICE_INFO fsDevInfo;
|
FILE_SYSTEM_DEVICE_INFO fsDevInfo;
|
||||||
FILE_SYSTEM_ATTRIBUTE_INFO fsAttrInfo; /* ok if fs name truncated */
|
FILE_SYSTEM_ATTRIBUTE_INFO fsAttrInfo; /* ok if fs name truncated */
|
||||||
FILE_SYSTEM_UNIX_INFO fsUnixInfo;
|
FILE_SYSTEM_UNIX_INFO fsUnixInfo;
|
||||||
|
@ -1331,7 +1329,6 @@ convert_delimiter(char *path, char delim)
|
||||||
*pos = delim;
|
*pos = delim;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
#define cifs_stats_inc atomic_inc
|
#define cifs_stats_inc atomic_inc
|
||||||
|
|
||||||
static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
|
static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
|
||||||
|
@ -1351,13 +1348,6 @@ static inline void cifs_stats_bytes_read(struct cifs_tcon *tcon,
|
||||||
tcon->bytes_read += bytes;
|
tcon->bytes_read += bytes;
|
||||||
spin_unlock(&tcon->stat_lock);
|
spin_unlock(&tcon->stat_lock);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
|
|
||||||
#define cifs_stats_inc(field) do {} while (0)
|
|
||||||
#define cifs_stats_bytes_written(tcon, bytes) do {} while (0)
|
|
||||||
#define cifs_stats_bytes_read(tcon, bytes) do {} while (0)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -122,9 +122,7 @@ tconInfoAlloc(void)
|
||||||
mutex_init(&ret_buf->crfid.fid_mutex);
|
mutex_init(&ret_buf->crfid.fid_mutex);
|
||||||
ret_buf->crfid.fid = kzalloc(sizeof(struct cifs_fid),
|
ret_buf->crfid.fid = kzalloc(sizeof(struct cifs_fid),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
spin_lock_init(&ret_buf->stat_lock);
|
spin_lock_init(&ret_buf->stat_lock);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return ret_buf;
|
return ret_buf;
|
||||||
}
|
}
|
||||||
|
|
|
@ -624,7 +624,6 @@ cifs_query_file_info(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
static void
|
static void
|
||||||
cifs_clear_stats(struct cifs_tcon *tcon)
|
cifs_clear_stats(struct cifs_tcon *tcon)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_writes, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_writes, 0);
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_reads, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_reads, 0);
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_flushes, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_flushes, 0);
|
||||||
|
@ -646,13 +645,11 @@ cifs_clear_stats(struct cifs_tcon *tcon)
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_locks, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_locks, 0);
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_acl_get, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_acl_get, 0);
|
||||||
atomic_set(&tcon->stats.cifs_stats.num_acl_set, 0);
|
atomic_set(&tcon->stats.cifs_stats.num_acl_set, 0);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
seq_printf(m, " Oplocks breaks: %d",
|
seq_printf(m, " Oplocks breaks: %d",
|
||||||
atomic_read(&tcon->stats.cifs_stats.num_oplock_brks));
|
atomic_read(&tcon->stats.cifs_stats.num_oplock_brks));
|
||||||
seq_printf(m, "\nReads: %d Bytes: %llu",
|
seq_printf(m, "\nReads: %d Bytes: %llu",
|
||||||
|
@ -684,7 +681,6 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
||||||
atomic_read(&tcon->stats.cifs_stats.num_ffirst),
|
atomic_read(&tcon->stats.cifs_stats.num_ffirst),
|
||||||
atomic_read(&tcon->stats.cifs_stats.num_fnext),
|
atomic_read(&tcon->stats.cifs_stats.num_fnext),
|
||||||
atomic_read(&tcon->stats.cifs_stats.num_fclose));
|
atomic_read(&tcon->stats.cifs_stats.num_fclose));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -900,13 +900,11 @@ smb2_can_echo(struct TCP_Server_Info *server)
|
||||||
static void
|
static void
|
||||||
smb2_clear_stats(struct cifs_tcon *tcon)
|
smb2_clear_stats(struct cifs_tcon *tcon)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) {
|
for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) {
|
||||||
atomic_set(&tcon->stats.smb2_stats.smb2_com_sent[i], 0);
|
atomic_set(&tcon->stats.smb2_stats.smb2_com_sent[i], 0);
|
||||||
atomic_set(&tcon->stats.smb2_stats.smb2_com_failed[i], 0);
|
atomic_set(&tcon->stats.smb2_stats.smb2_com_failed[i], 0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -945,7 +943,6 @@ smb2_dump_share_caps(struct seq_file *m, struct cifs_tcon *tcon)
|
||||||
static void
|
static void
|
||||||
smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
atomic_t *sent = tcon->stats.smb2_stats.smb2_com_sent;
|
atomic_t *sent = tcon->stats.smb2_stats.smb2_com_sent;
|
||||||
atomic_t *failed = tcon->stats.smb2_stats.smb2_com_failed;
|
atomic_t *failed = tcon->stats.smb2_stats.smb2_com_failed;
|
||||||
|
|
||||||
|
@ -995,7 +992,6 @@ smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
|
||||||
seq_printf(m, "\nOplockBreaks: %d sent %d failed",
|
seq_printf(m, "\nOplockBreaks: %d sent %d failed",
|
||||||
atomic_read(&sent[SMB2_OPLOCK_BREAK_HE]),
|
atomic_read(&sent[SMB2_OPLOCK_BREAK_HE]),
|
||||||
atomic_read(&failed[SMB2_OPLOCK_BREAK_HE]));
|
atomic_read(&failed[SMB2_OPLOCK_BREAK_HE]));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -360,10 +360,8 @@ smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon,
|
||||||
total_len);
|
total_len);
|
||||||
|
|
||||||
if (tcon != NULL) {
|
if (tcon != NULL) {
|
||||||
#ifdef CONFIG_CIFS_STATS
|
|
||||||
uint16_t com_code = le16_to_cpu(smb2_command);
|
uint16_t com_code = le16_to_cpu(smb2_command);
|
||||||
cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_sent[com_code]);
|
cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_sent[com_code]);
|
||||||
#endif
|
|
||||||
cifs_stats_inc(&tcon->num_smbs_sent);
|
cifs_stats_inc(&tcon->num_smbs_sent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue