Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
9bffad1e
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
9bffad1e
编写于
6月 17, 2009
作者:
T
Theodore Ts'o
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ext4: convert instrumentation from markers to tracepoints
Signed-off-by:
N
"Theodore Ts'o"
<
tytso@mit.edu
>
上级
879c5e6b
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
774 addition
and
121 deletion
+774
-121
fs/ext4/fsync.c
fs/ext4/fsync.c
+4
-4
fs/ext4/ialloc.c
fs/ext4/ialloc.c
+6
-9
fs/ext4/inode.c
fs/ext4/inode.c
+14
-55
fs/ext4/mballoc.c
fs/ext4/mballoc.c
+27
-50
fs/ext4/mballoc.h
fs/ext4/mballoc.h
+0
-1
fs/ext4/super.c
fs/ext4/super.c
+4
-2
include/trace/events/ext4.h
include/trace/events/ext4.h
+719
-0
未找到文件。
fs/ext4/fsync.c
浏览文件 @
9bffad1e
...
@@ -28,10 +28,12 @@
...
@@ -28,10 +28,12 @@
#include <linux/writeback.h>
#include <linux/writeback.h>
#include <linux/jbd2.h>
#include <linux/jbd2.h>
#include <linux/blkdev.h>
#include <linux/blkdev.h>
#include <linux/marker.h>
#include "ext4.h"
#include "ext4.h"
#include "ext4_jbd2.h"
#include "ext4_jbd2.h"
#include <trace/events/ext4.h>
/*
/*
* akpm: A new design for ext4_sync_file().
* akpm: A new design for ext4_sync_file().
*
*
...
@@ -52,9 +54,7 @@ int ext4_sync_file(struct file *file, struct dentry *dentry, int datasync)
...
@@ -52,9 +54,7 @@ int ext4_sync_file(struct file *file, struct dentry *dentry, int datasync)
J_ASSERT
(
ext4_journal_current_handle
()
==
NULL
);
J_ASSERT
(
ext4_journal_current_handle
()
==
NULL
);
trace_mark
(
ext4_sync_file
,
"dev %s datasync %d ino %ld parent %ld"
,
trace_ext4_sync_file
(
file
,
dentry
,
datasync
);
inode
->
i_sb
->
s_id
,
datasync
,
inode
->
i_ino
,
dentry
->
d_parent
->
d_inode
->
i_ino
);
/*
/*
* data=writeback:
* data=writeback:
...
...
fs/ext4/ialloc.c
浏览文件 @
9bffad1e
...
@@ -23,11 +23,14 @@
...
@@ -23,11 +23,14 @@
#include <linux/bitops.h>
#include <linux/bitops.h>
#include <linux/blkdev.h>
#include <linux/blkdev.h>
#include <asm/byteorder.h>
#include <asm/byteorder.h>
#include "ext4.h"
#include "ext4.h"
#include "ext4_jbd2.h"
#include "ext4_jbd2.h"
#include "xattr.h"
#include "xattr.h"
#include "acl.h"
#include "acl.h"
#include <trace/events/ext4.h>
/*
/*
* ialloc.c contains the inodes allocation and deallocation routines
* ialloc.c contains the inodes allocation and deallocation routines
*/
*/
...
@@ -208,11 +211,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
...
@@ -208,11 +211,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
ino
=
inode
->
i_ino
;
ino
=
inode
->
i_ino
;
ext4_debug
(
"freeing inode %lu
\n
"
,
ino
);
ext4_debug
(
"freeing inode %lu
\n
"
,
ino
);
trace_mark
(
ext4_free_inode
,
trace_ext4_free_inode
(
inode
);
"dev %s ino %lu mode %d uid %lu gid %lu bocks %llu"
,
sb
->
s_id
,
inode
->
i_ino
,
inode
->
i_mode
,
(
unsigned
long
)
inode
->
i_uid
,
(
unsigned
long
)
inode
->
i_gid
,
(
unsigned
long
long
)
inode
->
i_blocks
);
/*
/*
* Note: we must free any quota before locking the superblock,
* Note: we must free any quota before locking the superblock,
...
@@ -815,8 +814,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
...
@@ -815,8 +814,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
sb
=
dir
->
i_sb
;
sb
=
dir
->
i_sb
;
ngroups
=
ext4_get_groups_count
(
sb
);
ngroups
=
ext4_get_groups_count
(
sb
);
trace_mark
(
ext4_request_inode
,
"dev %s dir %lu mode %d"
,
sb
->
s_id
,
trace_ext4_request_inode
(
dir
,
mode
);
dir
->
i_ino
,
mode
);
inode
=
new_inode
(
sb
);
inode
=
new_inode
(
sb
);
if
(
!
inode
)
if
(
!
inode
)
return
ERR_PTR
(
-
ENOMEM
);
return
ERR_PTR
(
-
ENOMEM
);
...
@@ -1047,8 +1045,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
...
@@ -1047,8 +1045,7 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
}
}
ext4_debug
(
"allocating inode %lu
\n
"
,
inode
->
i_ino
);
ext4_debug
(
"allocating inode %lu
\n
"
,
inode
->
i_ino
);
trace_mark
(
ext4_allocate_inode
,
"dev %s ino %lu dir %lu mode %d"
,
trace_ext4_allocate_inode
(
inode
,
dir
,
mode
);
sb
->
s_id
,
inode
->
i_ino
,
dir
->
i_ino
,
mode
);
goto
really_out
;
goto
really_out
;
fail:
fail:
ext4_std_error
(
sb
,
err
);
ext4_std_error
(
sb
,
err
);
...
...
fs/ext4/inode.c
浏览文件 @
9bffad1e
...
@@ -37,11 +37,14 @@
...
@@ -37,11 +37,14 @@
#include <linux/namei.h>
#include <linux/namei.h>
#include <linux/uio.h>
#include <linux/uio.h>
#include <linux/bio.h>
#include <linux/bio.h>
#include "ext4_jbd2.h"
#include "ext4_jbd2.h"
#include "xattr.h"
#include "xattr.h"
#include "acl.h"
#include "acl.h"
#include "ext4_extents.h"
#include "ext4_extents.h"
#include <trace/events/ext4.h>
#define MPAGE_DA_EXTENT_TAIL 0x01
#define MPAGE_DA_EXTENT_TAIL 0x01
static
inline
int
ext4_begin_ordered_truncate
(
struct
inode
*
inode
,
static
inline
int
ext4_begin_ordered_truncate
(
struct
inode
*
inode
,
...
@@ -1466,10 +1469,7 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
...
@@ -1466,10 +1469,7 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
pgoff_t
index
;
pgoff_t
index
;
unsigned
from
,
to
;
unsigned
from
,
to
;
trace_mark
(
ext4_write_begin
,
trace_ext4_write_begin
(
inode
,
pos
,
len
,
flags
);
"dev %s ino %lu pos %llu len %u flags %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
flags
);
/*
/*
* Reserve one block more for addition to orphan list in case
* Reserve one block more for addition to orphan list in case
* we allocate blocks but write fails for some reason
* we allocate blocks but write fails for some reason
...
@@ -1611,10 +1611,7 @@ static int ext4_ordered_write_end(struct file *file,
...
@@ -1611,10 +1611,7 @@ static int ext4_ordered_write_end(struct file *file,
struct
inode
*
inode
=
mapping
->
host
;
struct
inode
*
inode
=
mapping
->
host
;
int
ret
=
0
,
ret2
;
int
ret
=
0
,
ret2
;
trace_mark
(
ext4_ordered_write_end
,
trace_ext4_ordered_write_end
(
inode
,
pos
,
len
,
copied
);
"dev %s ino %lu pos %llu len %u copied %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
copied
);
ret
=
ext4_jbd2_file_inode
(
handle
,
inode
);
ret
=
ext4_jbd2_file_inode
(
handle
,
inode
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
...
@@ -1658,10 +1655,7 @@ static int ext4_writeback_write_end(struct file *file,
...
@@ -1658,10 +1655,7 @@ static int ext4_writeback_write_end(struct file *file,
struct
inode
*
inode
=
mapping
->
host
;
struct
inode
*
inode
=
mapping
->
host
;
int
ret
=
0
,
ret2
;
int
ret
=
0
,
ret2
;
trace_mark
(
ext4_writeback_write_end
,
trace_ext4_writeback_write_end
(
inode
,
pos
,
len
,
copied
);
"dev %s ino %lu pos %llu len %u copied %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
copied
);
ret2
=
ext4_generic_write_end
(
file
,
mapping
,
pos
,
len
,
copied
,
ret2
=
ext4_generic_write_end
(
file
,
mapping
,
pos
,
len
,
copied
,
page
,
fsdata
);
page
,
fsdata
);
copied
=
ret2
;
copied
=
ret2
;
...
@@ -1705,10 +1699,7 @@ static int ext4_journalled_write_end(struct file *file,
...
@@ -1705,10 +1699,7 @@ static int ext4_journalled_write_end(struct file *file,
unsigned
from
,
to
;
unsigned
from
,
to
;
loff_t
new_i_size
;
loff_t
new_i_size
;
trace_mark
(
ext4_journalled_write_end
,
trace_ext4_journalled_write_end
(
inode
,
pos
,
len
,
copied
);
"dev %s ino %lu pos %llu len %u copied %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
copied
);
from
=
pos
&
(
PAGE_CACHE_SIZE
-
1
);
from
=
pos
&
(
PAGE_CACHE_SIZE
-
1
);
to
=
from
+
len
;
to
=
from
+
len
;
...
@@ -2554,9 +2545,7 @@ static int ext4_da_writepage(struct page *page,
...
@@ -2554,9 +2545,7 @@ static int ext4_da_writepage(struct page *page,
struct
buffer_head
*
page_bufs
;
struct
buffer_head
*
page_bufs
;
struct
inode
*
inode
=
page
->
mapping
->
host
;
struct
inode
*
inode
=
page
->
mapping
->
host
;
trace_mark
(
ext4_da_writepage
,
trace_ext4_da_writepage
(
inode
,
page
);
"dev %s ino %lu page_index %lu"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
page
->
index
);
size
=
i_size_read
(
inode
);
size
=
i_size_read
(
inode
);
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
len
=
size
&
~
PAGE_CACHE_MASK
;
len
=
size
&
~
PAGE_CACHE_MASK
;
...
@@ -2667,19 +2656,7 @@ static int ext4_da_writepages(struct address_space *mapping,
...
@@ -2667,19 +2656,7 @@ static int ext4_da_writepages(struct address_space *mapping,
int
needed_blocks
,
ret
=
0
,
nr_to_writebump
=
0
;
int
needed_blocks
,
ret
=
0
,
nr_to_writebump
=
0
;
struct
ext4_sb_info
*
sbi
=
EXT4_SB
(
mapping
->
host
->
i_sb
);
struct
ext4_sb_info
*
sbi
=
EXT4_SB
(
mapping
->
host
->
i_sb
);
trace_mark
(
ext4_da_writepages
,
trace_ext4_da_writepages
(
inode
,
wbc
);
"dev %s ino %lu nr_t_write %ld "
"pages_skipped %ld range_start %llu "
"range_end %llu nonblocking %d "
"for_kupdate %d for_reclaim %d "
"for_writepages %d range_cyclic %d"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
wbc
->
nr_to_write
,
wbc
->
pages_skipped
,
(
unsigned
long
long
)
wbc
->
range_start
,
(
unsigned
long
long
)
wbc
->
range_end
,
wbc
->
nonblocking
,
wbc
->
for_kupdate
,
wbc
->
for_reclaim
,
wbc
->
for_writepages
,
wbc
->
range_cyclic
);
/*
/*
* No pages to write? This is mainly a kludge to avoid starting
* No pages to write? This is mainly a kludge to avoid starting
...
@@ -2845,14 +2822,7 @@ static int ext4_da_writepages(struct address_space *mapping,
...
@@ -2845,14 +2822,7 @@ static int ext4_da_writepages(struct address_space *mapping,
if
(
!
no_nrwrite_index_update
)
if
(
!
no_nrwrite_index_update
)
wbc
->
no_nrwrite_index_update
=
0
;
wbc
->
no_nrwrite_index_update
=
0
;
wbc
->
nr_to_write
-=
nr_to_writebump
;
wbc
->
nr_to_write
-=
nr_to_writebump
;
trace_mark
(
ext4_da_writepage_result
,
trace_ext4_da_writepages_result
(
inode
,
wbc
,
ret
,
pages_written
);
"dev %s ino %lu ret %d pages_written %d "
"pages_skipped %ld congestion %d "
"more_io %d no_nrwrite_index_update %d"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
ret
,
pages_written
,
wbc
->
pages_skipped
,
wbc
->
encountered_congestion
,
wbc
->
more_io
,
wbc
->
no_nrwrite_index_update
);
return
ret
;
return
ret
;
}
}
...
@@ -2904,11 +2874,7 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
...
@@ -2904,11 +2874,7 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
len
,
flags
,
pagep
,
fsdata
);
len
,
flags
,
pagep
,
fsdata
);
}
}
*
fsdata
=
(
void
*
)
0
;
*
fsdata
=
(
void
*
)
0
;
trace_ext4_da_write_begin
(
inode
,
pos
,
len
,
flags
);
trace_mark
(
ext4_da_write_begin
,
"dev %s ino %lu pos %llu len %u flags %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
flags
);
retry:
retry:
/*
/*
* With delayed allocation, we don't log the i_disksize update
* With delayed allocation, we don't log the i_disksize update
...
@@ -3001,10 +2967,7 @@ static int ext4_da_write_end(struct file *file,
...
@@ -3001,10 +2967,7 @@ static int ext4_da_write_end(struct file *file,
}
}
}
}
trace_mark
(
ext4_da_write_end
,
trace_ext4_da_write_end
(
inode
,
pos
,
len
,
copied
);
"dev %s ino %lu pos %llu len %u copied %u"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
(
unsigned
long
long
)
pos
,
len
,
copied
);
start
=
pos
&
(
PAGE_CACHE_SIZE
-
1
);
start
=
pos
&
(
PAGE_CACHE_SIZE
-
1
);
end
=
start
+
copied
-
1
;
end
=
start
+
copied
-
1
;
...
@@ -3255,9 +3218,7 @@ static int ext4_normal_writepage(struct page *page,
...
@@ -3255,9 +3218,7 @@ static int ext4_normal_writepage(struct page *page,
loff_t
size
=
i_size_read
(
inode
);
loff_t
size
=
i_size_read
(
inode
);
loff_t
len
;
loff_t
len
;
trace_mark
(
ext4_normal_writepage
,
trace_ext4_normal_writepage
(
inode
,
page
);
"dev %s ino %lu page_index %lu"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
page
->
index
);
J_ASSERT
(
PageLocked
(
page
));
J_ASSERT
(
PageLocked
(
page
));
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
len
=
size
&
~
PAGE_CACHE_MASK
;
len
=
size
&
~
PAGE_CACHE_MASK
;
...
@@ -3343,9 +3304,7 @@ static int ext4_journalled_writepage(struct page *page,
...
@@ -3343,9 +3304,7 @@ static int ext4_journalled_writepage(struct page *page,
loff_t
size
=
i_size_read
(
inode
);
loff_t
size
=
i_size_read
(
inode
);
loff_t
len
;
loff_t
len
;
trace_mark
(
ext4_journalled_writepage
,
trace_ext4_journalled_writepage
(
inode
,
page
);
"dev %s ino %lu page_index %lu"
,
inode
->
i_sb
->
s_id
,
inode
->
i_ino
,
page
->
index
);
J_ASSERT
(
PageLocked
(
page
));
J_ASSERT
(
PageLocked
(
page
));
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
if
(
page
->
index
==
size
>>
PAGE_CACHE_SHIFT
)
len
=
size
&
~
PAGE_CACHE_MASK
;
len
=
size
&
~
PAGE_CACHE_MASK
;
...
...
fs/ext4/mballoc.c
浏览文件 @
9bffad1e
...
@@ -22,6 +22,8 @@
...
@@ -22,6 +22,8 @@
*/
*/
#include "mballoc.h"
#include "mballoc.h"
#include <trace/events/ext4.h>
/*
/*
* MUSTDO:
* MUSTDO:
* - test ext4_ext_search_left() and ext4_ext_search_right()
* - test ext4_ext_search_left() and ext4_ext_search_right()
...
@@ -340,8 +342,6 @@ static void ext4_mb_generate_from_freelist(struct super_block *sb, void *bitmap,
...
@@ -340,8 +342,6 @@ static void ext4_mb_generate_from_freelist(struct super_block *sb, void *bitmap,
ext4_group_t
group
);
ext4_group_t
group
);
static
void
release_blocks_on_commit
(
journal_t
*
journal
,
transaction_t
*
txn
);
static
void
release_blocks_on_commit
(
journal_t
*
journal
,
transaction_t
*
txn
);
static
inline
void
*
mb_correct_addr_and_bit
(
int
*
bit
,
void
*
addr
)
static
inline
void
*
mb_correct_addr_and_bit
(
int
*
bit
,
void
*
addr
)
{
{
#if BITS_PER_LONG == 64
#if BITS_PER_LONG == 64
...
@@ -2859,9 +2859,8 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn)
...
@@ -2859,9 +2859,8 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn)
discard_block
=
(
ext4_fsblk_t
)
entry
->
group
*
EXT4_BLOCKS_PER_GROUP
(
sb
)
discard_block
=
(
ext4_fsblk_t
)
entry
->
group
*
EXT4_BLOCKS_PER_GROUP
(
sb
)
+
entry
->
start_blk
+
entry
->
start_blk
+
le32_to_cpu
(
EXT4_SB
(
sb
)
->
s_es
->
s_first_data_block
);
+
le32_to_cpu
(
EXT4_SB
(
sb
)
->
s_es
->
s_first_data_block
);
trace_mark
(
ext4_discard_blocks
,
"dev %s blk %llu count %u"
,
trace_ext4_discard_blocks
(
sb
,
(
unsigned
long
long
)
discard_block
,
sb
->
s_id
,
(
unsigned
long
long
)
discard_block
,
entry
->
count
);
entry
->
count
);
sb_issue_discard
(
sb
,
discard_block
,
entry
->
count
);
sb_issue_discard
(
sb
,
discard_block
,
entry
->
count
);
kmem_cache_free
(
ext4_free_ext_cachep
,
entry
);
kmem_cache_free
(
ext4_free_ext_cachep
,
entry
);
...
@@ -3629,10 +3628,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
...
@@ -3629,10 +3628,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
mb_debug
(
"new inode pa %p: %llu/%u for %u
\n
"
,
pa
,
mb_debug
(
"new inode pa %p: %llu/%u for %u
\n
"
,
pa
,
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
trace_mark
(
ext4_mb_new_inode_pa
,
trace_ext4_mb_new_inode_pa
(
ac
,
pa
);
"dev %s ino %lu pstart %llu len %u lstart %u"
,
sb
->
s_id
,
ac
->
ac_inode
->
i_ino
,
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
ext4_mb_use_inode_pa
(
ac
,
pa
);
ext4_mb_use_inode_pa
(
ac
,
pa
);
atomic_add
(
pa
->
pa_free
,
&
EXT4_SB
(
sb
)
->
s_mb_preallocated
);
atomic_add
(
pa
->
pa_free
,
&
EXT4_SB
(
sb
)
->
s_mb_preallocated
);
...
@@ -3691,9 +3687,8 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
...
@@ -3691,9 +3687,8 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
pa
->
pa_type
=
MB_GROUP_PA
;
pa
->
pa_type
=
MB_GROUP_PA
;
mb_debug
(
"new group pa %p: %llu/%u for %u
\n
"
,
pa
,
mb_debug
(
"new group pa %p: %llu/%u for %u
\n
"
,
pa
,
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
trace_mark
(
ext4_mb_new_group_pa
,
"dev %s pstart %llu len %u lstart %u"
,
trace_ext4_mb_new_group_pa
(
ac
,
pa
);
sb
->
s_id
,
pa
->
pa_pstart
,
pa
->
pa_len
,
pa
->
pa_lstart
);
ext4_mb_use_group_pa
(
ac
,
pa
);
ext4_mb_use_group_pa
(
ac
,
pa
);
atomic_add
(
pa
->
pa_free
,
&
EXT4_SB
(
sb
)
->
s_mb_preallocated
);
atomic_add
(
pa
->
pa_free
,
&
EXT4_SB
(
sb
)
->
s_mb_preallocated
);
...
@@ -3783,10 +3778,8 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
...
@@ -3783,10 +3778,8 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
ext4_mb_store_history
(
ac
);
ext4_mb_store_history
(
ac
);
}
}
trace_mark
(
ext4_mb_release_inode_pa
,
trace_ext4_mb_release_inode_pa
(
ac
,
pa
,
grp_blk_start
+
bit
,
"dev %s ino %lu block %llu count %u"
,
next
-
bit
);
sb
->
s_id
,
pa
->
pa_inode
->
i_ino
,
grp_blk_start
+
bit
,
next
-
bit
);
mb_free_blocks
(
pa
->
pa_inode
,
e4b
,
bit
,
next
-
bit
);
mb_free_blocks
(
pa
->
pa_inode
,
e4b
,
bit
,
next
-
bit
);
bit
=
next
+
1
;
bit
=
next
+
1
;
}
}
...
@@ -3820,8 +3813,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
...
@@ -3820,8 +3813,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
if
(
ac
)
if
(
ac
)
ac
->
ac_op
=
EXT4_MB_HISTORY_DISCARD
;
ac
->
ac_op
=
EXT4_MB_HISTORY_DISCARD
;
trace_mark
(
ext4_mb_release_group_pa
,
"dev %s pstart %llu len %d"
,
trace_ext4_mb_release_group_pa
(
ac
,
pa
);
sb
->
s_id
,
pa
->
pa_pstart
,
pa
->
pa_len
);
BUG_ON
(
pa
->
pa_deleted
==
0
);
BUG_ON
(
pa
->
pa_deleted
==
0
);
ext4_get_group_no_and_offset
(
sb
,
pa
->
pa_pstart
,
&
group
,
&
bit
);
ext4_get_group_no_and_offset
(
sb
,
pa
->
pa_pstart
,
&
group
,
&
bit
);
BUG_ON
(
group
!=
e4b
->
bd_group
&&
pa
->
pa_len
!=
0
);
BUG_ON
(
group
!=
e4b
->
bd_group
&&
pa
->
pa_len
!=
0
);
...
@@ -3889,6 +3881,8 @@ ext4_mb_discard_group_preallocations(struct super_block *sb,
...
@@ -3889,6 +3881,8 @@ ext4_mb_discard_group_preallocations(struct super_block *sb,
INIT_LIST_HEAD
(
&
list
);
INIT_LIST_HEAD
(
&
list
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
if
(
ac
)
ac
->
ac_sb
=
sb
;
repeat:
repeat:
ext4_lock_group
(
sb
,
group
);
ext4_lock_group
(
sb
,
group
);
list_for_each_entry_safe
(
pa
,
tmp
,
list_for_each_entry_safe
(
pa
,
tmp
,
...
@@ -3987,12 +3981,15 @@ void ext4_discard_preallocations(struct inode *inode)
...
@@ -3987,12 +3981,15 @@ void ext4_discard_preallocations(struct inode *inode)
}
}
mb_debug
(
"discard preallocation for inode %lu
\n
"
,
inode
->
i_ino
);
mb_debug
(
"discard preallocation for inode %lu
\n
"
,
inode
->
i_ino
);
trace_mark
(
ext4_discard_preallocations
,
"dev %s ino %lu"
,
sb
->
s_id
,
trace_ext4_discard_preallocations
(
inode
);
inode
->
i_ino
);
INIT_LIST_HEAD
(
&
list
);
INIT_LIST_HEAD
(
&
list
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
if
(
ac
)
{
ac
->
ac_sb
=
sb
;
ac
->
ac_inode
=
inode
;
}
repeat:
repeat:
/* first, collect all pa's in the inode */
/* first, collect all pa's in the inode */
spin_lock
(
&
ei
->
i_prealloc_lock
);
spin_lock
(
&
ei
->
i_prealloc_lock
);
...
@@ -4276,6 +4273,8 @@ ext4_mb_discard_lg_preallocations(struct super_block *sb,
...
@@ -4276,6 +4273,8 @@ ext4_mb_discard_lg_preallocations(struct super_block *sb,
INIT_LIST_HEAD
(
&
discard_list
);
INIT_LIST_HEAD
(
&
discard_list
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
if
(
ac
)
ac
->
ac_sb
=
sb
;
spin_lock
(
&
lg
->
lg_prealloc_lock
);
spin_lock
(
&
lg
->
lg_prealloc_lock
);
list_for_each_entry_rcu
(
pa
,
&
lg
->
lg_prealloc_list
[
order
],
list_for_each_entry_rcu
(
pa
,
&
lg
->
lg_prealloc_list
[
order
],
...
@@ -4445,8 +4444,7 @@ static int ext4_mb_discard_preallocations(struct super_block *sb, int needed)
...
@@ -4445,8 +4444,7 @@ static int ext4_mb_discard_preallocations(struct super_block *sb, int needed)
int
ret
;
int
ret
;
int
freed
=
0
;
int
freed
=
0
;
trace_mark
(
ext4_mb_discard_preallocations
,
"dev %s needed %d"
,
trace_ext4_mb_discard_preallocations
(
sb
,
needed
);
sb
->
s_id
,
needed
);
for
(
i
=
0
;
i
<
ngroups
&&
needed
>
0
;
i
++
)
{
for
(
i
=
0
;
i
<
ngroups
&&
needed
>
0
;
i
++
)
{
ret
=
ext4_mb_discard_group_preallocations
(
sb
,
i
,
needed
);
ret
=
ext4_mb_discard_group_preallocations
(
sb
,
i
,
needed
);
freed
+=
ret
;
freed
+=
ret
;
...
@@ -4475,17 +4473,7 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
...
@@ -4475,17 +4473,7 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
sb
=
ar
->
inode
->
i_sb
;
sb
=
ar
->
inode
->
i_sb
;
sbi
=
EXT4_SB
(
sb
);
sbi
=
EXT4_SB
(
sb
);
trace_mark
(
ext4_request_blocks
,
"dev %s flags %u len %u ino %lu "
trace_ext4_request_blocks
(
ar
);
"lblk %llu goal %llu lleft %llu lright %llu "
"pleft %llu pright %llu "
,
sb
->
s_id
,
ar
->
flags
,
ar
->
len
,
ar
->
inode
?
ar
->
inode
->
i_ino
:
0
,
(
unsigned
long
long
)
ar
->
logical
,
(
unsigned
long
long
)
ar
->
goal
,
(
unsigned
long
long
)
ar
->
lleft
,
(
unsigned
long
long
)
ar
->
lright
,
(
unsigned
long
long
)
ar
->
pleft
,
(
unsigned
long
long
)
ar
->
pright
);
/*
/*
* For delayed allocation, we could skip the ENOSPC and
* For delayed allocation, we could skip the ENOSPC and
...
@@ -4521,7 +4509,10 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
...
@@ -4521,7 +4509,10 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
}
}
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
if
(
!
ac
)
{
if
(
ac
)
{
ac
->
ac_sb
=
sb
;
ac
->
ac_inode
=
ar
->
inode
;
}
else
{
ar
->
len
=
0
;
ar
->
len
=
0
;
*
errp
=
-
ENOMEM
;
*
errp
=
-
ENOMEM
;
goto
out1
;
goto
out1
;
...
@@ -4594,18 +4585,7 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
...
@@ -4594,18 +4585,7 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle,
reserv_blks
);
reserv_blks
);
}
}
trace_mark
(
ext4_allocate_blocks
,
trace_ext4_allocate_blocks
(
ar
,
(
unsigned
long
long
)
block
);
"dev %s block %llu flags %u len %u ino %lu "
"logical %llu goal %llu lleft %llu lright %llu "
"pleft %llu pright %llu "
,
sb
->
s_id
,
(
unsigned
long
long
)
block
,
ar
->
flags
,
ar
->
len
,
ar
->
inode
?
ar
->
inode
->
i_ino
:
0
,
(
unsigned
long
long
)
ar
->
logical
,
(
unsigned
long
long
)
ar
->
goal
,
(
unsigned
long
long
)
ar
->
lleft
,
(
unsigned
long
long
)
ar
->
lright
,
(
unsigned
long
long
)
ar
->
pleft
,
(
unsigned
long
long
)
ar
->
pright
);
return
block
;
return
block
;
}
}
...
@@ -4740,10 +4720,7 @@ void ext4_mb_free_blocks(handle_t *handle, struct inode *inode,
...
@@ -4740,10 +4720,7 @@ void ext4_mb_free_blocks(handle_t *handle, struct inode *inode,
}
}
ext4_debug
(
"freeing block %lu
\n
"
,
block
);
ext4_debug
(
"freeing block %lu
\n
"
,
block
);
trace_mark
(
ext4_free_blocks
,
trace_ext4_free_blocks
(
inode
,
block
,
count
,
metadata
);
"dev %s block %llu count %lu metadata %d ino %lu"
,
sb
->
s_id
,
(
unsigned
long
long
)
block
,
count
,
metadata
,
inode
?
inode
->
i_ino
:
0
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
ac
=
kmem_cache_alloc
(
ext4_ac_cachep
,
GFP_NOFS
);
if
(
ac
)
{
if
(
ac
)
{
...
...
fs/ext4/mballoc.h
浏览文件 @
9bffad1e
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/version.h>
#include <linux/version.h>
#include <linux/blkdev.h>
#include <linux/blkdev.h>
#include <linux/marker.h>
#include <linux/mutex.h>
#include <linux/mutex.h>
#include "ext4_jbd2.h"
#include "ext4_jbd2.h"
#include "ext4.h"
#include "ext4.h"
...
...
fs/ext4/super.c
浏览文件 @
9bffad1e
...
@@ -37,7 +37,6 @@
...
@@ -37,7 +37,6 @@
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/ctype.h>
#include <linux/ctype.h>
#include <linux/marker.h>
#include <linux/log2.h>
#include <linux/log2.h>
#include <linux/crc16.h>
#include <linux/crc16.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
...
@@ -47,6 +46,9 @@
...
@@ -47,6 +46,9 @@
#include "xattr.h"
#include "xattr.h"
#include "acl.h"
#include "acl.h"
#define CREATE_TRACE_POINTS
#include <trace/events/ext4.h>
static
int
default_mb_history_length
=
1000
;
static
int
default_mb_history_length
=
1000
;
module_param_named
(
default_mb_history_length
,
default_mb_history_length
,
module_param_named
(
default_mb_history_length
,
default_mb_history_length
,
...
@@ -3346,7 +3348,7 @@ static int ext4_sync_fs(struct super_block *sb, int wait)
...
@@ -3346,7 +3348,7 @@ static int ext4_sync_fs(struct super_block *sb, int wait)
int
ret
=
0
;
int
ret
=
0
;
tid_t
target
;
tid_t
target
;
trace_
mark
(
ext4_sync_fs
,
"dev %s wait %d"
,
sb
->
s_id
,
wait
);
trace_
ext4_sync_fs
(
sb
,
wait
);
if
(
jbd2_journal_start_commit
(
EXT4_SB
(
sb
)
->
s_journal
,
&
target
))
{
if
(
jbd2_journal_start_commit
(
EXT4_SB
(
sb
)
->
s_journal
,
&
target
))
{
if
(
wait
)
if
(
wait
)
jbd2_log_wait_commit
(
EXT4_SB
(
sb
)
->
s_journal
,
target
);
jbd2_log_wait_commit
(
EXT4_SB
(
sb
)
->
s_journal
,
target
);
...
...
include/trace/events/ext4.h
0 → 100644
浏览文件 @
9bffad1e
#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_EXT4_H
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ext4
#include <linux/writeback.h>
#include "../../../fs/ext4/ext4.h"
#include "../../../fs/ext4/mballoc.h"
#include <linux/tracepoint.h>
TRACE_EVENT
(
ext4_free_inode
,
TP_PROTO
(
struct
inode
*
inode
),
TP_ARGS
(
inode
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
umode_t
,
mode
)
__field
(
uid_t
,
uid
)
__field
(
gid_t
,
gid
)
__field
(
blkcnt_t
,
blocks
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
mode
=
inode
->
i_mode
;
__entry
->
uid
=
inode
->
i_uid
;
__entry
->
gid
=
inode
->
i_gid
;
__entry
->
blocks
=
inode
->
i_blocks
;
),
TP_printk
(
"dev %s ino %lu mode %d uid %u gid %u blocks %llu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
mode
,
__entry
->
uid
,
__entry
->
gid
,
__entry
->
blocks
)
);
TRACE_EVENT
(
ext4_request_inode
,
TP_PROTO
(
struct
inode
*
dir
,
int
mode
),
TP_ARGS
(
dir
,
mode
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
dir
)
__field
(
umode_t
,
mode
)
),
TP_fast_assign
(
__entry
->
dev
=
dir
->
i_sb
->
s_dev
;
__entry
->
dir
=
dir
->
i_ino
;
__entry
->
mode
=
mode
;
),
TP_printk
(
"dev %s dir %lu mode %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
dir
,
__entry
->
mode
)
);
TRACE_EVENT
(
ext4_allocate_inode
,
TP_PROTO
(
struct
inode
*
inode
,
struct
inode
*
dir
,
int
mode
),
TP_ARGS
(
inode
,
dir
,
mode
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
ino_t
,
dir
)
__field
(
umode_t
,
mode
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
dir
=
dir
->
i_ino
;
__entry
->
mode
=
mode
;
),
TP_printk
(
"dev %s ino %lu dir %lu mode %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
dir
,
__entry
->
mode
)
);
TRACE_EVENT
(
ext4_write_begin
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
flags
),
TP_ARGS
(
inode
,
pos
,
len
,
flags
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
flags
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
flags
=
flags
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u flags %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
flags
)
);
TRACE_EVENT
(
ext4_ordered_write_end
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
copied
),
TP_ARGS
(
inode
,
pos
,
len
,
copied
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
copied
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
copied
=
copied
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u copied %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
copied
)
);
TRACE_EVENT
(
ext4_writeback_write_end
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
copied
),
TP_ARGS
(
inode
,
pos
,
len
,
copied
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
copied
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
copied
=
copied
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u copied %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
copied
)
);
TRACE_EVENT
(
ext4_journalled_write_end
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
copied
),
TP_ARGS
(
inode
,
pos
,
len
,
copied
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
copied
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
copied
=
copied
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u copied %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
copied
)
);
TRACE_EVENT
(
ext4_da_writepage
,
TP_PROTO
(
struct
inode
*
inode
,
struct
page
*
page
),
TP_ARGS
(
inode
,
page
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
pgoff_t
,
index
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
index
=
page
->
index
;
),
TP_printk
(
"dev %s ino %lu page_index %lu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
index
)
);
TRACE_EVENT
(
ext4_da_writepages
,
TP_PROTO
(
struct
inode
*
inode
,
struct
writeback_control
*
wbc
),
TP_ARGS
(
inode
,
wbc
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
long
,
nr_to_write
)
__field
(
long
,
pages_skipped
)
__field
(
loff_t
,
range_start
)
__field
(
loff_t
,
range_end
)
__field
(
char
,
nonblocking
)
__field
(
char
,
for_kupdate
)
__field
(
char
,
for_reclaim
)
__field
(
char
,
for_writepages
)
__field
(
char
,
range_cyclic
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
nr_to_write
=
wbc
->
nr_to_write
;
__entry
->
pages_skipped
=
wbc
->
pages_skipped
;
__entry
->
range_start
=
wbc
->
range_start
;
__entry
->
range_end
=
wbc
->
range_end
;
__entry
->
nonblocking
=
wbc
->
nonblocking
;
__entry
->
for_kupdate
=
wbc
->
for_kupdate
;
__entry
->
for_reclaim
=
wbc
->
for_reclaim
;
__entry
->
for_writepages
=
wbc
->
for_writepages
;
__entry
->
range_cyclic
=
wbc
->
range_cyclic
;
),
TP_printk
(
"dev %s ino %lu nr_t_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d for_writepages %d range_cyclic %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
nr_to_write
,
__entry
->
pages_skipped
,
__entry
->
range_start
,
__entry
->
range_end
,
__entry
->
nonblocking
,
__entry
->
for_kupdate
,
__entry
->
for_reclaim
,
__entry
->
for_writepages
,
__entry
->
range_cyclic
)
);
TRACE_EVENT
(
ext4_da_writepages_result
,
TP_PROTO
(
struct
inode
*
inode
,
struct
writeback_control
*
wbc
,
int
ret
,
int
pages_written
),
TP_ARGS
(
inode
,
wbc
,
ret
,
pages_written
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
int
,
ret
)
__field
(
int
,
pages_written
)
__field
(
long
,
pages_skipped
)
__field
(
char
,
encountered_congestion
)
__field
(
char
,
more_io
)
__field
(
char
,
no_nrwrite_index_update
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
ret
=
ret
;
__entry
->
pages_written
=
pages_written
;
__entry
->
pages_skipped
=
wbc
->
pages_skipped
;
__entry
->
encountered_congestion
=
wbc
->
encountered_congestion
;
__entry
->
more_io
=
wbc
->
more_io
;
__entry
->
no_nrwrite_index_update
=
wbc
->
no_nrwrite_index_update
;
),
TP_printk
(
"dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
ret
,
__entry
->
pages_written
,
__entry
->
pages_skipped
,
__entry
->
encountered_congestion
,
__entry
->
more_io
,
__entry
->
no_nrwrite_index_update
)
);
TRACE_EVENT
(
ext4_da_write_begin
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
flags
),
TP_ARGS
(
inode
,
pos
,
len
,
flags
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
flags
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
flags
=
flags
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u flags %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
flags
)
);
TRACE_EVENT
(
ext4_da_write_end
,
TP_PROTO
(
struct
inode
*
inode
,
loff_t
pos
,
unsigned
int
len
,
unsigned
int
copied
),
TP_ARGS
(
inode
,
pos
,
len
,
copied
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
loff_t
,
pos
)
__field
(
unsigned
int
,
len
)
__field
(
unsigned
int
,
copied
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
pos
=
pos
;
__entry
->
len
=
len
;
__entry
->
copied
=
copied
;
),
TP_printk
(
"dev %s ino %lu pos %llu len %u copied %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pos
,
__entry
->
len
,
__entry
->
copied
)
);
TRACE_EVENT
(
ext4_normal_writepage
,
TP_PROTO
(
struct
inode
*
inode
,
struct
page
*
page
),
TP_ARGS
(
inode
,
page
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
pgoff_t
,
index
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
index
=
page
->
index
;
),
TP_printk
(
"dev %s ino %lu page_index %lu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
index
)
);
TRACE_EVENT
(
ext4_journalled_writepage
,
TP_PROTO
(
struct
inode
*
inode
,
struct
page
*
page
),
TP_ARGS
(
inode
,
page
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
pgoff_t
,
index
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
index
=
page
->
index
;
),
TP_printk
(
"dev %s ino %lu page_index %lu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
index
)
);
TRACE_EVENT
(
ext4_discard_blocks
,
TP_PROTO
(
struct
super_block
*
sb
,
unsigned
long
long
blk
,
unsigned
long
long
count
),
TP_ARGS
(
sb
,
blk
,
count
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
__u64
,
blk
)
__field
(
__u64
,
count
)
),
TP_fast_assign
(
__entry
->
dev
=
sb
->
s_dev
;
__entry
->
blk
=
blk
;
__entry
->
count
=
count
;
),
TP_printk
(
"dev %s blk %llu count %llu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
blk
,
__entry
->
count
)
);
TRACE_EVENT
(
ext4_mb_new_inode_pa
,
TP_PROTO
(
struct
ext4_allocation_context
*
ac
,
struct
ext4_prealloc_space
*
pa
),
TP_ARGS
(
ac
,
pa
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
pa_pstart
)
__field
(
__u32
,
pa_len
)
__field
(
__u64
,
pa_lstart
)
),
TP_fast_assign
(
__entry
->
dev
=
ac
->
ac_sb
->
s_dev
;
__entry
->
ino
=
ac
->
ac_inode
->
i_ino
;
__entry
->
pa_pstart
=
pa
->
pa_pstart
;
__entry
->
pa_len
=
pa
->
pa_len
;
__entry
->
pa_lstart
=
pa
->
pa_lstart
;
),
TP_printk
(
"dev %s ino %lu pstart %llu len %u lstart %llu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pa_pstart
,
__entry
->
pa_len
,
__entry
->
pa_lstart
)
);
TRACE_EVENT
(
ext4_mb_new_group_pa
,
TP_PROTO
(
struct
ext4_allocation_context
*
ac
,
struct
ext4_prealloc_space
*
pa
),
TP_ARGS
(
ac
,
pa
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
pa_pstart
)
__field
(
__u32
,
pa_len
)
__field
(
__u64
,
pa_lstart
)
),
TP_fast_assign
(
__entry
->
dev
=
ac
->
ac_sb
->
s_dev
;
__entry
->
ino
=
ac
->
ac_inode
->
i_ino
;
__entry
->
pa_pstart
=
pa
->
pa_pstart
;
__entry
->
pa_len
=
pa
->
pa_len
;
__entry
->
pa_lstart
=
pa
->
pa_lstart
;
),
TP_printk
(
"dev %s ino %lu pstart %llu len %u lstart %llu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
pa_pstart
,
__entry
->
pa_len
,
__entry
->
pa_lstart
)
);
TRACE_EVENT
(
ext4_mb_release_inode_pa
,
TP_PROTO
(
struct
ext4_allocation_context
*
ac
,
struct
ext4_prealloc_space
*
pa
,
unsigned
long
long
block
,
unsigned
int
count
),
TP_ARGS
(
ac
,
pa
,
block
,
count
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
block
)
__field
(
__u32
,
count
)
),
TP_fast_assign
(
__entry
->
dev
=
ac
->
ac_sb
->
s_dev
;
__entry
->
ino
=
ac
->
ac_inode
->
i_ino
;
__entry
->
block
=
block
;
__entry
->
count
=
count
;
),
TP_printk
(
"dev %s ino %lu block %llu count %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
block
,
__entry
->
count
)
);
TRACE_EVENT
(
ext4_mb_release_group_pa
,
TP_PROTO
(
struct
ext4_allocation_context
*
ac
,
struct
ext4_prealloc_space
*
pa
),
TP_ARGS
(
ac
,
pa
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
pa_pstart
)
__field
(
__u32
,
pa_len
)
),
TP_fast_assign
(
__entry
->
dev
=
ac
->
ac_sb
->
s_dev
;
__entry
->
ino
=
ac
->
ac_inode
->
i_ino
;
__entry
->
pa_pstart
=
pa
->
pa_pstart
;
__entry
->
pa_len
=
pa
->
pa_len
;
),
TP_printk
(
"dev %s pstart %llu len %u"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
pa_pstart
,
__entry
->
pa_len
)
);
TRACE_EVENT
(
ext4_discard_preallocations
,
TP_PROTO
(
struct
inode
*
inode
),
TP_ARGS
(
inode
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
),
TP_printk
(
"dev %s ino %lu"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
)
);
TRACE_EVENT
(
ext4_mb_discard_preallocations
,
TP_PROTO
(
struct
super_block
*
sb
,
int
needed
),
TP_ARGS
(
sb
,
needed
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
int
,
needed
)
),
TP_fast_assign
(
__entry
->
dev
=
sb
->
s_dev
;
__entry
->
needed
=
needed
;
),
TP_printk
(
"dev %s needed %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
needed
)
);
TRACE_EVENT
(
ext4_request_blocks
,
TP_PROTO
(
struct
ext4_allocation_request
*
ar
),
TP_ARGS
(
ar
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
unsigned
int
,
flags
)
__field
(
unsigned
int
,
len
)
__field
(
__u64
,
logical
)
__field
(
__u64
,
goal
)
__field
(
__u64
,
lleft
)
__field
(
__u64
,
lright
)
__field
(
__u64
,
pleft
)
__field
(
__u64
,
pright
)
),
TP_fast_assign
(
__entry
->
dev
=
ar
->
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
ar
->
inode
->
i_ino
;
__entry
->
flags
=
ar
->
flags
;
__entry
->
len
=
ar
->
len
;
__entry
->
logical
=
ar
->
logical
;
__entry
->
goal
=
ar
->
goal
;
__entry
->
lleft
=
ar
->
lleft
;
__entry
->
lright
=
ar
->
lright
;
__entry
->
pleft
=
ar
->
pleft
;
__entry
->
pright
=
ar
->
pright
;
),
TP_printk
(
"dev %s ino %lu flags %u len %u lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu "
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
flags
,
__entry
->
len
,
(
unsigned
long
long
)
__entry
->
logical
,
(
unsigned
long
long
)
__entry
->
goal
,
(
unsigned
long
long
)
__entry
->
lleft
,
(
unsigned
long
long
)
__entry
->
lright
,
(
unsigned
long
long
)
__entry
->
pleft
,
(
unsigned
long
long
)
__entry
->
pright
)
);
TRACE_EVENT
(
ext4_allocate_blocks
,
TP_PROTO
(
struct
ext4_allocation_request
*
ar
,
unsigned
long
long
block
),
TP_ARGS
(
ar
,
block
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
block
)
__field
(
unsigned
int
,
flags
)
__field
(
unsigned
int
,
len
)
__field
(
__u64
,
logical
)
__field
(
__u64
,
goal
)
__field
(
__u64
,
lleft
)
__field
(
__u64
,
lright
)
__field
(
__u64
,
pleft
)
__field
(
__u64
,
pright
)
),
TP_fast_assign
(
__entry
->
dev
=
ar
->
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
ar
->
inode
->
i_ino
;
__entry
->
block
=
block
;
__entry
->
flags
=
ar
->
flags
;
__entry
->
len
=
ar
->
len
;
__entry
->
logical
=
ar
->
logical
;
__entry
->
goal
=
ar
->
goal
;
__entry
->
lleft
=
ar
->
lleft
;
__entry
->
lright
=
ar
->
lright
;
__entry
->
pleft
=
ar
->
pleft
;
__entry
->
pright
=
ar
->
pright
;
),
TP_printk
(
"dev %s ino %lu flags %u len %u block %llu lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu "
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
flags
,
__entry
->
len
,
__entry
->
block
,
(
unsigned
long
long
)
__entry
->
logical
,
(
unsigned
long
long
)
__entry
->
goal
,
(
unsigned
long
long
)
__entry
->
lleft
,
(
unsigned
long
long
)
__entry
->
lright
,
(
unsigned
long
long
)
__entry
->
pleft
,
(
unsigned
long
long
)
__entry
->
pright
)
);
TRACE_EVENT
(
ext4_free_blocks
,
TP_PROTO
(
struct
inode
*
inode
,
__u64
block
,
unsigned
long
count
,
int
metadata
),
TP_ARGS
(
inode
,
block
,
count
,
metadata
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
__u64
,
block
)
__field
(
unsigned
long
,
count
)
__field
(
int
,
metadata
)
),
TP_fast_assign
(
__entry
->
dev
=
inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
inode
->
i_ino
;
__entry
->
block
=
block
;
__entry
->
count
=
count
;
__entry
->
metadata
=
metadata
;
),
TP_printk
(
"dev %s ino %lu block %llu count %lu metadata %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
block
,
__entry
->
count
,
__entry
->
metadata
)
);
TRACE_EVENT
(
ext4_sync_file
,
TP_PROTO
(
struct
file
*
file
,
struct
dentry
*
dentry
,
int
datasync
),
TP_ARGS
(
file
,
dentry
,
datasync
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
ino_t
,
ino
)
__field
(
ino_t
,
parent
)
__field
(
int
,
datasync
)
),
TP_fast_assign
(
__entry
->
dev
=
dentry
->
d_inode
->
i_sb
->
s_dev
;
__entry
->
ino
=
dentry
->
d_inode
->
i_ino
;
__entry
->
datasync
=
datasync
;
__entry
->
parent
=
dentry
->
d_parent
->
d_inode
->
i_ino
;
),
TP_printk
(
"dev %s ino %ld parent %ld datasync %d "
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
ino
,
__entry
->
parent
,
__entry
->
datasync
)
);
TRACE_EVENT
(
ext4_sync_fs
,
TP_PROTO
(
struct
super_block
*
sb
,
int
wait
),
TP_ARGS
(
sb
,
wait
),
TP_STRUCT__entry
(
__field
(
dev_t
,
dev
)
__field
(
int
,
wait
)
),
TP_fast_assign
(
__entry
->
dev
=
sb
->
s_dev
;
__entry
->
wait
=
wait
;
),
TP_printk
(
"dev %s wait %d"
,
jbd2_dev_to_name
(
__entry
->
dev
),
__entry
->
wait
)
);
#endif
/* _TRACE_EXT4_H */
/* This part must be outside protection */
#include <trace/define_trace.h>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录