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
af5bc92d
Commit
af5bc92d
authored
Sep 08, 2008
by
Theodore Ts'o
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ext4: Fix whitespace checkpatch warnings/errors
Signed-off-by:
"Theodore Ts'o"
<
tytso@mit.edu
>
parent
e5f8eab8
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
350 additions
and
350 deletions
+350
-350
fs/ext4/acl.h
fs/ext4/acl.h
+3
-3
fs/ext4/balloc.c
fs/ext4/balloc.c
+35
-35
fs/ext4/bitmap.c
fs/ext4/bitmap.c
+3
-3
fs/ext4/dir.c
fs/ext4/dir.c
+26
-26
fs/ext4/ext4.h
fs/ext4/ext4.h
+34
-34
fs/ext4/ext4_sb.h
fs/ext4/ext4_sb.h
+4
-4
fs/ext4/extents.c
fs/ext4/extents.c
+3
-3
fs/ext4/file.c
fs/ext4/file.c
+1
-1
fs/ext4/fsync.c
fs/ext4/fsync.c
+1
-1
fs/ext4/hash.c
fs/ext4/hash.c
+4
-4
fs/ext4/ialloc.c
fs/ext4/ialloc.c
+25
-25
fs/ext4/inode.c
fs/ext4/inode.c
+48
-48
fs/ext4/ioctl.c
fs/ext4/ioctl.c
+2
-2
fs/ext4/namei.c
fs/ext4/namei.c
+151
-151
fs/ext4/resize.c
fs/ext4/resize.c
+3
-3
fs/ext4/super.c
fs/ext4/super.c
+3
-3
fs/ext4/symlink.c
fs/ext4/symlink.c
+2
-2
fs/ext4/xattr.h
fs/ext4/xattr.h
+2
-2
No files found.
fs/ext4/acl.h
View file @
af5bc92d
...
...
@@ -58,9 +58,9 @@ static inline int ext4_acl_count(size_t size)
#define EXT4_ACL_NOT_CACHED ((void *)-1)
/* acl.c */
extern
int
ext4_permission
(
struct
inode
*
,
int
);
extern
int
ext4_acl_chmod
(
struct
inode
*
);
extern
int
ext4_init_acl
(
handle_t
*
,
struct
inode
*
,
struct
inode
*
);
extern
int
ext4_permission
(
struct
inode
*
,
int
);
extern
int
ext4_acl_chmod
(
struct
inode
*
);
extern
int
ext4_init_acl
(
handle_t
*
,
struct
inode
*
,
struct
inode
*
);
#else
/* CONFIG_EXT4DEV_FS_POSIX_ACL */
#include <linux/sched.h>
...
...
fs/ext4/balloc.c
View file @
af5bc92d
...
...
@@ -132,7 +132,7 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
*/
group_blocks
=
ext4_blocks_count
(
sbi
->
s_es
)
-
le32_to_cpu
(
sbi
->
s_es
->
s_first_data_block
)
-
(
EXT4_BLOCKS_PER_GROUP
(
sb
)
*
(
sbi
->
s_groups_count
-
1
));
(
EXT4_BLOCKS_PER_GROUP
(
sb
)
*
(
sbi
->
s_groups_count
-
1
));
}
else
{
group_blocks
=
EXT4_BLOCKS_PER_GROUP
(
sb
);
}
...
...
@@ -200,17 +200,17 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
* @bh: pointer to the buffer head to store the block
* group descriptor
*/
struct
ext4_group_desc
*
ext4_get_group_desc
(
struct
super_block
*
sb
,
struct
ext4_group_desc
*
ext4_get_group_desc
(
struct
super_block
*
sb
,
ext4_group_t
block_group
,
struct
buffer_head
**
bh
)
struct
buffer_head
**
bh
)
{
unsigned
long
group_desc
;
unsigned
long
offset
;
struct
ext4_group_desc
*
desc
;
struct
ext4_group_desc
*
desc
;
struct
ext4_sb_info
*
sbi
=
EXT4_SB
(
sb
);
if
(
block_group
>=
sbi
->
s_groups_count
)
{
ext4_error
(
sb
,
"ext4_get_group_desc"
,
ext4_error
(
sb
,
"ext4_get_group_desc"
,
"block_group >= groups_count - "
"block_group = %lu, groups_count = %lu"
,
block_group
,
sbi
->
s_groups_count
);
...
...
@@ -222,7 +222,7 @@ struct ext4_group_desc * ext4_get_group_desc(struct super_block * sb,
group_desc
=
block_group
>>
EXT4_DESC_PER_BLOCK_BITS
(
sb
);
offset
=
block_group
&
(
EXT4_DESC_PER_BLOCK
(
sb
)
-
1
);
if
(
!
sbi
->
s_group_desc
[
group_desc
])
{
ext4_error
(
sb
,
"ext4_get_group_desc"
,
ext4_error
(
sb
,
"ext4_get_group_desc"
,
"Group descriptor not loaded - "
"block_group = %lu, group_desc = %lu, desc = %lu"
,
block_group
,
group_desc
,
offset
);
...
...
@@ -302,8 +302,8 @@ static int ext4_valid_block_bitmap(struct super_block *sb,
struct
buffer_head
*
ext4_read_block_bitmap
(
struct
super_block
*
sb
,
ext4_group_t
block_group
)
{
struct
ext4_group_desc
*
desc
;
struct
buffer_head
*
bh
=
NULL
;
struct
ext4_group_desc
*
desc
;
struct
buffer_head
*
bh
=
NULL
;
ext4_fsblk_t
bitmap_blk
;
desc
=
ext4_get_group_desc
(
sb
,
block_group
,
NULL
);
...
...
@@ -506,8 +506,8 @@ void ext4_rsv_window_add(struct super_block *sb,
struct
rb_node
*
node
=
&
rsv
->
rsv_node
;
ext4_fsblk_t
start
=
rsv
->
rsv_start
;
struct
rb_node
**
p
=
&
root
->
rb_node
;
struct
rb_node
*
parent
=
NULL
;
struct
rb_node
**
p
=
&
root
->
rb_node
;
struct
rb_node
*
parent
=
NULL
;
struct
ext4_reserve_window_node
*
this
;
while
(
*
p
)
...
...
@@ -661,8 +661,8 @@ void ext4_free_blocks_sb(handle_t *handle, struct super_block *sb,
ext4_grpblk_t
bit
;
unsigned
long
i
;
unsigned
long
overflow
;
struct
ext4_group_desc
*
desc
;
struct
ext4_super_block
*
es
;
struct
ext4_group_desc
*
desc
;
struct
ext4_super_block
*
es
;
struct
ext4_sb_info
*
sbi
;
int
err
=
0
,
ret
;
ext4_grpblk_t
group_freed
;
...
...
@@ -673,13 +673,13 @@ void ext4_free_blocks_sb(handle_t *handle, struct super_block *sb,
if
(
block
<
le32_to_cpu
(
es
->
s_first_data_block
)
||
block
+
count
<
block
||
block
+
count
>
ext4_blocks_count
(
es
))
{
ext4_error
(
sb
,
"ext4_free_blocks"
,
ext4_error
(
sb
,
"ext4_free_blocks"
,
"Freeing blocks not in datazone - "
"block = %llu, count = %lu"
,
block
,
count
);
goto
error_return
;
}
ext4_debug
(
"freeing block(s) %llu-%llu
\n
"
,
block
,
block
+
count
-
1
);
ext4_debug
(
"freeing block(s) %llu-%llu
\n
"
,
block
,
block
+
count
-
1
);
do_more:
overflow
=
0
;
...
...
@@ -696,7 +696,7 @@ void ext4_free_blocks_sb(handle_t *handle, struct super_block *sb,
bitmap_bh
=
ext4_read_block_bitmap
(
sb
,
block_group
);
if
(
!
bitmap_bh
)
goto
error_return
;
desc
=
ext4_get_group_desc
(
sb
,
block_group
,
&
gd_bh
);
desc
=
ext4_get_group_desc
(
sb
,
block_group
,
&
gd_bh
);
if
(
!
desc
)
goto
error_return
;
...
...
@@ -705,7 +705,7 @@ void ext4_free_blocks_sb(handle_t *handle, struct super_block *sb,
in_range
(
block
,
ext4_inode_table
(
sb
,
desc
),
sbi
->
s_itb_per_group
)
||
in_range
(
block
+
count
-
1
,
ext4_inode_table
(
sb
,
desc
),
sbi
->
s_itb_per_group
))
{
ext4_error
(
sb
,
"ext4_free_blocks"
,
ext4_error
(
sb
,
"ext4_free_blocks"
,
"Freeing blocks in system zones - "
"Block = %llu, count = %lu"
,
block
,
count
);
...
...
@@ -850,7 +850,7 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode,
ext4_fsblk_t
block
,
unsigned
long
count
,
int
metadata
)
{
struct
super_block
*
sb
;
struct
super_block
*
sb
;
unsigned
long
dquot_freed_blocks
;
/* this isn't the right place to decide whether block is metadata
...
...
@@ -1019,7 +1019,7 @@ claim_block(spinlock_t *lock, ext4_grpblk_t block, struct buffer_head *bh)
if
(
ext4_set_bit_atomic
(
lock
,
block
,
bh
->
b_data
))
return
0
;
jbd_lock_bh_state
(
bh
);
if
(
jh
->
b_committed_data
&&
ext4_test_bit
(
block
,
jh
->
b_committed_data
))
{
if
(
jh
->
b_committed_data
&&
ext4_test_bit
(
block
,
jh
->
b_committed_data
))
{
ext4_clear_bit_atomic
(
lock
,
block
,
bh
->
b_data
);
ret
=
0
;
}
else
{
...
...
@@ -1170,7 +1170,7 @@ ext4_try_to_allocate(struct super_block *sb, handle_t *handle,
static
int
find_next_reservable_window
(
struct
ext4_reserve_window_node
*
search_head
,
struct
ext4_reserve_window_node
*
my_rsv
,
struct
super_block
*
sb
,
struct
super_block
*
sb
,
ext4_fsblk_t
start_block
,
ext4_fsblk_t
last_block
)
{
...
...
@@ -1204,7 +1204,7 @@ static int find_next_reservable_window(
prev
=
rsv
;
next
=
rb_next
(
&
rsv
->
rsv_node
);
rsv
=
rb_entry
(
next
,
struct
ext4_reserve_window_node
,
rsv_node
);
rsv
=
rb_entry
(
next
,
struct
ext4_reserve_window_node
,
rsv_node
);
/*
* Reached the last reservation, we can just append to the
...
...
@@ -1342,7 +1342,7 @@ static int alloc_new_reservation(struct ext4_reserve_window_node *my_rsv,
size
=
size
*
2
;
if
(
size
>
EXT4_MAX_RESERVE_BLOCKS
)
size
=
EXT4_MAX_RESERVE_BLOCKS
;
my_rsv
->
rsv_goal_size
=
size
;
my_rsv
->
rsv_goal_size
=
size
;
}
}
...
...
@@ -1491,7 +1491,7 @@ static ext4_grpblk_t
ext4_try_to_allocate_with_rsv
(
struct
super_block
*
sb
,
handle_t
*
handle
,
ext4_group_t
group
,
struct
buffer_head
*
bitmap_bh
,
ext4_grpblk_t
grp_goal
,
struct
ext4_reserve_window_node
*
my_rsv
,
struct
ext4_reserve_window_node
*
my_rsv
,
unsigned
long
*
count
,
int
*
errp
)
{
ext4_fsblk_t
group_first_block
,
group_last_block
;
...
...
@@ -1519,7 +1519,7 @@ ext4_try_to_allocate_with_rsv(struct super_block *sb, handle_t *handle,
* or the file is not a regular file
* or last attempt to allocate a block with reservation turned on failed
*/
if
(
my_rsv
==
NULL
)
{
if
(
my_rsv
==
NULL
)
{
ret
=
ext4_try_to_allocate
(
sb
,
handle
,
group
,
bitmap_bh
,
grp_goal
,
count
,
NULL
);
goto
out
;
...
...
@@ -2184,7 +2184,7 @@ unsigned long ext4_bg_num_gdb(struct super_block *sb, ext4_group_t group)
if
(
!
EXT4_HAS_INCOMPAT_FEATURE
(
sb
,
EXT4_FEATURE_INCOMPAT_META_BG
)
||
metagroup
<
first_meta_bg
)
return
ext4_bg_num_gdb_nometa
(
sb
,
group
);
return
ext4_bg_num_gdb_nometa
(
sb
,
group
);
return
ext4_bg_num_gdb_meta
(
sb
,
group
);
...
...
fs/ext4/bitmap.c
View file @
af5bc92d
...
...
@@ -15,17 +15,17 @@
static
const
int
nibblemap
[]
=
{
4
,
3
,
3
,
2
,
3
,
2
,
2
,
1
,
3
,
2
,
2
,
1
,
2
,
1
,
1
,
0
};
unsigned
long
ext4_count_free
(
struct
buffer_head
*
map
,
unsigned
int
numchars
)
unsigned
long
ext4_count_free
(
struct
buffer_head
*
map
,
unsigned
int
numchars
)
{
unsigned
int
i
;
unsigned
long
sum
=
0
;
if
(
!
map
)
return
(
0
)
;
return
0
;
for
(
i
=
0
;
i
<
numchars
;
i
++
)
sum
+=
nibblemap
[
map
->
b_data
[
i
]
&
0xf
]
+
nibblemap
[(
map
->
b_data
[
i
]
>>
4
)
&
0xf
];
return
(
sum
)
;
return
sum
;
}
#endif
/* EXT4FS_DEBUG */
...
...
fs/ext4/dir.c
View file @
af5bc92d
...
...
@@ -33,10 +33,10 @@ static unsigned char ext4_filetype_table[] = {
};
static
int
ext4_readdir
(
struct
file
*
,
void
*
,
filldir_t
);
static
int
ext4_dx_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
);
static
int
ext4_release_dir
(
struct
inode
*
inode
,
struct
file
*
filp
);
static
int
ext4_dx_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
);
static
int
ext4_release_dir
(
struct
inode
*
inode
,
struct
file
*
filp
);
const
struct
file_operations
ext4_dir_operations
=
{
.
llseek
=
generic_file_llseek
,
...
...
@@ -61,12 +61,12 @@ static unsigned char get_dtype(struct super_block *sb, int filetype)
}
int
ext4_check_dir_entry
(
const
char
*
function
,
struct
inode
*
dir
,
struct
ext4_dir_entry_2
*
de
,
struct
buffer_head
*
bh
,
int
ext4_check_dir_entry
(
const
char
*
function
,
struct
inode
*
dir
,
struct
ext4_dir_entry_2
*
de
,
struct
buffer_head
*
bh
,
unsigned
long
offset
)
{
const
char
*
error_msg
=
NULL
;
const
char
*
error_msg
=
NULL
;
const
int
rlen
=
ext4_rec_len_from_disk
(
de
->
rec_len
);
if
(
rlen
<
EXT4_DIR_REC_LEN
(
1
))
...
...
@@ -82,7 +82,7 @@ int ext4_check_dir_entry (const char * function, struct inode * dir,
error_msg
=
"inode out of bounds"
;
if
(
error_msg
!=
NULL
)
ext4_error
(
dir
->
i_sb
,
function
,
ext4_error
(
dir
->
i_sb
,
function
,
"bad entry in directory #%lu: %s - "
"offset=%lu, inode=%lu, rec_len=%d, name_len=%d"
,
dir
->
i_ino
,
error_msg
,
offset
,
...
...
@@ -91,8 +91,8 @@ int ext4_check_dir_entry (const char * function, struct inode * dir,
return
error_msg
==
NULL
?
1
:
0
;
}
static
int
ext4_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
static
int
ext4_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
{
int
error
=
0
;
unsigned
long
offset
;
...
...
@@ -148,7 +148,7 @@ static int ext4_readdir(struct file * filp,
* of recovering data when there's a bad sector
*/
if
(
!
bh
)
{
ext4_error
(
sb
,
"ext4_readdir"
,
ext4_error
(
sb
,
"ext4_readdir"
,
"directory #%lu contains a hole at offset %lu"
,
inode
->
i_ino
,
(
unsigned
long
)
filp
->
f_pos
);
/* corrupt size? Maybe no more blocks to read */
...
...
@@ -187,14 +187,14 @@ static int ext4_readdir(struct file * filp,
while
(
!
error
&&
filp
->
f_pos
<
inode
->
i_size
&&
offset
<
sb
->
s_blocksize
)
{
de
=
(
struct
ext4_dir_entry_2
*
)
(
bh
->
b_data
+
offset
);
if
(
!
ext4_check_dir_entry
(
"ext4_readdir"
,
inode
,
de
,
if
(
!
ext4_check_dir_entry
(
"ext4_readdir"
,
inode
,
de
,
bh
,
offset
))
{
/*
* On error, skip the f_pos to the next block
*/
filp
->
f_pos
=
(
filp
->
f_pos
|
(
sb
->
s_blocksize
-
1
))
+
1
;
brelse
(
bh
);
brelse
(
bh
);
ret
=
stored
;
goto
out
;
}
...
...
@@ -218,12 +218,12 @@ static int ext4_readdir(struct file * filp,
break
;
if
(
version
!=
filp
->
f_version
)
goto
revalidate
;
stored
++
;
stored
++
;
}
filp
->
f_pos
+=
ext4_rec_len_from_disk
(
de
->
rec_len
);
}
offset
=
0
;
brelse
(
bh
);
brelse
(
bh
);
}
out:
return
ret
;
...
...
@@ -290,9 +290,9 @@ static void free_rb_tree_fname(struct rb_root *root)
parent
=
rb_parent
(
n
);
fname
=
rb_entry
(
n
,
struct
fname
,
rb_hash
);
while
(
fname
)
{
struct
fname
*
old
=
fname
;
struct
fname
*
old
=
fname
;
fname
=
fname
->
next
;
kfree
(
old
);
kfree
(
old
);
}
if
(
!
parent
)
root
->
rb_node
=
NULL
;
...
...
@@ -331,7 +331,7 @@ int ext4_htree_store_dirent(struct file *dir_file, __u32 hash,
struct
ext4_dir_entry_2
*
dirent
)
{
struct
rb_node
**
p
,
*
parent
=
NULL
;
struct
fname
*
fname
,
*
new_fn
;
struct
fname
*
fname
,
*
new_fn
;
struct
dir_private_info
*
info
;
int
len
;
...
...
@@ -388,13 +388,13 @@ int ext4_htree_store_dirent(struct file *dir_file, __u32 hash,
* for all entres on the fname linked list. (Normally there is only
* one entry on the linked list, unless there are 62 bit hash collisions.)
*/
static
int
call_filldir
(
struct
file
*
filp
,
void
*
dirent
,
static
int
call_filldir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
,
struct
fname
*
fname
)
{
struct
dir_private_info
*
info
=
filp
->
private_data
;
loff_t
curr_pos
;
struct
inode
*
inode
=
filp
->
f_path
.
dentry
->
d_inode
;
struct
super_block
*
sb
;
struct
super_block
*
sb
;
int
error
;
sb
=
inode
->
i_sb
;
...
...
@@ -420,8 +420,8 @@ static int call_filldir(struct file * filp, void * dirent,
return
0
;
}
static
int
ext4_dx_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
static
int
ext4_dx_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
{
struct
dir_private_info
*
info
=
filp
->
private_data
;
struct
inode
*
inode
=
filp
->
f_path
.
dentry
->
d_inode
;
...
...
@@ -512,7 +512,7 @@ static int ext4_dx_readdir(struct file * filp,
return
0
;
}
static
int
ext4_release_dir
(
struct
inode
*
inode
,
struct
file
*
filp
)
static
int
ext4_release_dir
(
struct
inode
*
inode
,
struct
file
*
filp
)
{
if
(
filp
->
private_data
)
ext4_htree_free_dir_info
(
filp
->
private_data
);
...
...
fs/ext4/ext4.h
View file @
af5bc92d
...
...
@@ -44,9 +44,9 @@
#ifdef EXT4FS_DEBUG
#define ext4_debug(f, a...) \
do { \
printk
(KERN_DEBUG "EXT4-fs DEBUG (%s, %d): %s:", \
printk(KERN_DEBUG "EXT4-fs DEBUG (%s, %d): %s:", \
__FILE__, __LINE__, __func__); \
printk
(KERN_DEBUG f, ## a); \
printk(KERN_DEBUG f, ## a); \
} while (0)
#else
#define ext4_debug(f, a...) do {} while (0)
...
...
@@ -128,7 +128,7 @@ struct ext4_allocation_request {
#else
# define EXT4_BLOCK_SIZE(s) (EXT4_MIN_BLOCK_SIZE << (s)->s_log_block_size)
#endif
#define EXT4_ADDR_PER_BLOCK(s) (EXT4_BLOCK_SIZE(s) / sizeof
(__u32))
#define EXT4_ADDR_PER_BLOCK(s) (EXT4_BLOCK_SIZE(s) / sizeof(__u32))
#ifdef __KERNEL__
# define EXT4_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits)
#else
...
...
@@ -292,7 +292,7 @@ struct ext4_new_group_data {
#define EXT4_IOC_GETVERSION _IOR('f', 3, long)
#define EXT4_IOC_SETVERSION _IOW('f', 4, long)
#define EXT4_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input)
#define EXT4_IOC_GROUP_ADD _IOW('f', 8,
struct ext4_new_group_input)
#define EXT4_IOC_GETVERSION_OLD FS_IOC_GETVERSION
#define EXT4_IOC_SETVERSION_OLD FS_IOC_SETVERSION
#ifdef CONFIG_JBD2_DEBUG
...
...
@@ -667,7 +667,7 @@ struct ext4_super_block {
};
#ifdef __KERNEL__
static
inline
struct
ext4_sb_info
*
EXT4_SB
(
struct
super_block
*
sb
)
static
inline
struct
ext4_sb_info
*
EXT4_SB
(
struct
super_block
*
sb
)
{
return
sb
->
s_fs_info
;
}
...
...
@@ -725,11 +725,11 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino)
*/
#define EXT4_HAS_COMPAT_FEATURE(sb,mask) \
(
EXT4_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask)
)
(
EXT4_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask)
)
#define EXT4_HAS_RO_COMPAT_FEATURE(sb,mask) \
(
EXT4_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask)
)
(
EXT4_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask)
)
#define EXT4_HAS_INCOMPAT_FEATURE(sb,mask) \
(
EXT4_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask)
)
(
EXT4_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask)
)
#define EXT4_SET_COMPAT_FEATURE(sb,mask) \
EXT4_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask)
#define EXT4_SET_RO_COMPAT_FEATURE(sb,mask) \
...
...
@@ -985,13 +985,13 @@ extern ext4_fsblk_t ext4_old_new_blocks(handle_t *handle, struct inode *inode,
ext4_fsblk_t
goal
,
unsigned
long
*
count
,
int
*
errp
);
extern
ext4_fsblk_t
ext4_has_free_blocks
(
struct
ext4_sb_info
*
sbi
,
ext4_fsblk_t
nblocks
);
extern
void
ext4_free_blocks
(
handle_t
*
handle
,
struct
inode
*
inode
,
extern
void
ext4_free_blocks
(
handle_t
*
handle
,
struct
inode
*
inode
,
ext4_fsblk_t
block
,
unsigned
long
count
,
int
metadata
);
extern
void
ext4_free_blocks_sb
(
handle_t
*
handle
,
struct
super_block
*
sb
,
extern
void
ext4_free_blocks_sb
(
handle_t
*
handle
,
struct
super_block
*
sb
,
ext4_fsblk_t
block
,
unsigned
long
count
,
unsigned
long
*
pdquot_freed_blocks
);
extern
ext4_fsblk_t
ext4_count_free_blocks
(
struct
super_block
*
);
extern
void
ext4_check_blocks_bitmap
(
struct
super_block
*
);
extern
ext4_fsblk_t
ext4_count_free_blocks
(
struct
super_block
*
);
extern
void
ext4_check_blocks_bitmap
(
struct
super_block
*
);
extern
struct
ext4_group_desc
*
ext4_get_group_desc
(
struct
super_block
*
sb
,
ext4_group_t
block_group
,
struct
buffer_head
**
bh
);
...
...
@@ -1009,20 +1009,20 @@ extern int ext4_htree_store_dirent(struct file *dir_file, __u32 hash,
extern
void
ext4_htree_free_dir_info
(
struct
dir_private_info
*
p
);
/* fsync.c */
extern
int
ext4_sync_file
(
struct
file
*
,
struct
dentry
*
,
int
);
extern
int
ext4_sync_file
(
struct
file
*
,
struct
dentry
*
,
int
);
/* hash.c */
extern
int
ext4fs_dirhash
(
const
char
*
name
,
int
len
,
struct
dx_hash_info
*
hinfo
);
/* ialloc.c */
extern
struct
inode
*
ext4_new_inode
(
handle_t
*
,
struct
inode
*
,
int
);
extern
void
ext4_free_inode
(
handle_t
*
,
struct
inode
*
);
extern
struct
inode
*
ext4_orphan_get
(
struct
super_block
*
,
unsigned
long
);
extern
unsigned
long
ext4_count_free_inodes
(
struct
super_block
*
);
extern
unsigned
long
ext4_count_dirs
(
struct
super_block
*
);
extern
void
ext4_check_inodes_bitmap
(
struct
super_block
*
);
extern
unsigned
long
ext4_count_free
(
struct
buffer_head
*
,
unsigned
);
extern
struct
inode
*
ext4_new_inode
(
handle_t
*
,
struct
inode
*
,
int
);
extern
void
ext4_free_inode
(
handle_t
*
,
struct
inode
*
);
extern
struct
inode
*
ext4_orphan_get
(
struct
super_block
*
,
unsigned
long
);
extern
unsigned
long
ext4_count_free_inodes
(
struct
super_block
*
);
extern
unsigned
long
ext4_count_dirs
(
struct
super_block
*
);
extern
void
ext4_check_inodes_bitmap
(
struct
super_block
*
);
extern
unsigned
long
ext4_count_free
(
struct
buffer_head
*
,
unsigned
);
/* mballoc.c */
extern
long
ext4_mb_stats
;
...
...
@@ -1056,18 +1056,18 @@ int ext4_get_blocks_handle(handle_t *handle, struct inode *inode,
int
create
,
int
extend_disksize
);
extern
struct
inode
*
ext4_iget
(
struct
super_block
*
,
unsigned
long
);
extern
int
ext4_write_inode
(
struct
inode
*
,
int
);
extern
int
ext4_setattr
(
struct
dentry
*
,
struct
iattr
*
);
extern
int
ext4_write_inode
(
struct
inode
*
,
int
);
extern
int
ext4_setattr
(
struct
dentry
*
,
struct
iattr
*
);
extern
int
ext4_getattr
(
struct
vfsmount
*
mnt
,
struct
dentry
*
dentry
,
struct
kstat
*
stat
);
extern
void
ext4_delete_inode
(
struct
inode
*
);
extern
int
ext4_sync_inode
(
handle_t
*
,
struct
inode
*
);
extern
void
ext4_discard_reservation
(
struct
inode
*
);
extern
void
ext4_delete_inode
(
struct
inode
*
);
extern
int
ext4_sync_inode
(
handle_t
*
,
struct
inode
*
);
extern
void
ext4_discard_reservation
(
struct
inode
*
);
extern
void
ext4_dirty_inode
(
struct
inode
*
);
extern
int
ext4_change_inode_journal_flag
(
struct
inode
*
,
int
);
extern
int
ext4_get_inode_loc
(
struct
inode
*
,
struct
ext4_iloc
*
);
extern
int
ext4_can_truncate
(
struct
inode
*
inode
);
extern
void
ext4_truncate
(
struct
inode
*
);
extern
void
ext4_truncate
(
struct
inode
*
);
extern
void
ext4_set_inode_flags
(
struct
inode
*
);
extern
void
ext4_get_inode_flags
(
struct
ext4_inode_info
*
);
extern
void
ext4_set_aops
(
struct
inode
*
inode
);
...
...
@@ -1080,7 +1080,7 @@ extern int ext4_page_mkwrite(struct vm_area_struct *vma, struct page *page);
/* ioctl.c */
extern
long
ext4_ioctl
(
struct
file
*
,
unsigned
int
,
unsigned
long
);
extern
long
ext4_compat_ioctl
(
struct
file
*
,
unsigned
int
,
unsigned
long
);
extern
long
ext4_compat_ioctl
(
struct
file
*
,
unsigned
int
,
unsigned
long
);
/* migrate.c */
extern
int
ext4_ext_migrate
(
struct
inode
*
,
struct
file
*
,
unsigned
int
,
...
...
@@ -1099,14 +1099,14 @@ extern int ext4_group_extend(struct super_block *sb,
ext4_fsblk_t
n_blocks_count
);
/* super.c */
extern
void
ext4_error
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
extern
void
ext4_error
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
__attribute__
((
format
(
printf
,
3
,
4
)));
extern
void
__ext4_std_error
(
struct
super_block
*
,
const
char
*
,
int
);
extern
void
ext4_abort
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
extern
void
__ext4_std_error
(
struct
super_block
*
,
const
char
*
,
int
);
extern
void
ext4_abort
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
__attribute__
((
format
(
printf
,
3
,
4
)));
extern
void
ext4_warning
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
extern
void
ext4_warning
(
struct
super_block
*
,
const
char
*
,
const
char
*
,
...)
__attribute__
((
format
(
printf
,
3
,
4
)));
extern
void
ext4_update_dynamic_rev
(
struct
super_block
*
sb
);
extern
void
ext4_update_dynamic_rev
(
struct
super_block
*
sb
);
extern
int
ext4_update_compat_feature
(
handle_t
*
handle
,
struct
super_block
*
sb
,
__u32
compat
);
extern
int
ext4_update_rocompat_feature
(
handle_t
*
handle
,
...
...
fs/ext4/ext4_sb.h
View file @
af5bc92d
...
...
@@ -40,8 +40,8 @@ struct ext4_sb_info {
unsigned
long
s_blocks_last
;
/* Last seen block count */
loff_t
s_bitmap_maxbytes
;
/* max bytes for bitmap files */
struct
buffer_head
*
s_sbh
;
/* Buffer containing the super block */
struct
ext4_super_block
*
s_es
;
/* Pointer to the super block in the buffer */
struct
buffer_head
**
s_group_desc
;
struct
ext4_super_block
*
s_es
;
/* Pointer to the super block in the buffer */
struct
buffer_head
**
s_group_desc
;
unsigned
long
s_mount_opt
;
ext4_fsblk_t
s_sb_block
;
uid_t
s_resuid
;
...
...
@@ -67,8 +67,8 @@ struct ext4_sb_info {
struct
ext4_reserve_window_node
s_rsv_window_head
;
/* Journaling */
struct
inode
*
s_journal_inode
;
struct
journal_s
*
s_journal
;
struct
inode
*
s_journal_inode
;
struct
journal_s
*
s_journal
;
struct
list_head
s_orphan
;
unsigned
long
s_commit_interval
;
struct
block_device
*
journal_bdev
;
...
...
fs/ext4/extents.c
View file @
af5bc92d
...
...
@@ -383,8 +383,8 @@ static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path)
ext_debug
(
"
\n
"
);
}
#else
#define ext4_ext_show_path(inode,path)
#define ext4_ext_show_leaf(inode,path)
#define ext4_ext_show_path(inode,
path)
#define ext4_ext_show_leaf(inode,
path)
#endif
void
ext4_ext_drop_refs
(
struct
ext4_ext_path
*
path
)
...
...
@@ -1476,7 +1476,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
struct
ext4_ext_path
*
path
,
struct
ext4_extent
*
newext
)
{
struct
ext4_extent_header
*
eh
;
struct
ext4_extent_header
*
eh
;
struct
ext4_extent
*
ex
,
*
fex
;
struct
ext4_extent
*
nearex
;
/* nearest extent */
struct
ext4_ext_path
*
npath
=
NULL
;
...
...
fs/ext4/file.c
View file @
af5bc92d
...
...
@@ -31,7 +31,7 @@
* from ext4_file_open: open gets called at every open, but release
* gets called only when /all/ the files are closed.
*/
static
int
ext4_release_file
(
struct
inode
*
inode
,
struct
file
*
filp
)
static
int
ext4_release_file
(
struct
inode
*
inode
,
struct
file
*
filp
)
{
/* if we are the last writer on the inode, drop the block reservation */
if
((
filp
->
f_mode
&
FMODE_WRITE
)
&&
...
...
fs/ext4/fsync.c
View file @
af5bc92d
...
...
@@ -43,7 +43,7 @@
* inode to disk.
*/
int
ext4_sync_file
(
struct
file
*
file
,
struct
dentry
*
dentry
,
int
datasync
)
int
ext4_sync_file
(
struct
file
*
file
,
struct
dentry
*
dentry
,
int
datasync
)
{
struct
inode
*
inode
=
dentry
->
d_inode
;
journal_t
*
journal
=
EXT4_SB
(
inode
->
i_sb
)
->
s_journal
;
...
...
fs/ext4/hash.c
View file @
af5bc92d
...
...
@@ -27,7 +27,7 @@ static void TEA_transform(__u32 buf[4], __u32 const in[])
sum
+=
DELTA
;
b0
+=
((
b1
<<
4
)
+
a
)
^
(
b1
+
sum
)
^
((
b1
>>
5
)
+
b
);
b1
+=
((
b0
<<
4
)
+
c
)
^
(
b0
+
sum
)
^
((
b0
>>
5
)
+
d
);
}
while
(
--
n
);
}
while
(
--
n
);
buf
[
0
]
+=
b0
;
buf
[
1
]
+=
b1
;
...
...
@@ -35,7 +35,7 @@ static void TEA_transform(__u32 buf[4], __u32 const in[])
/* The old legacy hash */
static
__u32
dx_hack_hash
(
const
char
*
name
,
int
len
)
static
__u32
dx_hack_hash
(
const
char
*
name
,
int
len
)
{
__u32
hash0
=
0x12a3fe2d
,
hash1
=
0x37abe8f9
;
while
(
len
--
)
{
...
...
@@ -59,7 +59,7 @@ static void str2hashbuf(const char *msg, int len, __u32 *buf, int num)
val
=
pad
;
if
(
len
>
num
*
4
)
len
=
num
*
4
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
if
((
i
%
4
)
==
0
)
val
=
pad
;
val
=
msg
[
i
]
+
(
val
<<
8
);
...
...
@@ -104,7 +104,7 @@ int ext4fs_dirhash(const char *name, int len, struct dx_hash_info *hinfo)
/* Check to see if the seed is all zero's */
if
(
hinfo
->
seed
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
hinfo
->
seed
[
i
])
break
;
}
...
...
fs/ext4/ialloc.c
View file @
af5bc92d
...
...
@@ -154,17 +154,17 @@ ext4_read_inode_bitmap(struct super_block *sb, ext4_group_t block_group)
* though), and then we'd have two inodes sharing the
* same inode number and space on the harddisk.
*/
void
ext4_free_inode
(
handle_t
*
handle
,
struct
inode
*
inode
)
void
ext4_free_inode
(
handle_t
*
handle
,
struct
inode
*
inode
)
{
struct
super_block
*
sb
=
inode
->
i_sb
;
struct
super_block
*
sb
=
inode
->
i_sb
;
int
is_directory
;
unsigned
long
ino
;
struct
buffer_head
*
bitmap_bh
=
NULL
;
struct
buffer_head
*
bh2
;
ext4_group_t
block_group
;
unsigned
long
bit
;
struct
ext4_group_desc
*
gdp
;
struct
ext4_super_block
*
es
;
struct
ext4_group_desc
*
gdp
;
struct
ext4_super_block
*
es
;
struct
ext4_sb_info
*
sbi
;
int
fatal
=
0
,
err
;
ext4_group_t
flex_group
;
...
...
@@ -187,7 +187,7 @@ void ext4_free_inode (handle_t *handle, struct inode * inode)
sbi
=
EXT4_SB
(
sb
);
ino
=
inode
->
i_ino
;
ext4_debug
(
"freeing inode %lu
\n
"
,
ino
);
ext4_debug
(
"freeing inode %lu
\n
"
,
ino
);
/*
* Note: we must free any quota before locking the superblock,
...
...
@@ -201,11 +201,11 @@ void ext4_free_inode (handle_t *handle, struct inode * inode)
is_directory
=
S_ISDIR
(
inode
->
i_mode
);
/* Do this BEFORE marking the inode not in use or returning an error */
clear_inode
(
inode
);
clear_inode
(
inode
);
es
=
EXT4_SB
(
sb
)
->
s_es
;
if
(
ino
<
EXT4_FIRST_INO
(
sb
)
||
ino
>
le32_to_cpu
(
es
->
s_inodes_count
))
{
ext4_error
(
sb
,
"ext4_free_inode"
,
ext4_error
(
sb
,
"ext4_free_inode"
,
"reserved or nonexistent inode %lu"
,
ino
);
goto
error_return
;
}
...
...
@@ -223,10 +223,10 @@ void ext4_free_inode (handle_t *handle, struct inode * inode)
/* Ok, now we can actually update the inode bitmaps.. */
if
(
!
ext4_clear_bit_atomic
(
sb_bgl_lock
(
sbi
,
block_group
),
bit
,
bitmap_bh
->
b_data
))
ext4_error
(
sb
,
"ext4_free_inode"
,
ext4_error
(
sb
,
"ext4_free_inode"
,
"bit already cleared for inode %lu"
,
ino
);
else
{
gdp
=
ext4_get_group_desc
(
sb
,
block_group
,
&
bh2
);
gdp
=
ext4_get_group_desc
(
sb
,
block_group
,
&
bh2
);
BUFFER_TRACE
(
bh2
,
"get_write_access"
);
fatal
=
ext4_journal_get_write_access
(
handle
,
bh2
);
...
...
@@ -288,7 +288,7 @@ static int find_group_dir(struct super_block *sb, struct inode *parent,
avefreei
=
freei
/
ngroups
;
for
(
group
=
0
;
group
<
ngroups
;
group
++
)
{
desc
=
ext4_get_group_desc
(
sb
,
group
,
NULL
);
desc
=
ext4_get_group_desc
(
sb
,
group
,
NULL
);
if
(
!
desc
||
!
desc
->
bg_free_inodes_count
)
continue
;
if
(
le16_to_cpu
(
desc
->
bg_free_inodes_count
)
<
avefreei
)
...
...
@@ -577,16 +577,16 @@ static int find_group_other(struct super_block *sb, struct inode *parent,
* For other inodes, search forward from the parent directory's block
* group to find a free inode.
*/
struct
inode
*
ext4_new_inode
(
handle_t
*
handle
,
struct
inode
*
dir
,
int
mode
)
struct
inode
*
ext4_new_inode
(
handle_t
*
handle
,
struct
inode
*
dir
,
int
mode
)
{
struct
super_block
*
sb
;
struct
buffer_head
*
bitmap_bh
=
NULL
;
struct
buffer_head
*
bh2
;
ext4_group_t
group
=
0
;
unsigned
long
ino
=
0
;
struct
inode
*
inode
;
struct
ext4_group_desc
*
gdp
=
NULL
;
struct
ext4_super_block
*
es
;
struct
inode
*
inode
;
struct
ext4_group_desc
*
gdp
=
NULL
;
struct
ext4_super_block
*
es
;
struct
ext4_inode_info
*
ei
;
struct
ext4_sb_info
*
sbi
;
int
ret2
,
err
=
0
;
...
...
@@ -614,7 +614,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
}
if
(
S_ISDIR
(
mode
))
{
if
(
test_opt
(
sb
,
OLDALLOC
))
if
(
test_opt
(
sb
,
OLDALLOC
))
ret2
=
find_group_dir
(
sb
,
dir
,
&
group
);
else
ret2
=
find_group_orlov
(
sb
,
dir
,
&
group
);
...
...
@@ -784,7 +784,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
}
inode
->
i_uid
=
current
->
fsuid
;
if
(
test_opt
(
sb
,
GRPID
))
if
(
test_opt
(
sb
,
GRPID
))
inode
->
i_gid
=
dir
->
i_gid
;
else
if
(
dir
->
i_mode
&
S_ISGID
)
{
inode
->
i_gid
=
dir
->
i_gid
;
...
...
@@ -833,7 +833,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
ei
->
i_extra_isize
=
EXT4_SB
(
sb
)
->
s_want_extra_isize
;
ret
=
inode
;
if
(
DQUOT_ALLOC_INODE
(
inode
))
{
if
(
DQUOT_ALLOC_INODE
(
inode
))
{
err
=
-
EDQUOT
;
goto
fail_drop
;
}
...
...
@@ -842,7 +842,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
if
(
err
)
goto
fail_free_drop
;
err
=
ext4_init_security
(
handle
,
inode
,
dir
);
err
=
ext4_init_security
(
handle
,
inode
,
dir
);
if
(
err
)
goto
fail_free_drop
;
...
...
@@ -960,7 +960,7 @@ struct inode *ext4_orphan_get(struct super_block *sb, unsigned long ino)
return
ERR_PTR
(
err
);
}
unsigned
long
ext4_count_free_inodes
(
struct
super_block
*
sb
)
unsigned
long
ext4_count_free_inodes
(
struct
super_block
*
sb
)
{
unsigned
long
desc_count
;
struct
ext4_group_desc
*
gdp
;
...
...
@@ -975,7 +975,7 @@ unsigned long ext4_count_free_inodes (struct super_block * sb)
bitmap_count
=
0
;
gdp
=
NULL
;
for
(
i
=
0
;
i
<
EXT4_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
if
(
!
gdp
)
continue
;
desc_count
+=
le16_to_cpu
(
gdp
->
bg_free_inodes_count
);
...
...
@@ -997,7 +997,7 @@ unsigned long ext4_count_free_inodes (struct super_block * sb)
#else
desc_count
=
0
;
for
(
i
=
0
;
i
<
EXT4_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
if
(
!
gdp
)
continue
;
desc_count
+=
le16_to_cpu
(
gdp
->
bg_free_inodes_count
);
...
...
@@ -1008,13 +1008,13 @@ unsigned long ext4_count_free_inodes (struct super_block * sb)
}
/* Called at mount-time, super-block is locked */
unsigned
long
ext4_count_dirs
(
struct
super_block
*
sb
)
unsigned
long
ext4_count_dirs
(
struct
super_block
*
sb
)
{
unsigned
long
count
=
0
;
ext4_group_t
i
;
for
(
i
=
0
;
i
<
EXT4_SB
(
sb
)
->
s_groups_count
;
i
++
)
{
struct
ext4_group_desc
*
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
struct
ext4_group_desc
*
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
if
(
!
gdp
)
continue
;
count
+=
le16_to_cpu
(
gdp
->
bg_used_dirs_count
);
...
...
fs/ext4/inode.c
View file @
af5bc92d
...
...
@@ -190,7 +190,7 @@ static int ext4_journal_test_restart(handle_t *handle, struct inode *inode)
/*
* Called at the last iput() if i_nlink is zero.
*/
void
ext4_delete_inode
(
struct
inode
*
inode
)
void
ext4_delete_inode
(
struct
inode
*
inode
)
{
handle_t
*
handle
;
int
err
;
...
...
@@ -330,11 +330,11 @@ static int ext4_block_to_path(struct inode *inode,
int
final
=
0
;
if
(
i_block
<
0
)
{
ext4_warning
(
inode
->
i_sb
,
"ext4_block_to_path"
,
"block < 0"
);
ext4_warning
(
inode
->
i_sb
,
"ext4_block_to_path"
,
"block < 0"
);
}
else
if
(
i_block
<
direct_blocks
)
{
offsets
[
n
++
]
=
i_block
;
final
=
direct_blocks
;
}
else
if
(
(
i_block
-=
direct_blocks
)
<
indirect_blocks
)
{
}
else
if
((
i_block
-=
direct_blocks
)
<
indirect_blocks
)
{
offsets
[
n
++
]
=
EXT4_IND_BLOCK
;
offsets
[
n
++
]
=
i_block
;
final
=
ptrs
;
...
...
@@ -400,14 +400,14 @@ static Indirect *ext4_get_branch(struct inode *inode, int depth,
*
err
=
0
;
/* i_data is not going away, no lock needed */
add_chain
(
chain
,
NULL
,
EXT4_I
(
inode
)
->
i_data
+
*
offsets
);
add_chain
(
chain
,
NULL
,
EXT4_I
(
inode
)
->
i_data
+
*
offsets
);
if
(
!
p
->
key
)
goto
no_block
;
while
(
--
depth
)
{
bh
=
sb_bread
(
sb
,
le32_to_cpu
(
p
->
key
));
if
(
!
bh
)
goto
failure
;
add_chain
(
++
p
,
bh
,
(
__le32
*
)
bh
->
b_data
+
*++
offsets
);
add_chain
(
++
p
,
bh
,
(
__le32
*
)
bh
->
b_data
+
*++
offsets
);
/* Reader: end */
if
(
!
p
->
key
)
goto
no_block
;
...
...
@@ -443,7 +443,7 @@ static Indirect *ext4_get_branch(struct inode *inode, int depth,
static
ext4_fsblk_t
ext4_find_near
(
struct
inode
*
inode
,
Indirect
*
ind
)
{
struct
ext4_inode_info
*
ei
=
EXT4_I
(
inode
);
__le32
*
start
=
ind
->
bh
?
(
__le32
*
)
ind
->
bh
->
b_data
:
ei
->
i_data
;
__le32
*
start
=
ind
->
bh
?
(
__le32
*
)
ind
->
bh
->
b_data
:
ei
->
i_data
;
__le32
*
p
;
ext4_fsblk_t
bg_start
;
ext4_fsblk_t
last_block
;
...
...
@@ -630,7 +630,7 @@ static int ext4_alloc_blocks(handle_t *handle, struct inode *inode,
*
err
=
0
;
return
ret
;
failed_out:
for
(
i
=
0
;
i
<
index
;
i
++
)
for
(
i
=
0
;
i
<
index
;
i
++
)
ext4_free_blocks
(
handle
,
inode
,
new_blocks
[
i
],
1
,
0
);
return
ret
;
}
...
...
@@ -703,7 +703,7 @@ static int ext4_alloc_branch(handle_t *handle, struct inode *inode,
branch
[
n
].
p
=
(
__le32
*
)
bh
->
b_data
+
offsets
[
n
];
branch
[
n
].
key
=
cpu_to_le32
(
new_blocks
[
n
]);
*
branch
[
n
].
p
=
branch
[
n
].
key
;
if
(
n
==
indirect_blks
)
{
if
(
n
==
indirect_blks
)
{
current_block
=
new_blocks
[
n
];
/*
* End of chain, update the last new metablock of
...
...
@@ -730,7 +730,7 @@ static int ext4_alloc_branch(handle_t *handle, struct inode *inode,
BUFFER_TRACE
(
branch
[
i
].
bh
,
"call jbd2_journal_forget"
);
ext4_journal_forget
(
handle
,
branch
[
i
].
bh
);
}
for
(
i
=
0
;
i
<
indirect_blks
;
i
++
)
for
(
i
=
0
;
i
<
indirect_blks
;
i
++
)
ext4_free_blocks
(
handle
,
inode
,
new_blocks
[
i
],
1
,
0
);
ext4_free_blocks
(
handle
,
inode
,
new_blocks
[
i
],
num
,
0
);
...
...
@@ -783,7 +783,7 @@ static int ext4_splice_branch(handle_t *handle, struct inode *inode,
if
(
num
==
0
&&
blks
>
1
)
{
current_block
=
le32_to_cpu
(
where
->
key
)
+
1
;
for
(
i
=
1
;
i
<
blks
;
i
++
)
*
(
where
->
p
+
i
)
=
cpu_to_le32
(
current_block
++
);
*
(
where
->
p
+
i
)
=
cpu_to_le32
(
current_block
++
);
}
/*
...
...
@@ -1241,7 +1241,7 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
BUFFER_TRACE
(
bh
,
"call get_create_access"
);
fatal
=
ext4_journal_get_create_access
(
handle
,
bh
);
if
(
!
fatal
&&
!
buffer_uptodate
(
bh
))
{
memset
(
bh
->
b_data
,
0
,
inode
->
i_sb
->
s_blocksize
);
memset
(
bh
->
b_data
,
0
,
inode
->
i_sb
->
s_blocksize
);
set_buffer_uptodate
(
bh
);
}
unlock_buffer
(
bh
);
...
...
@@ -1266,7 +1266,7 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
struct
buffer_head
*
ext4_bread
(
handle_t
*
handle
,
struct
inode
*
inode
,
ext4_lblk_t
block
,
int
create
,
int
*
err
)
{
struct
buffer_head
*
bh
;
struct
buffer_head
*
bh
;
bh
=
ext4_getblk
(
handle
,
inode
,
block
,
create
,
err
);
if
(
!
bh
)
...
...
@@ -1282,12 +1282,12 @@ struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
return
NULL
;
}
static
int
walk_page_buffers
(
handle_t
*
handle
,
static
int
walk_page_buffers
(
handle_t
*
handle
,
struct
buffer_head
*
head
,
unsigned
from
,
unsigned
to
,
int
*
partial
,
int
(
*
fn
)(
handle_t
*
handle
,
int
(
*
fn
)(
handle_t
*
handle
,
struct
buffer_head
*
bh
))
{
struct
buffer_head
*
bh
;
...
...
@@ -1296,7 +1296,7 @@ static int walk_page_buffers( handle_t *handle,
int
err
,
ret
=
0
;
struct
buffer_head
*
next
;
for
(
bh
=
head
,
block_start
=
0
;
for
(
bh
=
head
,
block_start
=
0
;
ret
==
0
&&
(
bh
!=
head
||
!
block_start
);
block_start
=
block_end
,
bh
=
next
)
{
...
...
@@ -2456,7 +2456,7 @@ static int ext4_da_should_update_i_disksize(struct page *page,
bh
=
page_buffers
(
page
);
idx
=
offset
>>
inode
->
i_blkbits
;
for
(
i
=
0
;
i
<
idx
;
i
++
)
for
(
i
=
0
;
i
<
idx
;
i
++
)
bh
=
bh
->
b_this_page
;
if
(
!
buffer_mapped
(
bh
)
||
(
buffer_delay
(
bh
)))
...
...
@@ -2476,7 +2476,7 @@ static int ext4_da_write_end(struct file *file,
unsigned
long
start
,
end
;
start
=
pos
&
(
PAGE_CACHE_SIZE
-
1
);
end
=
start
+
copied
-
1
;
end
=
start
+
copied
-
1
;
/*
* generic_write_end() will run mark_inode_dirty() if i_size
...
...
@@ -2591,7 +2591,7 @@ static sector_t ext4_bmap(struct address_space *mapping, sector_t block)
return
0
;
}
return
generic_block_bmap
(
mapping
,
block
,
ext4_get_block
);
return
generic_block_bmap
(
mapping
,
block
,
ext4_get_block
);
}
static
int
bget_one
(
handle_t
*
handle
,
struct
buffer_head
*
bh
)
...
...
@@ -3197,7 +3197,7 @@ static Indirect *ext4_find_shared(struct inode *inode, int depth,
if
(
!
partial
->
key
&&
*
partial
->
p
)
/* Writer: end */
goto
no_top
;
for
(
p
=
partial
;
p
>
chain
&&
all_zeroes
((
__le32
*
)
p
->
bh
->
b_data
,
p
->
p
);
p
--
)
for
(
p
=
partial
;
(
p
>
chain
)
&&
all_zeroes
((
__le32
*
)
p
->
bh
->
b_data
,
p
->
p
);
p
--
)
;
/*
* OK, we've found the last block that must survive. The rest of our
...
...
@@ -3216,7 +3216,7 @@ static Indirect *ext4_find_shared(struct inode *inode, int depth,
}
/* Writer: end */
while
(
partial
>
p
)
{
while
(
partial
>
p
)
{
brelse
(
partial
->
bh
);
partial
--
;
}
...
...
@@ -3408,8 +3408,8 @@ static void ext4_free_branches(handle_t *handle, struct inode *inode,
/* This zaps the entire block. Bottom up. */
BUFFER_TRACE
(
bh
,
"free child branches"
);
ext4_free_branches
(
handle
,
inode
,
bh
,
(
__le32
*
)
bh
->
b_data
,
(
__le32
*
)
bh
->
b_data
+
addr_per_block
,
(
__le32
*
)
bh
->
b_data
,
(
__le32
*
)
bh
->
b_data
+
addr_per_block
,
depth
);
/*
...
...
@@ -3927,7 +3927,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
inode
->
i_mode
=
le16_to_cpu
(
raw_inode
->
i_mode
);
inode
->
i_uid
=
(
uid_t
)
le16_to_cpu
(
raw_inode
->
i_uid_low
);
inode
->
i_gid
=
(
gid_t
)
le16_to_cpu
(
raw_inode
->
i_gid_low
);
if
(
!
(
test_opt
(
inode
->
i_sb
,
NO_UID32
)))
{
if
(
!
(
test_opt
(
inode
->
i_sb
,
NO_UID32
)))
{
inode
->
i_uid
|=
le16_to_cpu
(
raw_inode
->
i_uid_high
)
<<
16
;
inode
->
i_gid
|=
le16_to_cpu
(
raw_inode
->
i_gid_high
)
<<
16
;
}
...
...
@@ -3945,7 +3945,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
if
(
inode
->
i_mode
==
0
||
!
(
EXT4_SB
(
inode
->
i_sb
)
->
s_mount_state
&
EXT4_ORPHAN_FS
))
{
/* this inode is deleted */
brelse
(
bh
);
brelse
(
bh
);
ret
=
-
ESTALE
;
goto
bad_inode
;
}
...
...
@@ -3978,7 +3978,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
ei
->
i_extra_isize
=
le16_to_cpu
(
raw_inode
->
i_extra_isize
);
if
(
EXT4_GOOD_OLD_INODE_SIZE
+
ei
->
i_extra_isize
>
EXT4_INODE_SIZE
(
inode
->
i_sb
))
{
brelse
(
bh
);
brelse
(
bh
);
ret
=
-
EIO
;
goto
bad_inode
;
}
...
...
@@ -4031,7 +4031,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
init_special_inode
(
inode
,
inode
->
i_mode
,
new_decode_dev
(
le32_to_cpu
(
raw_inode
->
i_block
[
1
])));
}
brelse
(
iloc
.
bh
);
brelse
(
iloc
.
bh
);
ext4_set_inode_flags
(
inode
);
unlock_new_inode
(
inode
);
return
inode
;
...
...
@@ -4113,14 +4113,14 @@ static int ext4_do_update_inode(handle_t *handle,
ext4_get_inode_flags
(
ei
);
raw_inode
->
i_mode
=
cpu_to_le16
(
inode
->
i_mode
);
if
(
!
(
test_opt
(
inode
->
i_sb
,
NO_UID32
)))
{
if
(
!
(
test_opt
(
inode
->
i_sb
,
NO_UID32
)))
{
raw_inode
->
i_uid_low
=
cpu_to_le16
(
low_16_bits
(
inode
->
i_uid
));
raw_inode
->
i_gid_low
=
cpu_to_le16
(
low_16_bits
(
inode
->
i_gid
));
/*
* Fix up interoperability with old kernels. Otherwise, old inodes get
* re-used with the upper 16 bits of the uid/gid intact
*/
if
(
!
ei
->
i_dtime
)
{
if
(
!
ei
->
i_dtime
)
{
raw_inode
->
i_uid_high
=
cpu_to_le16
(
high_16_bits
(
inode
->
i_uid
));
raw_inode
->
i_gid_high
=
...
...
@@ -4208,7 +4208,7 @@ static int ext4_do_update_inode(handle_t *handle,
ei
->
i_state
&=
~
EXT4_STATE_NEW
;
out_brelse:
brelse
(
bh
);
brelse
(
bh
);
ext4_std_error
(
inode
->
i_sb
,
err
);
return
err
;
}
...
...
fs/ext4/ioctl.c
View file @
af5bc92d
...
...
@@ -25,7 +25,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
unsigned
int
flags
;
unsigned
short
rsv_window_size
;
ext4_debug
(
"cmd = %u, arg = %lu
\n
"
,
cmd
,
arg
);
ext4_debug
(
"cmd = %u, arg = %lu
\n
"
,
cmd
,
arg
);
switch
(
cmd
)
{
case
EXT4_IOC_GETFLAGS
:
...
...
@@ -186,7 +186,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
case
EXT4_IOC_SETRSVSZ
:
{
int
err
;
if
(
!
test_opt
(
inode
->
i_sb
,
RESERVATION
)
||!
S_ISREG
(
inode
->
i_mode
))
if
(
!
test_opt
(
inode
->
i_sb
,
RESERVATION
)
||
!
S_ISREG
(
inode
->
i_mode
))
return
-
ENOTTY
;
if
(
!
is_owner_or_cap
(
inode
))
...
...
fs/ext4/namei.c
View file @
af5bc92d
...
...
@@ -151,26 +151,26 @@ struct dx_map_entry
static
inline
ext4_lblk_t
dx_get_block
(
struct
dx_entry
*
entry
);
static
void
dx_set_block
(
struct
dx_entry
*
entry
,
ext4_lblk_t
value
);
static
inline
unsigned
dx_get_hash
(
struct
dx_entry
*
entry
);
static
void
dx_set_hash
(
struct
dx_entry
*
entry
,
unsigned
value
);
static
unsigned
dx_get_count
(
struct
dx_entry
*
entries
);
static
unsigned
dx_get_limit
(
struct
dx_entry
*
entries
);
static
void
dx_set_count
(
struct
dx_entry
*
entries
,
unsigned
value
);
static
void
dx_set_limit
(
struct
dx_entry
*
entries
,
unsigned
value
);
static
unsigned
dx_root_limit
(
struct
inode
*
dir
,
unsigned
infosize
);
static
unsigned
dx_node_limit
(
struct
inode
*
dir
);
static
inline
unsigned
dx_get_hash
(
struct
dx_entry
*
entry
);
static
void
dx_set_hash
(
struct
dx_entry
*
entry
,
unsigned
value
);
static
unsigned
dx_get_count
(
struct
dx_entry
*
entries
);
static
unsigned
dx_get_limit
(
struct
dx_entry
*
entries
);
static
void
dx_set_count
(
struct
dx_entry
*
entries
,
unsigned
value
);
static
void
dx_set_limit
(
struct
dx_entry
*
entries
,
unsigned
value
);
static
unsigned
dx_root_limit
(
struct
inode
*
dir
,
unsigned
infosize
);
static
unsigned
dx_node_limit
(
struct
inode
*
dir
);
static
struct
dx_frame
*
dx_probe
(
struct
dentry
*
dentry
,
struct
inode
*
dir
,
struct
dx_hash_info
*
hinfo
,
struct
dx_frame
*
frame
,
int
*
err
);
static
void
dx_release
(
struct
dx_frame
*
frames
);
static
int
dx_make_map
(
struct
ext4_dir_entry_2
*
de
,
int
size
,
static
void
dx_release
(
struct
dx_frame
*
frames
);
static
int
dx_make_map
(
struct
ext4_dir_entry_2
*
de
,
int
size
,
struct
dx_hash_info
*
hinfo
,
struct
dx_map_entry
map
[]);
static
void
dx_sort_map
(
struct
dx_map_entry
*
map
,
unsigned
count
);
static
struct
ext4_dir_entry_2
*
dx_move_dirents
(
char
*
from
,
char
*
to
,
static
struct
ext4_dir_entry_2
*
dx_move_dirents
(
char
*
from
,
char
*
to
,
struct
dx_map_entry
*
offsets
,
int
count
);
static
struct
ext4_dir_entry_2
*
dx_pack_dirents
(
char
*
base
,
int
size
);
static
struct
ext4_dir_entry_2
*
dx_pack_dirents
(
char
*
base
,
int
size
);
static
void
dx_insert_block
(
struct
dx_frame
*
frame
,
u32
hash
,
ext4_lblk_t
block
);
static
int
ext4_htree_next_block
(
struct
inode
*
dir
,
__u32
hash
,
...
...
@@ -207,44 +207,44 @@ static inline void dx_set_block(struct dx_entry *entry, ext4_lblk_t value)
entry
->
block
=
cpu_to_le32
(
value
);
}
static
inline
unsigned
dx_get_hash
(
struct
dx_entry
*
entry
)
static
inline
unsigned
dx_get_hash
(
struct
dx_entry
*
entry
)
{
return
le32_to_cpu
(
entry
->
hash
);
}
static
inline
void
dx_set_hash
(
struct
dx_entry
*
entry
,
unsigned
value
)
static
inline
void
dx_set_hash
(
struct
dx_entry
*
entry
,
unsigned
value
)
{
entry
->
hash
=
cpu_to_le32
(
value
);
}
static
inline
unsigned
dx_get_count
(
struct
dx_entry
*
entries
)
static
inline
unsigned
dx_get_count
(
struct
dx_entry
*
entries
)
{
return
le16_to_cpu
(((
struct
dx_countlimit
*
)
entries
)
->
count
);
}
static
inline
unsigned
dx_get_limit
(
struct
dx_entry
*
entries
)
static
inline
unsigned
dx_get_limit
(
struct
dx_entry
*
entries
)
{
return
le16_to_cpu
(((
struct
dx_countlimit
*
)
entries
)
->
limit
);
}
static
inline
void
dx_set_count
(
struct
dx_entry
*
entries
,
unsigned
value
)
static
inline
void
dx_set_count
(
struct
dx_entry
*
entries
,
unsigned
value
)
{
((
struct
dx_countlimit
*
)
entries
)
->
count
=
cpu_to_le16
(
value
);
}
static
inline
void
dx_set_limit
(
struct
dx_entry
*
entries
,
unsigned
value
)
static
inline
void
dx_set_limit
(
struct
dx_entry
*
entries
,
unsigned
value
)
{
((
struct
dx_countlimit
*
)
entries
)
->
limit
=
cpu_to_le16
(
value
);
}
static
inline
unsigned
dx_root_limit
(
struct
inode
*
dir
,
unsigned
infosize
)
static
inline
unsigned
dx_root_limit
(
struct
inode
*
dir
,
unsigned
infosize
)
{
unsigned
entry_space
=
dir
->
i_sb
->
s_blocksize
-
EXT4_DIR_REC_LEN
(
1
)
-
EXT4_DIR_REC_LEN
(
2
)
-
infosize
;
return
entry_space
/
sizeof
(
struct
dx_entry
);
}
static
inline
unsigned
dx_node_limit
(
struct
inode
*
dir
)
static
inline
unsigned
dx_node_limit
(
struct
inode
*
dir
)
{
unsigned
entry_space
=
dir
->
i_sb
->
s_blocksize
-
EXT4_DIR_REC_LEN
(
0
);
return
entry_space
/
sizeof
(
struct
dx_entry
);
...
...
@@ -306,7 +306,7 @@ struct stats dx_show_entries(struct dx_hash_info *hinfo, struct inode *dir,
struct
dx_entry
*
entries
,
int
levels
)
{
unsigned
blocksize
=
dir
->
i_sb
->
s_blocksize
;
unsigned
count
=
dx_get_count
(
entries
),
names
=
0
,
space
=
0
,
i
;
unsigned
count
=
dx_get_count
(
entries
),
names
=
0
,
space
=
0
,
i
;
unsigned
bcount
=
0
;
struct
buffer_head
*
bh
;
int
err
;
...
...
@@ -325,7 +325,7 @@ struct stats dx_show_entries(struct dx_hash_info *hinfo, struct inode *dir,
names
+=
stats
.
names
;
space
+=
stats
.
space
;
bcount
+=
stats
.
bcount
;
brelse
(
bh
);
brelse
(
bh
);
}
if
(
bcount
)
printk
(
KERN_DEBUG
"%snames %u, fullness %u (%u%%)
\n
"
,
...
...
@@ -407,7 +407,7 @@ dx_probe(struct dentry *dentry, struct inode *dir,
goto
fail
;
}
dxtrace
(
printk
(
"Look up %x"
,
hash
));
dxtrace
(
printk
(
"Look up %x"
,
hash
));
while
(
1
)
{
count
=
dx_get_count
(
entries
);
...
...
@@ -556,7 +556,7 @@ static int ext4_htree_next_block(struct inode *dir, __u32 hash,
0
,
&
err
)))
return
err
;
/* Failure */
p
++
;
brelse
(
p
->
bh
);
brelse
(
p
->
bh
);
p
->
bh
=
bh
;
p
->
at
=
p
->
entries
=
((
struct
dx_node
*
)
bh
->
b_data
)
->
entries
;
}
...
...
@@ -594,7 +594,7 @@ static int htree_dirblock_to_tree(struct file *dir_file,
/* On error, skip the f_pos to the next block. */
dir_file
->
f_pos
=
(
dir_file
->
f_pos
|
(
dir
->
i_sb
->
s_blocksize
-
1
))
+
1
;
brelse
(
bh
);
brelse
(
bh
);
return
count
;
}
ext4fs_dirhash
(
de
->
name
,
de
->
name_len
,
hinfo
);
...
...
@@ -803,7 +803,7 @@ static inline int ext4_match (int len, const char * const name,
/*
* Returns 0 if not found, -1 on failure, and 1 on success
*/
static
inline
int
search_dirblock
(
struct
buffer_head
*
bh
,
static
inline
int
search_dirblock
(
struct
buffer_head
*
bh
,
struct
inode
*
dir
,
struct
dentry
*
dentry
,
unsigned
long
offset
,
...
...
@@ -855,9 +855,9 @@ static inline int search_dirblock(struct buffer_head * bh,
static
struct
buffer_head
*
ext4_find_entry
(
struct
dentry
*
dentry
,
struct
ext4_dir_entry_2
**
res_dir
)
{
struct
super_block
*
sb
;
struct
buffer_head
*
bh_use
[
NAMEI_RA_SIZE
];
struct
buffer_head
*
bh
,
*
ret
=
NULL
;
struct
super_block
*
sb
;
struct
buffer_head
*
bh_use
[
NAMEI_RA_SIZE
];
struct
buffer_head
*
bh
,
*
ret
=
NULL
;
ext4_lblk_t
start
,
block
,
b
;
int
ra_max
=
0
;
/* Number of bh's in the readahead
buffer, bh_use[] */
...
...
@@ -958,7 +958,7 @@ static struct buffer_head * ext4_find_entry (struct dentry *dentry,
cleanup_and_exit:
/* Clean up the read-ahead blocks */
for
(;
ra_ptr
<
ra_max
;
ra_ptr
++
)
brelse
(
bh_use
[
ra_ptr
]);
brelse
(
bh_use
[
ra_ptr
]);
return
ret
;
}
...
...
@@ -1012,7 +1012,7 @@ static struct buffer_head * ext4_dx_find_entry(struct dentry *dentry,
return
bh
;
}
}
brelse
(
bh
);
brelse
(
bh
);
/* Check to see if we should continue to search */
retval
=
ext4_htree_next_block
(
dir
,
hash
,
frame
,
frames
,
NULL
);
...
...
@@ -1032,11 +1032,11 @@ static struct buffer_head * ext4_dx_find_entry(struct dentry *dentry,
return
NULL
;
}
static
struct
dentry
*
ext4_lookup
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
static
struct
dentry
*
ext4_lookup
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
{
struct
inode
*
inode
;
struct
ext4_dir_entry_2
*
de
;
struct
buffer_head
*
bh
;
struct
inode
*
inode
;
struct
ext4_dir_entry_2
*
de
;
struct
buffer_head
*
bh
;
if
(
dentry
->
d_name
.
len
>
EXT4_NAME_LEN
)
return
ERR_PTR
(
-
ENAMETOOLONG
);
...
...
@@ -1045,7 +1045,7 @@ static struct dentry *ext4_lookup(struct inode * dir, struct dentry *dentry, str
inode
=
NULL
;
if
(
bh
)
{
unsigned
long
ino
=
le32_to_cpu
(
de
->
inode
);
brelse
(
bh
);
brelse
(
bh
);
if
(
!
ext4_valid_inum
(
dir
->
i_sb
,
ino
))
{
ext4_error
(
dir
->
i_sb
,
"ext4_lookup"
,
"bad inode number: %lu"
,
ino
);
...
...
@@ -1203,10 +1203,10 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
/* create map in the end of data2 block */
map
=
(
struct
dx_map_entry
*
)
(
data2
+
blocksize
);
count
=
dx_make_map
((
struct
ext4_dir_entry_2
*
)
data1
,
count
=
dx_make_map
((
struct
ext4_dir_entry_2
*
)
data1
,
blocksize
,
hinfo
,
map
);
map
-=
count
;
dx_sort_map
(
map
,
count
);
dx_sort_map
(
map
,
count
);
/* Split the existing block in the middle, size-wise */
size
=
0
;
move
=
0
;
...
...
@@ -1227,7 +1227,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
/* Fancy dance to stay within two buffers */
de2
=
dx_move_dirents
(
data1
,
data2
,
map
+
split
,
count
-
split
);
de
=
dx_pack_dirents
(
data1
,
blocksize
);
de
=
dx_pack_dirents
(
data1
,
blocksize
);
de
->
rec_len
=
ext4_rec_len_to_disk
(
data1
+
blocksize
-
(
char
*
)
de
);
de2
->
rec_len
=
ext4_rec_len_to_disk
(
data2
+
blocksize
-
(
char
*
)
de2
);
dxtrace
(
dx_show_leaf
(
hinfo
,
(
struct
ext4_dir_entry_2
*
)
data1
,
blocksize
,
1
));
...
...
@@ -1239,15 +1239,15 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
swap
(
*
bh
,
bh2
);
de
=
de2
;
}
dx_insert_block
(
frame
,
hash2
+
continued
,
newblock
);
err
=
ext4_journal_dirty_metadata
(
handle
,
bh2
);
dx_insert_block
(
frame
,
hash2
+
continued
,
newblock
);
err
=
ext4_journal_dirty_metadata
(
handle
,
bh2
);
if
(
err
)
goto
journal_error
;
err
=
ext4_journal_dirty_metadata
(
handle
,
frame
->
bh
);
err
=
ext4_journal_dirty_metadata
(
handle
,
frame
->
bh
);
if
(
err
)
goto
journal_error
;
brelse
(
bh2
);
dxtrace
(
dx_show_index
(
"frame"
,
frame
->
entries
));
brelse
(
bh2
);
dxtrace
(
dx_show_index
(
"frame"
,
frame
->
entries
));
return
de
;
journal_error:
...
...
@@ -1273,7 +1273,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
*/
static
int
add_dirent_to_buf
(
handle_t
*
handle
,
struct
dentry
*
dentry
,
struct
inode
*
inode
,
struct
ext4_dir_entry_2
*
de
,
struct
buffer_head
*
bh
)
struct
buffer_head
*
bh
)
{
struct
inode
*
dir
=
dentry
->
d_parent
->
d_inode
;
const
char
*
name
=
dentry
->
d_name
.
name
;
...
...
@@ -1290,11 +1290,11 @@ static int add_dirent_to_buf(handle_t *handle, struct dentry *dentry,
while
((
char
*
)
de
<=
top
)
{
if
(
!
ext4_check_dir_entry
(
"ext4_add_entry"
,
dir
,
de
,
bh
,
offset
))
{
brelse
(
bh
);
brelse
(
bh
);
return
-
EIO
;
}
if
(
ext4_match
(
namelen
,
name
,
de
))
{
brelse
(
bh
);
if
(
ext4_match
(
namelen
,
name
,
de
))
{
brelse
(
bh
);
return
-
EEXIST
;
}
nlen
=
EXT4_DIR_REC_LEN
(
de
->
name_len
);
...
...
@@ -1331,7 +1331,7 @@ static int add_dirent_to_buf(handle_t *handle, struct dentry *dentry,
}
else
de
->
inode
=
0
;
de
->
name_len
=
namelen
;
memcpy
(
de
->
name
,
name
,
namelen
);
memcpy
(
de
->
name
,
name
,
namelen
);
/*
* XXX shouldn't update any times until successful
* completion of syscall, but too many callers depend
...
...
@@ -1388,7 +1388,7 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
}
root
=
(
struct
dx_root
*
)
bh
->
b_data
;
bh2
=
ext4_append
(
handle
,
dir
,
&
block
,
&
retval
);
bh2
=
ext4_append
(
handle
,
dir
,
&
block
,
&
retval
);
if
(
!
(
bh2
))
{
brelse
(
bh
);
return
retval
;
...
...
@@ -1414,9 +1414,9 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
root
->
info
.
info_length
=
sizeof
(
root
->
info
);
root
->
info
.
hash_version
=
EXT4_SB
(
dir
->
i_sb
)
->
s_def_hash_version
;
entries
=
root
->
entries
;
dx_set_block
(
entries
,
1
);
dx_set_count
(
entries
,
1
);
dx_set_limit
(
entries
,
dx_root_limit
(
dir
,
sizeof
(
root
->
info
)));
dx_set_block
(
entries
,
1
);
dx_set_count
(
entries
,
1
);
dx_set_limit
(
entries
,
dx_root_limit
(
dir
,
sizeof
(
root
->
info
)));
/* Initialize as for dx_probe */
hinfo
.
hash_version
=
root
->
info
.
hash_version
;
...
...
@@ -1445,14 +1445,14 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
* may not sleep between calling this and putting something into
* the entry, as someone else might have used it while you slept.
*/
static
int
ext4_add_entry
(
handle_t
*
handle
,
struct
dentry
*
dentry
,
static
int
ext4_add_entry
(
handle_t
*
handle
,
struct
dentry
*
dentry
,
struct
inode
*
inode
)
{
struct
inode
*
dir
=
dentry
->
d_parent
->
d_inode
;
unsigned
long
offset
;
struct
buffer_head
*
bh
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
;
struct
super_block
*
sb
;
struct
super_block
*
sb
;
int
retval
;
int
dx_fallback
=
0
;
unsigned
blocksize
;
...
...
@@ -1502,9 +1502,9 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
struct
dx_frame
frames
[
2
],
*
frame
;
struct
dx_entry
*
entries
,
*
at
;
struct
dx_hash_info
hinfo
;
struct
buffer_head
*
bh
;
struct
buffer_head
*
bh
;
struct
inode
*
dir
=
dentry
->
d_parent
->
d_inode
;
struct
super_block
*
sb
=
dir
->
i_sb
;
struct
super_block
*
sb
=
dir
->
i_sb
;
struct
ext4_dir_entry_2
*
de
;
int
err
;
...
...
@@ -1570,11 +1570,11 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
if
(
err
)
goto
journal_error
;
memcpy
((
char
*
)
entries2
,
(
char
*
)
(
entries
+
icount1
),
memcpy
((
char
*
)
entries2
,
(
char
*
)
(
entries
+
icount1
),
icount2
*
sizeof
(
struct
dx_entry
));
dx_set_count
(
entries
,
icount1
);
dx_set_count
(
entries2
,
icount2
);
dx_set_limit
(
entries2
,
dx_node_limit
(
dir
));
dx_set_count
(
entries
,
icount1
);
dx_set_count
(
entries2
,
icount2
);
dx_set_limit
(
entries2
,
dx_node_limit
(
dir
));
/* Which index block gets the new entry? */
if
(
at
-
entries
>=
icount1
)
{
...
...
@@ -1582,9 +1582,9 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
frame
->
entries
=
entries
=
entries2
;
swap
(
frame
->
bh
,
bh2
);
}
dx_insert_block
(
frames
+
0
,
hash2
,
newblock
);
dxtrace
(
dx_show_index
(
"node"
,
frames
[
1
].
entries
));
dxtrace
(
dx_show_index
(
"node"
,
dx_insert_block
(
frames
+
0
,
hash2
,
newblock
);
dxtrace
(
dx_show_index
(
"node"
,
frames
[
1
].
entries
));
dxtrace
(
dx_show_index
(
"node"
,
((
struct
dx_node
*
)
bh2
->
b_data
)
->
entries
));
err
=
ext4_journal_dirty_metadata
(
handle
,
bh2
);
if
(
err
)
...
...
@@ -1634,12 +1634,12 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
* ext4_delete_entry deletes a directory entry by merging it with the
* previous entry
*/
static
int
ext4_delete_entry
(
handle_t
*
handle
,
struct
inode
*
dir
,
struct
ext4_dir_entry_2
*
de_del
,
struct
buffer_head
*
bh
)
static
int
ext4_delete_entry
(
handle_t
*
handle
,
struct
inode
*
dir
,
struct
ext4_dir_entry_2
*
de_del
,
struct
buffer_head
*
bh
)
{
struct
ext4_dir_entry_2
*
de
,
*
pde
;
struct
ext4_dir_entry_2
*
de
,
*
pde
;
int
i
;
i
=
0
;
...
...
@@ -1720,11 +1720,11 @@ static int ext4_add_nondir(handle_t *handle,
* If the create succeeds, we fill in the inode information
* with d_instantiate().
*/
static
int
ext4_create
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
,
static
int
ext4_create
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
,
struct
nameidata
*
nd
)
{
handle_t
*
handle
;
struct
inode
*
inode
;
struct
inode
*
inode
;
int
err
,
retries
=
0
;
retry:
...
...
@@ -1751,7 +1751,7 @@ static int ext4_create (struct inode * dir, struct dentry * dentry, int mode,
return
err
;
}
static
int
ext4_mknod
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
static
int
ext4_mknod
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
,
dev_t
rdev
)
{
handle_t
*
handle
;
...
...
@@ -1771,7 +1771,7 @@ static int ext4_mknod (struct inode * dir, struct dentry *dentry,
if
(
IS_DIRSYNC
(
dir
))
handle
->
h_sync
=
1
;
inode
=
ext4_new_inode
(
handle
,
dir
,
mode
);
inode
=
ext4_new_inode
(
handle
,
dir
,
mode
);
err
=
PTR_ERR
(
inode
);
if
(
!
IS_ERR
(
inode
))
{
init_special_inode
(
inode
,
inode
->
i_mode
,
rdev
);
...
...
@@ -1786,12 +1786,12 @@ static int ext4_mknod (struct inode * dir, struct dentry *dentry,
return
err
;
}
static
int
ext4_mkdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
)
static
int
ext4_mkdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
int
mode
)
{
handle_t
*
handle
;
struct
inode
*
inode
;
struct
buffer_head
*
dir_block
;
struct
ext4_dir_entry_2
*
de
;
struct
inode
*
inode
;
struct
buffer_head
*
dir_block
;
struct
ext4_dir_entry_2
*
de
;
int
err
,
retries
=
0
;
if
(
EXT4_DIR_LINK_MAX
(
dir
))
...
...
@@ -1807,7 +1807,7 @@ static int ext4_mkdir(struct inode * dir, struct dentry * dentry, int mode)
if
(
IS_DIRSYNC
(
dir
))
handle
->
h_sync
=
1
;
inode
=
ext4_new_inode
(
handle
,
dir
,
S_IFDIR
|
mode
);
inode
=
ext4_new_inode
(
handle
,
dir
,
S_IFDIR
|
mode
);
err
=
PTR_ERR
(
inode
);
if
(
IS_ERR
(
inode
))
goto
out_stop
;
...
...
@@ -1815,7 +1815,7 @@ static int ext4_mkdir(struct inode * dir, struct dentry * dentry, int mode)
inode
->
i_op
=
&
ext4_dir_inode_operations
;
inode
->
i_fop
=
&
ext4_dir_operations
;
inode
->
i_size
=
EXT4_I
(
inode
)
->
i_disksize
=
inode
->
i_sb
->
s_blocksize
;
dir_block
=
ext4_bread
(
handle
,
inode
,
0
,
1
,
&
err
);
dir_block
=
ext4_bread
(
handle
,
inode
,
0
,
1
,
&
err
);
if
(
!
dir_block
)
goto
out_clear_inode
;
BUFFER_TRACE
(
dir_block
,
"get_write_access"
);
...
...
@@ -1824,26 +1824,26 @@ static int ext4_mkdir(struct inode * dir, struct dentry * dentry, int mode)
de
->
inode
=
cpu_to_le32
(
inode
->
i_ino
);
de
->
name_len
=
1
;
de
->
rec_len
=
ext4_rec_len_to_disk
(
EXT4_DIR_REC_LEN
(
de
->
name_len
));
strcpy
(
de
->
name
,
"."
);
strcpy
(
de
->
name
,
"."
);
ext4_set_de_type
(
dir
->
i_sb
,
de
,
S_IFDIR
);
de
=
ext4_next_entry
(
de
);
de
->
inode
=
cpu_to_le32
(
dir
->
i_ino
);
de
->
rec_len
=
ext4_rec_len_to_disk
(
inode
->
i_sb
->
s_blocksize
-
EXT4_DIR_REC_LEN
(
1
));
de
->
name_len
=
2
;
strcpy
(
de
->
name
,
".."
);
strcpy
(
de
->
name
,
".."
);
ext4_set_de_type
(
dir
->
i_sb
,
de
,
S_IFDIR
);
inode
->
i_nlink
=
2
;
BUFFER_TRACE
(
dir_block
,
"call ext4_journal_dirty_metadata"
);
ext4_journal_dirty_metadata
(
handle
,
dir_block
);
brelse
(
dir_block
);
brelse
(
dir_block
);
ext4_mark_inode_dirty
(
handle
,
inode
);
err
=
ext4_add_entry
(
handle
,
dentry
,
inode
);
err
=
ext4_add_entry
(
handle
,
dentry
,
inode
);
if
(
err
)
{
out_clear_inode:
clear_nlink
(
inode
);
ext4_mark_inode_dirty
(
handle
,
inode
);
iput
(
inode
);
iput
(
inode
);
goto
out_stop
;
}
ext4_inc_count
(
handle
,
dir
);
...
...
@@ -1860,17 +1860,17 @@ static int ext4_mkdir(struct inode * dir, struct dentry * dentry, int mode)
/*
* routine to check that the specified directory is empty (for rmdir)
*/
static
int
empty_dir
(
struct
inode
*
inode
)
static
int
empty_dir
(
struct
inode
*
inode
)
{
unsigned
long
offset
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
,
*
de1
;
struct
super_block
*
sb
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
,
*
de1
;
struct
super_block
*
sb
;
int
err
=
0
;
sb
=
inode
->
i_sb
;
if
(
inode
->
i_size
<
EXT4_DIR_REC_LEN
(
1
)
+
EXT4_DIR_REC_LEN
(
2
)
||
!
(
bh
=
ext4_bread
(
NULL
,
inode
,
0
,
0
,
&
err
)))
{
!
(
bh
=
ext4_bread
(
NULL
,
inode
,
0
,
0
,
&
err
)))
{
if
(
err
)
ext4_error
(
inode
->
i_sb
,
__func__
,
"error %d reading directory #%lu offset 0"
,
...
...
@@ -1885,23 +1885,23 @@ static int empty_dir (struct inode * inode)
de1
=
ext4_next_entry
(
de
);
if
(
le32_to_cpu
(
de
->
inode
)
!=
inode
->
i_ino
||
!
le32_to_cpu
(
de1
->
inode
)
||
strcmp
(
"."
,
de
->
name
)
||
strcmp
(
".."
,
de1
->
name
))
{
ext4_warning
(
inode
->
i_sb
,
"empty_dir"
,
strcmp
(
"."
,
de
->
name
)
||
strcmp
(
".."
,
de1
->
name
))
{
ext4_warning
(
inode
->
i_sb
,
"empty_dir"
,
"bad directory (dir #%lu) - no `.' or `..'"
,
inode
->
i_ino
);
brelse
(
bh
);
brelse
(
bh
);
return
1
;
}
offset
=
ext4_rec_len_from_disk
(
de
->
rec_len
)
+
ext4_rec_len_from_disk
(
de1
->
rec_len
);
de
=
ext4_next_entry
(
de1
);
while
(
offset
<
inode
->
i_size
)
{
while
(
offset
<
inode
->
i_size
)
{
if
(
!
bh
||
(
void
*
)
de
>=
(
void
*
)
(
bh
->
b_data
+
sb
->
s_blocksize
))
{
err
=
0
;
brelse
(
bh
);
bh
=
ext4_bread
(
NULL
,
inode
,
brelse
(
bh
);
bh
=
ext4_bread
(
NULL
,
inode
,
offset
>>
EXT4_BLOCK_SIZE_BITS
(
sb
),
0
,
&
err
);
if
(
!
bh
)
{
if
(
err
)
...
...
@@ -1921,13 +1921,13 @@ static int empty_dir (struct inode * inode)
continue
;
}
if
(
le32_to_cpu
(
de
->
inode
))
{
brelse
(
bh
);
brelse
(
bh
);
return
0
;
}
offset
+=
ext4_rec_len_from_disk
(
de
->
rec_len
);
de
=
ext4_next_entry
(
de
);
}
brelse
(
bh
);
brelse
(
bh
);
return
1
;
}
...
...
@@ -1958,7 +1958,7 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode)
* ->i_nlink. For, say it, character device. Not a regular file,
* not a directory, not a symlink and ->i_nlink > 0.
*/
J_ASSERT
((
S_ISREG
(
inode
->
i_mode
)
||
S_ISDIR
(
inode
->
i_mode
)
||
J_ASSERT
((
S_ISREG
(
inode
->
i_mode
)
||
S_ISDIR
(
inode
->
i_mode
)
||
S_ISLNK
(
inode
->
i_mode
))
||
inode
->
i_nlink
==
0
);
BUFFER_TRACE
(
EXT4_SB
(
sb
)
->
s_sbh
,
"get_write_access"
);
...
...
@@ -2073,12 +2073,12 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode)
goto
out_err
;
}
static
int
ext4_rmdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
static
int
ext4_rmdir
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
int
retval
;
struct
inode
*
inode
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
;
struct
inode
*
inode
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
;
handle_t
*
handle
;
/* Initialize quotas before so that eventual writes go in
...
...
@@ -2089,7 +2089,7 @@ static int ext4_rmdir (struct inode * dir, struct dentry *dentry)
return
PTR_ERR
(
handle
);
retval
=
-
ENOENT
;
bh
=
ext4_find_entry
(
dentry
,
&
de
);
bh
=
ext4_find_entry
(
dentry
,
&
de
);
if
(
!
bh
)
goto
end_rmdir
;
...
...
@@ -2103,14 +2103,14 @@ static int ext4_rmdir (struct inode * dir, struct dentry *dentry)
goto
end_rmdir
;
retval
=
-
ENOTEMPTY
;
if
(
!
empty_dir
(
inode
))
if
(
!
empty_dir
(
inode
))
goto
end_rmdir
;
retval
=
ext4_delete_entry
(
handle
,
dir
,
de
,
bh
);
if
(
retval
)
goto
end_rmdir
;
if
(
!
EXT4_DIR_LINK_EMPTY
(
inode
))
ext4_warning
(
inode
->
i_sb
,
"ext4_rmdir"
,
ext4_warning
(
inode
->
i_sb
,
"ext4_rmdir"
,
"empty directory has too many links (%d)"
,
inode
->
i_nlink
);
inode
->
i_version
++
;
...
...
@@ -2128,16 +2128,16 @@ static int ext4_rmdir (struct inode * dir, struct dentry *dentry)
end_rmdir:
ext4_journal_stop
(
handle
);
brelse
(
bh
);
brelse
(
bh
);
return
retval
;
}
static
int
ext4_unlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
static
int
ext4_unlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
int
retval
;
struct
inode
*
inode
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
;
struct
inode
*
inode
;
struct
buffer_head
*
bh
;
struct
ext4_dir_entry_2
*
de
;
handle_t
*
handle
;
/* Initialize quotas before so that eventual writes go
...
...
@@ -2151,7 +2151,7 @@ static int ext4_unlink(struct inode * dir, struct dentry *dentry)
handle
->
h_sync
=
1
;
retval
=
-
ENOENT
;
bh
=
ext4_find_entry
(
dentry
,
&
de
);
bh
=
ext4_find_entry
(
dentry
,
&
de
);
if
(
!
bh
)
goto
end_unlink
;
...
...
@@ -2162,7 +2162,7 @@ static int ext4_unlink(struct inode * dir, struct dentry *dentry)
goto
end_unlink
;
if
(
!
inode
->
i_nlink
)
{
ext4_warning
(
inode
->
i_sb
,
"ext4_unlink"
,
ext4_warning
(
inode
->
i_sb
,
"ext4_unlink"
,
"Deleting nonexistent file (%lu), %d"
,
inode
->
i_ino
,
inode
->
i_nlink
);
inode
->
i_nlink
=
1
;
...
...
@@ -2182,15 +2182,15 @@ static int ext4_unlink(struct inode * dir, struct dentry *dentry)
end_unlink:
ext4_journal_stop
(
handle
);
brelse
(
bh
);
brelse
(
bh
);
return
retval
;
}
static
int
ext4_symlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
const
char
*
symname
)
static
int
ext4_symlink
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
const
char
*
symname
)
{
handle_t
*
handle
;
struct
inode
*
inode
;
struct
inode
*
inode
;
int
l
,
err
,
retries
=
0
;
l
=
strlen
(
symname
)
+
1
;
...
...
@@ -2207,12 +2207,12 @@ static int ext4_symlink (struct inode * dir,
if
(
IS_DIRSYNC
(
dir
))
handle
->
h_sync
=
1
;
inode
=
ext4_new_inode
(
handle
,
dir
,
S_IFLNK
|
S_IRWXUGO
);
inode
=
ext4_new_inode
(
handle
,
dir
,
S_IFLNK
|
S_IRWXUGO
);
err
=
PTR_ERR
(
inode
);
if
(
IS_ERR
(
inode
))
goto
out_stop
;
if
(
l
>
sizeof
(
EXT4_I
(
inode
)
->
i_data
))
{
if
(
l
>
sizeof
(
EXT4_I
(
inode
)
->
i_data
))
{
inode
->
i_op
=
&
ext4_symlink_inode_operations
;
ext4_set_aops
(
inode
);
/*
...
...
@@ -2225,14 +2225,14 @@ static int ext4_symlink (struct inode * dir,
if
(
err
)
{
clear_nlink
(
inode
);
ext4_mark_inode_dirty
(
handle
,
inode
);
iput
(
inode
);
iput
(
inode
);
goto
out_stop
;
}
}
else
{
/* clear the extent format for fast symlink */
EXT4_I
(
inode
)
->
i_flags
&=
~
EXT4_EXTENTS_FL
;
inode
->
i_op
=
&
ext4_fast_symlink_inode_operations
;
memcpy
((
char
*
)
&
EXT4_I
(
inode
)
->
i_data
,
symname
,
l
);
memcpy
((
char
*
)
&
EXT4_I
(
inode
)
->
i_data
,
symname
,
l
);
inode
->
i_size
=
l
-
1
;
}
EXT4_I
(
inode
)
->
i_disksize
=
inode
->
i_size
;
...
...
@@ -2244,8 +2244,8 @@ static int ext4_symlink (struct inode * dir,
return
err
;
}
static
int
ext4_link
(
struct
dentry
*
old_dentry
,
struct
inode
*
dir
,
struct
dentry
*
dentry
)
static
int
ext4_link
(
struct
dentry
*
old_dentry
,
struct
inode
*
dir
,
struct
dentry
*
dentry
)
{
handle_t
*
handle
;
struct
inode
*
inode
=
old_dentry
->
d_inode
;
...
...
@@ -2288,13 +2288,13 @@ static int ext4_link (struct dentry * old_dentry,
* Anybody can rename anything with this: the permission checks are left to the
* higher-level routines.
*/
static
int
ext4_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
static
int
ext4_rename
(
struct
inode
*
old_dir
,
struct
dentry
*
old_dentry
,
struct
inode
*
new_dir
,
struct
dentry
*
new_dentry
)
{
handle_t
*
handle
;
struct
inode
*
old_inode
,
*
new_inode
;
struct
buffer_head
*
old_bh
,
*
new_bh
,
*
dir_bh
;
struct
ext4_dir_entry_2
*
old_de
,
*
new_de
;
struct
inode
*
old_inode
,
*
new_inode
;
struct
buffer_head
*
old_bh
,
*
new_bh
,
*
dir_bh
;
struct
ext4_dir_entry_2
*
old_de
,
*
new_de
;
int
retval
;
old_bh
=
new_bh
=
dir_bh
=
NULL
;
...
...
@@ -2312,7 +2312,7 @@ static int ext4_rename (struct inode * old_dir, struct dentry *old_dentry,
if
(
IS_DIRSYNC
(
old_dir
)
||
IS_DIRSYNC
(
new_dir
))
handle
->
h_sync
=
1
;
old_bh
=
ext4_find_entry
(
old_dentry
,
&
old_de
);
old_bh
=
ext4_find_entry
(
old_dentry
,
&
old_de
);
/*
* Check for inode number is _not_ due to possible IO errors.
* We might rmdir the source, keep it as pwd of some process
...
...
@@ -2325,32 +2325,32 @@ static int ext4_rename (struct inode * old_dir, struct dentry *old_dentry,
goto
end_rename
;
new_inode
=
new_dentry
->
d_inode
;
new_bh
=
ext4_find_entry
(
new_dentry
,
&
new_de
);
new_bh
=
ext4_find_entry
(
new_dentry
,
&
new_de
);
if
(
new_bh
)
{
if
(
!
new_inode
)
{
brelse
(
new_bh
);
brelse
(
new_bh
);
new_bh
=
NULL
;
}
}
if
(
S_ISDIR
(
old_inode
->
i_mode
))
{
if
(
new_inode
)
{
retval
=
-
ENOTEMPTY
;
if
(
!
empty_dir
(
new_inode
))
if
(
!
empty_dir
(
new_inode
))
goto
end_rename
;
}
retval
=
-
EIO
;
dir_bh
=
ext4_bread
(
handle
,
old_inode
,
0
,
0
,
&
retval
);
dir_bh
=
ext4_bread
(
handle
,
old_inode
,
0
,
0
,
&
retval
);
if
(
!
dir_bh
)
goto
end_rename
;
if
(
le32_to_cpu
(
PARENT_INO
(
dir_bh
->
b_data
))
!=
old_dir
->
i_ino
)
goto
end_rename
;
retval
=
-
EMLINK
;
if
(
!
new_inode
&&
new_dir
!=
old_dir
&&
if
(
!
new_inode
&&
new_dir
!=
old_dir
&&
new_dir
->
i_nlink
>=
EXT4_LINK_MAX
)
goto
end_rename
;
}
if
(
!
new_bh
)
{
retval
=
ext4_add_entry
(
handle
,
new_dentry
,
old_inode
);
retval
=
ext4_add_entry
(
handle
,
new_dentry
,
old_inode
);
if
(
retval
)
goto
end_rename
;
}
else
{
...
...
@@ -2437,9 +2437,9 @@ static int ext4_rename (struct inode * old_dir, struct dentry *old_dentry,
retval
=
0
;
end_rename:
brelse
(
dir_bh
);
brelse
(
old_bh
);
brelse
(
new_bh
);
brelse
(
dir_bh
);
brelse
(
old_bh
);
brelse
(
new_bh
);
ext4_journal_stop
(
handle
);
return
retval
;
}
...
...
fs/ext4/resize.c
View file @
af5bc92d
...
...
@@ -964,7 +964,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
ext4_group_t
o_groups_count
;
ext4_grpblk_t
last
;
ext4_grpblk_t
add
;
struct
buffer_head
*
bh
;
struct
buffer_head
*
bh
;
handle_t
*
handle
;
int
err
;
unsigned
long
freed_blocks
;
...
...
fs/ext4/super.c
View file @
af5bc92d
...
...
@@ -654,7 +654,7 @@ static inline void ext4_show_quota_options(struct seq_file *seq,
if
(
sbi
->
s_jquota_fmt
)
seq_printf
(
seq
,
",jqfmt=%s"
,
(
sbi
->
s_jquota_fmt
==
QFMT_VFS_OLD
)
?
"vfsold"
:
"vfsv0"
);
(
sbi
->
s_jquota_fmt
==
QFMT_VFS_OLD
)
?
"vfsold"
:
"vfsv0"
);
if
(
sbi
->
s_qf_names
[
USRQUOTA
])
seq_printf
(
seq
,
",usrjquota=%s"
,
sbi
->
s_qf_names
[
USRQUOTA
]);
...
...
@@ -822,7 +822,7 @@ static struct dentry *ext4_fh_to_parent(struct super_block *sb, struct fid *fid,
}
#ifdef CONFIG_QUOTA
#define QTYPE2NAME(t) ((t) == USRQUOTA
?"user":
"group")
#define QTYPE2NAME(t) ((t) == USRQUOTA
? "user" :
"group")
#define QTYPE2MOPT(on, t) ((t) == USRQUOTA?((on)##USRJQUOTA):((on)##GRPJQUOTA))
static
int
ext4_dquot_initialize
(
struct
inode
*
inode
,
int
type
);
...
...
@@ -1586,7 +1586,7 @@ static int ext4_check_descriptors(struct super_block *sb)
if
(
EXT4_HAS_INCOMPAT_FEATURE
(
sb
,
EXT4_FEATURE_INCOMPAT_FLEX_BG
))
flexbg_flag
=
1
;
ext4_debug
(
"Checking group descriptors"
);
ext4_debug
(
"Checking group descriptors"
);
for
(
i
=
0
;
i
<
sbi
->
s_groups_count
;
i
++
)
{
struct
ext4_group_desc
*
gdp
=
ext4_get_group_desc
(
sb
,
i
,
NULL
);
...
...
fs/ext4/symlink.c
View file @
af5bc92d
...
...
@@ -23,10 +23,10 @@
#include "ext4.h"
#include "xattr.h"
static
void
*
ext4_follow_link
(
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
static
void
*
ext4_follow_link
(
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
{
struct
ext4_inode_info
*
ei
=
EXT4_I
(
dentry
->
d_inode
);
nd_set_link
(
nd
,
(
char
*
)
ei
->
i_data
);
nd_set_link
(
nd
,
(
char
*
)
ei
->
i_data
);
return
NULL
;
}
...
...
fs/ext4/xattr.h
View file @
af5bc92d
...
...
@@ -51,8 +51,8 @@ struct ext4_xattr_entry {
(((name_len) + EXT4_XATTR_ROUND + \
sizeof(struct ext4_xattr_entry)) & ~EXT4_XATTR_ROUND)
#define EXT4_XATTR_NEXT(entry) \
(
(struct ext4_xattr_entry *)( \
(char *)(entry) + EXT4_XATTR_LEN((entry)->e_name_len))
)
((struct ext4_xattr_entry *)( \
(char *)(entry) + EXT4_XATTR_LEN((entry)->e_name_len))
)
#define EXT4_XATTR_SIZE(size) \
(((size) + EXT4_XATTR_ROUND) & ~EXT4_XATTR_ROUND)
...
...
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