Lines Matching refs:sb
11 static __le32 ext4_mmp_csum(struct super_block *sb, struct mmp_struct *mmp) in ext4_mmp_csum() argument
13 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mmp_csum()
22 static int ext4_mmp_csum_verify(struct super_block *sb, struct mmp_struct *mmp) in ext4_mmp_csum_verify() argument
24 if (!ext4_has_metadata_csum(sb)) in ext4_mmp_csum_verify()
27 return mmp->mmp_checksum == ext4_mmp_csum(sb, mmp); in ext4_mmp_csum_verify()
30 static void ext4_mmp_csum_set(struct super_block *sb, struct mmp_struct *mmp) in ext4_mmp_csum_set() argument
32 if (!ext4_has_metadata_csum(sb)) in ext4_mmp_csum_set()
35 mmp->mmp_checksum = ext4_mmp_csum(sb, mmp); in ext4_mmp_csum_set()
42 static int write_mmp_block(struct super_block *sb, struct buffer_head *bh) in write_mmp_block() argument
50 sb_start_write(sb); in write_mmp_block()
51 ext4_mmp_csum_set(sb, mmp); in write_mmp_block()
57 sb_end_write(sb); in write_mmp_block()
68 static int read_mmp_block(struct super_block *sb, struct buffer_head **bh, in read_mmp_block() argument
81 *bh = sb_getblk(sb, mmp_block); in read_mmp_block()
98 if (!ext4_mmp_csum_verify(sb, mmp)) { in read_mmp_block()
106 ext4_warning(sb, "Error %d while reading MMP block %llu", in read_mmp_block()
114 void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, in __dump_mmp_msg() argument
117 __ext4_warning(sb, function, line, "%s", msg); in __dump_mmp_msg()
118 __ext4_warning(sb, function, line, in __dump_mmp_msg()
130 struct super_block *sb = (struct super_block *) data; in kmmpd() local
131 struct ext4_super_block *es = EXT4_SB(sb)->s_es; in kmmpd()
132 struct buffer_head *bh = EXT4_SB(sb)->s_mmp_bh; in kmmpd()
159 while (!kthread_should_stop() && !sb_rdonly(sb)) { in kmmpd()
160 if (!ext4_has_feature_mmp(sb)) { in kmmpd()
161 ext4_warning(sb, "kmmpd being stopped since MMP feature" in kmmpd()
172 retval = write_mmp_block(sb, bh); in kmmpd()
179 ext4_error_err(sb, -retval, in kmmpd()
200 retval = read_mmp_block(sb, &bh_check, mmp_block); in kmmpd()
202 ext4_error_err(sb, -retval, in kmmpd()
212 dump_mmp_msg(sb, mmp_check, in kmmpd()
216 ext4_error_err(sb, EBUSY, "abort"); in kmmpd()
240 retval = write_mmp_block(sb, bh); in kmmpd()
279 int ext4_multi_mount_protect(struct super_block *sb, in ext4_multi_mount_protect() argument
282 struct ext4_super_block *es = EXT4_SB(sb)->s_es; in ext4_multi_mount_protect()
292 ext4_warning(sb, "Invalid MMP block in superblock"); in ext4_multi_mount_protect()
296 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
317 dump_mmp_msg(sb, mmp, "fsck is running on the filesystem"); in ext4_multi_mount_protect()
326 ext4_warning(sb, "MMP interval %u higher than expected, please" in ext4_multi_mount_protect()
330 ext4_warning(sb, "MMP startup interrupted, failing mount\n"); in ext4_multi_mount_protect()
334 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
339 dump_mmp_msg(sb, mmp, in ext4_multi_mount_protect()
351 retval = write_mmp_block(sb, bh); in ext4_multi_mount_protect()
359 ext4_warning(sb, "MMP startup interrupted, failing mount"); in ext4_multi_mount_protect()
363 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
368 dump_mmp_msg(sb, mmp, in ext4_multi_mount_protect()
373 EXT4_SB(sb)->s_mmp_bh = bh; in ext4_multi_mount_protect()
378 EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%.*s", in ext4_multi_mount_protect()
382 if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) { in ext4_multi_mount_protect()
383 EXT4_SB(sb)->s_mmp_tsk = NULL; in ext4_multi_mount_protect()
384 ext4_warning(sb, "Unable to create kmmpd thread for %s.", in ext4_multi_mount_protect()
385 sb->s_id); in ext4_multi_mount_protect()