int count, int *eof, void *data)
{
struct list_head *tmp;
+ struct list_head *tmp1;
+ struct mid_q_entry * mid_entry;
struct cifsSesInfo *ses;
struct cifsTconInfo *tcon;
int i;
int length = 0;
- char *buf_start = buf;
+ char * original_buf = buf;
+ *beginBuffer = buf + offset;
+
+
length =
sprintf(buf,
"Display Internal CIFS Data Structures for Debugging\n"
ses->server->secMode,
atomic_read(&ses->server->inFlight));
- /* length = sprintf(buf, "\nMIDs: \n");
+ length = sprintf(buf, "\nMIDs: \n");
buf += length;
spin_lock(&GlobalMid_Lock);
mid_q_entry,
qhead);
if(mid_entry) {
- length = sprintf(buf,"State: %d com: %d pid: %d tsk: %p\n",mid_entry->midState,mid_entry->command,mid_entry->pid,mid_entry->tsk);
+ length = sprintf(buf,"State: %d com: %d pid: %d tsk: %p mid %d\n",mid_entry->midState,mid_entry->command,mid_entry->pid,mid_entry->tsk,mid_entry->mid);
buf += length;
}
}
- spin_unlock(&GlobalMid_Lock); */
+ spin_unlock(&GlobalMid_Lock);
}
}
length = sprintf(buf, "\n");
buf += length;
- *eof = 1;
/* BB add code to dump additional info such as TCP session info now */
- /*
- if (offset >= (buf - buf_start))
- {
- *beginBuffer = buf;
- return 0;
- }
- *beginBuffer = buf + offset;
- if ((buf - buf_start - offset) > count)
- return count;
- else */
- return (buf - buf_start - offset);
-}
-
-int
-cifs_total_xid_read(char *buf, char **beginBuffer, off_t offset,
- int length, int *eof, void *data)
-{
+ /* Now calculate total size of returned data */
+ length = buf - original_buf;
- length =
- sprintf(buf,
- "Total vfs operations: %d and maximum simultaneous serviced by this filesystem: %d\n",
- GlobalCurrentXid,GlobalMaxActiveXid);
+ if(offset + count >= length)
+ *eof = 1;
+ if(length < offset) {
+ *eof = 1;
+ return 0;
+ } else {
+ length = length - offset;
+ }
+ if (length > count)
+ length = count;
return length;
}
#ifdef CONFIG_CIFS_STATS
int
cifs_stats_read(char *buf, char **beginBuffer, off_t offset,
- int length, int *eof, void *data)
+ int count, int *eof, void *data)
{
- int item_length,i;
+ int item_length,i,length;
struct list_head *tmp;
struct cifsTconInfo *tcon;
+ *beginBuffer = buf + offset;
+
length = sprintf(buf,
"Resources in use\nCIFS Session: %d\n",
sesInfoAllocCount.counter);
length += item_length;
buf += item_length;
+ item_length = sprintf(buf,
+ "Total vfs operations: %d maximum at one time: %d\n",
+ GlobalCurrentXid,GlobalMaxActiveXid);
+ length += item_length;
+ buf += item_length;
+
i = 0;
read_lock(&GlobalSMBSeslock);
list_for_each(tmp, &GlobalTreeConnectionList) {
atomic_read(&tcon->num_reads),
(long long)(tcon->bytes_read));
buf += item_length;
+ length += item_length;
item_length = sprintf(buf,"\nWrites: %d Bytes: %lld",
atomic_read(&tcon->num_writes),
(long long)(tcon->bytes_written));
buf += item_length;
+ length += item_length;
item_length = sprintf(buf,
"\nOpens: %d Deletes: %d\nMkdirs: %d Rmdirs: %d",
atomic_read(&tcon->num_opens),
atomic_read(&tcon->num_rmdirs));
buf += item_length;
length += item_length;
+ item_length = sprintf(buf,
+ "\nRenames: %d T2 Renames %d",
+ atomic_read(&tcon->num_renames),
+ atomic_read(&tcon->num_t2renames));
+ buf += item_length;
+ length += item_length;
}
read_unlock(&GlobalSMBSeslock);
+ buf += sprintf(buf,"\n");
+ length++;
+ if(offset + count >= length)
+ *eof = 1;
+ if(length < offset) {
+ *eof = 1;
+ return 0;
+ } else {
+ length = length - offset;
+ }
+ if (length > count)
+ length = count;
+
return length;
}
#endif
proc_fs_cifs->owner = THIS_MODULE;
create_proc_read_entry("DebugData", 0, proc_fs_cifs,
- cifs_debug_data_read, 0);
+ cifs_debug_data_read, NULL);
- create_proc_read_entry("SimultaneousOps", 0, proc_fs_cifs,
- cifs_total_xid_read, 0);
#ifdef CONFIG_CIFS_STATS
create_proc_read_entry("Stats", 0, proc_fs_cifs,
- cifs_stats_read, 0);
+ cifs_stats_read, NULL);
#endif
pde = create_proc_read_entry("cifsFYI", 0, proc_fs_cifs,
- cifsFYI_read, 0);
+ cifsFYI_read, NULL);
if (pde)
pde->write_proc = cifsFYI_write;
pde =
create_proc_read_entry("traceSMB", 0, proc_fs_cifs,
- traceSMB_read, 0);
+ traceSMB_read, NULL);
if (pde)
pde->write_proc = traceSMB_write;
pde = create_proc_read_entry("OplockEnabled", 0, proc_fs_cifs,
- oplockEnabled_read, 0);
+ oplockEnabled_read, NULL);
if (pde)
pde->write_proc = oplockEnabled_write;
pde = create_proc_read_entry("QuotaEnabled", 0, proc_fs_cifs,
- quotaEnabled_read, 0);
+ quotaEnabled_read, NULL);
if (pde)
pde->write_proc = quotaEnabled_write;
pde = create_proc_read_entry("LinuxExtensionsEnabled", 0, proc_fs_cifs,
- linuxExtensionsEnabled_read, 0);
+ linuxExtensionsEnabled_read, NULL);
if (pde)
pde->write_proc = linuxExtensionsEnabled_write;
pde =
create_proc_read_entry("MultiuserMount", 0, proc_fs_cifs,
- multiuser_mount_read, 0);
+ multiuser_mount_read, NULL);
if (pde)
pde->write_proc = multiuser_mount_write;
pde =
create_proc_read_entry("ExtendedSecurity", 0, proc_fs_cifs,
- extended_security_read, 0);
+ extended_security_read, NULL);
if (pde)
pde->write_proc = extended_security_write;
pde =
create_proc_read_entry("LookupCacheEnabled", 0, proc_fs_cifs,
- lookupFlag_read, 0);
+ lookupFlag_read, NULL);
if (pde)
pde->write_proc = lookupFlag_write;
pde =
create_proc_read_entry("NTLMV2Enabled", 0, proc_fs_cifs,
- ntlmv2_enabled_read, 0);
+ ntlmv2_enabled_read, NULL);
if (pde)
pde->write_proc = ntlmv2_enabled_write;
pde =
create_proc_read_entry("PacketSigningEnabled", 0, proc_fs_cifs,
- packet_signing_enabled_read, 0);
+ packet_signing_enabled_read, NULL);
if (pde)
pde->write_proc = packet_signing_enabled_write;
}
remove_proc_entry("DebugData", proc_fs_cifs);
remove_proc_entry("cifsFYI", proc_fs_cifs);
remove_proc_entry("traceSMB", proc_fs_cifs);
- remove_proc_entry("SimultaneousOps", proc_fs_cifs);
#ifdef CONFIG_CIFS_STATS
remove_proc_entry("Stats", proc_fs_cifs);
#endif