Lines Matching defs:nilfs

15 #include "nilfs.h"
84 * @nilfs: nilfs object
92 static int nilfs_compute_checksum(struct the_nilfs *nilfs,
97 unsigned int blocksize = nilfs->ns_blocksize;
104 crc = crc32_le(nilfs->ns_crc_seed,
110 bh = __bread(nilfs->ns_bdev, ++start, blocksize);
125 * @nilfs: nilfs object
130 int nilfs_read_super_root_block(struct the_nilfs *nilfs, sector_t sr_block,
139 bh_sr = __bread(nilfs->ns_bdev, sr_block, nilfs->ns_blocksize);
149 if (bytes == 0 || bytes > nilfs->ns_blocksize) {
154 nilfs, bh_sr, &crc, sizeof(sr->sr_sum), bytes,
171 return nilfs_warn_segment_error(nilfs->ns_sb, ret);
176 * @nilfs: nilfs object
181 nilfs_read_log_header(struct the_nilfs *nilfs, sector_t start_blocknr,
186 bh_sum = __bread(nilfs->ns_bdev, start_blocknr, nilfs->ns_blocksize);
194 * @nilfs: nilfs object
199 static int nilfs_validate_log(struct the_nilfs *nilfs, u64 seg_seq,
217 if (unlikely(nblock == 0 || nblock > nilfs->ns_blocks_per_segment))
222 if (nilfs_compute_checksum(nilfs, bh_sum, &crc, sizeof(sum->ss_datasum),
223 ((u64)nblock << nilfs->ns_blocksize_bits),
237 * @nilfs: nilfs object
242 static void *nilfs_read_summary_info(struct the_nilfs *nilfs,
253 *pbh = __bread(nilfs->ns_bdev, blocknr + 1,
254 nilfs->ns_blocksize);
266 * @nilfs: nilfs object
272 static void nilfs_skip_summary_info(struct the_nilfs *nilfs,
292 *pbh = __bread(nilfs->ns_bdev, blocknr + bcnt,
293 nilfs->ns_blocksize);
299 * @nilfs: nilfs object
304 static int nilfs_scan_dsync_log(struct the_nilfs *nilfs, sector_t start_blocknr,
320 blocknr = start_blocknr + DIV_ROUND_UP(sumbytes, nilfs->ns_blocksize);
321 bh = __bread(nilfs->ns_bdev, start_blocknr, nilfs->ns_blocksize);
330 finfo = nilfs_read_summary_info(nilfs, &bh, &offset,
344 binfo = nilfs_read_summary_info(nilfs, &bh, &offset,
364 nilfs_skip_summary_info(nilfs, &bh, &offset, sizeof(__le64),
415 static int nilfs_prepare_segment_for_recovery(struct the_nilfs *nilfs,
421 struct inode *sufile = nilfs->ns_sufile;
426 segnum[0] = nilfs->ns_segnum;
427 segnum[1] = nilfs->ns_nextnum;
464 nilfs->ns_pseg_offset = 0;
465 nilfs->ns_seg_seq = ri->ri_seq + 2;
466 nilfs->ns_nextnum = nilfs->ns_segnum = segnum[0];
473 static int nilfs_recovery_copy_block(struct the_nilfs *nilfs,
481 bh_org = __bread(nilfs->ns_bdev, rb->blocknr, nilfs->ns_blocksize);
492 static int nilfs_recover_dsync_blocks(struct the_nilfs *nilfs,
500 unsigned int blocksize = nilfs->ns_blocksize;
525 err = nilfs_recovery_copy_block(nilfs, rb, pos, page);
564 * @nilfs: nilfs object
568 static int nilfs_do_roll_forward(struct the_nilfs *nilfs,
592 segnum = nilfs_get_segnum_of_block(nilfs, pseg_start);
593 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end);
597 bh_sum = nilfs_read_log_header(nilfs, pseg_start, &sum);
603 ret = nilfs_validate_log(nilfs, seg_seq, bh_sum, sum);
617 nextnum = nilfs_get_segnum_of_block(nilfs,
620 nilfs->ns_ctime = le64_to_cpu(sum->ss_create);
622 nilfs->ns_nongc_ctime = nilfs->ns_ctime;
635 err = nilfs_scan_dsync_log(nilfs, pseg_start, sum,
641 nilfs, sb, root, &dsync_blocks,
668 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end);
690 static void nilfs_finish_roll_forward(struct the_nilfs *nilfs,
696 if (nilfs_get_segnum_of_block(nilfs, ri->ri_lsegs_start) !=
697 nilfs_get_segnum_of_block(nilfs, ri->ri_super_root))
700 bh = __getblk(nilfs->ns_bdev, ri->ri_lsegs_start, nilfs->ns_blocksize);
706 nilfs_warn(nilfs->ns_sb,
713 * @nilfs: nilfs object
730 int nilfs_salvage_orphan_logs(struct the_nilfs *nilfs,
746 err = nilfs_do_roll_forward(nilfs, sb, root, ri);
751 err = nilfs_prepare_segment_for_recovery(nilfs, sb, ri);
762 set_nilfs_discontinued(nilfs);
772 nilfs_finish_roll_forward(nilfs, ri);
782 * @nilfs: the_nilfs
798 int nilfs_search_super_root(struct the_nilfs *nilfs,
815 pseg_start = nilfs->ns_last_pseg;
816 seg_seq = nilfs->ns_last_seq;
817 cno = nilfs->ns_last_cno;
818 segnum = nilfs_get_segnum_of_block(nilfs, pseg_start);
821 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end);
826 __breadahead(nilfs->ns_bdev, b++, nilfs->ns_blocksize);
831 bh_sum = nilfs_read_log_header(nilfs, pseg_start, &sum);
835 ret = nilfs_validate_log(nilfs, seg_seq, bh_sum, sum);
853 nextnum = nilfs_get_segnum_of_block(nilfs,
870 nilfs_get_segment_range(nilfs, nextnum, &b, &end);
872 __breadahead(nilfs->ns_bdev, b++,
873 nilfs->ns_blocksize);
892 nilfs->ns_pseg_offset = pseg_start + nblocks - seg_start;
893 nilfs->ns_seg_seq = seg_seq;
894 nilfs->ns_segnum = segnum;
895 nilfs->ns_cno = cno; /* nilfs->ns_cno = ri->ri_cno + 1 */
896 nilfs->ns_ctime = le64_to_cpu(sum->ss_create);
897 nilfs->ns_nextnum = nextnum;
902 if (nilfs->ns_mount_state & NILFS_VALID_FS)
934 nilfs_get_segment_range(nilfs, segnum, &seg_start, &seg_end);
942 nilfs->ns_last_pseg = sr_pseg_start;
943 nilfs->ns_last_seq = nilfs->ns_seg_seq;
944 nilfs->ns_last_cno = ri->ri_cno;
950 return ret < 0 ? ret : nilfs_warn_segment_error(nilfs->ns_sb, ret);