mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 21:01:29 +00:00
[CIFS] Add stats for findfirst, findnext, findclose
Signed-off-by: Steve French (sfrench@us.ibm.com)
This commit is contained in:
parent
8b22c249e7
commit
dfb7533b5f
@ -219,6 +219,9 @@ struct cifsTconInfo {
|
|||||||
atomic_t num_rmdirs;
|
atomic_t num_rmdirs;
|
||||||
atomic_t num_renames;
|
atomic_t num_renames;
|
||||||
atomic_t num_t2renames;
|
atomic_t num_t2renames;
|
||||||
|
atomic_t num_ffirst;
|
||||||
|
atomic_t num_fnext;
|
||||||
|
atomic_t num_fclose;
|
||||||
__u64 bytes_read;
|
__u64 bytes_read;
|
||||||
__u64 bytes_written;
|
__u64 bytes_written;
|
||||||
spinlock_t stat_lock;
|
spinlock_t stat_lock;
|
||||||
|
@ -2396,7 +2396,9 @@ findUniqueRetry:
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
|
cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
|
||||||
} else { /* decode response */
|
} else { /* decode response */
|
||||||
|
#ifdef CONFIG_CIFS_STATS
|
||||||
|
atomic_inc(&tcon->num_ffirst);
|
||||||
|
#endif
|
||||||
/* BB fill in */
|
/* BB fill in */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2509,6 +2511,9 @@ findFirstRetry:
|
|||||||
if (rc == -EAGAIN)
|
if (rc == -EAGAIN)
|
||||||
goto findFirstRetry;
|
goto findFirstRetry;
|
||||||
} else { /* decode response */
|
} else { /* decode response */
|
||||||
|
#ifdef CONFIG_CIFS_STATS
|
||||||
|
atomic_inc(&tcon->num_ffirst);
|
||||||
|
#endif
|
||||||
/* BB remember to free buffer if error BB */
|
/* BB remember to free buffer if error BB */
|
||||||
rc = validate_t2((struct smb_t2_rsp *)pSMBr);
|
rc = validate_t2((struct smb_t2_rsp *)pSMBr);
|
||||||
if(rc == 0) {
|
if(rc == 0) {
|
||||||
@ -2622,6 +2627,9 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
|
|||||||
} else
|
} else
|
||||||
cFYI(1, ("FindNext returned = %d", rc));
|
cFYI(1, ("FindNext returned = %d", rc));
|
||||||
} else { /* decode response */
|
} else { /* decode response */
|
||||||
|
#ifdef CONFIG_CIFS_STATS
|
||||||
|
atomic_inc(&tcon->num_fnext);
|
||||||
|
#endif
|
||||||
rc = validate_t2((struct smb_t2_rsp *)pSMBr);
|
rc = validate_t2((struct smb_t2_rsp *)pSMBr);
|
||||||
|
|
||||||
if(rc == 0) {
|
if(rc == 0) {
|
||||||
@ -2691,6 +2699,9 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon, const __u16 searchHandle
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
cERROR(1, ("Send error in FindClose = %d", rc));
|
cERROR(1, ("Send error in FindClose = %d", rc));
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_CIFS_STATS
|
||||||
|
atomic_inc(&tcon->num_fclose);
|
||||||
|
#endif
|
||||||
cifs_small_buf_release(pSMB);
|
cifs_small_buf_release(pSMB);
|
||||||
|
|
||||||
/* Since session is dead, search handle closed on server already */
|
/* Since session is dead, search handle closed on server already */
|
||||||
|
@ -190,8 +190,9 @@ static void fill_in_inode(struct inode *tmp_inode,
|
|||||||
tmp_inode->i_data.a_ops = &cifs_addr_ops;
|
tmp_inode->i_data.a_ops = &cifs_addr_ops;
|
||||||
|
|
||||||
if(isNewInode)
|
if(isNewInode)
|
||||||
return; /* No sense invalidating pages for new inode since we
|
return; /* No sense invalidating pages for new inode
|
||||||
have not started caching readahead file data yet */
|
since have not started caching readahead file
|
||||||
|
data yet */
|
||||||
|
|
||||||
if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) &&
|
if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) &&
|
||||||
(local_size == tmp_inode->i_size)) {
|
(local_size == tmp_inode->i_size)) {
|
||||||
@ -536,7 +537,8 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
|
|||||||
while((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
|
while((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
|
||||||
(rc == 0) && (cifsFile->srch_inf.endOfSearch == FALSE)){
|
(rc == 0) && (cifsFile->srch_inf.endOfSearch == FALSE)){
|
||||||
cFYI(1,("calling findnext2"));
|
cFYI(1,("calling findnext2"));
|
||||||
rc = CIFSFindNext(xid,pTcon,cifsFile->netfid, &cifsFile->srch_inf);
|
rc = CIFSFindNext(xid,pTcon,cifsFile->netfid,
|
||||||
|
&cifsFile->srch_inf);
|
||||||
if(rc)
|
if(rc)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
@ -555,7 +557,7 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
|
|||||||
cFYI(1,("found entry - pos_in_buf %d",pos_in_buf));
|
cFYI(1,("found entry - pos_in_buf %d",pos_in_buf));
|
||||||
current_entry = cifsFile->srch_inf.srch_entries_start;
|
current_entry = cifsFile->srch_inf.srch_entries_start;
|
||||||
for(i=0;(i<(pos_in_buf)) && (current_entry != NULL);i++) {
|
for(i=0;(i<(pos_in_buf)) && (current_entry != NULL);i++) {
|
||||||
/* go entry to next entry figuring out which we need to start with */
|
/* go entry by entry figuring out which is first */
|
||||||
/* if( . or ..)
|
/* if( . or ..)
|
||||||
skip */
|
skip */
|
||||||
rc = cifs_entry_is_dot(current_entry,cifsFile);
|
rc = cifs_entry_is_dot(current_entry,cifsFile);
|
||||||
@ -721,7 +723,8 @@ static int cifs_filldir(char *pfindEntry, struct file *file,
|
|||||||
(FILE_DIRECTORY_INFO *)pfindEntry,&obj_type, rc);
|
(FILE_DIRECTORY_INFO *)pfindEntry,&obj_type, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = filldir(direntry,qstring.name,qstring.len,file->f_pos,tmp_inode->i_ino,obj_type);
|
rc = filldir(direntry,qstring.name,qstring.len,file->f_pos,
|
||||||
|
tmp_inode->i_ino,obj_type);
|
||||||
if(rc) {
|
if(rc) {
|
||||||
cFYI(1,("filldir rc = %d",rc));
|
cFYI(1,("filldir rc = %d",rc));
|
||||||
}
|
}
|
||||||
@ -906,7 +909,8 @@ int cifs_readdir(struct file *file, void *direntry, filldir_t filldir)
|
|||||||
cifs_save_resume_key(current_entry,cifsFile);
|
cifs_save_resume_key(current_entry,cifsFile);
|
||||||
break;
|
break;
|
||||||
} else
|
} else
|
||||||
current_entry = nxt_dir_entry(current_entry,end_of_smb);
|
current_entry = nxt_dir_entry(current_entry,
|
||||||
|
end_of_smb);
|
||||||
}
|
}
|
||||||
kfree(tmp_buf);
|
kfree(tmp_buf);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user