Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
dfb7533b
Commit
dfb7533b
authored
Jun 22, 2005
by
Steve French
Committed by
Steve French
Jun 22, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[CIFS] Add stats for findfirst, findnext, findclose
Signed-off-by: Steve French (sfrench@us.ibm.com)
parent
8b22c249
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
7 deletions
+25
-7
fs/cifs/cifsglob.h
fs/cifs/cifsglob.h
+3
-0
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+12
-1
fs/cifs/readdir.c
fs/cifs/readdir.c
+10
-6
No files found.
fs/cifs/cifsglob.h
View file @
dfb7533b
...
...
@@ -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
;
...
...
fs/cifs/cifssmb.c
View file @
dfb7533b
...
...
@@ -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 */
...
...
fs/cifs/readdir.c
View file @
dfb7533b
...
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment