Skip to content

Commit 87f3afd

Browse files
chaseyuJaegeuk Kim
authored andcommitted
f2fs: add tracepoint for f2fs_vm_page_mkwrite()
This patch adds to support tracepoint for f2fs_vm_page_mkwrite(), meanwhile it prints more details for trace_f2fs_filemap_fault(). Signed-off-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 4e4f1eb commit 87f3afd

File tree

2 files changed

+41
-23
lines changed

2 files changed

+41
-23
lines changed

fs/f2fs/file.c

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf)
4646
f2fs_update_iostat(F2FS_I_SB(inode), inode,
4747
APP_MAPPED_READ_IO, F2FS_BLKSIZE);
4848

49-
trace_f2fs_filemap_fault(inode, vmf->pgoff, (unsigned long)ret);
49+
trace_f2fs_filemap_fault(inode, vmf->pgoff, vmf->vma->vm_flags, ret);
5050

5151
return ret;
5252
}
@@ -59,34 +59,37 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
5959
struct dnode_of_data dn;
6060
bool need_alloc = true;
6161
int err = 0;
62+
vm_fault_t ret;
6263

6364
if (unlikely(IS_IMMUTABLE(inode)))
6465
return VM_FAULT_SIGBUS;
6566

66-
if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED))
67-
return VM_FAULT_SIGBUS;
67+
if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) {
68+
err = -EIO;
69+
goto out;
70+
}
6871

6972
if (unlikely(f2fs_cp_error(sbi))) {
7073
err = -EIO;
71-
goto err;
74+
goto out;
7275
}
7376

7477
if (!f2fs_is_checkpoint_ready(sbi)) {
7578
err = -ENOSPC;
76-
goto err;
79+
goto out;
7780
}
7881

7982
err = f2fs_convert_inline_inode(inode);
8083
if (err)
81-
goto err;
84+
goto out;
8285

8386
#ifdef CONFIG_F2FS_FS_COMPRESSION
8487
if (f2fs_compressed_file(inode)) {
8588
int ret = f2fs_is_compressed_cluster(inode, page->index);
8689

8790
if (ret < 0) {
8891
err = ret;
89-
goto err;
92+
goto out;
9093
} else if (ret) {
9194
need_alloc = false;
9295
}
@@ -153,13 +156,15 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
153156
f2fs_update_iostat(sbi, inode, APP_MAPPED_IO, F2FS_BLKSIZE);
154157
f2fs_update_time(sbi, REQ_TIME);
155158

156-
trace_f2fs_vm_page_mkwrite(page, DATA);
157159
out_sem:
158160
filemap_invalidate_unlock_shared(inode->i_mapping);
159161

160162
sb_end_pagefault(inode->i_sb);
161-
err:
162-
return vmf_fs_error(err);
163+
out:
164+
ret = vmf_fs_error(err);
165+
166+
trace_f2fs_vm_page_mkwrite(inode, page->index, vmf->vma->vm_flags, ret);
167+
return ret;
163168
}
164169

165170
static const struct vm_operations_struct f2fs_file_vm_ops = {

include/trace/events/f2fs.h

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,13 +1369,6 @@ DEFINE_EVENT(f2fs__page, f2fs_set_page_dirty,
13691369
TP_ARGS(page, type)
13701370
);
13711371

1372-
DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite,
1373-
1374-
TP_PROTO(struct page *page, int type),
1375-
1376-
TP_ARGS(page, type)
1377-
);
1378-
13791372
TRACE_EVENT(f2fs_replace_atomic_write_block,
13801373

13811374
TP_PROTO(struct inode *inode, struct inode *cow_inode, pgoff_t index,
@@ -1413,30 +1406,50 @@ TRACE_EVENT(f2fs_replace_atomic_write_block,
14131406
__entry->recovery)
14141407
);
14151408

1416-
TRACE_EVENT(f2fs_filemap_fault,
1409+
DECLARE_EVENT_CLASS(f2fs_mmap,
14171410

1418-
TP_PROTO(struct inode *inode, pgoff_t index, unsigned long ret),
1411+
TP_PROTO(struct inode *inode, pgoff_t index,
1412+
vm_flags_t flags, vm_fault_t ret),
14191413

1420-
TP_ARGS(inode, index, ret),
1414+
TP_ARGS(inode, index, flags, ret),
14211415

14221416
TP_STRUCT__entry(
14231417
__field(dev_t, dev)
14241418
__field(ino_t, ino)
14251419
__field(pgoff_t, index)
1426-
__field(unsigned long, ret)
1420+
__field(vm_flags_t, flags)
1421+
__field(vm_fault_t, ret)
14271422
),
14281423

14291424
TP_fast_assign(
14301425
__entry->dev = inode->i_sb->s_dev;
14311426
__entry->ino = inode->i_ino;
14321427
__entry->index = index;
1428+
__entry->flags = flags;
14331429
__entry->ret = ret;
14341430
),
14351431

1436-
TP_printk("dev = (%d,%d), ino = %lu, index = %lu, ret = %lx",
1432+
TP_printk("dev = (%d,%d), ino = %lu, index = %lu, flags: %s, ret: %s",
14371433
show_dev_ino(__entry),
14381434
(unsigned long)__entry->index,
1439-
__entry->ret)
1435+
__print_flags(__entry->flags, "|", FAULT_FLAG_TRACE),
1436+
__print_flags(__entry->ret, "|", VM_FAULT_RESULT_TRACE))
1437+
);
1438+
1439+
DEFINE_EVENT(f2fs_mmap, f2fs_filemap_fault,
1440+
1441+
TP_PROTO(struct inode *inode, pgoff_t index,
1442+
vm_flags_t flags, vm_fault_t ret),
1443+
1444+
TP_ARGS(inode, index, flags, ret)
1445+
);
1446+
1447+
DEFINE_EVENT(f2fs_mmap, f2fs_vm_page_mkwrite,
1448+
1449+
TP_PROTO(struct inode *inode, pgoff_t index,
1450+
vm_flags_t flags, vm_fault_t ret),
1451+
1452+
TP_ARGS(inode, index, flags, ret)
14401453
);
14411454

14421455
TRACE_EVENT(f2fs_writepages,

0 commit comments

Comments
 (0)