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
nexedi
linux
Commits
71aa96e9
Commit
71aa96e9
authored
Apr 16, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/davem/BK/tg3-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
c6026d08
cbbf50f0
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
242 additions
and
66 deletions
+242
-66
drivers/firmware/edd.c
drivers/firmware/edd.c
+110
-57
drivers/ide/ide-probe.c
drivers/ide/ide-probe.c
+2
-1
fs/adfs/super.c
fs/adfs/super.c
+1
-0
fs/affs/super.c
fs/affs/super.c
+2
-0
fs/cifs/cifsfs.c
fs/cifs/cifsfs.c
+7
-0
fs/coda/inode.c
fs/coda/inode.c
+7
-0
fs/cramfs/inode.c
fs/cramfs/inode.c
+7
-0
fs/efs/super.c
fs/efs/super.c
+7
-0
fs/fat/inode.c
fs/fat/inode.c
+7
-0
fs/freevxfs/vxfs_super.c
fs/freevxfs/vxfs_super.c
+8
-0
fs/hfs/super.c
fs/hfs/super.c
+1
-0
fs/isofs/inode.c
fs/isofs/inode.c
+8
-0
fs/jffs/inode-v23.c
fs/jffs/inode-v23.c
+7
-0
fs/jffs2/fs.c
fs/jffs2/fs.c
+1
-1
fs/jffs2/super.c
fs/jffs2/super.c
+1
-1
fs/namespace.c
fs/namespace.c
+1
-1
fs/ncpfs/inode.c
fs/ncpfs/inode.c
+7
-0
fs/openpromfs/inode.c
fs/openpromfs/inode.c
+8
-1
fs/proc/inode.c
fs/proc/inode.c
+7
-0
fs/qnx4/inode.c
fs/qnx4/inode.c
+4
-0
fs/romfs/inode.c
fs/romfs/inode.c
+7
-0
fs/smbfs/inode.c
fs/smbfs/inode.c
+7
-0
fs/sysv/inode.c
fs/sysv/inode.c
+11
-0
fs/sysv/super.c
fs/sysv/super.c
+5
-3
fs/sysv/sysv.h
fs/sysv/sysv.h
+1
-0
fs/udf/super.c
fs/udf/super.c
+6
-0
mm/mprotect.c
mm/mprotect.c
+2
-1
No files found.
drivers/firmware/edd.c
View file @
71aa96e9
...
...
@@ -125,13 +125,15 @@ static struct sysfs_ops edd_attr_ops = {
static
ssize_t
edd_show_host_bus
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
int
i
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
isprint
(
info
->
params
.
host_bus_type
[
i
]))
{
...
...
@@ -169,13 +171,15 @@ edd_show_host_bus(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_interface
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
int
i
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
for
(
i
=
0
;
i
<
8
;
i
++
)
{
if
(
isprint
(
info
->
params
.
interface_type
[
i
]))
{
...
...
@@ -231,11 +235,13 @@ edd_show_interface(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_raw_data
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
ssize_t
len
=
sizeof
(
info
->
params
);
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
if
(
!
(
info
->
params
.
key
==
0xBEDD
||
info
->
params
.
key
==
0xDDBE
))
len
=
info
->
params
.
length
;
...
...
@@ -251,11 +257,13 @@ edd_show_raw_data(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_version
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
scnprintf
(
p
,
left
,
"0x%02x
\n
"
,
info
->
version
);
return
(
p
-
buf
);
...
...
@@ -272,11 +280,13 @@ edd_show_disk80_sig(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_extensions
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
if
(
info
->
interface_support
&
EDD_EXT_FIXED_DISK_ACCESS
)
{
p
+=
scnprintf
(
p
,
left
,
"Fixed disk access
\n
"
);
...
...
@@ -296,11 +306,13 @@ edd_show_extensions(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_info_flags
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
if
(
info
->
params
.
info_flags
&
EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT
)
p
+=
scnprintf
(
p
,
left
,
"DMA boundary error transparent
\n
"
);
...
...
@@ -324,11 +336,13 @@ edd_show_info_flags(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_legacy_cylinders
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
snprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
legacy_cylinders
);
return
(
p
-
buf
);
...
...
@@ -337,11 +351,13 @@ edd_show_legacy_cylinders(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_legacy_heads
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
snprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
legacy_heads
);
return
(
p
-
buf
);
...
...
@@ -350,11 +366,13 @@ edd_show_legacy_heads(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_legacy_sectors
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
snprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
legacy_sectors
);
return
(
p
-
buf
);
...
...
@@ -363,11 +381,13 @@ edd_show_legacy_sectors(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_default_cylinders
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
scnprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
params
.
num_default_cylinders
);
return
(
p
-
buf
);
...
...
@@ -376,11 +396,13 @@ edd_show_default_cylinders(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_default_heads
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
scnprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
params
.
num_default_heads
);
return
(
p
-
buf
);
...
...
@@ -389,11 +411,13 @@ edd_show_default_heads(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_default_sectors_per_track
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
scnprintf
(
p
,
left
,
"0x%x
\n
"
,
info
->
params
.
sectors_per_track
);
return
(
p
-
buf
);
...
...
@@ -402,11 +426,13 @@ edd_show_default_sectors_per_track(struct edd_device *edev, char *buf)
static
ssize_t
edd_show_sectors
(
struct
edd_device
*
edev
,
char
*
buf
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
char
*
p
=
buf
;
if
(
!
edev
||
!
info
||
!
buf
)
{
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
||
!
buf
)
return
-
EINVAL
;
}
p
+=
scnprintf
(
p
,
left
,
"0x%llx
\n
"
,
info
->
params
.
number_of_sectors
);
return
(
p
-
buf
);
...
...
@@ -426,8 +452,11 @@ edd_show_sectors(struct edd_device *edev, char *buf)
static
int
edd_has_legacy_cylinders
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
legacy_cylinders
>
0
;
}
...
...
@@ -435,8 +464,11 @@ edd_has_legacy_cylinders(struct edd_device *edev)
static
int
edd_has_legacy_heads
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
legacy_heads
>
0
;
}
...
...
@@ -444,8 +476,11 @@ edd_has_legacy_heads(struct edd_device *edev)
static
int
edd_has_legacy_sectors
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
legacy_sectors
>
0
;
}
...
...
@@ -453,8 +488,11 @@ edd_has_legacy_sectors(struct edd_device *edev)
static
int
edd_has_default_cylinders
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
params
.
num_default_cylinders
>
0
;
}
...
...
@@ -462,8 +500,11 @@ edd_has_default_cylinders(struct edd_device *edev)
static
int
edd_has_default_heads
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
params
.
num_default_heads
>
0
;
}
...
...
@@ -471,8 +512,11 @@ edd_has_default_heads(struct edd_device *edev)
static
int
edd_has_default_sectors_per_track
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
-
EINVAL
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
-
EINVAL
;
return
info
->
params
.
sectors_per_track
>
0
;
}
...
...
@@ -480,11 +524,14 @@ edd_has_default_sectors_per_track(struct edd_device *edev)
static
int
edd_has_edd30
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
)
;
struct
edd_info
*
info
;
int
i
,
nonzero_path
=
0
;
char
c
;
if
(
!
edev
||
!
info
)
if
(
!
edev
)
return
0
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
0
;
if
(
!
(
info
->
params
.
key
==
0xBEDD
||
info
->
params
.
key
==
0xDDBE
))
{
...
...
@@ -508,8 +555,11 @@ edd_has_edd30(struct edd_device *edev)
static
int
edd_has_disk80_sig
(
struct
edd_device
*
edev
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
if
(
!
edev
||
!
info
)
struct
edd_info
*
info
;
if
(
!
edev
)
return
0
;
info
=
edd_dev_get_info
(
edev
);
if
(
!
info
)
return
0
;
return
info
->
device
==
0x80
;
}
...
...
@@ -597,9 +647,12 @@ static decl_subsys(edd,&ktype_edd,NULL);
static
int
edd_dev_is_type
(
struct
edd_device
*
edev
,
const
char
*
type
)
{
struct
edd_info
*
info
=
edd_dev_get_info
(
edev
);
struct
edd_info
*
info
;
if
(
!
edev
)
return
0
;
info
=
edd_dev_get_info
(
edev
);
if
(
edev
&&
type
&&
info
)
{
if
(
type
&&
info
)
{
if
(
!
strncmp
(
info
->
params
.
host_bus_type
,
type
,
strlen
(
type
))
||
!
strncmp
(
info
->
params
.
interface_type
,
type
,
strlen
(
type
)))
return
1
;
...
...
drivers/ide/ide-probe.c
View file @
71aa96e9
...
...
@@ -103,7 +103,8 @@ static inline int drive_is_flashcard (ide_drive_t *drive)
if
(
id
->
config
==
0x848a
)
return
1
;
/* CompactFlash */
if
(
!
strncmp
(
id
->
model
,
"KODAK ATA_FLASH"
,
15
)
/* Kodak */
||
!
strncmp
(
id
->
model
,
"Hitachi CV"
,
10
)
/* Hitachi */
||
!
strncmp
(
id
->
model
,
"SunDisk SDCFB"
,
13
)
/* SunDisk */
||
!
strncmp
(
id
->
model
,
"SunDisk SDCFB"
,
13
)
/* old SanDisk */
||
!
strncmp
(
id
->
model
,
"SanDisk SDCFB"
,
13
)
/* SanDisk */
||
!
strncmp
(
id
->
model
,
"HAGIWARA HPC"
,
12
)
/* Hagiwara */
||
!
strncmp
(
id
->
model
,
"LEXAR ATA_FLASH"
,
15
)
/* Lexar */
||
!
strncmp
(
id
->
model
,
"ATA_FLASH"
,
9
))
/* Simple Tech */
...
...
fs/adfs/super.c
View file @
71aa96e9
...
...
@@ -192,6 +192,7 @@ static int parse_options(struct super_block *sb, char *options)
static
int
adfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
parse_options
(
sb
,
data
);
}
...
...
fs/affs/super.c
View file @
71aa96e9
...
...
@@ -502,6 +502,8 @@ affs_remount(struct super_block *sb, int *flags, char *data)
pr_debug
(
"AFFS: remount(flags=0x%x,opts=
\"
%s
\"
)
\n
"
,
*
flags
,
data
);
*
flags
|=
MS_NODIRATIME
;
if
(
!
parse_options
(
data
,
&
uid
,
&
gid
,
&
mode
,
&
reserved
,
&
root_block
,
&
blocksize
,
&
sbi
->
s_prefix
,
sbi
->
s_volume
,
&
mount_flags
))
return
-
EINVAL
;
...
...
fs/cifs/cifsfs.c
View file @
71aa96e9
...
...
@@ -357,6 +357,12 @@ static struct quotactl_ops cifs_quotactl_ops = {
};
#endif
static
int
cifs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
struct
super_operations
cifs_super_ops
=
{
.
read_inode
=
cifs_read_inode
,
.
put_super
=
cifs_put_super
,
...
...
@@ -369,6 +375,7 @@ struct super_operations cifs_super_ops = {
us with the same number of releases (closes) as opens */
.
show_options
=
cifs_show_options
,
/* .umount_begin = cifs_umount_begin, *//* consider adding in the future */
.
remount_fs
=
cifs_remount
,
};
static
struct
super_block
*
...
...
fs/coda/inode.c
View file @
71aa96e9
...
...
@@ -82,6 +82,12 @@ void coda_destroy_inodecache(void)
printk
(
KERN_INFO
"coda_inode_cache: not all structures were freed
\n
"
);
}
static
int
coda_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
/* exported operations */
struct
super_operations
coda_super_operations
=
{
...
...
@@ -90,6 +96,7 @@ struct super_operations coda_super_operations =
.
clear_inode
=
coda_clear_inode
,
.
put_super
=
coda_put_super
,
.
statfs
=
coda_statfs
,
.
remount_fs
=
coda_remount
,
};
static
int
get_device_index
(
struct
coda_mount_data
*
data
)
...
...
fs/cramfs/inode.c
View file @
71aa96e9
...
...
@@ -193,6 +193,12 @@ static void cramfs_put_super(struct super_block *sb)
sb
->
s_fs_info
=
NULL
;
}
static
int
cramfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_RDONLY
;
return
0
;
}
static
int
cramfs_fill_super
(
struct
super_block
*
sb
,
void
*
data
,
int
silent
)
{
int
i
;
...
...
@@ -483,6 +489,7 @@ static struct inode_operations cramfs_dir_inode_operations = {
static
struct
super_operations
cramfs_ops
=
{
.
put_super
=
cramfs_put_super
,
.
remount_fs
=
cramfs_remount
,
.
statfs
=
cramfs_statfs
,
};
...
...
fs/efs/super.c
View file @
71aa96e9
...
...
@@ -77,12 +77,19 @@ void efs_put_super(struct super_block *s)
s
->
s_fs_info
=
NULL
;
}
static
int
efs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_RDONLY
;
return
0
;
}
static
struct
super_operations
efs_superblock_operations
=
{
.
alloc_inode
=
efs_alloc_inode
,
.
destroy_inode
=
efs_destroy_inode
,
.
read_inode
=
efs_read_inode
,
.
put_super
=
efs_put_super
,
.
statfs
=
efs_statfs
,
.
remount_fs
=
efs_remount
,
};
static
int
__init
init_efs_fs
(
void
)
{
...
...
fs/fat/inode.c
View file @
71aa96e9
...
...
@@ -734,6 +734,12 @@ void __exit fat_destroy_inodecache(void)
printk
(
KERN_INFO
"fat_inode_cache: not all structures were freed
\n
"
);
}
static
int
fat_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
static
struct
super_operations
fat_sops
=
{
.
alloc_inode
=
fat_alloc_inode
,
.
destroy_inode
=
fat_destroy_inode
,
...
...
@@ -742,6 +748,7 @@ static struct super_operations fat_sops = {
.
put_super
=
fat_put_super
,
.
statfs
=
fat_statfs
,
.
clear_inode
=
fat_clear_inode
,
.
remount_fs
=
fat_remount
,
.
read_inode
=
make_bad_inode
,
...
...
fs/freevxfs/vxfs_super.c
View file @
71aa96e9
...
...
@@ -56,12 +56,14 @@ MODULE_ALIAS("vxfs"); /* makes mount -t vxfs autoload the module */
static
void
vxfs_put_super
(
struct
super_block
*
);
static
int
vxfs_statfs
(
struct
super_block
*
,
struct
kstatfs
*
);
static
int
vxfs_remount
(
struct
super_block
*
,
int
*
,
char
*
);
static
struct
super_operations
vxfs_super_ops
=
{
.
read_inode
=
vxfs_read_inode
,
.
put_inode
=
vxfs_put_inode
,
.
put_super
=
vxfs_put_super
,
.
statfs
=
vxfs_statfs
,
.
remount_fs
=
vxfs_remount
,
};
/**
...
...
@@ -121,6 +123,12 @@ vxfs_statfs(struct super_block *sbp, struct kstatfs *bufp)
return
0
;
}
static
int
vxfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_RDONLY
;
return
0
;
}
/**
* vxfs_read_super - read superblock into memory and initalize filesystem
* @sbp: VFS superblock (to fill)
...
...
fs/hfs/super.c
View file @
71aa96e9
...
...
@@ -94,6 +94,7 @@ static int hfs_statfs(struct super_block *sb, struct kstatfs *buf)
int
hfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
if
((
*
flags
&
MS_RDONLY
)
==
(
sb
->
s_flags
&
MS_RDONLY
))
return
0
;
if
(
!
(
*
flags
&
MS_RDONLY
))
{
...
...
fs/isofs/inode.c
View file @
71aa96e9
...
...
@@ -119,12 +119,20 @@ static void destroy_inodecache(void)
printk
(
KERN_INFO
"iso_inode_cache: not all structures were freed
\n
"
);
}
static
int
isofs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
/* we probably want a lot more here */
*
flags
|=
MS_RDONLY
;
return
0
;
}
static
struct
super_operations
isofs_sops
=
{
.
alloc_inode
=
isofs_alloc_inode
,
.
destroy_inode
=
isofs_destroy_inode
,
.
read_inode
=
isofs_read_inode
,
.
put_super
=
isofs_put_super
,
.
statfs
=
isofs_statfs
,
.
remount_fs
=
isofs_remount
,
};
/* the export_operations structure for describing
...
...
fs/jffs/inode-v23.c
View file @
71aa96e9
...
...
@@ -1771,6 +1771,12 @@ jffs_write_super(struct super_block *sb)
unlock_kernel
();
}
static
int
jffs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
static
struct
super_operations
jffs_ops
=
{
.
read_inode
=
jffs_read_inode
,
...
...
@@ -1778,6 +1784,7 @@ static struct super_operations jffs_ops =
.
put_super
=
jffs_put_super
,
.
write_super
=
jffs_write_super
,
.
statfs
=
jffs_statfs
,
.
remount_fs
=
jffs_remount
,
};
static
struct
super_block
*
jffs_get_sb
(
struct
file_system_type
*
fs_type
,
...
...
fs/jffs2/fs.c
View file @
71aa96e9
...
...
@@ -350,7 +350,7 @@ int jffs2_remount_fs (struct super_block *sb, int *flags, char *data)
if
(
!
(
*
flags
&
MS_RDONLY
))
jffs2_start_garbage_collect_thread
(
c
);
sb
->
s_flags
=
(
sb
->
s_flags
&
~
MS_RDONLY
)
|
(
*
flags
&
MS_RDONLY
)
;
*
flags
|=
MS_NOATIME
;
return
0
;
}
...
...
fs/jffs2/super.c
View file @
71aa96e9
...
...
@@ -129,7 +129,7 @@ static struct super_block *jffs2_get_sb_mtd(struct file_system_type *fs_type,
mtd
->
index
,
mtd
->
name
));
sb
->
s_op
=
&
jffs2_super_operations
;
sb
->
s_flags
|=
MS_NO
DIR
ATIME
;
sb
->
s_flags
|=
MS_NOATIME
;
ret
=
jffs2_do_fill_super
(
sb
,
data
,
(
flags
&
MS_VERBOSE
)
?
1
:
0
);
...
...
fs/namespace.c
View file @
71aa96e9
...
...
@@ -777,7 +777,7 @@ long do_mount(char * dev_name, char * dir_name, char *type_page,
mnt_flags
|=
MNT_NODEV
;
if
(
flags
&
MS_NOEXEC
)
mnt_flags
|=
MNT_NOEXEC
;
flags
&=
~
(
MS_NOSUID
|
MS_NOEXEC
|
MS_NODEV
);
flags
&=
~
(
MS_NOSUID
|
MS_NOEXEC
|
MS_NODEV
|
MS_ACTIVE
);
/* ... and get the mountpoint */
retval
=
path_lookup
(
dir_name
,
LOOKUP_FOLLOW
,
&
nd
);
...
...
fs/ncpfs/inode.c
View file @
71aa96e9
...
...
@@ -85,6 +85,12 @@ static void destroy_inodecache(void)
printk
(
KERN_INFO
"ncp_inode_cache: not all structures were freed
\n
"
);
}
static
int
ncp_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
static
struct
super_operations
ncp_sops
=
{
.
alloc_inode
=
ncp_alloc_inode
,
...
...
@@ -93,6 +99,7 @@ static struct super_operations ncp_sops =
.
delete_inode
=
ncp_delete_inode
,
.
put_super
=
ncp_put_super
,
.
statfs
=
ncp_statfs
,
.
remount_fs
=
ncp_remount
,
};
extern
struct
dentry_operations
ncp_root_dentry_operations
;
...
...
fs/openpromfs/inode.c
View file @
71aa96e9
...
...
@@ -1018,16 +1018,23 @@ static void openprom_read_inode(struct inode * inode)
}
}
static
int
openprom_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NOATIME
;
return
0
;
}
static
struct
super_operations
openprom_sops
=
{
.
read_inode
=
openprom_read_inode
,
.
statfs
=
simple_statfs
,
.
remount
=
openprom_remount
,
};
static
int
openprom_fill_super
(
struct
super_block
*
s
,
void
*
data
,
int
silent
)
{
struct
inode
*
root_inode
;
s
->
s_flags
|=
MS_NO
DIR
ATIME
;
s
->
s_flags
|=
MS_NOATIME
;
s
->
s_blocksize
=
1024
;
s
->
s_blocksize_bits
=
10
;
s
->
s_magic
=
OPENPROM_SUPER_MAGIC
;
...
...
fs/proc/inode.c
View file @
71aa96e9
...
...
@@ -127,6 +127,12 @@ int __init proc_init_inodecache(void)
return
0
;
}
static
int
proc_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
static
struct
super_operations
proc_sops
=
{
.
alloc_inode
=
proc_alloc_inode
,
.
destroy_inode
=
proc_destroy_inode
,
...
...
@@ -134,6 +140,7 @@ static struct super_operations proc_sops = {
.
drop_inode
=
generic_delete_inode
,
.
delete_inode
=
proc_delete_inode
,
.
statfs
=
simple_statfs
,
.
remount_fs
=
proc_remount
,
};
enum
{
...
...
fs/qnx4/inode.c
View file @
71aa96e9
...
...
@@ -149,9 +149,13 @@ static int qnx4_remount(struct super_block *sb, int *flags, char *data)
qs
=
qnx4_sb
(
sb
);
qs
->
Version
=
QNX4_VERSION
;
#ifndef CONFIG_QNX4FS_RW
*
flags
|=
MS_RDONLY
;
#endif
if
(
*
flags
&
MS_RDONLY
)
{
return
0
;
}
mark_buffer_dirty
(
qs
->
sb_buf
);
return
0
;
...
...
fs/romfs/inode.c
View file @
71aa96e9
...
...
@@ -592,11 +592,18 @@ static void destroy_inodecache(void)
printk
(
KERN_INFO
"romfs_inode_cache: not all structures were freed
\n
"
);
}
static
int
romfs_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_RDONLY
;
return
0
;
}
static
struct
super_operations
romfs_ops
=
{
.
alloc_inode
=
romfs_alloc_inode
,
.
destroy_inode
=
romfs_destroy_inode
,
.
read_inode
=
romfs_read_inode
,
.
statfs
=
romfs_statfs
,
.
remount_fs
=
romfs_remount
,
};
static
struct
super_block
*
romfs_get_sb
(
struct
file_system_type
*
fs_type
,
...
...
fs/smbfs/inode.c
View file @
71aa96e9
...
...
@@ -93,6 +93,12 @@ static void destroy_inodecache(void)
printk
(
KERN_INFO
"smb_inode_cache: not all structures were freed
\n
"
);
}
static
int
smb_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
*
flags
|=
MS_NODIRATIME
;
return
0
;
}
static
struct
super_operations
smb_sops
=
{
.
alloc_inode
=
smb_alloc_inode
,
...
...
@@ -102,6 +108,7 @@ static struct super_operations smb_sops =
.
put_super
=
smb_put_super
,
.
statfs
=
smb_statfs
,
.
show_options
=
smb_show_options
,
.
remount_fs
=
smb_remount
,
};
...
...
fs/sysv/inode.c
View file @
71aa96e9
...
...
@@ -57,6 +57,16 @@ static void sysv_write_super(struct super_block *sb)
unlock_kernel
();
}
static
int
sysv_remount
(
struct
super_block
*
sb
,
int
*
flags
,
char
*
data
)
{
struct
sysv_sb_info
*
sbi
=
SYSV_SB
(
sb
);
if
(
sbi
->
s_forced_ro
)
*
flags
|=
MS_RDONLY
;
if
(
!
(
*
flags
&
MS_RDONLY
))
sb
->
s_dirt
=
1
;
return
0
;
}
static
void
sysv_put_super
(
struct
super_block
*
sb
)
{
struct
sysv_sb_info
*
sbi
=
SYSV_SB
(
sb
);
...
...
@@ -321,6 +331,7 @@ struct super_operations sysv_sops = {
.
delete_inode
=
sysv_delete_inode
,
.
put_super
=
sysv_put_super
,
.
write_super
=
sysv_write_super
,
.
remount_fs
=
sysv_remount
,
.
statfs
=
sysv_statfs
,
};
...
...
fs/sysv/super.c
View file @
71aa96e9
...
...
@@ -206,11 +206,11 @@ static int detect_sysv(struct sysv_sb_info *sbi, struct buffer_head *bh)
if
(
fs16_to_cpu
(
sbi
,
sbd
->
s_nfree
)
==
0xffff
)
{
sbi
->
s_type
=
FSTYPE_AFS
;
sbi
->
s_forced_ro
=
1
;
if
(
!
(
sb
->
s_flags
&
MS_RDONLY
))
{
printk
(
"SysV FS: SCO EAFS on %s detected, "
"forcing read-only mode.
\n
"
,
sb
->
s_id
);
sb
->
s_flags
|=
MS_RDONLY
;
}
return
sbd
->
s_type
;
}
...
...
@@ -234,7 +234,7 @@ static int detect_sysv(struct sysv_sb_info *sbi, struct buffer_head *bh)
if
(
sbd
->
s_type
>=
0x10
)
{
printk
(
"SysV FS: can't handle long file names on %s, "
"forcing read-only mode.
\n
"
,
sb
->
s_id
);
sb
->
s_flags
|=
MS_RDONLY
;
sb
i
->
s_forced_ro
=
1
;
}
sbi
->
s_type
=
FSTYPE_SYSV4
;
...
...
@@ -335,9 +335,10 @@ static int complete_read_super(struct super_block *sb, int silent, int size)
printk
(
"SysV FS: get root dentry failed
\n
"
);
return
0
;
}
if
(
sbi
->
s_forced_ro
)
sb
->
s_flags
|=
MS_RDONLY
;
if
(
sbi
->
s_truncate
)
sb
->
s_root
->
d_op
=
&
sysv_dentry_operations
;
sb
->
s_flags
|=
MS_RDONLY
;
sb
->
s_dirt
=
1
;
return
1
;
}
...
...
@@ -481,6 +482,7 @@ static int v7_fill_super(struct super_block *sb, void *data, int silent)
(
fs32_to_cpu
(
sbi
,
v7i
->
i_size
)
&
017
)
!=
0
)
goto
failed
;
brelse
(
bh2
);
bh2
=
NULL
;
sbi
->
s_bh1
=
bh
;
sbi
->
s_bh2
=
bh
;
...
...
fs/sysv/sysv.h
View file @
71aa96e9
...
...
@@ -54,6 +54,7 @@ struct sysv_sb_info {
u32
s_ndatazones
;
/* total number of data zones */
u32
s_nzones
;
/* same as s_sbd->s_fsize */
u16
s_namelen
;
/* max length of dir entry */
int
s_forced_ro
;
};
/*
...
...
fs/udf/super.c
View file @
71aa96e9
...
...
@@ -460,6 +460,12 @@ udf_remount_fs(struct super_block *sb, int *flags, char *options)
UDF_SB
(
sb
)
->
s_gid
=
uopt
.
gid
;
UDF_SB
(
sb
)
->
s_umask
=
uopt
.
umask
;
if
(
UDF_SB_LVIDBH
(
sb
))
{
int
write_rev
=
le16_to_cpu
(
UDF_SB_LVIDIU
(
sb
)
->
minUDFWriteRev
);
if
(
write_rev
>
UDF_MAX_WRITE_VERSION
)
*
flags
|=
MS_RDONLY
;
}
if
((
*
flags
&
MS_RDONLY
)
==
(
sb
->
s_flags
&
MS_RDONLY
))
return
0
;
if
(
*
flags
&
MS_RDONLY
)
...
...
mm/mprotect.c
View file @
71aa96e9
...
...
@@ -114,10 +114,11 @@ static int
mprotect_attempt_merge
(
struct
vm_area_struct
*
vma
,
struct
vm_area_struct
*
prev
,
unsigned
long
end
,
int
newflags
)
{
struct
mm_struct
*
mm
=
vma
->
vm_mm
;
struct
mm_struct
*
mm
;
if
(
!
prev
||
!
vma
)
return
0
;
mm
=
vma
->
vm_mm
;
if
(
prev
->
vm_end
!=
vma
->
vm_start
)
return
0
;
if
(
!
can_vma_merge
(
prev
,
newflags
))
...
...
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