Lines Matching refs:segno
65 static int segment_is_reserved(struct super_block *sb, u32 segno) in segment_is_reserved() argument
73 reserved = btree_lookup32(&super->s_reserved_segments, segno); in segment_is_reserved()
80 if (area->a_is_open && area->a_segno == segno) in segment_is_reserved()
87 static void logfs_mark_segment_bad(struct super_block *sb, u32 segno) in logfs_mark_segment_bad() argument
96 static u32 logfs_valid_bytes(struct super_block *sb, u32 segno, u32 *ec, in logfs_valid_bytes() argument
102 logfs_get_segment_entry(sb, segno, &se); in logfs_valid_bytes()
125 static u32 logfs_gc_segment(struct super_block *sb, u32 segno) in logfs_gc_segment() argument
135 LOGFS_BUG_ON(segment_is_reserved(sb, segno), sb); in logfs_gc_segment()
137 btree_insert32(&super->s_reserved_segments, segno, (void *)1, GFP_NOFS); in logfs_gc_segment()
138 err = wbuf_read(sb, dev_ofs(sb, segno, 0), sizeof(sh), &sh); in logfs_gc_segment()
141 logical_segno = be32_to_cpu(sh.segno); in logfs_gc_segment()
143 logfs_mark_segment_bad(sb, segno); in logfs_gc_segment()
151 err = wbuf_read(sb, dev_ofs(sb, segno, seg_ofs), sizeof(oh), in logfs_gc_segment()
159 logfs_mark_segment_bad(sb, segno); in logfs_gc_segment()
178 btree_remove32(&super->s_reserved_segments, segno); in logfs_gc_segment()
230 btree_remove32(&super->s_cand_tree, cand->segno); in free_candidate()
237 u32 segno; in get_best_cand() local
243 segno = cand->segno; in get_best_cand()
247 return segno; in get_best_cand()
276 cand->segno, cand->erase_count, in __add_candidate()
277 dev_ofs(sb, cand->segno, 0)); in __add_candidate()
281 cand->segno, cand->erase_count, in __add_candidate()
282 dev_ofs(sb, cand->segno, 0)); in __add_candidate()
298 static int add_candidate(struct super_block *sb, u32 segno, u32 valid, u32 ec, in add_candidate() argument
308 cand->segno = segno; in add_candidate()
313 btree_insert32(&super->s_cand_tree, segno, cand, GFP_NOFS); in add_candidate()
318 static void remove_segment_from_lists(struct super_block *sb, u32 segno) in remove_segment_from_lists() argument
323 cand = btree_lookup32(&super->s_cand_tree, segno); in remove_segment_from_lists()
330 static void scan_segment(struct super_block *sb, u32 segno) in scan_segment() argument
336 if (segment_is_reserved(sb, segno)) in scan_segment()
339 remove_segment_from_lists(sb, segno); in scan_segment()
340 valid = logfs_valid_bytes(sb, segno, &ec, &gc_level); in scan_segment()
345 add_candidate(sb, segno, valid, ec, dist); in scan_segment()
388 u32 cleaned, valid, segno, ec; in __logfs_gc_once() local
396 segno = cand->segno; in __logfs_gc_once()
398 valid = logfs_valid_bytes(sb, segno, &ec, &gc_level); in __logfs_gc_once()
401 segno, (u64)segno << super->s_segshift, in __logfs_gc_once()
404 cleaned = logfs_gc_segment(sb, segno); in __logfs_gc_once()
405 log_gc("GC segment #%02x complete - now %x valid\n", segno, in __logfs_gc_once()
425 u32 segno; in logfs_scan_some() local
428 segno = super->s_sweeper; in logfs_scan_some()
430 segno++; in logfs_scan_some()
431 if (segno >= super->s_no_segs) { in logfs_scan_some()
432 segno = 0; in logfs_scan_some()
441 scan_segment(sb, segno); in logfs_scan_some()
443 super->s_sweeper = segno; in logfs_scan_some()
602 u32 segno = seg_no(sb, super->s_sb_ofs[i]); in logfs_journal_wl_pass() local
605 logfs_get_segment_entry(sb, segno, &se); in logfs_journal_wl_pass()
637 u32 segno = area->a_segno; in check_area() local
656 valid = logfs_valid_bytes(sb, segno, &ec, &gc_level); in check_area()
657 cleaned = logfs_gc_segment(sb, segno); in check_area()