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
1b156290
Commit
1b156290
authored
Mar 12, 2002
by
Brian Gerst
Committed by
Linus Torvalds
Mar 12, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] struct super_block cleanup - ext2
Abstract access to ext2_sb_info.
parent
bc846ba4
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
168 additions
and
155 deletions
+168
-155
fs/ext2/balloc.c
fs/ext2/balloc.c
+12
-12
fs/ext2/dir.c
fs/ext2/dir.c
+1
-1
fs/ext2/ialloc.c
fs/ext2/ialloc.c
+14
-14
fs/ext2/inode.c
fs/ext2/inode.c
+2
-2
fs/ext2/super.c
fs/ext2/super.c
+114
-104
fs/intermezzo/journal_ext2.c
fs/intermezzo/journal_ext2.c
+3
-3
include/linux/ext2_fs.h
include/linux/ext2_fs.h
+22
-19
No files found.
fs/ext2/balloc.c
View file @
1b156290
...
...
@@ -41,7 +41,7 @@ struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,
unsigned
long
group_desc
;
unsigned
long
offset
;
struct
ext2_group_desc
*
desc
;
struct
ext2_sb_info
*
sbi
=
&
sb
->
u
.
ext2_sb
;
struct
ext2_sb_info
*
sbi
=
EXT2_SB
(
sb
)
;
if
(
block_group
>=
sbi
->
s_groups_count
)
{
ext2_error
(
sb
,
"ext2_get_group_desc"
,
...
...
@@ -110,7 +110,7 @@ static struct buffer_head *read_block_bitmap(struct super_block *sb,
static
struct
buffer_head
*
load_block_bitmap
(
struct
super_block
*
sb
,
unsigned
int
block_group
)
{
struct
ext2_sb_info
*
sbi
=
&
sb
->
u
.
ext2_sb
;
struct
ext2_sb_info
*
sbi
=
EXT2_SB
(
sb
)
;
int
i
,
slot
=
0
;
struct
buffer_head
*
bh
=
sbi
->
s_block_bitmap
[
0
];
...
...
@@ -249,7 +249,7 @@ void ext2_free_blocks (struct inode * inode, unsigned long block,
unsigned
freed
=
0
,
group_freed
;
lock_super
(
sb
);
es
=
sb
->
u
.
ext2_sb
.
s_es
;
es
=
EXT2_SB
(
sb
)
->
s_es
;
if
(
block
<
le32_to_cpu
(
es
->
s_first_data_block
)
||
(
block
+
count
)
>
le32_to_cpu
(
es
->
s_blocks_count
))
{
ext2_error
(
sb
,
"ext2_free_blocks"
,
...
...
@@ -285,9 +285,9 @@ void ext2_free_blocks (struct inode * inode, unsigned long block,
if
(
in_range
(
le32_to_cpu
(
desc
->
bg_block_bitmap
),
block
,
count
)
||
in_range
(
le32_to_cpu
(
desc
->
bg_inode_bitmap
),
block
,
count
)
||
in_range
(
block
,
le32_to_cpu
(
desc
->
bg_inode_table
),
sb
->
u
.
ext2_sb
.
s_itb_per_group
)
||
EXT2_SB
(
sb
)
->
s_itb_per_group
)
||
in_range
(
block
+
count
-
1
,
le32_to_cpu
(
desc
->
bg_inode_table
),
sb
->
u
.
ext2_sb
.
s_itb_per_group
))
EXT2_SB
(
sb
)
->
s_itb_per_group
))
ext2_error
(
sb
,
"ext2_free_blocks"
,
"Freeing blocks in system zones - "
"Block = %lu, count = %lu"
,
...
...
@@ -552,11 +552,11 @@ unsigned long ext2_count_free_blocks (struct super_block * sb)
int
i
;
lock_super
(
sb
);
es
=
sb
->
u
.
ext2_sb
.
s_es
;
es
=
EXT2_SB
(
sb
)
->
s_es
;
desc_count
=
0
;
bitmap_count
=
0
;
desc
=
NULL
;
for
(
i
=
0
;
i
<
sb
->
u
.
ext2_sb
.
s_groups_count
;
i
++
)
{
for
(
i
=
0
;
i
<
EXT2_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
struct
buffer_head
*
bh
;
desc
=
ext2_get_group_desc
(
sb
,
i
,
NULL
);
if
(
!
desc
)
...
...
@@ -576,7 +576,7 @@ unsigned long ext2_count_free_blocks (struct super_block * sb)
unlock_super
(
sb
);
return
bitmap_count
;
#else
return
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_free_blocks_count
);
return
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_free_blocks_count
);
#endif
}
...
...
@@ -584,7 +584,7 @@ static inline int block_in_use (unsigned long block,
struct
super_block
*
sb
,
unsigned
char
*
map
)
{
return
ext2_test_bit
((
block
-
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_first_data_block
))
%
return
ext2_test_bit
((
block
-
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_first_data_block
))
%
EXT2_BLOCKS_PER_GROUP
(
sb
),
map
);
}
...
...
@@ -651,11 +651,11 @@ void ext2_check_blocks_bitmap (struct super_block * sb)
struct
ext2_group_desc
*
desc
;
int
i
;
es
=
sb
->
u
.
ext2_sb
.
s_es
;
es
=
EXT2_SB
(
sb
)
->
s_es
;
desc_count
=
0
;
bitmap_count
=
0
;
desc
=
NULL
;
for
(
i
=
0
;
i
<
sb
->
u
.
ext2_sb
.
s_groups_count
;
i
++
)
{
for
(
i
=
0
;
i
<
EXT2_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
desc
=
ext2_get_group_desc
(
sb
,
i
,
NULL
);
if
(
!
desc
)
continue
;
...
...
@@ -685,7 +685,7 @@ void ext2_check_blocks_bitmap (struct super_block * sb)
"Inode bitmap for group %d is marked free"
,
i
);
for
(
j
=
0
;
j
<
sb
->
u
.
ext2_sb
.
s_itb_per_group
;
j
++
)
for
(
j
=
0
;
j
<
EXT2_SB
(
sb
)
->
s_itb_per_group
;
j
++
)
if
(
!
block_in_use
(
le32_to_cpu
(
desc
->
bg_inode_table
)
+
j
,
sb
,
bh
->
b_data
))
ext2_error
(
sb
,
"ext2_check_blocks_bitmap"
,
"Block #%ld of the inode table in "
...
...
fs/ext2/dir.c
View file @
1b156290
...
...
@@ -68,7 +68,7 @@ static void ext2_check_page(struct page *page)
struct
super_block
*
sb
=
dir
->
i_sb
;
unsigned
chunk_size
=
ext2_chunk_size
(
dir
);
char
*
kaddr
=
page_address
(
page
);
u32
max_inumber
=
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_inodes_count
);
u32
max_inumber
=
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_inodes_count
);
unsigned
offs
,
rec_len
;
unsigned
limit
=
PAGE_CACHE_SIZE
;
ext2_dirent
*
p
;
...
...
fs/ext2/ialloc.c
View file @
1b156290
...
...
@@ -77,7 +77,7 @@ static struct buffer_head *load_inode_bitmap (struct super_block * sb,
unsigned
int
block_group
)
{
int
i
,
slot
=
0
;
struct
ext2_sb_info
*
sbi
=
&
sb
->
u
.
ext2_sb
;
struct
ext2_sb_info
*
sbi
=
EXT2_SB
(
sb
)
;
struct
buffer_head
*
bh
=
sbi
->
s_inode_bitmap
[
0
];
if
(
block_group
>=
sbi
->
s_groups_count
)
...
...
@@ -171,7 +171,7 @@ void ext2_free_inode (struct inode * inode)
}
lock_super
(
sb
);
es
=
sb
->
u
.
ext2_sb
.
s_es
;
es
=
EXT2_SB
(
sb
)
->
s_es
;
is_directory
=
S_ISDIR
(
inode
->
i_mode
);
/* Do this BEFORE marking the inode not in use or returning an error */
...
...
@@ -205,7 +205,7 @@ void ext2_free_inode (struct inode * inode)
mark_buffer_dirty
(
bh2
);
es
->
s_free_inodes_count
=
cpu_to_le32
(
le32_to_cpu
(
es
->
s_free_inodes_count
)
+
1
);
mark_buffer_dirty
(
sb
->
u
.
ext2_sb
.
s_sbh
);
mark_buffer_dirty
(
EXT2_SB
(
sb
)
->
s_sbh
);
}
mark_buffer_dirty
(
bh
);
if
(
sb
->
s_flags
&
MS_SYNCHRONOUS
)
{
...
...
@@ -230,8 +230,8 @@ void ext2_free_inode (struct inode * inode)
static
int
find_group_dir
(
struct
super_block
*
sb
,
int
parent_group
)
{
struct
ext2_super_block
*
es
=
sb
->
u
.
ext2_sb
.
s_es
;
int
ngroups
=
sb
->
u
.
ext2_sb
.
s_groups_count
;
struct
ext2_super_block
*
es
=
EXT2_SB
(
sb
)
->
s_es
;
int
ngroups
=
EXT2_SB
(
sb
)
->
s_groups_count
;
int
avefreei
=
le32_to_cpu
(
es
->
s_free_inodes_count
)
/
ngroups
;
struct
ext2_group_desc
*
desc
,
*
best_desc
=
NULL
;
struct
buffer_head
*
bh
,
*
best_bh
=
NULL
;
...
...
@@ -263,7 +263,7 @@ static int find_group_dir(struct super_block *sb, int parent_group)
static
int
find_group_other
(
struct
super_block
*
sb
,
int
parent_group
)
{
int
ngroups
=
sb
->
u
.
ext2_sb
.
s_groups_count
;
int
ngroups
=
EXT2_SB
(
sb
)
->
s_groups_count
;
struct
ext2_group_desc
*
desc
;
struct
buffer_head
*
bh
;
int
group
,
i
;
...
...
@@ -330,7 +330,7 @@ struct inode * ext2_new_inode(struct inode * dir, int mode)
ei
=
EXT2_I
(
inode
);
lock_super
(
sb
);
es
=
sb
->
u
.
ext2_sb
.
s_es
;
es
=
EXT2_SB
(
sb
)
->
s_es
;
repeat:
if
(
S_ISDIR
(
mode
))
group
=
find_group_dir
(
sb
,
EXT2_I
(
dir
)
->
i_block_group
);
...
...
@@ -369,7 +369,7 @@ struct inode * ext2_new_inode(struct inode * dir, int mode)
es
->
s_free_inodes_count
=
cpu_to_le32
(
le32_to_cpu
(
es
->
s_free_inodes_count
)
-
1
);
mark_buffer_dirty
(
sb
->
u
.
ext2_sb
.
s_sbh
);
mark_buffer_dirty
(
EXT2_SB
(
sb
)
->
s_sbh
);
sb
->
s_dirt
=
1
;
inode
->
i_uid
=
current
->
fsuid
;
if
(
test_opt
(
sb
,
GRPID
))
...
...
@@ -405,7 +405,7 @@ struct inode * ext2_new_inode(struct inode * dir, int mode)
ei
->
i_dir_start_lookup
=
0
;
if
(
ei
->
i_flags
&
EXT2_SYNC_FL
)
inode
->
i_flags
|=
S_SYNC
;
inode
->
i_generation
=
sb
->
u
.
ext2_sb
.
s_next_generation
++
;
inode
->
i_generation
=
EXT2_SB
(
sb
)
->
s_next_generation
++
;
insert_inode_hash
(
inode
);
mark_inode_dirty
(
inode
);
...
...
@@ -457,8 +457,8 @@ unsigned long ext2_count_free_inodes (struct super_block * sb)
int
i
;
lock_super
(
sb
);
es
=
sb
->
u
.
ext2_sb
.
s_es
;
for
(
i
=
0
;
i
<
sb
->
u
.
ext2_sb
.
s_groups_count
;
i
++
)
{
es
=
EXT2_SB
(
sb
)
->
s_es
;
for
(
i
=
0
;
i
<
EXT2_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
struct
ext2_group_desc
*
desc
=
ext2_get_group_desc
(
sb
,
i
,
NULL
);
struct
buffer_head
*
bh
;
unsigned
x
;
...
...
@@ -480,7 +480,7 @@ unsigned long ext2_count_free_inodes (struct super_block * sb)
unlock_super
(
sb
);
return
desc_count
;
#else
return
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_free_inodes_count
);
return
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_free_inodes_count
);
#endif
}
...
...
@@ -488,11 +488,11 @@ unsigned long ext2_count_free_inodes (struct super_block * sb)
/* Called at mount-time, super-block is locked */
void
ext2_check_inodes_bitmap
(
struct
super_block
*
sb
)
{
struct
ext2_super_block
*
es
=
sb
->
u
.
ext2_sb
.
s_es
;
struct
ext2_super_block
*
es
=
EXT2_SB
(
sb
)
->
s_es
;
unsigned
long
desc_count
=
0
,
bitmap_count
=
0
;
int
i
;
for
(
i
=
0
;
i
<
sb
->
u
.
ext2_sb
.
s_groups_count
;
i
++
)
{
for
(
i
=
0
;
i
<
EXT2_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
struct
ext2_group_desc
*
desc
=
ext2_get_group_desc
(
sb
,
i
,
NULL
);
struct
buffer_head
*
bh
;
unsigned
x
;
...
...
fs/ext2/inode.c
View file @
1b156290
...
...
@@ -303,7 +303,7 @@ static inline unsigned long ext2_find_near(struct inode *inode, Indirect *ind)
* the same cylinder group then.
*/
return
(
ei
->
i_block_group
*
EXT2_BLOCKS_PER_GROUP
(
inode
->
i_sb
))
+
le32_to_cpu
(
inode
->
i_sb
->
u
.
ext2_sb
.
s_es
->
s_first_data_block
);
le32_to_cpu
(
EXT2_SB
(
inode
->
i_sb
)
->
s_es
->
s_first_data_block
);
}
/**
...
...
@@ -886,7 +886,7 @@ static struct ext2_inode *ext2_get_inode(struct super_block *sb, ino_t ino,
*
p
=
NULL
;
if
((
ino
!=
EXT2_ROOT_INO
&&
ino
!=
EXT2_ACL_IDX_INO
&&
ino
!=
EXT2_ACL_DATA_INO
&&
ino
<
EXT2_FIRST_INO
(
sb
))
||
ino
>
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_inodes_count
))
ino
>
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_inodes_count
))
goto
Einval
;
block_group
=
(
ino
-
1
)
/
EXT2_INODES_PER_GROUP
(
sb
);
...
...
fs/ext2/super.c
View file @
1b156290
This diff is collapsed.
Click to expand it.
fs/intermezzo/journal_ext2.c
View file @
1b156290
...
...
@@ -27,8 +27,8 @@
static
loff_t
presto_e2_freespace
(
struct
presto_cache
*
cache
,
struct
super_block
*
sb
)
{
unsigned
long
freebl
=
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_free_blocks_count
);
unsigned
long
avail
=
freebl
-
le32_to_cpu
(
sb
->
u
.
ext2_sb
.
s_es
->
s_r_blocks_count
);
unsigned
long
freebl
=
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_free_blocks_count
);
unsigned
long
avail
=
freebl
-
le32_to_cpu
(
EXT2_SB
(
sb
)
->
s_es
->
s_r_blocks_count
);
return
(
avail
<<
EXT2_BLOCK_SIZE_BITS
(
sb
));
}
...
...
@@ -41,7 +41,7 @@ static void *presto_e2_trans_start(struct presto_file_set *fset, struct inode *i
strcmp
(
fset
->
fset_cache
->
cache_type
,
"ext2"
))
return
NULL
;
avail_kmlblocks
=
inode
->
i_sb
->
u
.
ext2_sb
.
s_es
->
s_free_blocks_count
;
avail_kmlblocks
=
EXT2_SB
(
inode
->
i_sb
)
->
s_es
->
s_free_blocks_count
;
if
(
avail_kmlblocks
<
3
)
{
return
ERR_PTR
(
-
ENOSPC
);
...
...
include/linux/ext2_fs.h
View file @
1b156290
...
...
@@ -70,6 +70,18 @@
*/
#define EXT2_SUPER_MAGIC 0xEF53
#ifdef __KERNEL__
static
inline
struct
ext2_sb_info
*
EXT2_SB
(
struct
super_block
*
sb
)
{
return
&
sb
->
u
.
ext2_sb
;
}
#else
/* Assume that user mode programs are passing in an ext2fs superblock, not
* a kernel struct super_block. This will allow us to call the feature-test
* macros from user land. */
#define EXT2_SB(sb) (sb)
#endif
/*
* Maximal count of links to a file
*/
...
...
@@ -94,9 +106,9 @@
# define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
#endif
#ifdef __KERNEL__
#define EXT2_ADDR_PER_BLOCK_BITS(s) (
(s)->u.ext2_sb.
s_addr_per_block_bits)
#define EXT2_INODE_SIZE(s) (
(s)->u.ext2_sb.
s_inode_size)
#define EXT2_FIRST_INO(s) (
(s)->u.ext2_sb.
s_first_ino)
#define EXT2_ADDR_PER_BLOCK_BITS(s) (
EXT2_SB(s)->
s_addr_per_block_bits)
#define EXT2_INODE_SIZE(s) (
EXT2_SB(s)->
s_inode_size)
#define EXT2_FIRST_INO(s) (
EXT2_SB(s)->
s_first_ino)
#else
#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
EXT2_GOOD_OLD_INODE_SIZE : \
...
...
@@ -113,8 +125,8 @@
#define EXT2_MAX_FRAG_SIZE 4096
#define EXT2_MIN_FRAG_LOG_SIZE 10
#ifdef __KERNEL__
# define EXT2_FRAG_SIZE(s) (
(s)->u.ext2_sb.
s_frag_size)
# define EXT2_FRAGS_PER_BLOCK(s) (
(s)->u.ext2_sb.
s_frags_per_block)
# define EXT2_FRAG_SIZE(s) (
EXT2_SB(s)->
s_frag_size)
# define EXT2_FRAGS_PER_BLOCK(s) (
EXT2_SB(s)->
s_frags_per_block)
#else
# define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size)
# define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s))
...
...
@@ -161,10 +173,10 @@ struct ext2_group_desc
* Macro-instructions used to manage group descriptors
*/
#ifdef __KERNEL__
# define EXT2_BLOCKS_PER_GROUP(s) (
(s)->u.ext2_sb.
s_blocks_per_group)
# define EXT2_DESC_PER_BLOCK(s) (
(s)->u.ext2_sb.
s_desc_per_block)
# define EXT2_INODES_PER_GROUP(s) (
(s)->u.ext2_sb.
s_inodes_per_group)
# define EXT2_DESC_PER_BLOCK_BITS(s) (
(s)->u.ext2_sb.
s_desc_per_block_bits)
# define EXT2_BLOCKS_PER_GROUP(s) (
EXT2_SB(s)->
s_blocks_per_group)
# define EXT2_DESC_PER_BLOCK(s) (
EXT2_SB(s)->
s_desc_per_block)
# define EXT2_INODES_PER_GROUP(s) (
EXT2_SB(s)->
s_inodes_per_group)
# define EXT2_DESC_PER_BLOCK_BITS(s) (
EXT2_SB(s)->
s_desc_per_block_bits)
#else
# define EXT2_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group)
# define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
...
...
@@ -317,7 +329,7 @@ struct ext2_inode {
#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt
#define set_opt(o, opt) o |= EXT2_MOUNT_##opt
#define test_opt(sb, opt) (
(sb)->u.ext2_sb.
s_mount_opt & \
#define test_opt(sb, opt) (
EXT2_SB(sb)->
s_mount_opt & \
EXT2_MOUNT_##opt)
/*
* Maximal mount counts between two filesystem checks
...
...
@@ -395,15 +407,6 @@ struct ext2_super_block {
__u32
s_reserved
[
204
];
/* Padding to the end of the block */
};
#ifdef __KERNEL__
#define EXT2_SB(sb) (&((sb)->u.ext2_sb))
#else
/* Assume that user mode programs are passing in an ext2fs superblock, not
* a kernel struct super_block. This will allow us to call the feature-test
* macros from user land. */
#define EXT2_SB(sb) (sb)
#endif
/*
* Codes for operating systems
*/
...
...
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