Lines Matching refs:log

1045 static inline u32 lsn_to_vbo(struct ntfs_log *log, const u64 lsn)  in lsn_to_vbo()  argument
1047 u32 vbo = (lsn << log->seq_num_bits) >> (log->seq_num_bits - 3); in lsn_to_vbo()
1053 static inline u32 next_page_off(struct ntfs_log *log, u32 off) in next_page_off() argument
1055 off = (off & ~log->sys_page_mask) + log->page_size; in next_page_off()
1056 return off >= log->l_size ? log->first_page : off; in next_page_off()
1059 static inline u32 lsn_to_page_off(struct ntfs_log *log, u64 lsn) in lsn_to_page_off() argument
1061 return (((u32)lsn) << 3) & log->page_mask; in lsn_to_page_off()
1064 static inline u64 vbo_to_lsn(struct ntfs_log *log, u32 off, u64 Seq) in vbo_to_lsn() argument
1066 return (off >> 3) + (Seq << log->file_data_bits); in vbo_to_lsn()
1069 static inline bool is_lsn_in_file(struct ntfs_log *log, u64 lsn) in is_lsn_in_file() argument
1071 return lsn >= log->oldest_lsn && in is_lsn_in_file()
1072 lsn <= le64_to_cpu(log->ra->current_lsn); in is_lsn_in_file()
1075 static inline u32 hdr_file_off(struct ntfs_log *log, in hdr_file_off() argument
1078 if (log->major_ver < 2) in hdr_file_off()
1084 static inline u64 base_lsn(struct ntfs_log *log, in base_lsn() argument
1088 u64 ret = (((h_lsn >> log->file_data_bits) + in base_lsn()
1089 (lsn < (lsn_to_vbo(log, h_lsn) & ~log->page_mask) ? 1 : 0)) in base_lsn()
1090 << log->file_data_bits) + in base_lsn()
1094 : log->page_size) + in base_lsn()
1101 static inline bool verify_client_lsn(struct ntfs_log *log, in verify_client_lsn() argument
1105 lsn <= le64_to_cpu(log->ra->current_lsn) && lsn; in verify_client_lsn()
1118 static int read_log_page(struct ntfs_log *log, u32 vbo, in read_log_page() argument
1122 u32 page_idx = vbo >> log->page_bits; in read_log_page()
1123 u32 page_off = vbo & log->page_mask; in read_log_page()
1124 u32 bytes = log->page_size - page_off; in read_log_page()
1126 u32 page_vbo = page_idx << log->page_bits; in read_log_page()
1128 struct ntfs_inode *ni = log->ni; in read_log_page()
1131 if (vbo >= log->l_size) in read_log_page()
1141 page_buf = page_off ? log->one_page_buf : *buffer; in read_log_page()
1144 log->page_size, NULL); in read_log_page()
1179 static int log_read_rst(struct ntfs_log *log, u32 l_size, bool first, in log_read_rst() argument
1205 if (read_log_page(log, vbo, (struct RECORD_PAGE_HDR **)&r_page, in log_read_rst()
1262 if (read_log_page(log, vbo, in log_read_rst()
1310 static void log_init_pg_hdr(struct ntfs_log *log, u32 sys_page_size, in log_init_pg_hdr() argument
1313 log->sys_page_size = sys_page_size; in log_init_pg_hdr()
1314 log->sys_page_mask = sys_page_size - 1; in log_init_pg_hdr()
1315 log->page_size = page_size; in log_init_pg_hdr()
1316 log->page_mask = page_size - 1; in log_init_pg_hdr()
1317 log->page_bits = blksize_bits(page_size); in log_init_pg_hdr()
1319 log->clst_per_page = log->page_size >> log->ni->mi.sbi->cluster_bits; in log_init_pg_hdr()
1320 if (!log->clst_per_page) in log_init_pg_hdr()
1321 log->clst_per_page = 1; in log_init_pg_hdr()
1323 log->first_page = major_ver >= 2 in log_init_pg_hdr()
1326 log->major_ver = major_ver; in log_init_pg_hdr()
1327 log->minor_ver = minor_ver; in log_init_pg_hdr()
1333 static void log_create(struct ntfs_log *log, u32 l_size, const u64 last_lsn, in log_create() argument
1336 log->l_size = l_size; in log_create()
1338 log->file_data_bits = blksize_bits(l_size) - 3; in log_create()
1339 log->seq_num_mask = (8 << log->file_data_bits) - 1; in log_create()
1340 log->seq_num_bits = sizeof(u64) * 8 - log->file_data_bits; in log_create()
1341 log->seq_num = (last_lsn >> log->file_data_bits) + 2; in log_create()
1342 log->next_page = log->first_page; in log_create()
1343 log->oldest_lsn = log->seq_num << log->file_data_bits; in log_create()
1344 log->oldest_lsn_off = 0; in log_create()
1345 log->last_lsn = log->oldest_lsn; in log_create()
1347 log->l_flags |= NTFSLOG_NO_LAST_LSN | NTFSLOG_NO_OLDEST_LSN; in log_create()
1351 log->l_flags |= NTFSLOG_WRAPPED; in log_create()
1354 log->l_flags |= NTFSLOG_MULTIPLE_PAGE_IO; in log_create()
1357 log->data_off = ALIGN( in log_create()
1359 sizeof(short) * ((log->page_size >> SECTOR_SHIFT) + 1), in log_create()
1361 log->data_size = log->page_size - log->data_off; in log_create()
1362 log->record_header_len = sizeof(struct LFS_RECORD_HDR); in log_create()
1365 log->reserved = log->data_size - log->record_header_len; in log_create()
1368 log->ra_off = ALIGN( in log_create()
1371 ((log->sys_page_size >> SECTOR_SHIFT) + 1), in log_create()
1373 log->restart_size = log->sys_page_size - log->ra_off; in log_create()
1374 log->ra_size = struct_size(log->ra, clients, 1); in log_create()
1375 log->current_openlog_count = open_log_count; in log_create()
1381 log->total_avail_pages = log->l_size - log->first_page; in log_create()
1382 log->total_avail = log->total_avail_pages >> log->page_bits; in log_create()
1389 log->max_current_avail = log->total_avail * log->reserved; in log_create()
1390 log->total_avail = log->total_avail * log->data_size; in log_create()
1391 log->current_avail = log->max_current_avail; in log_create()
1397 static struct RESTART_AREA *log_create_ra(struct ntfs_log *log) in log_create_ra() argument
1400 struct RESTART_AREA *ra = kzalloc(log->restart_size, GFP_NOFS); in log_create_ra()
1405 ra->current_lsn = cpu_to_le64(log->last_lsn); in log_create_ra()
1408 if (log->l_flags & NTFSLOG_MULTIPLE_PAGE_IO) in log_create_ra()
1410 ra->seq_num_bits = cpu_to_le32(log->seq_num_bits); in log_create_ra()
1411 ra->ra_len = cpu_to_le16(log->ra_size); in log_create_ra()
1413 ra->l_size = cpu_to_le64(log->l_size); in log_create_ra()
1414 ra->rec_hdr_len = cpu_to_le16(log->record_header_len); in log_create_ra()
1415 ra->data_off = cpu_to_le16(log->data_off); in log_create_ra()
1416 ra->open_log_count = cpu_to_le32(log->current_openlog_count + 1); in log_create_ra()
1426 static u32 final_log_off(struct ntfs_log *log, u64 lsn, u32 data_len) in final_log_off() argument
1429 u32 final_log_off = (base_vbo & log->seq_num_mask) & ~log->page_mask; in final_log_off()
1430 u32 page_off = base_vbo & log->page_mask; in final_log_off()
1431 u32 tail = log->page_size - page_off; in final_log_off()
1436 data_len += log->record_header_len; in final_log_off()
1444 tail = log->data_size; in final_log_off()
1445 page_off = log->data_off - 1; in final_log_off()
1448 final_log_off = next_page_off(log, final_log_off); in final_log_off()
1467 static int next_log_lsn(struct ntfs_log *log, const struct LFS_RECORD_HDR *rh, in next_log_lsn() argument
1472 u32 vbo = lsn_to_vbo(log, this_lsn); in next_log_lsn()
1474 final_log_off(log, this_lsn, le32_to_cpu(rh->client_data_len)); in next_log_lsn()
1475 u32 hdr_off = end & ~log->sys_page_mask; in next_log_lsn()
1476 u64 seq = this_lsn >> log->file_data_bits; in next_log_lsn()
1484 err = read_log_page(log, hdr_off, &page, NULL); in next_log_lsn()
1496 hdr_off = next_page_off(log, hdr_off); in next_log_lsn()
1497 if (hdr_off == log->first_page) in next_log_lsn()
1500 vbo = hdr_off + log->data_off; in next_log_lsn()
1506 *lsn = vbo_to_lsn(log, vbo, seq); in next_log_lsn()
1512 if (!is_lsn_in_file(log, *lsn)) in next_log_lsn()
1523 static u32 current_log_avail(struct ntfs_log *log) in current_log_avail() argument
1527 if (log->l_flags & NTFSLOG_NO_LAST_LSN) { in current_log_avail()
1529 return log->max_current_avail; in current_log_avail()
1537 oldest_off = (log->l_flags & NTFSLOG_NO_OLDEST_LSN) in current_log_avail()
1538 ? log->first_page in current_log_avail()
1539 : (log->oldest_lsn_off & ~log->sys_page_mask); in current_log_avail()
1546 next_free_off = (log->l_flags & NTFSLOG_REUSE_TAIL) in current_log_avail()
1547 ? log->next_page + log->page_size in current_log_avail()
1548 : log->next_page == log->first_page in current_log_avail()
1549 ? log->l_size in current_log_avail()
1550 : log->next_page; in current_log_avail()
1561 ? log->total_avail_pages - (next_free_off - oldest_off) in current_log_avail()
1564 free_bytes >>= log->page_bits; in current_log_avail()
1565 return free_bytes * log->reserved; in current_log_avail()
1568 static bool check_subseq_log_page(struct ntfs_log *log, in check_subseq_log_page() argument
1583 lsn_seq = lsn >> log->file_data_bits; in check_subseq_log_page()
1590 (lsn_seq == seq - 1 && log->first_page == vbo && in check_subseq_log_page()
1591 vbo != (lsn_to_vbo(log, lsn) & ~log->page_mask)); in check_subseq_log_page()
1600 static int last_log_lsn(struct ntfs_log *log) in last_log_lsn() argument
1605 bool reuse_page = log->l_flags & NTFSLOG_REUSE_TAIL; in last_log_lsn()
1619 u64 last_ok_lsn = reuse_page ? log->last_lsn : 0; in last_log_lsn()
1633 if (log->major_ver >= 2) { in last_log_lsn()
1634 final_off = 0x02 * log->page_size; in last_log_lsn()
1635 second_off = 0x12 * log->page_size; in last_log_lsn()
1638 page_bufs = kmalloc(log->page_size * 0x10, GFP_NOFS); in last_log_lsn()
1642 second_off = log->first_page - log->page_size; in last_log_lsn()
1643 final_off = second_off - log->page_size; in last_log_lsn()
1648 if (read_log_page(log, second_off, &second_tail, &usa_error) || in last_log_lsn()
1655 second_file_off = hdr_file_off(log, second_tail); in last_log_lsn()
1660 if (read_log_page(log, final_off, &first_tail, &usa_error) || in last_log_lsn()
1667 first_file_off = hdr_file_off(log, first_tail); in last_log_lsn()
1671 if (log->major_ver < 2) { in last_log_lsn()
1691 seq_base = (best_page ? lsn2 : lsn1) >> log->file_data_bits; in last_log_lsn()
1695 best_lsn1 = first_tail ? base_lsn(log, first_tail, first_file_off) : 0; in last_log_lsn()
1697 second_tail ? base_lsn(log, second_tail, second_file_off) : 0; in last_log_lsn()
1725 seq_base = best_lsn >> log->file_data_bits; in last_log_lsn()
1729 memmove(page_bufs, best_page, log->page_size); in last_log_lsn()
1737 } else if (seq_base == (best_lsn >> log->file_data_bits) && in last_log_lsn()
1738 saved_off + log->page_size == this_off && in last_log_lsn()
1745 saved_off += log->page_size; in last_log_lsn()
1748 memmove(Add2Ptr(page_bufs, tails * log->page_size), best_page, in last_log_lsn()
1749 log->page_size); in last_log_lsn()
1778 final_off += log->page_size; in last_log_lsn()
1779 second_off += log->page_size; in last_log_lsn()
1792 curpage_off = seq_base == log->seq_num ? min(log->next_page, page_off) in last_log_lsn()
1793 : log->next_page; in last_log_lsn()
1796 curpage_off == log->first_page && in last_log_lsn()
1797 !(log->l_flags & (NTFSLOG_NO_LAST_LSN | NTFSLOG_REUSE_TAIL)); in last_log_lsn()
1799 expected_seq = wrapped_file ? (log->seq_num + 1) : log->seq_num; in last_log_lsn()
1806 err = read_log_page(log, curpage_off, &page, &usa_error); in last_log_lsn()
1809 nextpage_off = next_page_off(log, curpage_off); in last_log_lsn()
1810 wrapped = nextpage_off == log->first_page; in last_log_lsn()
1849 ((lsn_cur >> log->file_data_bits) + in last_log_lsn()
1851 (lsn_to_vbo(log, lsn_cur) & ~log->page_mask)) in last_log_lsn()
1863 log->seq_num = expected_seq; in last_log_lsn()
1864 log->l_flags &= ~NTFSLOG_NO_LAST_LSN; in last_log_lsn()
1865 log->last_lsn = le64_to_cpu(cur_page->record_hdr.last_end_lsn); in last_log_lsn()
1866 log->ra->current_lsn = cur_page->record_hdr.last_end_lsn; in last_log_lsn()
1868 if (log->record_header_len <= in last_log_lsn()
1869 log->page_size - in last_log_lsn()
1871 log->l_flags |= NTFSLOG_REUSE_TAIL; in last_log_lsn()
1872 log->next_page = curpage_off; in last_log_lsn()
1874 log->l_flags &= ~NTFSLOG_REUSE_TAIL; in last_log_lsn()
1875 log->next_page = nextpage_off; in last_log_lsn()
1879 log->l_flags |= NTFSLOG_WRAPPED; in last_log_lsn()
1924 if (expected_seq != (lsn_cur >> log->file_data_bits)) in last_log_lsn()
1948 expected_seq != (lsn_cur >> log->file_data_bits)) { in last_log_lsn()
1997 log->seq_num = expected_seq; in last_log_lsn()
1998 log->last_lsn = le64_to_cpu(page->record_hdr.last_end_lsn); in last_log_lsn()
1999 log->ra->current_lsn = page->record_hdr.last_end_lsn; in last_log_lsn()
2000 log->l_flags &= ~NTFSLOG_NO_LAST_LSN; in last_log_lsn()
2006 if (log->record_header_len <= in last_log_lsn()
2007 log->page_size - in last_log_lsn()
2009 log->l_flags |= NTFSLOG_REUSE_TAIL; in last_log_lsn()
2010 log->next_page = curpage_off; in last_log_lsn()
2012 log->l_flags &= ~NTFSLOG_REUSE_TAIL; in last_log_lsn()
2013 log->next_page = nextpage_off; in last_log_lsn()
2018 log->l_flags |= NTFSLOG_WRAPPED; in last_log_lsn()
2044 log->seq_num = expected_seq; in last_log_lsn()
2045 log->last_lsn = le64_to_cpu(tail_page->record_hdr.last_end_lsn); in last_log_lsn()
2046 log->ra->current_lsn = tail_page->record_hdr.last_end_lsn; in last_log_lsn()
2047 log->l_flags &= ~NTFSLOG_NO_LAST_LSN; in last_log_lsn()
2049 if (log->page_size - in last_log_lsn()
2052 log->record_header_len) { in last_log_lsn()
2053 log->l_flags |= NTFSLOG_REUSE_TAIL; in last_log_lsn()
2054 log->next_page = curpage_off; in last_log_lsn()
2056 log->l_flags &= ~NTFSLOG_REUSE_TAIL; in last_log_lsn()
2057 log->next_page = nextpage_off; in last_log_lsn()
2061 log->l_flags |= NTFSLOG_WRAPPED; in last_log_lsn()
2078 if (replace_page || (log->ra->flags & RESTART_SINGLE_PAGE_IO)) { in last_log_lsn()
2103 err = read_log_page(log, nextpage_off, &tst_page, &usa_error); in last_log_lsn()
2120 check_subseq_log_page(log, tst_page, nextpage_off, expected_seq)) { in last_log_lsn()
2130 nextpage_off = next_page_off(log, curpage_off); in last_log_lsn()
2131 wrapped = nextpage_off == log->first_page; in last_log_lsn()
2150 nextpage_off = next_page_off(log, curpage_off); in last_log_lsn()
2151 wrapped = nextpage_off == log->first_page; in last_log_lsn()
2161 err = read_log_page(log, nextpage_off, &tst_page, &usa_error); in last_log_lsn()
2163 check_subseq_log_page(log, tst_page, nextpage_off, expected_seq)) { in last_log_lsn()
2174 if (sb_rdonly(log->ni->mi.sbi->sb)) { in last_log_lsn()
2181 tails -= (page_off1 - page_off) / log->page_size; in last_log_lsn()
2190 u64 off = hdr_file_off(log, tmp_page); in last_log_lsn()
2193 page = kmalloc(log->page_size, GFP_NOFS); in last_log_lsn()
2202 memcpy(page, tmp_page, log->page_size); in last_log_lsn()
2205 if (log->major_ver < 2) in last_log_lsn()
2212 ntfs_fix_pre_write(&page->rhdr, log->page_size); in last_log_lsn()
2214 err = ntfs_sb_write_run(log->ni->mi.sbi, in last_log_lsn()
2215 &log->ni->file.run, off, page, in last_log_lsn()
2216 log->page_size, 0); in last_log_lsn()
2222 second_off += log->page_size; in last_log_lsn()
2226 tmp_page = Add2Ptr(tmp_page, log->page_size); in last_log_lsn()
2231 if (sb_rdonly(log->ni->mi.sbi->sb)) { in last_log_lsn()
2252 static int read_log_rec_buf(struct ntfs_log *log, in read_log_rec_buf() argument
2258 u32 vbo = lsn_to_vbo(log, lsn) & ~log->page_mask; in read_log_rec_buf()
2259 u32 off = lsn_to_page_off(log, lsn) + log->record_header_len; in read_log_rec_buf()
2268 u32 tail = log->page_size - off; in read_log_rec_buf()
2275 err = read_log_page(log, vbo, &ph, &usa_error); in read_log_rec_buf()
2306 vbo = next_page_off(log, vbo); in read_log_rec_buf()
2307 off = log->data_off; in read_log_rec_buf()
2321 static int read_rst_area(struct ntfs_log *log, struct NTFS_RESTART **rst_, in read_rst_area() argument
2327 Add2Ptr(log->ra, le16_to_cpu(log->ra->client_off)); in read_rst_area()
2339 err = read_log_page(log, lsn_to_vbo(log, lsnc), in read_rst_area()
2373 err = read_log_rec_buf(log, rh, rst); in read_rst_area()
2387 static int find_log_rec(struct ntfs_log *log, u64 lsn, struct lcb *lcb) in find_log_rec() argument
2395 err = read_log_page(log, lsn_to_vbo(log, lsn), in find_log_rec()
2416 rec_len = len + log->record_header_len; in find_log_rec()
2417 if (rec_len >= log->total_avail) in find_log_rec()
2434 err = read_log_rec_buf(log, rh, lr); in find_log_rec()
2439 u32 page_off = lsn_to_page_off(log, lsn); in find_log_rec()
2441 if (page_off + len + log->record_header_len > log->page_size) in find_log_rec()
2454 static int read_log_rec_lcb(struct ntfs_log *log, u64 lsn, u32 ctx_mode, in read_log_rec_lcb() argument
2471 cr = Add2Ptr(log->ra, le16_to_cpu(log->ra->client_off)); in read_log_rec_lcb()
2473 if (!verify_client_lsn(log, cr, lsn)) in read_log_rec_lcb()
2479 lcb->client = log->client_id; in read_log_rec_lcb()
2483 err = find_log_rec(log, lsn, lcb); in read_log_rec_lcb()
2501 static int find_client_next_lsn(struct ntfs_log *log, struct lcb *lcb, u64 *lsn) in find_client_next_lsn() argument
2517 err = next_log_lsn(log, hdr, &current_lsn); in find_client_next_lsn()
2528 err = read_log_page(log, lsn_to_vbo(log, current_lsn), in find_client_next_lsn()
2561 log, Add2Ptr(log->ra, le16_to_cpu(log->ra->client_off)), in find_client_next_lsn()
2566 err = read_log_page(log, lsn_to_vbo(log, next_lsn), in find_client_next_lsn()
2578 static int read_next_log_rec(struct ntfs_log *log, struct lcb *lcb, u64 *lsn) in read_next_log_rec() argument
2582 err = find_client_next_lsn(log, lcb, lsn); in read_next_log_rec()
2597 return find_log_rec(log, *lsn, lcb); in read_next_log_rec()
2966 static struct OpenAttr *find_loaded_attr(struct ntfs_log *log, in find_loaded_attr() argument
2971 while ((oe = enum_rstbl(log->open_attr_tbl, oe))) { in find_loaded_attr()
3033 static int do_action(struct ntfs_log *log, struct OPEN_ATTR_ENRTY *oe, in do_action() argument
3038 struct ntfs_sb_info *sbi = log->ni->mi.sbi; in do_action()
3253 oa2 = find_loaded_attr(log, attr, rno_base); in do_action()
3320 oa2 = find_loaded_attr(log, attr, rno_base); in do_action()
3360 oa2 = find_loaded_attr(log, attr, rno_base); in do_action()
3379 oa2 = find_loaded_attr(log, attr, rno_base); in do_action()
3724 log->set_dirty = true; in do_action()
3739 struct ntfs_log *log; in log_replay() local
3788 log = kzalloc(sizeof(struct ntfs_log), GFP_NOFS); in log_replay()
3789 if (!log) in log_replay()
3794 log->ni = ni; in log_replay()
3795 log->l_size = l_size; in log_replay()
3796 log->one_page_buf = kmalloc(page_size, GFP_NOFS); in log_replay()
3797 if (!log->one_page_buf) { in log_replay()
3802 log->page_size = page_size; in log_replay()
3803 log->page_mask = page_size - 1; in log_replay()
3804 log->page_bits = blksize_bits(page_size); in log_replay()
3807 err = log_read_rst(log, l_size, true, &rst_info); in log_replay()
3821 log_init_pg_hdr(log, page_size, page_size, 1, 1); in log_replay()
3822 log_create(log, l_size, 0, get_random_u32(), false, false); in log_replay()
3824 log->ra = ra; in log_replay()
3826 ra = log_create_ra(log); in log_replay()
3831 log->ra = ra; in log_replay()
3832 log->init_ra = true; in log_replay()
3845 err = log_read_rst(log, l_size, false, &rst_info2); in log_replay()
3859 if (!read_log_page(log, page_size, &sp, &usa_error) && in log_replay()
3880 log->init_ra = !!rst_info.vbo; in log_replay()
3909 log_init_pg_hdr(log, page_size, page_size, 1, 1); in log_replay()
3911 log_create(log, l_size, rst_info.last_lsn, open_log_count, in log_replay()
3914 ra = log_create_ra(log); in log_replay()
3919 log->ra = ra; in log_replay()
3956 log_init_pg_hdr(log, page_size, page_size, in log_replay()
3960 log->l_size = le64_to_cpu(ra2->l_size); in log_replay()
3961 log->seq_num_bits = le32_to_cpu(ra2->seq_num_bits); in log_replay()
3962 log->file_data_bits = sizeof(u64) * 8 - log->seq_num_bits; in log_replay()
3963 log->seq_num_mask = (8 << log->file_data_bits) - 1; in log_replay()
3964 log->last_lsn = le64_to_cpu(ra2->current_lsn); in log_replay()
3965 log->seq_num = log->last_lsn >> log->file_data_bits; in log_replay()
3966 log->ra_off = le16_to_cpu(rst_info.r_page->ra_off); in log_replay()
3967 log->restart_size = log->sys_page_size - log->ra_off; in log_replay()
3968 log->record_header_len = le16_to_cpu(ra2->rec_hdr_len); in log_replay()
3969 log->ra_size = le16_to_cpu(ra2->ra_len); in log_replay()
3970 log->data_off = le16_to_cpu(ra2->data_off); in log_replay()
3971 log->data_size = log->page_size - log->data_off; in log_replay()
3972 log->reserved = log->data_size - log->record_header_len; in log_replay()
3974 vbo = lsn_to_vbo(log, log->last_lsn); in log_replay()
3976 if (vbo < log->first_page) { in log_replay()
3978 log->l_flags |= NTFSLOG_NO_LAST_LSN; in log_replay()
3979 log->next_page = log->first_page; in log_replay()
3984 off = final_log_off(log, log->last_lsn, in log_replay()
3989 log->seq_num += 1; in log_replay()
3990 log->l_flags |= NTFSLOG_WRAPPED; in log_replay()
3994 vbo &= ~log->sys_page_mask; in log_replay()
3995 tail = log->page_size - (off & log->page_mask) - 1; in log_replay()
4001 if (tail >= log->record_header_len) { in log_replay()
4002 log->l_flags |= NTFSLOG_REUSE_TAIL; in log_replay()
4003 log->next_page = vbo; in log_replay()
4005 log->next_page = next_page_off(log, vbo); in log_replay()
4013 log->oldest_lsn = log->last_lsn; in log_replay()
4015 ra2->client_idx[1], &log->oldest_lsn); in log_replay()
4016 log->oldest_lsn_off = lsn_to_vbo(log, log->oldest_lsn); in log_replay()
4018 if (log->oldest_lsn_off < log->first_page) in log_replay()
4019 log->l_flags |= NTFSLOG_NO_OLDEST_LSN; in log_replay()
4022 log->l_flags |= NTFSLOG_WRAPPED | NTFSLOG_MULTIPLE_PAGE_IO; in log_replay()
4024 log->current_openlog_count = le32_to_cpu(ra2->open_log_count); in log_replay()
4025 log->total_avail_pages = log->l_size - log->first_page; in log_replay()
4026 log->total_avail = log->total_avail_pages >> log->page_bits; in log_replay()
4027 log->max_current_avail = log->total_avail * log->reserved; in log_replay()
4028 log->total_avail = log->total_avail * log->data_size; in log_replay()
4030 log->current_avail = current_log_avail(log); in log_replay()
4032 ra = kzalloc(log->restart_size, GFP_NOFS); in log_replay()
4037 log->ra = ra; in log_replay()
4041 memcpy(ra, ra2, log->ra_size); in log_replay()
4047 log->current_openlog_count = get_random_u32(); in log_replay()
4048 ra->open_log_count = cpu_to_le32(log->current_openlog_count); in log_replay()
4049 log->ra_size = offsetof(struct RESTART_AREA, clients) + in log_replay()
4053 ra->ra_len = cpu_to_le16(log->ra_size); in log_replay()
4059 err = last_log_lsn(log); in log_replay()
4063 log->current_avail = current_log_avail(log); in log_replay()
4066 log->init_ra = rst_info.vbo; in log_replay()
4070 switch ((log->major_ver << 16) + log->minor_ver) { in log_replay()
4077 log->major_ver, log->minor_ver); in log_replay()
4079 log->set_dirty = true; in log_replay()
4101 cr->oldest_lsn = cpu_to_le64(log->oldest_lsn); in log_replay()
4123 log->client_id.seq_num = cr->seq_num; in log_replay()
4124 log->client_id.client_idx = client; in log_replay()
4126 err = read_rst_area(log, &rst, &ra_lsn); in log_replay()
4144 err = read_log_rec_lcb(log, t64, lcb_ctx_prev, &lcb); in log_replay()
4184 err = read_log_rec_lcb(log, t64, lcb_ctx_prev, &lcb); in log_replay()
4236 if (sbi->cluster_size <= log->page_size) in log_replay()
4262 err = read_log_rec_lcb(log, t64, lcb_ctx_prev, &lcb); in log_replay()
4290 err = read_log_rec_lcb(log, t64, lcb_ctx_prev, &lcb); in log_replay()
4320 log->open_attr_tbl = oatbl; in log_replay()
4381 log->open_attr_tbl = oatbl; in log_replay()
4387 err = read_log_rec_lcb(log, checkpt_lsn, lcb_ctx_next, &lcb); in log_replay()
4393 err = read_next_log_rec(log, lcb, &rec_lsn); in log_replay()
4496 t32 = log->clst_per_page; in log_replay()
4571 log->open_attr_tbl = oatbl; in log_replay()
4580 log->open_attr_tbl = oatbl; in log_replay()
4864 err = read_log_rec_lcb(log, rlsn, lcb_ctx_next, &lcb); in log_replay()
4983 err = do_action(log, oe, lrh, t16, data, dlen, rec_len, &rec_lsn); in log_replay()
4989 err = read_next_log_rec(log, lcb, &rec_lsn); in log_replay()
5009 log->transaction_id = PtrOffset(trtbl, tr); in log_replay()
5020 err = read_log_rec_lcb(log, undo_next_lsn, lcb_ctx_undo_next, &lcb); in log_replay()
5062 vcn &= ~(u64)(log->clst_per_page - 1); in log_replay()
5089 err = do_action(log, oe, lrh, t16, data, dlen, rec_len, NULL); in log_replay()
5096 err = read_next_log_rec(log, lcb, &rec_lsn); in log_replay()
5107 free_rsttbl_idx(trtbl, log->transaction_id); in log_replay()
5109 log->transaction_id = 0; in log_replay()
5125 rh = kzalloc(log->page_size, GFP_NOFS); in log_replay()
5133 t16 = (log->page_size >> SECTOR_SHIFT) + 1; in log_replay()
5135 rh->sys_page_size = cpu_to_le32(log->page_size); in log_replay()
5136 rh->page_size = cpu_to_le32(log->page_size); in log_replay()
5153 ntfs_fix_pre_write(&rh->rhdr, log->page_size); in log_replay()
5155 err = ntfs_sb_write_run(sbi, &ni->file.run, 0, rh, log->page_size, 0); in log_replay()
5157 err = ntfs_sb_write_run(sbi, &log->ni->file.run, log->page_size, in log_replay()
5158 rh, log->page_size, 0); in log_replay()
5204 kfree(log->one_page_buf); in log_replay()
5211 else if (log->set_dirty) in log_replay()
5214 kfree(log); in log_replay()