aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-06-22 20:13:47 -0400
committerSteve French <sfrench@hera.kernel.org>2005-06-22 20:13:47 -0400
commitdfb7533b5f157ac7135da23883e80d895227d965 (patch)
tree6a09f6d0945653bb21a2cdc8f050b82a4671227c /fs
parent8b22c249e7de453961e4d253b19fc2a0bdd65d53 (diff)
[CIFS] Add stats for findfirst, findnext, findclose
Signed-off-by: Steve French (sfrench@us.ibm.com)
Diffstat (limited to 'fs')
-rw-r--r--fs/cifs/cifsglob.h3
-rw-r--r--fs/cifs/cifssmb.c13
-rw-r--r--fs/cifs/readdir.c16
3 files changed, 25 insertions, 7 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 81babab265e1..4ed9c13fff55 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -219,6 +219,9 @@ struct cifsTconInfo {
219 atomic_t num_rmdirs; 219 atomic_t num_rmdirs;
220 atomic_t num_renames; 220 atomic_t num_renames;
221 atomic_t num_t2renames; 221 atomic_t num_t2renames;
222 atomic_t num_ffirst;
223 atomic_t num_fnext;
224 atomic_t num_fclose;
222 __u64 bytes_read; 225 __u64 bytes_read;
223 __u64 bytes_written; 226 __u64 bytes_written;
224 spinlock_t stat_lock; 227 spinlock_t stat_lock;
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 3c628bf667a5..b31158a2643d 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -2396,7 +2396,9 @@ findUniqueRetry:
2396 if (rc) { 2396 if (rc) {
2397 cFYI(1, ("Send error in FindFileDirInfo = %d", rc)); 2397 cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
2398 } else { /* decode response */ 2398 } else { /* decode response */
2399 2399#ifdef CONFIG_CIFS_STATS
2400 atomic_inc(&tcon->num_ffirst);
2401#endif
2400 /* BB fill in */ 2402 /* BB fill in */
2401 } 2403 }
2402 2404
@@ -2509,6 +2511,9 @@ findFirstRetry:
2509 if (rc == -EAGAIN) 2511 if (rc == -EAGAIN)
2510 goto findFirstRetry; 2512 goto findFirstRetry;
2511 } else { /* decode response */ 2513 } else { /* decode response */
2514#ifdef CONFIG_CIFS_STATS
2515 atomic_inc(&tcon->num_ffirst);
2516#endif
2512 /* BB remember to free buffer if error BB */ 2517 /* BB remember to free buffer if error BB */
2513 rc = validate_t2((struct smb_t2_rsp *)pSMBr); 2518 rc = validate_t2((struct smb_t2_rsp *)pSMBr);
2514 if(rc == 0) { 2519 if(rc == 0) {
@@ -2622,6 +2627,9 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
2622 } else 2627 } else
2623 cFYI(1, ("FindNext returned = %d", rc)); 2628 cFYI(1, ("FindNext returned = %d", rc));
2624 } else { /* decode response */ 2629 } else { /* decode response */
2630#ifdef CONFIG_CIFS_STATS
2631 atomic_inc(&tcon->num_fnext);
2632#endif
2625 rc = validate_t2((struct smb_t2_rsp *)pSMBr); 2633 rc = validate_t2((struct smb_t2_rsp *)pSMBr);
2626 2634
2627 if(rc == 0) { 2635 if(rc == 0) {
@@ -2691,6 +2699,9 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon, const __u16 searchHandle
2691 if (rc) { 2699 if (rc) {
2692 cERROR(1, ("Send error in FindClose = %d", rc)); 2700 cERROR(1, ("Send error in FindClose = %d", rc));
2693 } 2701 }
2702#ifdef CONFIG_CIFS_STATS
2703 atomic_inc(&tcon->num_fclose);
2704#endif
2694 cifs_small_buf_release(pSMB); 2705 cifs_small_buf_release(pSMB);
2695 2706
2696 /* Since session is dead, search handle closed on server already */ 2707 /* Since session is dead, search handle closed on server already */
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 22557716f9af..487221eeddb7 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -190,8 +190,9 @@ static void fill_in_inode(struct inode *tmp_inode,
190 tmp_inode->i_data.a_ops = &cifs_addr_ops; 190 tmp_inode->i_data.a_ops = &cifs_addr_ops;
191 191
192 if(isNewInode) 192 if(isNewInode)
193 return; /* No sense invalidating pages for new inode since we 193 return; /* No sense invalidating pages for new inode
194 have not started caching readahead file data yet */ 194 since have not started caching readahead file
195 data yet */
195 196
196 if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) && 197 if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) &&
197 (local_size == tmp_inode->i_size)) { 198 (local_size == tmp_inode->i_size)) {
@@ -536,7 +537,8 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
536 while((index_to_find >= cifsFile->srch_inf.index_of_last_entry) && 537 while((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
537 (rc == 0) && (cifsFile->srch_inf.endOfSearch == FALSE)){ 538 (rc == 0) && (cifsFile->srch_inf.endOfSearch == FALSE)){
538 cFYI(1,("calling findnext2")); 539 cFYI(1,("calling findnext2"));
539 rc = CIFSFindNext(xid,pTcon,cifsFile->netfid, &cifsFile->srch_inf); 540 rc = CIFSFindNext(xid,pTcon,cifsFile->netfid,
541 &cifsFile->srch_inf);
540 if(rc) 542 if(rc)
541 return -ENOENT; 543 return -ENOENT;
542 } 544 }
@@ -555,7 +557,7 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
555 cFYI(1,("found entry - pos_in_buf %d",pos_in_buf)); 557 cFYI(1,("found entry - pos_in_buf %d",pos_in_buf));
556 current_entry = cifsFile->srch_inf.srch_entries_start; 558 current_entry = cifsFile->srch_inf.srch_entries_start;
557 for(i=0;(i<(pos_in_buf)) && (current_entry != NULL);i++) { 559 for(i=0;(i<(pos_in_buf)) && (current_entry != NULL);i++) {
558 /* go entry to next entry figuring out which we need to start with */ 560 /* go entry by entry figuring out which is first */
559 /* if( . or ..) 561 /* if( . or ..)
560 skip */ 562 skip */
561 rc = cifs_entry_is_dot(current_entry,cifsFile); 563 rc = cifs_entry_is_dot(current_entry,cifsFile);
@@ -721,7 +723,8 @@ static int cifs_filldir(char *pfindEntry, struct file *file,
721 (FILE_DIRECTORY_INFO *)pfindEntry,&obj_type, rc); 723 (FILE_DIRECTORY_INFO *)pfindEntry,&obj_type, rc);
722 } 724 }
723 725
724 rc = filldir(direntry,qstring.name,qstring.len,file->f_pos,tmp_inode->i_ino,obj_type); 726 rc = filldir(direntry,qstring.name,qstring.len,file->f_pos,
727 tmp_inode->i_ino,obj_type);
725 if(rc) { 728 if(rc) {
726 cFYI(1,("filldir rc = %d",rc)); 729 cFYI(1,("filldir rc = %d",rc));
727 } 730 }
@@ -906,7 +909,8 @@ int cifs_readdir(struct file *file, void *direntry, filldir_t filldir)
906 cifs_save_resume_key(current_entry,cifsFile); 909 cifs_save_resume_key(current_entry,cifsFile);
907 break; 910 break;
908 } else 911 } else
909 current_entry = nxt_dir_entry(current_entry,end_of_smb); 912 current_entry = nxt_dir_entry(current_entry,
913 end_of_smb);
910 } 914 }
911 kfree(tmp_buf); 915 kfree(tmp_buf);
912 break; 916 break;