Lines Matching refs:sb

15 static int logfs_mark_segment_bad(struct super_block *sb, u32 segno)  in logfs_mark_segment_bad()  argument
17 struct logfs_super *super = logfs_super(sb); in logfs_mark_segment_bad()
24 logfs_super(sb)->s_bad_segments++; in logfs_mark_segment_bad()
29 int logfs_erase_segment(struct super_block *sb, u32 segno, int ensure_erase) in logfs_erase_segment() argument
31 struct logfs_super *super = logfs_super(sb); in logfs_erase_segment()
35 return super->s_devops->erase(sb, (u64)segno << super->s_segshift, in logfs_erase_segment()
52 static struct page *get_mapping_page(struct super_block *sb, pgoff_t index, in get_mapping_page() argument
55 struct logfs_super *super = logfs_super(sb); in get_mapping_page()
62 page = read_cache_page(mapping, index, filler, sb); in get_mapping_page()
107 struct super_block *sb = area->a_sb; in pad_partial_page() local
109 u64 ofs = dev_ofs(sb, area->a_segno, area->a_used_bytes); in pad_partial_page()
115 page = get_mapping_page(sb, index, 0); in pad_partial_page()
128 struct super_block *sb = area->a_sb; in pad_full_pages() local
129 struct logfs_super *super = logfs_super(sb); in pad_full_pages()
130 u64 ofs = dev_ofs(sb, area->a_segno, area->a_used_bytes); in pad_full_pages()
137 page = get_mapping_page(sb, index, 0); in pad_full_pages()
167 static void *alias_tree_lookup(struct super_block *sb, u64 ino, u64 bix, in alias_tree_lookup() argument
170 struct btree_head128 *head = &logfs_super(sb)->s_object_alias_tree; in alias_tree_lookup()
176 static int alias_tree_insert(struct super_block *sb, u64 ino, u64 bix, in alias_tree_insert() argument
179 struct btree_head128 *head = &logfs_super(sb)->s_object_alias_tree; in alias_tree_insert()
185 static int btree_write_alias(struct super_block *sb, struct logfs_block *block, in btree_write_alias() argument
192 err = write_alias_journal(sb, block->ino, block->bix, in btree_write_alias()
206 int logfs_load_object_aliases(struct super_block *sb, in logfs_load_object_aliases() argument
209 struct logfs_super *super = logfs_super(sb); in logfs_load_object_aliases()
235 block = alias_tree_lookup(sb, ino, bix, level); in logfs_load_object_aliases()
237 block = __alloc_block(sb, ino, bix, level); in logfs_load_object_aliases()
239 err = alias_tree_insert(sb, ino, bix, level, block); in logfs_load_object_aliases()
256 struct super_block *sb = block->sb; in kill_alias() local
257 struct logfs_super *super = logfs_super(sb); in kill_alias()
265 block->ops->free_block(sb, block); in kill_alias()
279 static int obj_len(struct super_block *sb, int obj_type) in obj_len() argument
287 return sb->s_blocksize; in obj_len()
297 struct super_block *sb = inode->i_sb; in __logfs_segment_write() local
305 acc_len = obj_len(sb, type); in __logfs_segment_write()
307 area = get_area(sb, shadow->gc_level); in __logfs_segment_write()
309 LOGFS_BUG_ON(ofs <= 0, sb); in __logfs_segment_write()
338 struct super_block *sb = inode->i_sb; in logfs_segment_write_compress() local
339 void *compressor_buf = logfs_super(sb)->s_compressed_je; in logfs_segment_write_compress()
343 mutex_lock(&logfs_super(sb)->s_journal_mutex); in logfs_segment_write_compress()
353 mutex_unlock(&logfs_super(sb)->s_journal_mutex); in logfs_segment_write_compress()
366 struct super_block *sb = inode->i_sb; in logfs_segment_write() local
367 struct logfs_super *super = logfs_super(sb); in logfs_segment_write()
381 len = obj_len(sb, type); in logfs_segment_write()
400 int wbuf_read(struct super_block *sb, u64 ofs, size_t len, void *buf) in wbuf_read() argument
410 page = get_mapping_page(sb, index, 1); in wbuf_read()
429 static int check_pos(struct super_block *sb, u64 pos1, u64 pos2, level_t level) in check_pos() argument
431 return (pos1 & logfs_block_mask(sb, level)) != in check_pos()
432 (pos2 & logfs_block_mask(sb, level)); in check_pos()
436 static int read_seg_header(struct super_block *sb, u64 ofs,
442 err = wbuf_read(sb, ofs, sizeof(*sh), sh);
456 static int read_obj_header(struct super_block *sb, u64 ofs, in read_obj_header() argument
462 err = wbuf_read(sb, ofs, sizeof(*oh), oh); in read_obj_header()
478 struct super_block *sb = inode->i_sb; in move_btree_to_page() local
479 struct logfs_super *super = logfs_super(sb); in move_btree_to_page()
523 struct super_block *sb = block->sb; in move_page_to_btree() local
524 struct logfs_super *super = logfs_super(sb); in move_page_to_btree()
531 block->ops->free_block(sb, block); in move_page_to_btree()
561 err = alias_tree_insert(block->sb, block->ino, block->bix, block->level, in move_page_to_btree()
570 struct super_block *sb = inode->i_sb; in __logfs_segment_read() local
571 void *compressor_buf = logfs_super(sb)->s_compressed_je; in __logfs_segment_read()
577 block_len = obj_len(sb, obj_type(inode, level)); in __logfs_segment_read()
578 err = read_obj_header(sb, ofs, &oh); in __logfs_segment_read()
584 || check_pos(sb, be64_to_cpu(oh.bix), bix, level)) { in __logfs_segment_read()
596 err = wbuf_read(sb, ofs + LOGFS_OBJECT_HEADERSIZE, len, buf); in __logfs_segment_read()
609 mutex_lock(&logfs_super(sb)->s_journal_mutex); in __logfs_segment_read()
610 err = wbuf_read(sb, ofs + LOGFS_OBJECT_HEADERSIZE, len, in __logfs_segment_read()
613 mutex_unlock(&logfs_super(sb)->s_journal_mutex); in __logfs_segment_read()
622 mutex_unlock(&logfs_super(sb)->s_journal_mutex); in __logfs_segment_read()
626 mutex_unlock(&logfs_super(sb)->s_journal_mutex); in __logfs_segment_read()
633 LOGFS_BUG(sb); in __logfs_segment_read()
640 logfs_set_ro(sb); in __logfs_segment_read()
642 LOGFS_BUG(sb); in __logfs_segment_read()
681 struct super_block *sb = inode->i_sb; in logfs_segment_delete() local
682 struct logfs_super *super = logfs_super(sb); in logfs_segment_delete()
697 err = read_obj_header(sb, shadow->old_ofs, &h); in logfs_segment_delete()
698 LOGFS_BUG_ON(err, sb); in logfs_segment_delete()
699 LOGFS_BUG_ON(be64_to_cpu(h.ino) != inode->i_ino, sb); in logfs_segment_delete()
700 LOGFS_BUG_ON(check_pos(sb, shadow->bix, be64_to_cpu(h.bix), in logfs_segment_delete()
701 shrink_level(shadow->gc_level)), sb); in logfs_segment_delete()
706 len = obj_len(sb, h.type); in logfs_segment_delete()
711 void freeseg(struct super_block *sb, u32 segno) in freeseg() argument
713 struct logfs_super *super = logfs_super(sb); in freeseg()
718 start = dev_ofs(sb, segno, 0); in freeseg()
719 end = dev_ofs(sb, segno + 1, 0); in freeseg()
734 struct super_block *sb = area->a_sb; in logfs_open_area() local
735 struct logfs_super *super = logfs_super(sb); in logfs_open_area()
742 u64 ofs = dev_ofs(sb, area->a_segno, area->a_written_bytes); in logfs_open_area()
748 freeseg(sb, area->a_segno); in logfs_open_area()
763 logfs_mark_segment_bad(sb, area->a_segno); in logfs_open_area()
772 struct super_block *sb = area->a_sb; in logfs_sync_area() local
773 struct logfs_super *super = logfs_super(sb); in logfs_sync_area()
774 u64 ofs = dev_ofs(sb, area->a_segno, area->a_written_bytes); in logfs_sync_area()
782 super->s_devops->writeseg(sb, ofs, len); in logfs_sync_area()
786 void logfs_sync_segments(struct super_block *sb) in logfs_sync_segments() argument
788 struct logfs_super *super = logfs_super(sb); in logfs_sync_segments()
801 struct super_block *sb = area->a_sb; in ostore_get_free_segment() local
802 struct logfs_super *super = logfs_super(sb); in ostore_get_free_segment()
806 LOGFS_BUG(sb); in ostore_get_free_segment()
809 area->a_segno = get_best_cand(sb, &super->s_free_list, NULL); in ostore_get_free_segment()
827 struct super_block *sb = area->a_sb; in ostore_erase_segment() local
832 err = logfs_erase_segment(sb, area->a_segno, 0); in ostore_erase_segment()
841 sh.gec = cpu_to_be64(logfs_super(sb)->s_gec); in ostore_erase_segment()
844 logfs_set_segment_erased(sb, area->a_segno, area->a_erase_count, in ostore_erase_segment()
847 ofs = dev_ofs(sb, area->a_segno, 0); in ostore_erase_segment()
866 void free_areas(struct super_block *sb) in free_areas() argument
868 struct logfs_super *super = logfs_super(sb); in free_areas()
876 static struct logfs_area *alloc_area(struct super_block *sb) in alloc_area() argument
884 area->a_sb = sb; in alloc_area()
906 int logfs_init_mapping(struct super_block *sb) in logfs_init_mapping() argument
908 struct logfs_super *super = logfs_super(sb); in logfs_init_mapping()
912 inode = logfs_new_meta_inode(sb, LOGFS_INO_MAPPING); in logfs_init_mapping()
923 int logfs_init_areas(struct super_block *sb) in logfs_init_areas() argument
925 struct logfs_super *super = logfs_super(sb); in logfs_init_areas()
933 super->s_journal_area = alloc_area(sb); in logfs_init_areas()
938 super->s_area[i] = alloc_area(sb); in logfs_init_areas()
956 void logfs_cleanup_areas(struct super_block *sb) in logfs_cleanup_areas() argument
958 struct logfs_super *super = logfs_super(sb); in logfs_cleanup_areas()