diff options
author | Namjae Jeon <namjae.jeon@samsung.com> | 2013-04-19 12:28:52 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-04-23 03:40:38 -0400 |
commit | 51dd62493477923723c797c6da60121ed39900ed (patch) | |
tree | 7589f4396dc6caf0c043831d6677989babcfa7cf /fs/f2fs/file.c | |
parent | a2a4a7e4abb27c833d4e09ac1d434ab48a64062c (diff) |
f2fs: add tracepoints for truncate operation
add tracepoints for tracing the truncate operations
like truncate node/data blocks, f2fs_truncate etc.
Tracepoints are added at entry and exit of operation
to trace the success & failure of operation.
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Pankaj Kumar <pankaj.km@samsung.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
[Jaegeuk: combine and modify the tracepoint structures]
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/file.c')
-rw-r--r-- | fs/f2fs/file.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 0b0ba26ba76e..71efa373cc45 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c | |||
@@ -193,6 +193,9 @@ static int truncate_data_blocks_range(struct dnode_of_data *dn, int count) | |||
193 | sync_inode_page(dn); | 193 | sync_inode_page(dn); |
194 | } | 194 | } |
195 | dn->ofs_in_node = ofs; | 195 | dn->ofs_in_node = ofs; |
196 | |||
197 | trace_f2fs_truncate_data_blocks_range(dn->inode, dn->nid, | ||
198 | dn->ofs_in_node, nr_free); | ||
196 | return nr_free; | 199 | return nr_free; |
197 | } | 200 | } |
198 | 201 | ||
@@ -229,6 +232,8 @@ static int truncate_blocks(struct inode *inode, u64 from) | |||
229 | int count = 0, ilock = -1; | 232 | int count = 0, ilock = -1; |
230 | int err; | 233 | int err; |
231 | 234 | ||
235 | trace_f2fs_truncate_blocks_enter(inode, from); | ||
236 | |||
232 | free_from = (pgoff_t) | 237 | free_from = (pgoff_t) |
233 | ((from + blocksize - 1) >> (sbi->log_blocksize)); | 238 | ((from + blocksize - 1) >> (sbi->log_blocksize)); |
234 | 239 | ||
@@ -239,6 +244,7 @@ static int truncate_blocks(struct inode *inode, u64 from) | |||
239 | if (err == -ENOENT) | 244 | if (err == -ENOENT) |
240 | goto free_next; | 245 | goto free_next; |
241 | mutex_unlock_op(sbi, ilock); | 246 | mutex_unlock_op(sbi, ilock); |
247 | trace_f2fs_truncate_blocks_exit(inode, err); | ||
242 | return err; | 248 | return err; |
243 | } | 249 | } |
244 | 250 | ||
@@ -263,6 +269,7 @@ free_next: | |||
263 | /* lastly zero out the first data page */ | 269 | /* lastly zero out the first data page */ |
264 | truncate_partial_data_page(inode, from); | 270 | truncate_partial_data_page(inode, from); |
265 | 271 | ||
272 | trace_f2fs_truncate_blocks_exit(inode, err); | ||
266 | return err; | 273 | return err; |
267 | } | 274 | } |
268 | 275 | ||
@@ -272,6 +279,8 @@ void f2fs_truncate(struct inode *inode) | |||
272 | S_ISLNK(inode->i_mode))) | 279 | S_ISLNK(inode->i_mode))) |
273 | return; | 280 | return; |
274 | 281 | ||
282 | trace_f2fs_truncate(inode); | ||
283 | |||
275 | if (!truncate_blocks(inode, i_size_read(inode))) { | 284 | if (!truncate_blocks(inode, i_size_read(inode))) { |
276 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 285 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
277 | mark_inode_dirty(inode); | 286 | mark_inode_dirty(inode); |