diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 13:06:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 13:06:20 -0400 |
commit | f1f8935a5c38a2c61e86a42bc971a2539eef2211 (patch) | |
tree | 694950045f2f5d89507d7206cf6595e09cdfbd2c /include | |
parent | 34116645d912f65d7eb4508a1db3c9d0e45facb1 (diff) | |
parent | f2a44523b20f323e4aef7c16261d34d6f0a4bf06 (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (97 commits)
jbd2: Unify log messages in jbd2 code
jbd/jbd2: validate sb->s_first in journal_get_superblock()
ext4: let ext4_ext_rm_leaf work with EXT_DEBUG defined
ext4: fix a syntax error in ext4_ext_insert_extent when debugging enabled
ext4: fix a typo in struct ext4_allocation_context
ext4: Don't normalize an falloc request if it can fit in 1 extent.
ext4: remove comments about extent mount option in ext4_new_inode()
ext4: let ext4_discard_partial_buffers handle unaligned range correctly
ext4: return ENOMEM if find_or_create_pages fails
ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock()
ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten
ext4: optimize locking for end_io extent conversion
ext4: remove unnecessary call to waitqueue_active()
ext4: Use correct locking for ext4_end_io_nolock()
ext4: fix race in xattr block allocation path
ext4: trace punch_hole correctly in ext4_ext_map_blocks
ext4: clean up AGGRESSIVE_TEST code
ext4: move variables to their scope
ext4: fix quota accounting during migration
ext4: migrate cleanup
...
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ext2_fs.h | 4 | ||||
-rw-r--r-- | include/linux/ext3_fs.h | 4 | ||||
-rw-r--r-- | include/linux/fs.h | 10 | ||||
-rw-r--r-- | include/linux/jbd.h | 64 | ||||
-rw-r--r-- | include/linux/jbd2.h | 69 | ||||
-rw-r--r-- | include/linux/jbd_common.h | 68 | ||||
-rw-r--r-- | include/trace/events/ext4.h | 480 |
7 files changed, 554 insertions, 145 deletions
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h index 53792bf36c71..ce1b719e8bd4 100644 --- a/include/linux/ext2_fs.h +++ b/include/linux/ext2_fs.h | |||
@@ -197,8 +197,8 @@ struct ext2_group_desc | |||
197 | 197 | ||
198 | /* Flags that should be inherited by new inodes from their parent. */ | 198 | /* Flags that should be inherited by new inodes from their parent. */ |
199 | #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\ | 199 | #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\ |
200 | EXT2_SYNC_FL | EXT2_IMMUTABLE_FL | EXT2_APPEND_FL |\ | 200 | EXT2_SYNC_FL | EXT2_NODUMP_FL |\ |
201 | EXT2_NODUMP_FL | EXT2_NOATIME_FL | EXT2_COMPRBLK_FL|\ | 201 | EXT2_NOATIME_FL | EXT2_COMPRBLK_FL |\ |
202 | EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\ | 202 | EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\ |
203 | EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL) | 203 | EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL) |
204 | 204 | ||
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index f5fceffd4cfe..dec99116a0e4 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
@@ -180,8 +180,8 @@ struct ext3_group_desc | |||
180 | 180 | ||
181 | /* Flags that should be inherited by new inodes from their parent. */ | 181 | /* Flags that should be inherited by new inodes from their parent. */ |
182 | #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\ | 182 | #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\ |
183 | EXT3_SYNC_FL | EXT3_IMMUTABLE_FL | EXT3_APPEND_FL |\ | 183 | EXT3_SYNC_FL | EXT3_NODUMP_FL |\ |
184 | EXT3_NODUMP_FL | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL|\ | 184 | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL |\ |
185 | EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\ | 185 | EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\ |
186 | EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL) | 186 | EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL) |
187 | 187 | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 7a049fd2aa4c..78af9385f415 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -770,12 +770,13 @@ struct inode { | |||
770 | unsigned long i_ino; | 770 | unsigned long i_ino; |
771 | unsigned int i_nlink; | 771 | unsigned int i_nlink; |
772 | dev_t i_rdev; | 772 | dev_t i_rdev; |
773 | loff_t i_size; | ||
774 | struct timespec i_atime; | 773 | struct timespec i_atime; |
775 | struct timespec i_mtime; | 774 | struct timespec i_mtime; |
776 | struct timespec i_ctime; | 775 | struct timespec i_ctime; |
777 | unsigned int i_blkbits; | 776 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ |
777 | unsigned short i_bytes; | ||
778 | blkcnt_t i_blocks; | 778 | blkcnt_t i_blocks; |
779 | loff_t i_size; | ||
779 | 780 | ||
780 | #ifdef __NEED_I_SIZE_ORDERED | 781 | #ifdef __NEED_I_SIZE_ORDERED |
781 | seqcount_t i_size_seqcount; | 782 | seqcount_t i_size_seqcount; |
@@ -783,7 +784,6 @@ struct inode { | |||
783 | 784 | ||
784 | /* Misc */ | 785 | /* Misc */ |
785 | unsigned long i_state; | 786 | unsigned long i_state; |
786 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ | ||
787 | struct mutex i_mutex; | 787 | struct mutex i_mutex; |
788 | 788 | ||
789 | unsigned long dirtied_when; /* jiffies of first dirtying */ | 789 | unsigned long dirtied_when; /* jiffies of first dirtying */ |
@@ -797,9 +797,10 @@ struct inode { | |||
797 | struct rcu_head i_rcu; | 797 | struct rcu_head i_rcu; |
798 | }; | 798 | }; |
799 | atomic_t i_count; | 799 | atomic_t i_count; |
800 | unsigned int i_blkbits; | ||
800 | u64 i_version; | 801 | u64 i_version; |
801 | unsigned short i_bytes; | ||
802 | atomic_t i_dio_count; | 802 | atomic_t i_dio_count; |
803 | atomic_t i_writecount; | ||
803 | const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ | 804 | const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ |
804 | struct file_lock *i_flock; | 805 | struct file_lock *i_flock; |
805 | struct address_space i_data; | 806 | struct address_space i_data; |
@@ -823,7 +824,6 @@ struct inode { | |||
823 | #ifdef CONFIG_IMA | 824 | #ifdef CONFIG_IMA |
824 | atomic_t i_readcount; /* struct files open RO */ | 825 | atomic_t i_readcount; /* struct files open RO */ |
825 | #endif | 826 | #endif |
826 | atomic_t i_writecount; | ||
827 | void *i_private; /* fs or device private pointer */ | 827 | void *i_private; /* fs or device private pointer */ |
828 | }; | 828 | }; |
829 | 829 | ||
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index e6a5e34bed4f..c7acdde3243d 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -244,6 +244,7 @@ typedef struct journal_superblock_s | |||
244 | 244 | ||
245 | #include <linux/fs.h> | 245 | #include <linux/fs.h> |
246 | #include <linux/sched.h> | 246 | #include <linux/sched.h> |
247 | #include <linux/jbd_common.h> | ||
247 | 248 | ||
248 | #define J_ASSERT(assert) BUG_ON(!(assert)) | 249 | #define J_ASSERT(assert) BUG_ON(!(assert)) |
249 | 250 | ||
@@ -270,69 +271,6 @@ typedef struct journal_superblock_s | |||
270 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) | 271 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) |
271 | #endif | 272 | #endif |
272 | 273 | ||
273 | enum jbd_state_bits { | ||
274 | BH_JBD /* Has an attached ext3 journal_head */ | ||
275 | = BH_PrivateStart, | ||
276 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
277 | BH_Freed, /* Has been freed (truncated) */ | ||
278 | BH_Revoked, /* Has been revoked from the log */ | ||
279 | BH_RevokeValid, /* Revoked flag is valid */ | ||
280 | BH_JBDDirty, /* Is dirty but journaled */ | ||
281 | BH_State, /* Pins most journal_head state */ | ||
282 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
283 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
284 | }; | ||
285 | |||
286 | BUFFER_FNS(JBD, jbd) | ||
287 | BUFFER_FNS(JWrite, jwrite) | ||
288 | BUFFER_FNS(JBDDirty, jbddirty) | ||
289 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
290 | BUFFER_FNS(Revoked, revoked) | ||
291 | TAS_BUFFER_FNS(Revoked, revoked) | ||
292 | BUFFER_FNS(RevokeValid, revokevalid) | ||
293 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
294 | BUFFER_FNS(Freed, freed) | ||
295 | |||
296 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
297 | { | ||
298 | return jh->b_bh; | ||
299 | } | ||
300 | |||
301 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
302 | { | ||
303 | return bh->b_private; | ||
304 | } | ||
305 | |||
306 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
307 | { | ||
308 | bit_spin_lock(BH_State, &bh->b_state); | ||
309 | } | ||
310 | |||
311 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
312 | { | ||
313 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
314 | } | ||
315 | |||
316 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
317 | { | ||
318 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
319 | } | ||
320 | |||
321 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
322 | { | ||
323 | bit_spin_unlock(BH_State, &bh->b_state); | ||
324 | } | ||
325 | |||
326 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
327 | { | ||
328 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
329 | } | ||
330 | |||
331 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
332 | { | ||
333 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
334 | } | ||
335 | |||
336 | struct jbd_revoke_table_s; | 274 | struct jbd_revoke_table_s; |
337 | 275 | ||
338 | /** | 276 | /** |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 38f307b8c334..2092ea21e469 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -275,6 +275,7 @@ typedef struct journal_superblock_s | |||
275 | 275 | ||
276 | #include <linux/fs.h> | 276 | #include <linux/fs.h> |
277 | #include <linux/sched.h> | 277 | #include <linux/sched.h> |
278 | #include <linux/jbd_common.h> | ||
278 | 279 | ||
279 | #define J_ASSERT(assert) BUG_ON(!(assert)) | 280 | #define J_ASSERT(assert) BUG_ON(!(assert)) |
280 | 281 | ||
@@ -302,70 +303,6 @@ typedef struct journal_superblock_s | |||
302 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) | 303 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) |
303 | #endif | 304 | #endif |
304 | 305 | ||
305 | enum jbd_state_bits { | ||
306 | BH_JBD /* Has an attached ext3 journal_head */ | ||
307 | = BH_PrivateStart, | ||
308 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
309 | BH_Freed, /* Has been freed (truncated) */ | ||
310 | BH_Revoked, /* Has been revoked from the log */ | ||
311 | BH_RevokeValid, /* Revoked flag is valid */ | ||
312 | BH_JBDDirty, /* Is dirty but journaled */ | ||
313 | BH_State, /* Pins most journal_head state */ | ||
314 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
315 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
316 | BH_JBDPrivateStart, /* First bit available for private use by FS */ | ||
317 | }; | ||
318 | |||
319 | BUFFER_FNS(JBD, jbd) | ||
320 | BUFFER_FNS(JWrite, jwrite) | ||
321 | BUFFER_FNS(JBDDirty, jbddirty) | ||
322 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
323 | BUFFER_FNS(Revoked, revoked) | ||
324 | TAS_BUFFER_FNS(Revoked, revoked) | ||
325 | BUFFER_FNS(RevokeValid, revokevalid) | ||
326 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
327 | BUFFER_FNS(Freed, freed) | ||
328 | |||
329 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
330 | { | ||
331 | return jh->b_bh; | ||
332 | } | ||
333 | |||
334 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
335 | { | ||
336 | return bh->b_private; | ||
337 | } | ||
338 | |||
339 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
340 | { | ||
341 | bit_spin_lock(BH_State, &bh->b_state); | ||
342 | } | ||
343 | |||
344 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
345 | { | ||
346 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
347 | } | ||
348 | |||
349 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
350 | { | ||
351 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
352 | } | ||
353 | |||
354 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
355 | { | ||
356 | bit_spin_unlock(BH_State, &bh->b_state); | ||
357 | } | ||
358 | |||
359 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
360 | { | ||
361 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
362 | } | ||
363 | |||
364 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
365 | { | ||
366 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
367 | } | ||
368 | |||
369 | /* Flags in jbd_inode->i_flags */ | 306 | /* Flags in jbd_inode->i_flags */ |
370 | #define __JI_COMMIT_RUNNING 0 | 307 | #define __JI_COMMIT_RUNNING 0 |
371 | /* Commit of the inode data in progress. We use this flag to protect us from | 308 | /* Commit of the inode data in progress. We use this flag to protect us from |
@@ -1106,9 +1043,9 @@ static inline handle_t *journal_current_handle(void) | |||
1106 | */ | 1043 | */ |
1107 | 1044 | ||
1108 | extern handle_t *jbd2_journal_start(journal_t *, int nblocks); | 1045 | extern handle_t *jbd2_journal_start(journal_t *, int nblocks); |
1109 | extern handle_t *jbd2__journal_start(journal_t *, int nblocks, int gfp_mask); | 1046 | extern handle_t *jbd2__journal_start(journal_t *, int nblocks, gfp_t gfp_mask); |
1110 | extern int jbd2_journal_restart(handle_t *, int nblocks); | 1047 | extern int jbd2_journal_restart(handle_t *, int nblocks); |
1111 | extern int jbd2__journal_restart(handle_t *, int nblocks, int gfp_mask); | 1048 | extern int jbd2__journal_restart(handle_t *, int nblocks, gfp_t gfp_mask); |
1112 | extern int jbd2_journal_extend (handle_t *, int nblocks); | 1049 | extern int jbd2_journal_extend (handle_t *, int nblocks); |
1113 | extern int jbd2_journal_get_write_access(handle_t *, struct buffer_head *); | 1050 | extern int jbd2_journal_get_write_access(handle_t *, struct buffer_head *); |
1114 | extern int jbd2_journal_get_create_access (handle_t *, struct buffer_head *); | 1051 | extern int jbd2_journal_get_create_access (handle_t *, struct buffer_head *); |
diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h new file mode 100644 index 000000000000..6230f8556a4e --- /dev/null +++ b/include/linux/jbd_common.h | |||
@@ -0,0 +1,68 @@ | |||
1 | #ifndef _LINUX_JBD_STATE_H | ||
2 | #define _LINUX_JBD_STATE_H | ||
3 | |||
4 | enum jbd_state_bits { | ||
5 | BH_JBD /* Has an attached ext3 journal_head */ | ||
6 | = BH_PrivateStart, | ||
7 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
8 | BH_Freed, /* Has been freed (truncated) */ | ||
9 | BH_Revoked, /* Has been revoked from the log */ | ||
10 | BH_RevokeValid, /* Revoked flag is valid */ | ||
11 | BH_JBDDirty, /* Is dirty but journaled */ | ||
12 | BH_State, /* Pins most journal_head state */ | ||
13 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
14 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
15 | BH_JBDPrivateStart, /* First bit available for private use by FS */ | ||
16 | }; | ||
17 | |||
18 | BUFFER_FNS(JBD, jbd) | ||
19 | BUFFER_FNS(JWrite, jwrite) | ||
20 | BUFFER_FNS(JBDDirty, jbddirty) | ||
21 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
22 | BUFFER_FNS(Revoked, revoked) | ||
23 | TAS_BUFFER_FNS(Revoked, revoked) | ||
24 | BUFFER_FNS(RevokeValid, revokevalid) | ||
25 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
26 | BUFFER_FNS(Freed, freed) | ||
27 | |||
28 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
29 | { | ||
30 | return jh->b_bh; | ||
31 | } | ||
32 | |||
33 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
34 | { | ||
35 | return bh->b_private; | ||
36 | } | ||
37 | |||
38 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
39 | { | ||
40 | bit_spin_lock(BH_State, &bh->b_state); | ||
41 | } | ||
42 | |||
43 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
44 | { | ||
45 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
46 | } | ||
47 | |||
48 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
49 | { | ||
50 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
51 | } | ||
52 | |||
53 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
54 | { | ||
55 | bit_spin_unlock(BH_State, &bh->b_state); | ||
56 | } | ||
57 | |||
58 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
59 | { | ||
60 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
61 | } | ||
62 | |||
63 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
64 | { | ||
65 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
66 | } | ||
67 | |||
68 | #endif | ||
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index b50a54736242..748ff7cbe555 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h | |||
@@ -9,9 +9,12 @@ | |||
9 | 9 | ||
10 | struct ext4_allocation_context; | 10 | struct ext4_allocation_context; |
11 | struct ext4_allocation_request; | 11 | struct ext4_allocation_request; |
12 | struct ext4_extent; | ||
12 | struct ext4_prealloc_space; | 13 | struct ext4_prealloc_space; |
13 | struct ext4_inode_info; | 14 | struct ext4_inode_info; |
14 | struct mpage_da_data; | 15 | struct mpage_da_data; |
16 | struct ext4_map_blocks; | ||
17 | struct ext4_extent; | ||
15 | 18 | ||
16 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) | 19 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) |
17 | 20 | ||
@@ -1032,9 +1035,9 @@ TRACE_EVENT(ext4_forget, | |||
1032 | ); | 1035 | ); |
1033 | 1036 | ||
1034 | TRACE_EVENT(ext4_da_update_reserve_space, | 1037 | TRACE_EVENT(ext4_da_update_reserve_space, |
1035 | TP_PROTO(struct inode *inode, int used_blocks), | 1038 | TP_PROTO(struct inode *inode, int used_blocks, int quota_claim), |
1036 | 1039 | ||
1037 | TP_ARGS(inode, used_blocks), | 1040 | TP_ARGS(inode, used_blocks, quota_claim), |
1038 | 1041 | ||
1039 | TP_STRUCT__entry( | 1042 | TP_STRUCT__entry( |
1040 | __field( dev_t, dev ) | 1043 | __field( dev_t, dev ) |
@@ -1045,6 +1048,7 @@ TRACE_EVENT(ext4_da_update_reserve_space, | |||
1045 | __field( int, reserved_data_blocks ) | 1048 | __field( int, reserved_data_blocks ) |
1046 | __field( int, reserved_meta_blocks ) | 1049 | __field( int, reserved_meta_blocks ) |
1047 | __field( int, allocated_meta_blocks ) | 1050 | __field( int, allocated_meta_blocks ) |
1051 | __field( int, quota_claim ) | ||
1048 | ), | 1052 | ), |
1049 | 1053 | ||
1050 | TP_fast_assign( | 1054 | TP_fast_assign( |
@@ -1053,19 +1057,24 @@ TRACE_EVENT(ext4_da_update_reserve_space, | |||
1053 | __entry->mode = inode->i_mode; | 1057 | __entry->mode = inode->i_mode; |
1054 | __entry->i_blocks = inode->i_blocks; | 1058 | __entry->i_blocks = inode->i_blocks; |
1055 | __entry->used_blocks = used_blocks; | 1059 | __entry->used_blocks = used_blocks; |
1056 | __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; | 1060 | __entry->reserved_data_blocks = |
1057 | __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; | 1061 | EXT4_I(inode)->i_reserved_data_blocks; |
1058 | __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; | 1062 | __entry->reserved_meta_blocks = |
1063 | EXT4_I(inode)->i_reserved_meta_blocks; | ||
1064 | __entry->allocated_meta_blocks = | ||
1065 | EXT4_I(inode)->i_allocated_meta_blocks; | ||
1066 | __entry->quota_claim = quota_claim; | ||
1059 | ), | 1067 | ), |
1060 | 1068 | ||
1061 | TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " | 1069 | TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " |
1062 | "reserved_data_blocks %d reserved_meta_blocks %d " | 1070 | "reserved_data_blocks %d reserved_meta_blocks %d " |
1063 | "allocated_meta_blocks %d", | 1071 | "allocated_meta_blocks %d quota_claim %d", |
1064 | MAJOR(__entry->dev), MINOR(__entry->dev), | 1072 | MAJOR(__entry->dev), MINOR(__entry->dev), |
1065 | (unsigned long) __entry->ino, | 1073 | (unsigned long) __entry->ino, |
1066 | __entry->mode, __entry->i_blocks, | 1074 | __entry->mode, __entry->i_blocks, |
1067 | __entry->used_blocks, __entry->reserved_data_blocks, | 1075 | __entry->used_blocks, __entry->reserved_data_blocks, |
1068 | __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) | 1076 | __entry->reserved_meta_blocks, __entry->allocated_meta_blocks, |
1077 | __entry->quota_claim) | ||
1069 | ); | 1078 | ); |
1070 | 1079 | ||
1071 | TRACE_EVENT(ext4_da_reserve_space, | 1080 | TRACE_EVENT(ext4_da_reserve_space, |
@@ -1386,6 +1395,87 @@ DEFINE_EVENT(ext4__truncate, ext4_truncate_exit, | |||
1386 | TP_ARGS(inode) | 1395 | TP_ARGS(inode) |
1387 | ); | 1396 | ); |
1388 | 1397 | ||
1398 | /* 'ux' is the uninitialized extent. */ | ||
1399 | TRACE_EVENT(ext4_ext_convert_to_initialized_enter, | ||
1400 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1401 | struct ext4_extent *ux), | ||
1402 | |||
1403 | TP_ARGS(inode, map, ux), | ||
1404 | |||
1405 | TP_STRUCT__entry( | ||
1406 | __field( ino_t, ino ) | ||
1407 | __field( dev_t, dev ) | ||
1408 | __field( ext4_lblk_t, m_lblk ) | ||
1409 | __field( unsigned, m_len ) | ||
1410 | __field( ext4_lblk_t, u_lblk ) | ||
1411 | __field( unsigned, u_len ) | ||
1412 | __field( ext4_fsblk_t, u_pblk ) | ||
1413 | ), | ||
1414 | |||
1415 | TP_fast_assign( | ||
1416 | __entry->ino = inode->i_ino; | ||
1417 | __entry->dev = inode->i_sb->s_dev; | ||
1418 | __entry->m_lblk = map->m_lblk; | ||
1419 | __entry->m_len = map->m_len; | ||
1420 | __entry->u_lblk = le32_to_cpu(ux->ee_block); | ||
1421 | __entry->u_len = ext4_ext_get_actual_len(ux); | ||
1422 | __entry->u_pblk = ext4_ext_pblock(ux); | ||
1423 | ), | ||
1424 | |||
1425 | TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u " | ||
1426 | "u_pblk %llu", | ||
1427 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1428 | (unsigned long) __entry->ino, | ||
1429 | __entry->m_lblk, __entry->m_len, | ||
1430 | __entry->u_lblk, __entry->u_len, __entry->u_pblk) | ||
1431 | ); | ||
1432 | |||
1433 | /* | ||
1434 | * 'ux' is the uninitialized extent. | ||
1435 | * 'ix' is the initialized extent to which blocks are transferred. | ||
1436 | */ | ||
1437 | TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath, | ||
1438 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1439 | struct ext4_extent *ux, struct ext4_extent *ix), | ||
1440 | |||
1441 | TP_ARGS(inode, map, ux, ix), | ||
1442 | |||
1443 | TP_STRUCT__entry( | ||
1444 | __field( ino_t, ino ) | ||
1445 | __field( dev_t, dev ) | ||
1446 | __field( ext4_lblk_t, m_lblk ) | ||
1447 | __field( unsigned, m_len ) | ||
1448 | __field( ext4_lblk_t, u_lblk ) | ||
1449 | __field( unsigned, u_len ) | ||
1450 | __field( ext4_fsblk_t, u_pblk ) | ||
1451 | __field( ext4_lblk_t, i_lblk ) | ||
1452 | __field( unsigned, i_len ) | ||
1453 | __field( ext4_fsblk_t, i_pblk ) | ||
1454 | ), | ||
1455 | |||
1456 | TP_fast_assign( | ||
1457 | __entry->ino = inode->i_ino; | ||
1458 | __entry->dev = inode->i_sb->s_dev; | ||
1459 | __entry->m_lblk = map->m_lblk; | ||
1460 | __entry->m_len = map->m_len; | ||
1461 | __entry->u_lblk = le32_to_cpu(ux->ee_block); | ||
1462 | __entry->u_len = ext4_ext_get_actual_len(ux); | ||
1463 | __entry->u_pblk = ext4_ext_pblock(ux); | ||
1464 | __entry->i_lblk = le32_to_cpu(ix->ee_block); | ||
1465 | __entry->i_len = ext4_ext_get_actual_len(ix); | ||
1466 | __entry->i_pblk = ext4_ext_pblock(ix); | ||
1467 | ), | ||
1468 | |||
1469 | TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u " | ||
1470 | "u_lblk %u u_len %u u_pblk %llu " | ||
1471 | "i_lblk %u i_len %u i_pblk %llu ", | ||
1472 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1473 | (unsigned long) __entry->ino, | ||
1474 | __entry->m_lblk, __entry->m_len, | ||
1475 | __entry->u_lblk, __entry->u_len, __entry->u_pblk, | ||
1476 | __entry->i_lblk, __entry->i_len, __entry->i_pblk) | ||
1477 | ); | ||
1478 | |||
1389 | DECLARE_EVENT_CLASS(ext4__map_blocks_enter, | 1479 | DECLARE_EVENT_CLASS(ext4__map_blocks_enter, |
1390 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, | 1480 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, |
1391 | unsigned int len, unsigned int flags), | 1481 | unsigned int len, unsigned int flags), |
@@ -1589,6 +1679,382 @@ DEFINE_EVENT(ext4__trim, ext4_trim_all_free, | |||
1589 | TP_ARGS(sb, group, start, len) | 1679 | TP_ARGS(sb, group, start, len) |
1590 | ); | 1680 | ); |
1591 | 1681 | ||
1682 | TRACE_EVENT(ext4_ext_handle_uninitialized_extents, | ||
1683 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1684 | unsigned int allocated, ext4_fsblk_t newblock), | ||
1685 | |||
1686 | TP_ARGS(inode, map, allocated, newblock), | ||
1687 | |||
1688 | TP_STRUCT__entry( | ||
1689 | __field( ino_t, ino ) | ||
1690 | __field( dev_t, dev ) | ||
1691 | __field( ext4_lblk_t, lblk ) | ||
1692 | __field( ext4_fsblk_t, pblk ) | ||
1693 | __field( unsigned int, len ) | ||
1694 | __field( int, flags ) | ||
1695 | __field( unsigned int, allocated ) | ||
1696 | __field( ext4_fsblk_t, newblk ) | ||
1697 | ), | ||
1698 | |||
1699 | TP_fast_assign( | ||
1700 | __entry->ino = inode->i_ino; | ||
1701 | __entry->dev = inode->i_sb->s_dev; | ||
1702 | __entry->lblk = map->m_lblk; | ||
1703 | __entry->pblk = map->m_pblk; | ||
1704 | __entry->len = map->m_len; | ||
1705 | __entry->flags = map->m_flags; | ||
1706 | __entry->allocated = allocated; | ||
1707 | __entry->newblk = newblock; | ||
1708 | ), | ||
1709 | |||
1710 | TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %d" | ||
1711 | "allocated %d newblock %llu", | ||
1712 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1713 | (unsigned long) __entry->ino, | ||
1714 | (unsigned) __entry->lblk, (unsigned long long) __entry->pblk, | ||
1715 | __entry->len, __entry->flags, | ||
1716 | (unsigned int) __entry->allocated, | ||
1717 | (unsigned long long) __entry->newblk) | ||
1718 | ); | ||
1719 | |||
1720 | TRACE_EVENT(ext4_get_implied_cluster_alloc_exit, | ||
1721 | TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret), | ||
1722 | |||
1723 | TP_ARGS(sb, map, ret), | ||
1724 | |||
1725 | TP_STRUCT__entry( | ||
1726 | __field( dev_t, dev ) | ||
1727 | __field( ext4_lblk_t, lblk ) | ||
1728 | __field( ext4_fsblk_t, pblk ) | ||
1729 | __field( unsigned int, len ) | ||
1730 | __field( unsigned int, flags ) | ||
1731 | __field( int, ret ) | ||
1732 | ), | ||
1733 | |||
1734 | TP_fast_assign( | ||
1735 | __entry->dev = sb->s_dev; | ||
1736 | __entry->lblk = map->m_lblk; | ||
1737 | __entry->pblk = map->m_pblk; | ||
1738 | __entry->len = map->m_len; | ||
1739 | __entry->flags = map->m_flags; | ||
1740 | __entry->ret = ret; | ||
1741 | ), | ||
1742 | |||
1743 | TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d", | ||
1744 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1745 | __entry->lblk, (unsigned long long) __entry->pblk, | ||
1746 | __entry->len, __entry->flags, __entry->ret) | ||
1747 | ); | ||
1748 | |||
1749 | TRACE_EVENT(ext4_ext_put_in_cache, | ||
1750 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len, | ||
1751 | ext4_fsblk_t start), | ||
1752 | |||
1753 | TP_ARGS(inode, lblk, len, start), | ||
1754 | |||
1755 | TP_STRUCT__entry( | ||
1756 | __field( ino_t, ino ) | ||
1757 | __field( dev_t, dev ) | ||
1758 | __field( ext4_lblk_t, lblk ) | ||
1759 | __field( unsigned int, len ) | ||
1760 | __field( ext4_fsblk_t, start ) | ||
1761 | ), | ||
1762 | |||
1763 | TP_fast_assign( | ||
1764 | __entry->ino = inode->i_ino; | ||
1765 | __entry->dev = inode->i_sb->s_dev; | ||
1766 | __entry->lblk = lblk; | ||
1767 | __entry->len = len; | ||
1768 | __entry->start = start; | ||
1769 | ), | ||
1770 | |||
1771 | TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu", | ||
1772 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1773 | (unsigned long) __entry->ino, | ||
1774 | (unsigned) __entry->lblk, | ||
1775 | __entry->len, | ||
1776 | (unsigned long long) __entry->start) | ||
1777 | ); | ||
1778 | |||
1779 | TRACE_EVENT(ext4_ext_in_cache, | ||
1780 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret), | ||
1781 | |||
1782 | TP_ARGS(inode, lblk, ret), | ||
1783 | |||
1784 | TP_STRUCT__entry( | ||
1785 | __field( ino_t, ino ) | ||
1786 | __field( dev_t, dev ) | ||
1787 | __field( ext4_lblk_t, lblk ) | ||
1788 | __field( int, ret ) | ||
1789 | ), | ||
1790 | |||
1791 | TP_fast_assign( | ||
1792 | __entry->ino = inode->i_ino; | ||
1793 | __entry->dev = inode->i_sb->s_dev; | ||
1794 | __entry->lblk = lblk; | ||
1795 | __entry->ret = ret; | ||
1796 | ), | ||
1797 | |||
1798 | TP_printk("dev %d,%d ino %lu lblk %u ret %d", | ||
1799 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1800 | (unsigned long) __entry->ino, | ||
1801 | (unsigned) __entry->lblk, | ||
1802 | __entry->ret) | ||
1803 | |||
1804 | ); | ||
1805 | |||
1806 | TRACE_EVENT(ext4_find_delalloc_range, | ||
1807 | TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to, | ||
1808 | int reverse, int found, ext4_lblk_t found_blk), | ||
1809 | |||
1810 | TP_ARGS(inode, from, to, reverse, found, found_blk), | ||
1811 | |||
1812 | TP_STRUCT__entry( | ||
1813 | __field( ino_t, ino ) | ||
1814 | __field( dev_t, dev ) | ||
1815 | __field( ext4_lblk_t, from ) | ||
1816 | __field( ext4_lblk_t, to ) | ||
1817 | __field( int, reverse ) | ||
1818 | __field( int, found ) | ||
1819 | __field( ext4_lblk_t, found_blk ) | ||
1820 | ), | ||
1821 | |||
1822 | TP_fast_assign( | ||
1823 | __entry->ino = inode->i_ino; | ||
1824 | __entry->dev = inode->i_sb->s_dev; | ||
1825 | __entry->from = from; | ||
1826 | __entry->to = to; | ||
1827 | __entry->reverse = reverse; | ||
1828 | __entry->found = found; | ||
1829 | __entry->found_blk = found_blk; | ||
1830 | ), | ||
1831 | |||
1832 | TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d " | ||
1833 | "(blk = %u)", | ||
1834 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1835 | (unsigned long) __entry->ino, | ||
1836 | (unsigned) __entry->from, (unsigned) __entry->to, | ||
1837 | __entry->reverse, __entry->found, | ||
1838 | (unsigned) __entry->found_blk) | ||
1839 | ); | ||
1840 | |||
1841 | TRACE_EVENT(ext4_get_reserved_cluster_alloc, | ||
1842 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len), | ||
1843 | |||
1844 | TP_ARGS(inode, lblk, len), | ||
1845 | |||
1846 | TP_STRUCT__entry( | ||
1847 | __field( ino_t, ino ) | ||
1848 | __field( dev_t, dev ) | ||
1849 | __field( ext4_lblk_t, lblk ) | ||
1850 | __field( unsigned int, len ) | ||
1851 | ), | ||
1852 | |||
1853 | TP_fast_assign( | ||
1854 | __entry->ino = inode->i_ino; | ||
1855 | __entry->dev = inode->i_sb->s_dev; | ||
1856 | __entry->lblk = lblk; | ||
1857 | __entry->len = len; | ||
1858 | ), | ||
1859 | |||
1860 | TP_printk("dev %d,%d ino %lu lblk %u len %u", | ||
1861 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1862 | (unsigned long) __entry->ino, | ||
1863 | (unsigned) __entry->lblk, | ||
1864 | __entry->len) | ||
1865 | ); | ||
1866 | |||
1867 | TRACE_EVENT(ext4_ext_show_extent, | ||
1868 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk, | ||
1869 | unsigned short len), | ||
1870 | |||
1871 | TP_ARGS(inode, lblk, pblk, len), | ||
1872 | |||
1873 | TP_STRUCT__entry( | ||
1874 | __field( ino_t, ino ) | ||
1875 | __field( dev_t, dev ) | ||
1876 | __field( ext4_lblk_t, lblk ) | ||
1877 | __field( ext4_fsblk_t, pblk ) | ||
1878 | __field( unsigned short, len ) | ||
1879 | ), | ||
1880 | |||
1881 | TP_fast_assign( | ||
1882 | __entry->ino = inode->i_ino; | ||
1883 | __entry->dev = inode->i_sb->s_dev; | ||
1884 | __entry->lblk = lblk; | ||
1885 | __entry->pblk = pblk; | ||
1886 | __entry->len = len; | ||
1887 | ), | ||
1888 | |||
1889 | TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u", | ||
1890 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1891 | (unsigned long) __entry->ino, | ||
1892 | (unsigned) __entry->lblk, | ||
1893 | (unsigned long long) __entry->pblk, | ||
1894 | (unsigned short) __entry->len) | ||
1895 | ); | ||
1896 | |||
1897 | TRACE_EVENT(ext4_remove_blocks, | ||
1898 | TP_PROTO(struct inode *inode, struct ext4_extent *ex, | ||
1899 | ext4_lblk_t from, ext4_fsblk_t to, | ||
1900 | ext4_fsblk_t partial_cluster), | ||
1901 | |||
1902 | TP_ARGS(inode, ex, from, to, partial_cluster), | ||
1903 | |||
1904 | TP_STRUCT__entry( | ||
1905 | __field( ino_t, ino ) | ||
1906 | __field( dev_t, dev ) | ||
1907 | __field( ext4_lblk_t, ee_lblk ) | ||
1908 | __field( ext4_fsblk_t, ee_pblk ) | ||
1909 | __field( unsigned short, ee_len ) | ||
1910 | __field( ext4_lblk_t, from ) | ||
1911 | __field( ext4_lblk_t, to ) | ||
1912 | __field( ext4_fsblk_t, partial ) | ||
1913 | ), | ||
1914 | |||
1915 | TP_fast_assign( | ||
1916 | __entry->ino = inode->i_ino; | ||
1917 | __entry->dev = inode->i_sb->s_dev; | ||
1918 | __entry->ee_lblk = cpu_to_le32(ex->ee_block); | ||
1919 | __entry->ee_pblk = ext4_ext_pblock(ex); | ||
1920 | __entry->ee_len = ext4_ext_get_actual_len(ex); | ||
1921 | __entry->from = from; | ||
1922 | __entry->to = to; | ||
1923 | __entry->partial = partial_cluster; | ||
1924 | ), | ||
1925 | |||
1926 | TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]" | ||
1927 | "from %u to %u partial_cluster %u", | ||
1928 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1929 | (unsigned long) __entry->ino, | ||
1930 | (unsigned) __entry->ee_lblk, | ||
1931 | (unsigned long long) __entry->ee_pblk, | ||
1932 | (unsigned short) __entry->ee_len, | ||
1933 | (unsigned) __entry->from, | ||
1934 | (unsigned) __entry->to, | ||
1935 | (unsigned) __entry->partial) | ||
1936 | ); | ||
1937 | |||
1938 | TRACE_EVENT(ext4_ext_rm_leaf, | ||
1939 | TP_PROTO(struct inode *inode, ext4_lblk_t start, | ||
1940 | struct ext4_extent *ex, ext4_fsblk_t partial_cluster), | ||
1941 | |||
1942 | TP_ARGS(inode, start, ex, partial_cluster), | ||
1943 | |||
1944 | TP_STRUCT__entry( | ||
1945 | __field( ino_t, ino ) | ||
1946 | __field( dev_t, dev ) | ||
1947 | __field( ext4_lblk_t, start ) | ||
1948 | __field( ext4_lblk_t, ee_lblk ) | ||
1949 | __field( ext4_fsblk_t, ee_pblk ) | ||
1950 | __field( short, ee_len ) | ||
1951 | __field( ext4_fsblk_t, partial ) | ||
1952 | ), | ||
1953 | |||
1954 | TP_fast_assign( | ||
1955 | __entry->ino = inode->i_ino; | ||
1956 | __entry->dev = inode->i_sb->s_dev; | ||
1957 | __entry->start = start; | ||
1958 | __entry->ee_lblk = le32_to_cpu(ex->ee_block); | ||
1959 | __entry->ee_pblk = ext4_ext_pblock(ex); | ||
1960 | __entry->ee_len = ext4_ext_get_actual_len(ex); | ||
1961 | __entry->partial = partial_cluster; | ||
1962 | ), | ||
1963 | |||
1964 | TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]" | ||
1965 | "partial_cluster %u", | ||
1966 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1967 | (unsigned long) __entry->ino, | ||
1968 | (unsigned) __entry->start, | ||
1969 | (unsigned) __entry->ee_lblk, | ||
1970 | (unsigned long long) __entry->ee_pblk, | ||
1971 | (unsigned short) __entry->ee_len, | ||
1972 | (unsigned) __entry->partial) | ||
1973 | ); | ||
1974 | |||
1975 | TRACE_EVENT(ext4_ext_rm_idx, | ||
1976 | TP_PROTO(struct inode *inode, ext4_fsblk_t pblk), | ||
1977 | |||
1978 | TP_ARGS(inode, pblk), | ||
1979 | |||
1980 | TP_STRUCT__entry( | ||
1981 | __field( ino_t, ino ) | ||
1982 | __field( dev_t, dev ) | ||
1983 | __field( ext4_fsblk_t, pblk ) | ||
1984 | ), | ||
1985 | |||
1986 | TP_fast_assign( | ||
1987 | __entry->ino = inode->i_ino; | ||
1988 | __entry->dev = inode->i_sb->s_dev; | ||
1989 | __entry->pblk = pblk; | ||
1990 | ), | ||
1991 | |||
1992 | TP_printk("dev %d,%d ino %lu index_pblk %llu", | ||
1993 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1994 | (unsigned long) __entry->ino, | ||
1995 | (unsigned long long) __entry->pblk) | ||
1996 | ); | ||
1997 | |||
1998 | TRACE_EVENT(ext4_ext_remove_space, | ||
1999 | TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth), | ||
2000 | |||
2001 | TP_ARGS(inode, start, depth), | ||
2002 | |||
2003 | TP_STRUCT__entry( | ||
2004 | __field( ino_t, ino ) | ||
2005 | __field( dev_t, dev ) | ||
2006 | __field( ext4_lblk_t, start ) | ||
2007 | __field( int, depth ) | ||
2008 | ), | ||
2009 | |||
2010 | TP_fast_assign( | ||
2011 | __entry->ino = inode->i_ino; | ||
2012 | __entry->dev = inode->i_sb->s_dev; | ||
2013 | __entry->start = start; | ||
2014 | __entry->depth = depth; | ||
2015 | ), | ||
2016 | |||
2017 | TP_printk("dev %d,%d ino %lu since %u depth %d", | ||
2018 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2019 | (unsigned long) __entry->ino, | ||
2020 | (unsigned) __entry->start, | ||
2021 | __entry->depth) | ||
2022 | ); | ||
2023 | |||
2024 | TRACE_EVENT(ext4_ext_remove_space_done, | ||
2025 | TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth, | ||
2026 | ext4_lblk_t partial, unsigned short eh_entries), | ||
2027 | |||
2028 | TP_ARGS(inode, start, depth, partial, eh_entries), | ||
2029 | |||
2030 | TP_STRUCT__entry( | ||
2031 | __field( ino_t, ino ) | ||
2032 | __field( dev_t, dev ) | ||
2033 | __field( ext4_lblk_t, start ) | ||
2034 | __field( int, depth ) | ||
2035 | __field( ext4_lblk_t, partial ) | ||
2036 | __field( unsigned short, eh_entries ) | ||
2037 | ), | ||
2038 | |||
2039 | TP_fast_assign( | ||
2040 | __entry->ino = inode->i_ino; | ||
2041 | __entry->dev = inode->i_sb->s_dev; | ||
2042 | __entry->start = start; | ||
2043 | __entry->depth = depth; | ||
2044 | __entry->partial = partial; | ||
2045 | __entry->eh_entries = eh_entries; | ||
2046 | ), | ||
2047 | |||
2048 | TP_printk("dev %d,%d ino %lu since %u depth %d partial %u " | ||
2049 | "remaining_entries %u", | ||
2050 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2051 | (unsigned long) __entry->ino, | ||
2052 | (unsigned) __entry->start, | ||
2053 | __entry->depth, | ||
2054 | (unsigned) __entry->partial, | ||
2055 | (unsigned short) __entry->eh_entries) | ||
2056 | ); | ||
2057 | |||
1592 | #endif /* _TRACE_EXT4_H */ | 2058 | #endif /* _TRACE_EXT4_H */ |
1593 | 2059 | ||
1594 | /* This part must be outside protection */ | 2060 | /* This part must be outside protection */ |