43
42
static char dbg_key_buf0[128];
44
43
static char dbg_key_buf1[128];
46
unsigned int ubifs_msg_flags;
47
45
unsigned int ubifs_chk_flags;
48
46
unsigned int ubifs_tst_flags;
50
module_param_named(debug_msgs, ubifs_msg_flags, uint, S_IRUGO | S_IWUSR);
51
48
module_param_named(debug_chks, ubifs_chk_flags, uint, S_IRUGO | S_IWUSR);
52
49
module_param_named(debug_tsts, ubifs_tst_flags, uint, S_IRUGO | S_IWUSR);
54
MODULE_PARM_DESC(debug_msgs, "Debug message type flags");
55
51
MODULE_PARM_DESC(debug_chks, "Debug check flags");
56
52
MODULE_PARM_DESC(debug_tsts, "Debug special test flags");
610
608
struct ubifs_gced_idx_leb *idx_gc;
611
609
long long available, outstanding, free;
613
ubifs_assert(spin_is_locked(&c->space_lock));
611
spin_lock(&c->space_lock);
614
612
spin_lock(&dbg_lock);
615
printk(KERN_DEBUG "(pid %d) Budgeting info: budg_data_growth %lld, "
616
"budg_dd_growth %lld, budg_idx_growth %lld\n", current->pid,
617
c->budg_data_growth, c->budg_dd_growth, c->budg_idx_growth);
618
printk(KERN_DEBUG "\tdata budget sum %lld, total budget sum %lld, "
619
"freeable_cnt %d\n", c->budg_data_growth + c->budg_dd_growth,
620
c->budg_data_growth + c->budg_dd_growth + c->budg_idx_growth,
622
printk(KERN_DEBUG "\tmin_idx_lebs %d, old_idx_sz %lld, "
623
"calc_idx_sz %lld, idx_gc_cnt %d\n", c->min_idx_lebs,
624
c->old_idx_sz, c->calc_idx_sz, c->idx_gc_cnt);
613
printk(KERN_DEBUG "(pid %d) Budgeting info: data budget sum %lld, "
614
"total budget sum %lld\n", current->pid,
615
bi->data_growth + bi->dd_growth,
616
bi->data_growth + bi->dd_growth + bi->idx_growth);
617
printk(KERN_DEBUG "\tbudg_data_growth %lld, budg_dd_growth %lld, "
618
"budg_idx_growth %lld\n", bi->data_growth, bi->dd_growth,
620
printk(KERN_DEBUG "\tmin_idx_lebs %d, old_idx_sz %llu, "
621
"uncommitted_idx %lld\n", bi->min_idx_lebs, bi->old_idx_sz,
622
bi->uncommitted_idx);
623
printk(KERN_DEBUG "\tpage_budget %d, inode_budget %d, dent_budget %d\n",
624
bi->page_budget, bi->inode_budget, bi->dent_budget);
625
printk(KERN_DEBUG "\tnospace %u, nospace_rp %u\n",
626
bi->nospace, bi->nospace_rp);
627
printk(KERN_DEBUG "\tdark_wm %d, dead_wm %d, max_idx_node_sz %d\n",
628
c->dark_wm, c->dead_wm, c->max_idx_node_sz);
632
* If we are dumping saved budgeting data, do not print
633
* additional information which is about the current state, not
634
* the old one which corresponded to the saved budgeting data.
638
printk(KERN_DEBUG "\tfreeable_cnt %d, calc_idx_sz %lld, idx_gc_cnt %d\n",
639
c->freeable_cnt, c->calc_idx_sz, c->idx_gc_cnt);
625
640
printk(KERN_DEBUG "\tdirty_pg_cnt %ld, dirty_zn_cnt %ld, "
626
641
"clean_zn_cnt %ld\n", atomic_long_read(&c->dirty_pg_cnt),
627
642
atomic_long_read(&c->dirty_zn_cnt),
628
643
atomic_long_read(&c->clean_zn_cnt));
629
printk(KERN_DEBUG "\tdark_wm %d, dead_wm %d, max_idx_node_sz %d\n",
630
c->dark_wm, c->dead_wm, c->max_idx_node_sz);
631
644
printk(KERN_DEBUG "\tgc_lnum %d, ihead_lnum %d\n",
632
645
c->gc_lnum, c->ihead_lnum);
633
647
/* If we are in R/O mode, journal heads do not exist */
635
649
for (i = 0; i < c->jhead_cnt; i++)
648
662
printk(KERN_DEBUG "\tcommit state %d\n", c->cmt_state);
650
664
/* Print budgeting predictions */
651
available = ubifs_calc_available(c, c->min_idx_lebs);
652
outstanding = c->budg_data_growth + c->budg_dd_growth;
665
available = ubifs_calc_available(c, c->bi.min_idx_lebs);
666
outstanding = c->bi.data_growth + c->bi.dd_growth;
653
667
free = ubifs_get_free_space_nolock(c);
654
668
printk(KERN_DEBUG "Budgeting predictions:\n");
655
669
printk(KERN_DEBUG "\tavailable: %lld, outstanding %lld, free %lld\n",
656
670
available, outstanding, free);
657
672
spin_unlock(&dbg_lock);
673
spin_unlock(&c->space_lock);
660
676
void dbg_dump_lprop(const struct ubifs_info *c, const struct ubifs_lprops *lp)
1043
1067
ubifs_msg("saved lprops statistics dump");
1044
1068
dbg_dump_lstats(&d->saved_lst);
1045
ubifs_get_lp_stats(c, &lst);
1069
ubifs_msg("saved budgeting info dump");
1070
dbg_dump_budg(c, &d->saved_bi);
1071
ubifs_msg("saved idx_gc_cnt %d", d->saved_idx_gc_cnt);
1047
1072
ubifs_msg("current lprops statistics dump");
1073
ubifs_get_lp_stats(c, &lst);
1048
1074
dbg_dump_lstats(&lst);
1050
spin_lock(&c->space_lock);
1052
spin_unlock(&c->space_lock);
1075
ubifs_msg("current budgeting info dump");
1076
dbg_dump_budg(c, &c->bi);
1054
1078
return -EINVAL;
1817
1843
return ERR_PTR(-ENOMEM);
1845
inode = ilookup(c->vfs_sb, inum);
1819
1847
fscki->inum = inum;
1820
fscki->nlink = le32_to_cpu(ino->nlink);
1821
fscki->size = le64_to_cpu(ino->size);
1822
fscki->xattr_cnt = le32_to_cpu(ino->xattr_cnt);
1823
fscki->xattr_sz = le32_to_cpu(ino->xattr_size);
1824
fscki->xattr_nms = le32_to_cpu(ino->xattr_names);
1825
fscki->mode = le32_to_cpu(ino->mode);
1849
* If the inode is present in the VFS inode cache, use it instead of
1850
* the on-flash inode which might be out-of-date. E.g., the size might
1851
* be out-of-date. If we do not do this, the following may happen, for
1853
* 1. A power cut happens
1854
* 2. We mount the file-system R/O, the replay process fixes up the
1855
* inode size in the VFS cache, but on on-flash.
1856
* 3. 'check_leaf()' fails because it hits a data node beyond inode
1860
fscki->nlink = le32_to_cpu(ino->nlink);
1861
fscki->size = le64_to_cpu(ino->size);
1862
fscki->xattr_cnt = le32_to_cpu(ino->xattr_cnt);
1863
fscki->xattr_sz = le32_to_cpu(ino->xattr_size);
1864
fscki->xattr_nms = le32_to_cpu(ino->xattr_names);
1865
fscki->mode = le32_to_cpu(ino->mode);
1867
ui = ubifs_inode(inode);
1868
fscki->nlink = inode->i_nlink;
1869
fscki->size = inode->i_size;
1870
fscki->xattr_cnt = ui->xattr_cnt;
1871
fscki->xattr_sz = ui->xattr_size;
1872
fscki->xattr_nms = ui->xattr_names;
1873
fscki->mode = inode->i_mode;
1826
1877
if (S_ISDIR(fscki->mode)) {
1827
1878
fscki->calc_sz = UBIFS_INO_NODE_SZ;
1828
1879
fscki->calc_cnt = 2;
1830
1882
rb_link_node(&fscki->rb, parent, p);
1831
1883
rb_insert_color(&fscki->rb, &fsckd->inodes);