|
@@ -1351,6 +1351,10 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
|
|
|
pgoff_t index;
|
|
|
unsigned from, to;
|
|
|
|
|
|
+ trace_mark(ext4_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);
|
|
|
index = pos >> PAGE_CACHE_SHIFT;
|
|
|
from = pos & (PAGE_CACHE_SIZE - 1);
|
|
|
to = from + len;
|
|
@@ -1422,6 +1426,10 @@ static int ext4_ordered_write_end(struct file *file,
|
|
|
struct inode *inode = mapping->host;
|
|
|
int ret = 0, ret2;
|
|
|
|
|
|
+ trace_mark(ext4_ordered_write_end,
|
|
|
+ "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);
|
|
|
|
|
|
if (ret == 0) {
|
|
@@ -1460,6 +1468,10 @@ static int ext4_writeback_write_end(struct file *file,
|
|
|
int ret = 0, ret2;
|
|
|
loff_t new_i_size;
|
|
|
|
|
|
+ trace_mark(ext4_writeback_write_end,
|
|
|
+ "dev %s ino %lu pos %llu len %u copied %u",
|
|
|
+ inode->i_sb->s_id, inode->i_ino,
|
|
|
+ (unsigned long long) pos, len, copied);
|
|
|
new_i_size = pos + copied;
|
|
|
if (new_i_size > EXT4_I(inode)->i_disksize) {
|
|
|
ext4_update_i_disksize(inode, new_i_size);
|
|
@@ -1495,6 +1507,10 @@ static int ext4_journalled_write_end(struct file *file,
|
|
|
unsigned from, to;
|
|
|
loff_t new_i_size;
|
|
|
|
|
|
+ trace_mark(ext4_journalled_write_end,
|
|
|
+ "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);
|
|
|
to = from + len;
|
|
|
|
|
@@ -2311,6 +2327,9 @@ static int ext4_da_writepage(struct page *page,
|
|
|
struct buffer_head *page_bufs;
|
|
|
struct inode *inode = page->mapping->host;
|
|
|
|
|
|
+ trace_mark(ext4_da_writepage,
|
|
|
+ "dev %s ino %lu page_index %lu",
|
|
|
+ inode->i_sb->s_id, inode->i_ino, page->index);
|
|
|
size = i_size_read(inode);
|
|
|
if (page->index == size >> PAGE_CACHE_SHIFT)
|
|
|
len = size & ~PAGE_CACHE_MASK;
|
|
@@ -2421,6 +2440,20 @@ static int ext4_da_writepages(struct address_space *mapping,
|
|
|
int needed_blocks, ret = 0, nr_to_writebump = 0;
|
|
|
struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb);
|
|
|
|
|
|
+ trace_mark(ext4_da_writepages,
|
|
|
+ "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
|
|
|
* a transaction for special inodes like journal inode on last iput()
|
|
@@ -2539,6 +2572,14 @@ out_writepages:
|
|
|
if (!no_nrwrite_index_update)
|
|
|
wbc->no_nrwrite_index_update = 0;
|
|
|
wbc->nr_to_write -= nr_to_writebump;
|
|
|
+ trace_mark(ext4_da_writepage_result,
|
|
|
+ "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;
|
|
|
}
|
|
|
|
|
@@ -2590,6 +2631,11 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
|
|
|
len, flags, pagep, fsdata);
|
|
|
}
|
|
|
*fsdata = (void *)0;
|
|
|
+
|
|
|
+ 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:
|
|
|
/*
|
|
|
* With delayed allocation, we don't log the i_disksize update
|
|
@@ -2679,6 +2725,10 @@ static int ext4_da_write_end(struct file *file,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ trace_mark(ext4_da_write_end,
|
|
|
+ "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);
|
|
|
end = start + copied - 1;
|
|
|
|
|
@@ -2892,6 +2942,9 @@ static int ext4_normal_writepage(struct page *page,
|
|
|
loff_t size = i_size_read(inode);
|
|
|
loff_t len;
|
|
|
|
|
|
+ trace_mark(ext4_normal_writepage,
|
|
|
+ "dev %s ino %lu page_index %lu",
|
|
|
+ inode->i_sb->s_id, inode->i_ino, page->index);
|
|
|
J_ASSERT(PageLocked(page));
|
|
|
if (page->index == size >> PAGE_CACHE_SHIFT)
|
|
|
len = size & ~PAGE_CACHE_MASK;
|
|
@@ -2977,6 +3030,9 @@ static int ext4_journalled_writepage(struct page *page,
|
|
|
loff_t size = i_size_read(inode);
|
|
|
loff_t len;
|
|
|
|
|
|
+ trace_mark(ext4_journalled_writepage,
|
|
|
+ "dev %s ino %lu page_index %lu",
|
|
|
+ inode->i_sb->s_id, inode->i_ino, page->index);
|
|
|
J_ASSERT(PageLocked(page));
|
|
|
if (page->index == size >> PAGE_CACHE_SHIFT)
|
|
|
len = size & ~PAGE_CACHE_MASK;
|