Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

writeback: use ino_t for inodes in tracepoints

Writeback TPs currently use mix of 32 and 64bits for inos. This isn't
currently broken because only cgroup inos are using 32bits and they're
limited to 32bits. cgroup inos will make use of 64bits. Let's
uniformly use ino_t.

While at it, switch the default cgroup ino value used when cgroup is
disabled to 1 instead of -1U as root cgroup always uses ino 1.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Namhyung Kim <namhyung@kernel.org>

+44 -44
+44 -44
include/trace/events/writeback.h
··· 61 61 62 62 TP_STRUCT__entry ( 63 63 __array(char, name, 32) 64 - __field(unsigned long, ino) 64 + __field(ino_t, ino) 65 65 __field(pgoff_t, index) 66 66 ), 67 67 ··· 102 102 103 103 TP_STRUCT__entry ( 104 104 __array(char, name, 32) 105 - __field(unsigned long, ino) 105 + __field(ino_t, ino) 106 106 __field(unsigned long, state) 107 107 __field(unsigned long, flags) 108 108 ), ··· 150 150 #ifdef CREATE_TRACE_POINTS 151 151 #ifdef CONFIG_CGROUP_WRITEBACK 152 152 153 - static inline unsigned int __trace_wb_assign_cgroup(struct bdi_writeback *wb) 153 + static inline ino_t __trace_wb_assign_cgroup(struct bdi_writeback *wb) 154 154 { 155 155 return wb->memcg_css->cgroup->kn->id.ino; 156 156 } 157 157 158 - static inline unsigned int __trace_wbc_assign_cgroup(struct writeback_control *wbc) 158 + static inline ino_t __trace_wbc_assign_cgroup(struct writeback_control *wbc) 159 159 { 160 160 if (wbc->wb) 161 161 return __trace_wb_assign_cgroup(wbc->wb); 162 162 else 163 - return -1U; 163 + return 1; 164 164 } 165 165 #else /* CONFIG_CGROUP_WRITEBACK */ 166 166 167 - static inline unsigned int __trace_wb_assign_cgroup(struct bdi_writeback *wb) 167 + static inline ino_t __trace_wb_assign_cgroup(struct bdi_writeback *wb) 168 168 { 169 - return -1U; 169 + return 1; 170 170 } 171 171 172 - static inline unsigned int __trace_wbc_assign_cgroup(struct writeback_control *wbc) 172 + static inline ino_t __trace_wbc_assign_cgroup(struct writeback_control *wbc) 173 173 { 174 - return -1U; 174 + return 1; 175 175 } 176 176 177 177 #endif /* CONFIG_CGROUP_WRITEBACK */ ··· 187 187 188 188 TP_STRUCT__entry( 189 189 __array(char, name, 32) 190 - __field(unsigned long, ino) 191 - __field(unsigned int, cgroup_ino) 190 + __field(ino_t, ino) 191 + __field(ino_t, cgroup_ino) 192 192 __field(unsigned int, history) 193 193 ), 194 194 ··· 199 199 __entry->history = history; 200 200 ), 201 201 202 - TP_printk("bdi %s: ino=%lu cgroup_ino=%u history=0x%x", 202 + TP_printk("bdi %s: ino=%lu cgroup_ino=%lu history=0x%x", 203 203 __entry->name, 204 204 __entry->ino, 205 205 __entry->cgroup_ino, ··· 216 216 217 217 TP_STRUCT__entry( 218 218 __array(char, name, 32) 219 - __field(unsigned long, ino) 220 - __field(unsigned int, old_cgroup_ino) 221 - __field(unsigned int, new_cgroup_ino) 219 + __field(ino_t, ino) 220 + __field(ino_t, old_cgroup_ino) 221 + __field(ino_t, new_cgroup_ino) 222 222 ), 223 223 224 224 TP_fast_assign( ··· 228 228 __entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb); 229 229 ), 230 230 231 - TP_printk("bdi %s: ino=%lu old_cgroup_ino=%u new_cgroup_ino=%u", 231 + TP_printk("bdi %s: ino=%lu old_cgroup_ino=%lu new_cgroup_ino=%lu", 232 232 __entry->name, 233 233 __entry->ino, 234 234 __entry->old_cgroup_ino, ··· 245 245 TP_STRUCT__entry( 246 246 __array(char, name, 32) 247 247 __field(u64, bdi_id) 248 - __field(unsigned long, ino) 248 + __field(ino_t, ino) 249 249 __field(unsigned int, memcg_id) 250 - __field(unsigned int, cgroup_ino) 251 - __field(unsigned int, page_cgroup_ino) 250 + __field(ino_t, cgroup_ino) 251 + __field(ino_t, page_cgroup_ino) 252 252 ), 253 253 254 254 TP_fast_assign( ··· 263 263 __entry->page_cgroup_ino = page->mem_cgroup->css.cgroup->kn->id.ino; 264 264 ), 265 265 266 - TP_printk("bdi %s[%llu]: ino=%lu memcg_id=%u cgroup_ino=%u page_cgroup_ino=%u", 266 + TP_printk("bdi %s[%llu]: ino=%lu memcg_id=%u cgroup_ino=%lu page_cgroup_ino=%lu", 267 267 __entry->name, 268 268 __entry->bdi_id, 269 269 __entry->ino, ··· 282 282 283 283 TP_STRUCT__entry( 284 284 __array(char, name, 32) 285 - __field(unsigned int, cgroup_ino) 285 + __field(ino_t, cgroup_ino) 286 286 __field(unsigned int, frn_bdi_id) 287 287 __field(unsigned int, frn_memcg_id) 288 288 ), ··· 294 294 __entry->frn_memcg_id = frn_memcg_id; 295 295 ), 296 296 297 - TP_printk("bdi %s: cgroup_ino=%u frn_bdi_id=%u frn_memcg_id=%u", 297 + TP_printk("bdi %s: cgroup_ino=%lu frn_bdi_id=%u frn_memcg_id=%u", 298 298 __entry->name, 299 299 __entry->cgroup_ino, 300 300 __entry->frn_bdi_id, ··· 311 311 312 312 TP_STRUCT__entry ( 313 313 __array(char, name, 32) 314 - __field(unsigned long, ino) 314 + __field(ino_t, ino) 315 315 __field(int, sync_mode) 316 - __field(unsigned int, cgroup_ino) 316 + __field(ino_t, cgroup_ino) 317 317 ), 318 318 319 319 TP_fast_assign( ··· 324 324 __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); 325 325 ), 326 326 327 - TP_printk("bdi %s: ino=%lu sync_mode=%d cgroup_ino=%u", 327 + TP_printk("bdi %s: ino=%lu sync_mode=%d cgroup_ino=%lu", 328 328 __entry->name, 329 329 __entry->ino, 330 330 __entry->sync_mode, ··· 358 358 __field(int, range_cyclic) 359 359 __field(int, for_background) 360 360 __field(int, reason) 361 - __field(unsigned int, cgroup_ino) 361 + __field(ino_t, cgroup_ino) 362 362 ), 363 363 TP_fast_assign( 364 364 strscpy_pad(__entry->name, ··· 374 374 __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); 375 375 ), 376 376 TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d " 377 - "kupdate=%d range_cyclic=%d background=%d reason=%s cgroup_ino=%u", 377 + "kupdate=%d range_cyclic=%d background=%d reason=%s cgroup_ino=%lu", 378 378 __entry->name, 379 379 MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev), 380 380 __entry->nr_pages, ··· 413 413 TP_ARGS(wb), 414 414 TP_STRUCT__entry( 415 415 __array(char, name, 32) 416 - __field(unsigned int, cgroup_ino) 416 + __field(ino_t, cgroup_ino) 417 417 ), 418 418 TP_fast_assign( 419 419 strscpy_pad(__entry->name, dev_name(wb->bdi->dev), 32); 420 420 __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); 421 421 ), 422 - TP_printk("bdi %s: cgroup_ino=%u", 422 + TP_printk("bdi %s: cgroup_ino=%lu", 423 423 __entry->name, 424 424 __entry->cgroup_ino 425 425 ) ··· 459 459 __field(int, range_cyclic) 460 460 __field(long, range_start) 461 461 __field(long, range_end) 462 - __field(unsigned int, cgroup_ino) 462 + __field(ino_t, cgroup_ino) 463 463 ), 464 464 465 465 TP_fast_assign( ··· 478 478 479 479 TP_printk("bdi %s: towrt=%ld skip=%ld mode=%d kupd=%d " 480 480 "bgrd=%d reclm=%d cyclic=%d " 481 - "start=0x%lx end=0x%lx cgroup_ino=%u", 481 + "start=0x%lx end=0x%lx cgroup_ino=%lu", 482 482 __entry->name, 483 483 __entry->nr_to_write, 484 484 __entry->pages_skipped, ··· 510 510 __field(long, age) 511 511 __field(int, moved) 512 512 __field(int, reason) 513 - __field(unsigned int, cgroup_ino) 513 + __field(ino_t, cgroup_ino) 514 514 ), 515 515 TP_fast_assign( 516 516 unsigned long *older_than_this = work->older_than_this; ··· 522 522 __entry->reason = work->reason; 523 523 __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); 524 524 ), 525 - TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s cgroup_ino=%u", 525 + TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s cgroup_ino=%lu", 526 526 __entry->name, 527 527 __entry->older, /* older_than_this in jiffies */ 528 528 __entry->age, /* older_than_this in relative milliseconds */ ··· 596 596 __field(unsigned long, dirty_ratelimit) 597 597 __field(unsigned long, task_ratelimit) 598 598 __field(unsigned long, balanced_dirty_ratelimit) 599 - __field(unsigned int, cgroup_ino) 599 + __field(ino_t, cgroup_ino) 600 600 ), 601 601 602 602 TP_fast_assign( ··· 614 614 TP_printk("bdi %s: " 615 615 "write_bw=%lu awrite_bw=%lu dirty_rate=%lu " 616 616 "dirty_ratelimit=%lu task_ratelimit=%lu " 617 - "balanced_dirty_ratelimit=%lu cgroup_ino=%u", 617 + "balanced_dirty_ratelimit=%lu cgroup_ino=%lu", 618 618 __entry->bdi, 619 619 __entry->write_bw, /* write bandwidth */ 620 620 __entry->avg_write_bw, /* avg write bandwidth */ ··· 660 660 __field( long, pause) 661 661 __field(unsigned long, period) 662 662 __field( long, think) 663 - __field(unsigned int, cgroup_ino) 663 + __field(ino_t, cgroup_ino) 664 664 ), 665 665 666 666 TP_fast_assign( ··· 692 692 "bdi_setpoint=%lu bdi_dirty=%lu " 693 693 "dirty_ratelimit=%lu task_ratelimit=%lu " 694 694 "dirtied=%u dirtied_pause=%u " 695 - "paused=%lu pause=%ld period=%lu think=%ld cgroup_ino=%u", 695 + "paused=%lu pause=%ld period=%lu think=%ld cgroup_ino=%lu", 696 696 __entry->bdi, 697 697 __entry->limit, 698 698 __entry->setpoint, ··· 718 718 719 719 TP_STRUCT__entry( 720 720 __array(char, name, 32) 721 - __field(unsigned long, ino) 721 + __field(ino_t, ino) 722 722 __field(unsigned long, state) 723 723 __field(unsigned long, dirtied_when) 724 - __field(unsigned int, cgroup_ino) 724 + __field(ino_t, cgroup_ino) 725 725 ), 726 726 727 727 TP_fast_assign( ··· 733 733 __entry->cgroup_ino = __trace_wb_assign_cgroup(inode_to_wb(inode)); 734 734 ), 735 735 736 - TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu cgroup_ino=%u", 736 + TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu cgroup_ino=%lu", 737 737 __entry->name, 738 738 __entry->ino, 739 739 show_inode_state(__entry->state), ··· 789 789 790 790 TP_STRUCT__entry( 791 791 __array(char, name, 32) 792 - __field(unsigned long, ino) 792 + __field(ino_t, ino) 793 793 __field(unsigned long, state) 794 794 __field(unsigned long, dirtied_when) 795 795 __field(unsigned long, writeback_index) 796 796 __field(long, nr_to_write) 797 797 __field(unsigned long, wrote) 798 - __field(unsigned int, cgroup_ino) 798 + __field(ino_t, cgroup_ino) 799 799 ), 800 800 801 801 TP_fast_assign( ··· 811 811 ), 812 812 813 813 TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu " 814 - "index=%lu to_write=%ld wrote=%lu cgroup_ino=%u", 814 + "index=%lu to_write=%ld wrote=%lu cgroup_ino=%lu", 815 815 __entry->name, 816 816 __entry->ino, 817 817 show_inode_state(__entry->state), ··· 845 845 846 846 TP_STRUCT__entry( 847 847 __field( dev_t, dev ) 848 - __field(unsigned long, ino ) 848 + __field( ino_t, ino ) 849 849 __field(unsigned long, state ) 850 850 __field( __u16, mode ) 851 851 __field(unsigned long, dirtied_when )