Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
linux-seco-imx
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Iterations
Jira
Code
Merge requests
13
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Clea OS
bsp
nxp
linux-seco-imx
Commits
27198d85
Commit
27198d85
authored
20 years ago
by
Linus Torvalds
Browse files
Options
Downloads
Plain Diff
Merge
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
parents
a7df849c
f5d9b97e
Loading
Loading
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
fs/cifs/CHANGES
+2
-1
2 additions, 1 deletion
fs/cifs/CHANGES
fs/cifs/cifsfs.h
+1
-1
1 addition, 1 deletion
fs/cifs/cifsfs.h
fs/cifs/file.c
+2
-0
2 additions, 0 deletions
fs/cifs/file.c
fs/cifs/inode.c
+17
-17
17 additions, 17 deletions
fs/cifs/inode.c
with
22 additions
and
19 deletions
fs/cifs/CHANGES
+
2
−
1
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
------------
------------
...
...
This diff is collapsed.
Click to expand it.
fs/cifs/cifsfs.h
+
1
−
1
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 */
This diff is collapsed.
Click to expand it.
fs/cifs/file.c
+
2
−
0
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
;
}
}
...
...
This diff is collapsed.
Click to expand it.
fs/cifs/inode.c
+
17
−
17
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
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment