Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dfb7533b authored by Steve French's avatar Steve French Committed by Steve French
Browse files

[CIFS] Add stats for findfirst, findnext, findclose

parent 8b22c249
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -219,6 +219,9 @@ struct cifsTconInfo {
	atomic_t num_rmdirs;
	atomic_t num_renames;
	atomic_t num_t2renames;
	atomic_t num_ffirst;
	atomic_t num_fnext;
	atomic_t num_fclose;
	__u64    bytes_read;
	__u64    bytes_written;
	spinlock_t stat_lock;
+12 −1
Original line number Diff line number Diff line
@@ -2396,7 +2396,9 @@ int CIFSFindSingle(const int xid, struct cifsTconInfo *tcon,
	if (rc) {
		cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
	} else {		/* decode response */

#ifdef CONFIG_CIFS_STATS
		atomic_inc(&tcon->num_ffirst);
#endif
		/* BB fill in */
	}

@@ -2509,6 +2511,9 @@ CIFSFindFirst(const int xid, struct cifsTconInfo *tcon,
		if (rc == -EAGAIN)
			goto findFirstRetry;
	} else { /* decode response */
#ifdef CONFIG_CIFS_STATS
		atomic_inc(&tcon->num_ffirst);
#endif
		/* BB remember to free buffer if error BB */
		rc = validate_t2((struct smb_t2_rsp *)pSMBr);
		if(rc == 0) {
@@ -2622,6 +2627,9 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
		} else
			cFYI(1, ("FindNext returned = %d", rc));
	} else {                /* decode response */
#ifdef CONFIG_CIFS_STATS
		atomic_inc(&tcon->num_fnext);
#endif
		rc = validate_t2((struct smb_t2_rsp *)pSMBr);
		
		if(rc == 0) {
@@ -2691,6 +2699,9 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon, const __u16 searchHandle
	if (rc) {
		cERROR(1, ("Send error in FindClose = %d", rc));
	}
#ifdef CONFIG_CIFS_STATS
	atomic_inc(&tcon->num_fclose);
#endif
	cifs_small_buf_release(pSMB);

	/* Since session is dead, search handle closed on server already */
+10 −6
Original line number Diff line number Diff line
@@ -190,8 +190,9 @@ static void fill_in_inode(struct inode *tmp_inode,
		tmp_inode->i_data.a_ops = &cifs_addr_ops;

		if(isNewInode)
			return; /* No sense invalidating pages for new inode since we
					   have not started caching readahead file data yet */
			return; /* No sense invalidating pages for new inode
				   since have not started caching readahead file
				   data yet */

		if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) &&
			(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) && 
	      (rc == 0) && (cifsFile->srch_inf.endOfSearch == FALSE)){
	 	cFYI(1,("calling findnext2"));
		rc = CIFSFindNext(xid,pTcon,cifsFile->netfid, &cifsFile->srch_inf);
		rc = CIFSFindNext(xid,pTcon,cifsFile->netfid, 
				  &cifsFile->srch_inf);
		if(rc)
			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)); 
		current_entry = cifsFile->srch_inf.srch_entries_start;
		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 ..)
				skip */
			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);
	}
	
	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) {
		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);
				break;
			} else 
				current_entry = nxt_dir_entry(current_entry,end_of_smb);
				current_entry = nxt_dir_entry(current_entry,
							      end_of_smb);
		}
		kfree(tmp_buf);
		break;