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

Commit d47d7c1a authored by Steve French's avatar Steve French
Browse files

[CIFS] CIFS readdir perf optimizations part 1



Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 4b8f930f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3026,6 +3026,7 @@ findFirstRetry:
				psrch_inf->unicode = FALSE;

			psrch_inf->ntwrk_buf_start = (char *)pSMBr;
			psrch_inf->smallBuf = 0;
			psrch_inf->srch_entries_start = 
				(char *) &pSMBr->hdr.Protocol + 
					le16_to_cpu(pSMBr->t2.DataOffset);
@@ -3146,9 +3147,14 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
			parms = (T2_FNEXT_RSP_PARMS *)response_data;
			response_data = (char *)&pSMBr->hdr.Protocol +
				le16_to_cpu(pSMBr->t2.DataOffset);
			if(psrch_inf->smallBuf)
				cifs_small_buf_release(
					psrch_inf->ntwrk_buf_start);
			else
				cifs_buf_release(psrch_inf->ntwrk_buf_start);
			psrch_inf->srch_entries_start = response_data;
			psrch_inf->ntwrk_buf_start = (char *)pSMB;
			psrch_inf->smallBuf = 0;
			if(parms->EndofSearch)
				psrch_inf->endOfSearch = TRUE;
			else
+14 −9
Original line number Diff line number Diff line
@@ -555,6 +555,9 @@ int cifs_closedir(struct inode *inode, struct file *file)
		if (ptmp) {
			cFYI(1, ("closedir free smb buf in srch struct"));
			pCFileStruct->srch_inf.ntwrk_buf_start = NULL;
			if(pCFileStruct->srch_inf.smallBuf)
				cifs_small_buf_release(ptmp);
			else
				cifs_buf_release(ptmp);
		}
		ptmp = pCFileStruct->search_resume_name;
@@ -614,6 +617,8 @@ int cifs_lock(struct file *file, int cmd, struct file_lock *pfLock)
	} else if (pfLock->fl_type == F_UNLCK) {
		cFYI(1, ("F_UNLCK"));
		numUnlock = 1;
		/* Check if unlock includes more than
		one lock range */
	} else if (pfLock->fl_type == F_RDLCK) {
		cFYI(1, ("F_RDLCK"));
		lockType |= LOCKING_ANDX_SHARED_LOCK;
+6 −1
Original line number Diff line number Diff line
@@ -604,7 +604,12 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
		cifsFile->search_resume_name = NULL;
		if(cifsFile->srch_inf.ntwrk_buf_start) {
			cFYI(1,("freeing SMB ff cache buf on search rewind"));
			cifs_buf_release(cifsFile->srch_inf.ntwrk_buf_start);
			if(cifsFile->srch_inf.smallBuf)
				cifs_small_buf_release(cifsFile->srch_inf.
						ntwrk_buf_start);
			else
				cifs_buf_release(cifsFile->srch_inf.
						ntwrk_buf_start);
		}
		rc = initiate_cifs_search(xid,file);
		if(rc) {