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
27198d85
Commit
27198d85
authored
Jun 10, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
parents
a7df849c
f5d9b97e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
19 deletions
+22
-19
fs/cifs/CHANGES
fs/cifs/CHANGES
+2
-1
fs/cifs/cifsfs.h
fs/cifs/cifsfs.h
+1
-1
fs/cifs/file.c
fs/cifs/file.c
+2
-0
fs/cifs/inode.c
fs/cifs/inode.c
+17
-17
No files found.
fs/cifs/CHANGES
View file @
27198d85
...
@@ -6,7 +6,8 @@ kills the cifsd thread (NB: killing the cifs kernel threads is not
...
@@ -6,7 +6,8 @@ kills the cifsd thread (NB: killing the cifs kernel threads is not
recommended, unmount and rmmod cifs will kill them when they are
recommended, unmount and rmmod cifs will kill them when they are
no longer needed). Fix readdir to ASCII servers (ie older servers
no longer needed). Fix readdir to ASCII servers (ie older servers
which do not support Unicode) and also require asterik.
which do not support Unicode) and also require asterik.
Fix out of memory case in which data could be written one page
off in the page cache.
Version 1.33
Version 1.33
------------
------------
...
...
fs/cifs/cifsfs.h
View file @
27198d85
...
@@ -96,5 +96,5 @@ extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
...
@@ -96,5 +96,5 @@ extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
extern
ssize_t
cifs_listxattr
(
struct
dentry
*
,
char
*
,
size_t
);
extern
ssize_t
cifs_listxattr
(
struct
dentry
*
,
char
*
,
size_t
);
extern
int
cifs_ioctl
(
struct
inode
*
inode
,
struct
file
*
filep
,
extern
int
cifs_ioctl
(
struct
inode
*
inode
,
struct
file
*
filep
,
unsigned
int
command
,
unsigned
long
arg
);
unsigned
int
command
,
unsigned
long
arg
);
#define CIFS_VERSION "1.3
4
"
#define CIFS_VERSION "1.3
5
"
#endif
/* _CIFSFS_H */
#endif
/* _CIFSFS_H */
fs/cifs/file.c
View file @
27198d85
...
@@ -1352,6 +1352,8 @@ static void cifs_copy_cache_pages(struct address_space *mapping,
...
@@ -1352,6 +1352,8 @@ static void cifs_copy_cache_pages(struct address_space *mapping,
GFP_KERNEL
))
{
GFP_KERNEL
))
{
page_cache_release
(
page
);
page_cache_release
(
page
);
cFYI
(
1
,
(
"Add page cache failed"
));
cFYI
(
1
,
(
"Add page cache failed"
));
data
+=
PAGE_CACHE_SIZE
;
bytes_read
-=
PAGE_CACHE_SIZE
;
continue
;
continue
;
}
}
...
...
fs/cifs/inode.c
View file @
27198d85
...
@@ -82,12 +82,12 @@ int cifs_get_inode_info_unix(struct inode **pinode,
...
@@ -82,12 +82,12 @@ int cifs_get_inode_info_unix(struct inode **pinode,
/* get new inode */
/* get new inode */
if
(
*
pinode
==
NULL
)
{
if
(
*
pinode
==
NULL
)
{
*
pinode
=
new_inode
(
sb
);
*
pinode
=
new_inode
(
sb
);
if
(
*
pinode
==
NULL
)
if
(
*
pinode
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
/* Is an i_ino of zero legal? */
/* Is an i_ino of zero legal? */
/* Are there sanity checks we can use to ensure that
/* Are there sanity checks we can use to ensure that
the server is really filling in that field? */
the server is really filling in that field? */
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SERVER_INUM
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SERVER_INUM
)
{
(
*
pinode
)
->
i_ino
=
(
*
pinode
)
->
i_ino
=
(
unsigned
long
)
findData
.
UniqueId
;
(
unsigned
long
)
findData
.
UniqueId
;
}
/* note ino incremented to unique num in new_inode */
}
/* note ino incremented to unique num in new_inode */
...
@@ -134,7 +134,7 @@ int cifs_get_inode_info_unix(struct inode **pinode,
...
@@ -134,7 +134,7 @@ int cifs_get_inode_info_unix(struct inode **pinode,
inode
->
i_gid
=
le64_to_cpu
(
findData
.
Gid
);
inode
->
i_gid
=
le64_to_cpu
(
findData
.
Gid
);
inode
->
i_nlink
=
le64_to_cpu
(
findData
.
Nlinks
);
inode
->
i_nlink
=
le64_to_cpu
(
findData
.
Nlinks
);
if
(
is_size_safe_to_change
(
cifsInfo
))
{
if
(
is_size_safe_to_change
(
cifsInfo
))
{
/* can not safely change the file size here if the
/* can not safely change the file size here if the
client is writing to it due to potential races */
client is writing to it due to potential races */
...
@@ -162,7 +162,7 @@ int cifs_get_inode_info_unix(struct inode **pinode,
...
@@ -162,7 +162,7 @@ int cifs_get_inode_info_unix(struct inode **pinode,
if
(
S_ISREG
(
inode
->
i_mode
))
{
if
(
S_ISREG
(
inode
->
i_mode
))
{
cFYI
(
1
,
(
" File inode "
));
cFYI
(
1
,
(
" File inode "
));
inode
->
i_op
=
&
cifs_file_inode_ops
;
inode
->
i_op
=
&
cifs_file_inode_ops
;
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
inode
->
i_fop
=
&
cifs_file_direct_ops
;
inode
->
i_fop
=
&
cifs_file_direct_ops
;
else
else
inode
->
i_fop
=
&
cifs_file_ops
;
inode
->
i_fop
=
&
cifs_file_ops
;
...
@@ -198,17 +198,17 @@ int cifs_get_inode_info(struct inode **pinode,
...
@@ -198,17 +198,17 @@ int cifs_get_inode_info(struct inode **pinode,
pTcon
=
cifs_sb
->
tcon
;
pTcon
=
cifs_sb
->
tcon
;
cFYI
(
1
,(
"Getting info on %s "
,
search_path
));
cFYI
(
1
,(
"Getting info on %s "
,
search_path
));
if
((
pfindData
==
NULL
)
&&
(
*
pinode
!=
NULL
))
{
if
((
pfindData
==
NULL
)
&&
(
*
pinode
!=
NULL
))
{
if
(
CIFS_I
(
*
pinode
)
->
clientCanCacheRead
)
{
if
(
CIFS_I
(
*
pinode
)
->
clientCanCacheRead
)
{
cFYI
(
1
,(
"No need to revalidate cached inode sizes"
));
cFYI
(
1
,(
"No need to revalidate cached inode sizes"
));
return
rc
;
return
rc
;
}
}
}
}
/* if file info not passed in then get it from server */
/* if file info not passed in then get it from server */
if
(
pfindData
==
NULL
)
{
if
(
pfindData
==
NULL
)
{
buf
=
kmalloc
(
sizeof
(
FILE_ALL_INFO
),
GFP_KERNEL
);
buf
=
kmalloc
(
sizeof
(
FILE_ALL_INFO
),
GFP_KERNEL
);
if
(
buf
==
NULL
)
if
(
buf
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
pfindData
=
(
FILE_ALL_INFO
*
)
buf
;
pfindData
=
(
FILE_ALL_INFO
*
)
buf
;
/* could do find first instead but this returns more info */
/* could do find first instead but this returns more info */
...
@@ -268,7 +268,7 @@ int cifs_get_inode_info(struct inode **pinode,
...
@@ -268,7 +268,7 @@ int cifs_get_inode_info(struct inode **pinode,
IndexNumber field is not guaranteed unique? */
IndexNumber field is not guaranteed unique? */
#ifdef CONFIG_CIFS_EXPERIMENTAL
#ifdef CONFIG_CIFS_EXPERIMENTAL
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SERVER_INUM
){
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SERVER_INUM
){
int
rc1
=
0
;
int
rc1
=
0
;
__u64
inode_num
;
__u64
inode_num
;
...
@@ -277,7 +277,7 @@ int cifs_get_inode_info(struct inode **pinode,
...
@@ -277,7 +277,7 @@ int cifs_get_inode_info(struct inode **pinode,
cifs_sb
->
local_nls
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFS_MOUNT_MAP_SPECIAL_CHR
);
if
(
rc1
)
{
if
(
rc1
)
{
cFYI
(
1
,(
"GetSrvInodeNum rc %d"
,
rc1
));
cFYI
(
1
,(
"GetSrvInodeNum rc %d"
,
rc1
));
/* BB EOPNOSUPP disable SERVER_INUM? */
/* BB EOPNOSUPP disable SERVER_INUM? */
}
else
/* do we need cast or hash to ino? */
}
else
/* do we need cast or hash to ino? */
...
@@ -355,7 +355,7 @@ int cifs_get_inode_info(struct inode **pinode,
...
@@ -355,7 +355,7 @@ int cifs_get_inode_info(struct inode **pinode,
if
(
S_ISREG
(
inode
->
i_mode
))
{
if
(
S_ISREG
(
inode
->
i_mode
))
{
cFYI
(
1
,
(
" File inode "
));
cFYI
(
1
,
(
" File inode "
));
inode
->
i_op
=
&
cifs_file_inode_ops
;
inode
->
i_op
=
&
cifs_file_inode_ops
;
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_DIRECT_IO
)
inode
->
i_fop
=
&
cifs_file_direct_ops
;
inode
->
i_fop
=
&
cifs_file_direct_ops
;
else
else
inode
->
i_fop
=
&
cifs_file_ops
;
inode
->
i_fop
=
&
cifs_file_ops
;
...
@@ -422,7 +422,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
...
@@ -422,7 +422,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
if
(
!
rc
)
{
if
(
!
rc
)
{
if
(
direntry
->
d_inode
)
if
(
direntry
->
d_inode
)
direntry
->
d_inode
->
i_nlink
--
;
direntry
->
d_inode
->
i_nlink
--
;
}
else
if
(
rc
==
-
ENOENT
)
{
}
else
if
(
rc
==
-
ENOENT
)
{
d_drop
(
direntry
);
d_drop
(
direntry
);
...
@@ -441,7 +441,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
...
@@ -441,7 +441,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFSSMBClose
(
xid
,
pTcon
,
netfid
);
CIFSSMBClose
(
xid
,
pTcon
,
netfid
);
if
(
direntry
->
d_inode
)
if
(
direntry
->
d_inode
)
direntry
->
d_inode
->
i_nlink
--
;
direntry
->
d_inode
->
i_nlink
--
;
}
}
}
else
if
(
rc
==
-
EACCES
)
{
}
else
if
(
rc
==
-
EACCES
)
{
...
@@ -496,7 +496,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
...
@@ -496,7 +496,7 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFS_MOUNT_MAP_SPECIAL_CHR
);
if
(
!
rc
)
{
if
(
!
rc
)
{
if
(
direntry
->
d_inode
)
if
(
direntry
->
d_inode
)
direntry
->
d_inode
->
i_nlink
--
;
direntry
->
d_inode
->
i_nlink
--
;
}
else
if
(
rc
==
-
ETXTBSY
)
{
}
else
if
(
rc
==
-
ETXTBSY
)
{
int
oplock
=
FALSE
;
int
oplock
=
FALSE
;
...
@@ -517,14 +517,14 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
...
@@ -517,14 +517,14 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFS_MOUNT_MAP_SPECIAL_CHR
);
CIFSSMBClose
(
xid
,
pTcon
,
netfid
);
CIFSSMBClose
(
xid
,
pTcon
,
netfid
);
if
(
direntry
->
d_inode
)
if
(
direntry
->
d_inode
)
direntry
->
d_inode
->
i_nlink
--
;
direntry
->
d_inode
->
i_nlink
--
;
}
}
/* BB if rc = -ETXTBUSY goto the rename logic BB */
/* BB if rc = -ETXTBUSY goto the rename logic BB */
}
}
}
}
}
}
if
(
direntry
->
d_inode
)
{
if
(
direntry
->
d_inode
)
{
cifsInode
=
CIFS_I
(
direntry
->
d_inode
);
cifsInode
=
CIFS_I
(
direntry
->
d_inode
);
cifsInode
->
time
=
0
;
/* will force revalidate to get info
cifsInode
->
time
=
0
;
/* will force revalidate to get info
when needed */
when needed */
...
@@ -582,7 +582,7 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
...
@@ -582,7 +582,7 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
if
(
direntry
->
d_inode
)
if
(
direntry
->
d_inode
)
direntry
->
d_inode
->
i_nlink
=
2
;
direntry
->
d_inode
->
i_nlink
=
2
;
if
(
cifs_sb
->
tcon
->
ses
->
capabilities
&
CAP_UNIX
)
if
(
cifs_sb
->
tcon
->
ses
->
capabilities
&
CAP_UNIX
)
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SET_UID
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_SET_UID
)
{
CIFSSMBUnixSetPerms
(
xid
,
pTcon
,
full_path
,
CIFSSMBUnixSetPerms
(
xid
,
pTcon
,
full_path
,
mode
,
mode
,
(
__u64
)
current
->
euid
,
(
__u64
)
current
->
euid
,
...
...
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