Lines Matching refs:nilfs
104 static int nilfs_compute_checksum(struct the_nilfs *nilfs, in nilfs_compute_checksum() argument
109 unsigned int blocksize = nilfs->ns_blocksize; in nilfs_compute_checksum()
116 crc = crc32_le(nilfs->ns_crc_seed, in nilfs_compute_checksum()
122 bh = __bread(nilfs->ns_bdev, ++start, blocksize); in nilfs_compute_checksum()
142 int nilfs_read_super_root_block(struct the_nilfs *nilfs, sector_t sr_block, in nilfs_read_super_root_block() argument
151 bh_sr = __bread(nilfs->ns_bdev, sr_block, nilfs->ns_blocksize); in nilfs_read_super_root_block()
161 if (bytes == 0 || bytes > nilfs->ns_blocksize) { in nilfs_read_super_root_block()
166 nilfs, bh_sr, &crc, sizeof(sr->sr_sum), bytes, in nilfs_read_super_root_block()
193 nilfs_read_log_header(struct the_nilfs *nilfs, sector_t start_blocknr, in nilfs_read_log_header() argument
198 bh_sum = __bread(nilfs->ns_bdev, start_blocknr, nilfs->ns_blocksize); in nilfs_read_log_header()
211 static int nilfs_validate_log(struct the_nilfs *nilfs, u64 seg_seq, in nilfs_validate_log() argument
229 if (unlikely(nblock == 0 || nblock > nilfs->ns_blocks_per_segment)) in nilfs_validate_log()
234 if (nilfs_compute_checksum(nilfs, bh_sum, &crc, sizeof(sum->ss_datasum), in nilfs_validate_log()
235 ((u64)nblock << nilfs->ns_blocksize_bits), in nilfs_validate_log()
254 static void *nilfs_read_summary_info(struct the_nilfs *nilfs, in nilfs_read_summary_info() argument
265 *pbh = __bread(nilfs->ns_bdev, blocknr + 1, in nilfs_read_summary_info()
266 nilfs->ns_blocksize); in nilfs_read_summary_info()
284 static void nilfs_skip_summary_info(struct the_nilfs *nilfs, in nilfs_skip_summary_info() argument
304 *pbh = __bread(nilfs->ns_bdev, blocknr + bcnt, in nilfs_skip_summary_info()
305 nilfs->ns_blocksize); in nilfs_skip_summary_info()
316 static int nilfs_scan_dsync_log(struct the_nilfs *nilfs, sector_t start_blocknr, in nilfs_scan_dsync_log() argument
332 blocknr = start_blocknr + DIV_ROUND_UP(sumbytes, nilfs->ns_blocksize); in nilfs_scan_dsync_log()
333 bh = __bread(nilfs->ns_bdev, start_blocknr, nilfs->ns_blocksize); in nilfs_scan_dsync_log()
342 finfo = nilfs_read_summary_info(nilfs, &bh, &offset, in nilfs_scan_dsync_log()
356 binfo = nilfs_read_summary_info(nilfs, &bh, &offset, in nilfs_scan_dsync_log()
376 nilfs_skip_summary_info(nilfs, &bh, &offset, sizeof(__le64), in nilfs_scan_dsync_log()
427 static int nilfs_prepare_segment_for_recovery(struct the_nilfs *nilfs, in nilfs_prepare_segment_for_recovery() argument
433 struct inode *sufile = nilfs->ns_sufile; in nilfs_prepare_segment_for_recovery()
438 segnum[0] = nilfs->ns_segnum; in nilfs_prepare_segment_for_recovery()
439 segnum[1] = nilfs->ns_nextnum; in nilfs_prepare_segment_for_recovery()
476 nilfs->ns_pseg_offset = 0; in nilfs_prepare_segment_for_recovery()
477 nilfs->ns_seg_seq = ri->ri_seq + 2; in nilfs_prepare_segment_for_recovery()
478 nilfs->ns_nextnum = nilfs->ns_segnum = segnum[0]; in nilfs_prepare_segment_for_recovery()
485 static int nilfs_recovery_copy_block(struct the_nilfs *nilfs, in nilfs_recovery_copy_block() argument
492 bh_org = __bread(nilfs->ns_bdev, rb->blocknr, nilfs->ns_blocksize); in nilfs_recovery_copy_block()
503 static int nilfs_recover_dsync_blocks(struct the_nilfs *nilfs, in nilfs_recover_dsync_blocks() argument
511 unsigned blocksize = nilfs->ns_blocksize; in nilfs_recover_dsync_blocks()
535 err = nilfs_recovery_copy_block(nilfs, rb, page); in nilfs_recover_dsync_blocks()
579 static int nilfs_do_roll_forward(struct the_nilfs *nilfs, in nilfs_do_roll_forward() argument
603 segnum = nilfs_get_segnum_of_block(nilfs, pseg_start); in nilfs_do_roll_forward()
604 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end); in nilfs_do_roll_forward()
608 bh_sum = nilfs_read_log_header(nilfs, pseg_start, &sum); in nilfs_do_roll_forward()
614 ret = nilfs_validate_log(nilfs, seg_seq, bh_sum, sum); in nilfs_do_roll_forward()
628 nextnum = nilfs_get_segnum_of_block(nilfs, in nilfs_do_roll_forward()
631 nilfs->ns_ctime = le64_to_cpu(sum->ss_create); in nilfs_do_roll_forward()
633 nilfs->ns_nongc_ctime = nilfs->ns_ctime; in nilfs_do_roll_forward()
646 err = nilfs_scan_dsync_log(nilfs, pseg_start, sum, in nilfs_do_roll_forward()
652 nilfs, sb, root, &dsync_blocks, in nilfs_do_roll_forward()
679 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end); in nilfs_do_roll_forward()
703 static void nilfs_finish_roll_forward(struct the_nilfs *nilfs, in nilfs_finish_roll_forward() argument
709 if (nilfs_get_segnum_of_block(nilfs, ri->ri_lsegs_start) != in nilfs_finish_roll_forward()
710 nilfs_get_segnum_of_block(nilfs, ri->ri_super_root)) in nilfs_finish_roll_forward()
713 bh = __getblk(nilfs->ns_bdev, ri->ri_lsegs_start, nilfs->ns_blocksize); in nilfs_finish_roll_forward()
744 int nilfs_salvage_orphan_logs(struct the_nilfs *nilfs, in nilfs_salvage_orphan_logs() argument
761 err = nilfs_do_roll_forward(nilfs, sb, root, ri); in nilfs_salvage_orphan_logs()
766 err = nilfs_prepare_segment_for_recovery(nilfs, sb, ri); in nilfs_salvage_orphan_logs()
777 set_nilfs_discontinued(nilfs); in nilfs_salvage_orphan_logs()
787 nilfs_finish_roll_forward(nilfs, ri); in nilfs_salvage_orphan_logs()
813 int nilfs_search_super_root(struct the_nilfs *nilfs, in nilfs_search_super_root() argument
830 pseg_start = nilfs->ns_last_pseg; in nilfs_search_super_root()
831 seg_seq = nilfs->ns_last_seq; in nilfs_search_super_root()
832 cno = nilfs->ns_last_cno; in nilfs_search_super_root()
833 segnum = nilfs_get_segnum_of_block(nilfs, pseg_start); in nilfs_search_super_root()
836 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end); in nilfs_search_super_root()
841 __breadahead(nilfs->ns_bdev, b++, nilfs->ns_blocksize); in nilfs_search_super_root()
846 bh_sum = nilfs_read_log_header(nilfs, pseg_start, &sum); in nilfs_search_super_root()
850 ret = nilfs_validate_log(nilfs, seg_seq, bh_sum, sum); in nilfs_search_super_root()
868 nextnum = nilfs_get_segnum_of_block(nilfs, in nilfs_search_super_root()
883 nilfs_get_segment_range(nilfs, nextnum, &b, &end); in nilfs_search_super_root()
885 __breadahead(nilfs->ns_bdev, b++, in nilfs_search_super_root()
886 nilfs->ns_blocksize); in nilfs_search_super_root()
905 nilfs->ns_pseg_offset = pseg_start + nblocks - seg_start; in nilfs_search_super_root()
906 nilfs->ns_seg_seq = seg_seq; in nilfs_search_super_root()
907 nilfs->ns_segnum = segnum; in nilfs_search_super_root()
908 nilfs->ns_cno = cno; /* nilfs->ns_cno = ri->ri_cno + 1 */ in nilfs_search_super_root()
909 nilfs->ns_ctime = le64_to_cpu(sum->ss_create); in nilfs_search_super_root()
910 nilfs->ns_nextnum = nextnum; in nilfs_search_super_root()
915 if (nilfs->ns_mount_state & NILFS_VALID_FS) in nilfs_search_super_root()
947 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end); in nilfs_search_super_root()
955 nilfs->ns_last_pseg = sr_pseg_start; in nilfs_search_super_root()
956 nilfs->ns_last_seq = nilfs->ns_seg_seq; in nilfs_search_super_root()
957 nilfs->ns_last_cno = ri->ri_cno; in nilfs_search_super_root()