aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/file.c
diff options
context:
space:
mode:
authorNamjae Jeon <namjae.jeon@samsung.com>2013-04-19 12:28:52 -0400
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-04-23 03:40:38 -0400
commit51dd62493477923723c797c6da60121ed39900ed (patch)
tree7589f4396dc6caf0c043831d6677989babcfa7cf /fs/f2fs/file.c
parenta2a4a7e4abb27c833d4e09ac1d434ab48a64062c (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.c9
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);