Lines Matching refs:super
13 struct logfs_super *super = logfs_super(sb); in logfs_calc_free() local
14 u64 reserve, no_segs = super->s_no_segs; in logfs_calc_free()
20 super->s_no_journal_segs = 0; in logfs_calc_free()
23 if (super->s_journal_seg[i]) { in logfs_calc_free()
25 super->s_no_journal_segs++; in logfs_calc_free()
29 no_segs -= 2 * super->s_total_levels; in logfs_calc_free()
31 free = no_segs * (super->s_segsize - LOGFS_SEGMENT_RESERVE); in logfs_calc_free()
32 free -= super->s_used_bytes; in logfs_calc_free()
34 free -= super->s_total_levels * 4096; in logfs_calc_free()
40 reserve = super->s_bad_segments + super->s_bad_seg_reserve; in logfs_calc_free()
41 reserve *= super->s_segsize - LOGFS_SEGMENT_RESERVE; in logfs_calc_free()
42 reserve = max(reserve, super->s_speed_reserve); in logfs_calc_free()
47 super->s_free_bytes = free; in logfs_calc_free()
52 struct logfs_super *super = logfs_super(sb); in reserve_sb_and_journal() local
53 struct btree_head32 *head = &super->s_reserved_segments; in reserve_sb_and_journal()
56 err = btree_insert32(head, seg_no(sb, super->s_sb_ofs[0]), (void *)1, in reserve_sb_and_journal()
60 err = btree_insert32(head, seg_no(sb, super->s_sb_ofs[1]), (void *)1, in reserve_sb_and_journal()
65 if (!super->s_journal_seg[i]) in reserve_sb_and_journal()
67 err = btree_insert32(head, super->s_journal_seg[i], (void *)1, in reserve_sb_and_journal()
76 struct logfs_super *super = logfs_super(sb); in read_dynsb() local
78 super->s_gec = be64_to_cpu(dynsb->ds_gec); in read_dynsb()
79 super->s_sweeper = be64_to_cpu(dynsb->ds_sweeper); in read_dynsb()
80 super->s_victim_ino = be64_to_cpu(dynsb->ds_victim_ino); in read_dynsb()
81 super->s_rename_dir = be64_to_cpu(dynsb->ds_rename_dir); in read_dynsb()
82 super->s_rename_pos = be64_to_cpu(dynsb->ds_rename_pos); in read_dynsb()
83 super->s_used_bytes = be64_to_cpu(dynsb->ds_used_bytes); in read_dynsb()
84 super->s_generation = be32_to_cpu(dynsb->ds_generation); in read_dynsb()
90 struct logfs_super *super = logfs_super(sb); in read_anchor() local
91 struct inode *inode = super->s_master_inode; in read_anchor()
95 super->s_last_ino = be64_to_cpu(da->da_last_ino); in read_anchor()
108 struct logfs_super *super = logfs_super(sb); in read_erasecount() local
112 super->s_journal_ec[i] = be32_to_cpu(ec->ec[i]); in read_erasecount()
117 struct logfs_super *super = logfs_super(sb); in read_area() local
118 struct logfs_area *area = super->s_area[a->gc_level]; in read_area()
120 u32 writemask = ~(super->s_writesize - 1); in read_area()
134 if (super->s_writesize > 1) in read_area()
135 return logfs_buf_recover(area, ofs, a + 1, super->s_writesize); in read_area()
162 struct logfs_super *super = logfs_super(sb); in __read_je_header() local
163 size_t bufsize = max_t(size_t, sb->s_blocksize, super->s_writesize) in __read_je_header()
224 struct logfs_super *super = logfs_super(sb); in read_je() local
225 struct logfs_journal_header *jh = super->s_compressed_je; in read_je()
226 void *scratch = super->s_je; in read_je()
262 struct logfs_super *super = logfs_super(sb); in logfs_read_segment() local
263 struct logfs_journal_header *jh = super->s_compressed_je; in logfs_read_segment()
270 for (h_ofs = 0; h_ofs < super->s_segsize; h_ofs += sizeof(*jh)) { in logfs_read_segment()
282 if ((datalen > sizeof(super->s_je_array)) || in logfs_read_segment()
299 unpack(jh, super->s_je_array); in logfs_read_segment()
300 super->s_no_je = last_len / sizeof(__be64); in logfs_read_segment()
302 for (i = 0; i < super->s_no_je; i++) { in logfs_read_segment()
303 err = read_je(sb, be64_to_cpu(super->s_je_array[i])); in logfs_read_segment()
307 super->s_journal_area->a_segno = segno; in logfs_read_segment()
333 struct logfs_super *super = logfs_super(sb); in logfs_read_journal() local
341 segno = super->s_journal_seg[i]; in logfs_read_journal()
342 gec[i] = read_gec(sb, super->s_journal_seg[i]); in logfs_read_journal()
351 return logfs_read_segment(sb, super->s_journal_seg[max_i]); in logfs_read_journal()
360 struct logfs_super *super = logfs_super(area->a_sb); in journal_get_free_segment() local
364 if (area->a_segno != super->s_journal_seg[i]) in journal_get_free_segment()
371 } while (!super->s_journal_seg[i]); in journal_get_free_segment()
373 area->a_segno = super->s_journal_seg[i]; in journal_get_free_segment()
374 area->a_erase_count = ++(super->s_journal_ec[i]); in journal_get_free_segment()
420 static size_t __logfs_write_header(struct logfs_super *super, in __logfs_write_header() argument
437 static size_t logfs_write_header(struct logfs_super *super, in logfs_write_header() argument
442 return __logfs_write_header(super, jh, len, datalen, type, COMPR_NONE); in logfs_write_header()
445 static inline size_t logfs_journal_erasecount_size(struct logfs_super *super) in logfs_journal_erasecount_size() argument
453 struct logfs_super *super = logfs_super(sb); in logfs_write_erasecount() local
458 ec->ec[i] = cpu_to_be32(super->s_journal_ec[i]); in logfs_write_erasecount()
460 *len = logfs_journal_erasecount_size(super); in logfs_write_erasecount()
469 struct logfs_super *super = logfs_super(sb); in account_shadow() local
472 super->s_free_bytes -= shadow->new_len; in account_shadow()
473 super->s_used_bytes += shadow->new_len; in account_shadow()
474 super->s_dirty_used_bytes -= shadow->new_len; in account_shadow()
477 super->s_free_bytes += shadow->old_len; in account_shadow()
478 super->s_used_bytes -= shadow->old_len; in account_shadow()
479 super->s_dirty_free_bytes -= shadow->old_len; in account_shadow()
488 mempool_free(shadow, super->s_shadow_pool); in account_shadow()
493 struct logfs_super *super = logfs_super(sb); in account_shadows() local
494 struct inode *inode = super->s_master_inode; in account_shadows()
496 struct shadow_tree *tree = &super->s_shadow_tree; in account_shadows()
518 struct logfs_super *super = logfs_super(sb); in __logfs_write_anchor() local
520 struct inode *inode = super->s_master_inode; in __logfs_write_anchor()
525 da->da_last_ino = cpu_to_be64(super->s_last_ino); in __logfs_write_anchor()
538 struct logfs_super *super = logfs_super(sb); in logfs_write_dynsb() local
541 dynsb->ds_gec = cpu_to_be64(super->s_gec); in logfs_write_dynsb()
542 dynsb->ds_sweeper = cpu_to_be64(super->s_sweeper); in logfs_write_dynsb()
543 dynsb->ds_victim_ino = cpu_to_be64(super->s_victim_ino); in logfs_write_dynsb()
544 dynsb->ds_rename_dir = cpu_to_be64(super->s_rename_dir); in logfs_write_dynsb()
545 dynsb->ds_rename_pos = cpu_to_be64(super->s_rename_pos); in logfs_write_dynsb()
546 dynsb->ds_used_bytes = cpu_to_be64(super->s_used_bytes); in logfs_write_dynsb()
547 dynsb->ds_generation = cpu_to_be32(super->s_generation); in logfs_write_dynsb()
556 struct logfs_super *super = logfs_super(sb); in write_wbuf() local
557 struct address_space *mapping = super->s_mapping_inode->i_mapping; in write_wbuf()
564 area->a_used_bytes & ~(super->s_writesize - 1)); in write_wbuf()
570 memcpy(wbuf, page_address(page) + page_ofs, super->s_writesize); in write_wbuf()
577 struct logfs_super *super = logfs_super(sb); in logfs_write_area() local
578 struct logfs_area *area = super->s_area[super->s_sum_index]; in logfs_write_area()
582 a->gc_level = super->s_sum_index; in logfs_write_area()
585 if (super->s_writesize > 1) in logfs_write_area()
589 *len = sizeof(*a) + super->s_writesize; in logfs_write_area()
596 struct logfs_super *super = logfs_super(sb); in logfs_write_commit() local
599 *len = super->s_no_je * sizeof(__be64); in logfs_write_commit()
600 return super->s_je_array; in logfs_write_commit()
606 struct logfs_super *super = logfs_super(sb); in __logfs_write_je() local
607 void *header = super->s_compressed_je; in __logfs_write_je()
613 return logfs_write_header(super, header, 0, type); in __logfs_write_je()
625 return __logfs_write_header(super, header, compr_len, len, type, compr); in __logfs_write_je()
653 struct logfs_super *super = logfs_super(sb); in logfs_write_je_buf() local
654 struct logfs_area *area = super->s_journal_area; in logfs_write_je_buf()
655 struct logfs_journal_header *jh = super->s_compressed_je; in logfs_write_je_buf()
667 logfs_buf_write(area, ofs, super->s_compressed_je, len); in logfs_write_je_buf()
668 BUG_ON(super->s_no_je >= MAX_JOURNAL_ENTRIES); in logfs_write_je_buf()
669 super->s_je_array[super->s_no_je++] = cpu_to_be64(ofs); in logfs_write_je_buf()
688 struct logfs_super *super = logfs_super(sb); in write_alias_journal() local
689 struct logfs_obj_alias *oa = super->s_je; in write_alias_journal()
690 int err = 0, fill = super->s_je_fill; in write_alias_journal()
705 super->s_je_fill = fill; in write_alias_journal()
711 struct logfs_super *super = logfs_super(sb); in logfs_write_obj_aliases() local
715 super->s_no_object_aliases); in logfs_write_obj_aliases()
716 super->s_je_fill = 0; in logfs_write_obj_aliases()
721 if (super->s_je_fill) in logfs_write_obj_aliases()
722 err = logfs_write_je_buf(sb, super->s_je, JE_OBJ_ALIAS, in logfs_write_obj_aliases()
723 super->s_je_fill in logfs_write_obj_aliases()
736 struct logfs_super *super = logfs_super(sb); in logfs_write_anchor() local
737 struct logfs_area *area = super->s_journal_area; in logfs_write_anchor()
740 if (!(super->s_flags & LOGFS_SB_FLAG_DIRTY)) in logfs_write_anchor()
742 super->s_flags &= ~LOGFS_SB_FLAG_DIRTY; in logfs_write_anchor()
744 BUG_ON(super->s_flags & LOGFS_SB_FLAG_SHUTDOWN); in logfs_write_anchor()
745 mutex_lock(&super->s_journal_mutex); in logfs_write_anchor()
752 super->s_no_je = 0; in logfs_write_anchor()
754 if (!super->s_area[i]->a_is_open) in logfs_write_anchor()
756 super->s_sum_index = i; in logfs_write_anchor()
791 super->s_devops->sync(sb); in logfs_write_anchor()
796 be64_to_cpu(super->s_je_array[super->s_no_je - 1])); in logfs_write_anchor()
799 super->s_devops->sync(sb); in logfs_write_anchor()
801 mutex_unlock(&super->s_journal_mutex); in logfs_write_anchor()
807 struct logfs_super *super = logfs_super(sb); in do_logfs_journal_wl_pass() local
808 struct logfs_area *area = super->s_journal_area; in do_logfs_journal_wl_pass()
809 struct btree_head32 *head = &super->s_reserved_segments; in do_logfs_journal_wl_pass()
816 if (super->s_journal_seg[i]) { in do_logfs_journal_wl_pass()
817 btree_remove32(head, super->s_journal_seg[i]); in do_logfs_journal_wl_pass()
819 super->s_journal_seg[i], in do_logfs_journal_wl_pass()
820 super->s_journal_ec[i]); in do_logfs_journal_wl_pass()
821 super->s_journal_seg[i] = 0; in do_logfs_journal_wl_pass()
822 super->s_journal_ec[i] = 0; in do_logfs_journal_wl_pass()
825 for (i = 0; i < super->s_no_journal_segs; i++) { in do_logfs_journal_wl_pass()
826 segno = get_best_cand(sb, &super->s_reserve_list, &ec); in do_logfs_journal_wl_pass()
827 super->s_journal_seg[i] = segno; in do_logfs_journal_wl_pass()
828 super->s_journal_ec[i] = ec; in do_logfs_journal_wl_pass()
837 area->a_segno = super->s_journal_seg[0]; in do_logfs_journal_wl_pass()
855 struct logfs_super *super = logfs_super(sb); in logfs_init_journal() local
856 size_t bufsize = max_t(size_t, sb->s_blocksize, super->s_writesize) in logfs_init_journal()
860 mutex_init(&super->s_journal_mutex); in logfs_init_journal()
861 btree_init_mempool32(&super->s_reserved_segments, super->s_btree_pool); in logfs_init_journal()
863 super->s_je = kzalloc(bufsize, GFP_KERNEL); in logfs_init_journal()
864 if (!super->s_je) in logfs_init_journal()
867 super->s_compressed_je = kzalloc(bufsize, GFP_KERNEL); in logfs_init_journal()
868 if (!super->s_compressed_je) in logfs_init_journal()
871 super->s_master_inode = logfs_new_meta_inode(sb, LOGFS_INO_MASTER); in logfs_init_journal()
872 if (IS_ERR(super->s_master_inode)) in logfs_init_journal()
873 return PTR_ERR(super->s_master_inode); in logfs_init_journal()
882 super->s_journal_area->a_ops = &journal_area_ops; in logfs_init_journal()
888 struct logfs_super *super = logfs_super(sb); in logfs_cleanup_journal() local
890 btree_grim_visitor32(&super->s_reserved_segments, 0, NULL); in logfs_cleanup_journal()
892 kfree(super->s_compressed_je); in logfs_cleanup_journal()
893 kfree(super->s_je); in logfs_cleanup_journal()