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_thawed(struct super_block *sb, in write_mmp_block_thawed() argument
47 ext4_mmp_csum_set(sb, mmp); in write_mmp_block_thawed()
58 static int write_mmp_block(struct super_block *sb, struct buffer_head *bh) in write_mmp_block() argument
66 sb_start_write(sb); in write_mmp_block()
67 err = write_mmp_block_thawed(sb, bh); in write_mmp_block()
68 sb_end_write(sb); in write_mmp_block()
76 static int read_mmp_block(struct super_block *sb, struct buffer_head **bh, in read_mmp_block() argument
89 *bh = sb_getblk(sb, mmp_block); in read_mmp_block()
106 if (!ext4_mmp_csum_verify(sb, mmp)) { in read_mmp_block()
114 ext4_warning(sb, "Error %d while reading MMP block %llu", in read_mmp_block()
122 void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, in __dump_mmp_msg() argument
125 __ext4_warning(sb, function, line, "%s", msg); in __dump_mmp_msg()
126 __ext4_warning(sb, function, line, in __dump_mmp_msg()
138 struct super_block *sb = data; in kmmpd() local
139 struct ext4_super_block *es = EXT4_SB(sb)->s_es; in kmmpd()
140 struct buffer_head *bh = EXT4_SB(sb)->s_mmp_bh; in kmmpd()
165 while (!kthread_should_stop() && !ext4_forced_shutdown(sb)) { in kmmpd()
166 if (!ext4_has_feature_mmp(sb)) { in kmmpd()
167 ext4_warning(sb, "kmmpd being stopped since MMP feature" in kmmpd()
178 retval = write_mmp_block(sb, bh); in kmmpd()
185 ext4_error_err(sb, -retval, in kmmpd()
206 retval = read_mmp_block(sb, &bh_check, mmp_block); in kmmpd()
208 ext4_error_err(sb, -retval, in kmmpd()
218 dump_mmp_msg(sb, mmp_check, in kmmpd()
222 ext4_error_err(sb, EBUSY, "abort"); in kmmpd()
246 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()
297 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
318 dump_mmp_msg(sb, mmp, "fsck is running on the filesystem"); in ext4_multi_mount_protect()
328 ext4_warning(sb, "MMP interval %u higher than expected, please" in ext4_multi_mount_protect()
332 ext4_warning(sb, "MMP startup interrupted, failing mount\n"); in ext4_multi_mount_protect()
337 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
342 dump_mmp_msg(sb, mmp, in ext4_multi_mount_protect()
359 retval = write_mmp_block_thawed(sb, bh); in ext4_multi_mount_protect()
367 ext4_warning(sb, "MMP startup interrupted, failing mount"); in ext4_multi_mount_protect()
372 retval = read_mmp_block(sb, &bh, mmp_block); in ext4_multi_mount_protect()
377 dump_mmp_msg(sb, mmp, in ext4_multi_mount_protect()
383 EXT4_SB(sb)->s_mmp_bh = bh; in ext4_multi_mount_protect()
392 EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%.*s", in ext4_multi_mount_protect()
395 if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) { in ext4_multi_mount_protect()
396 EXT4_SB(sb)->s_mmp_tsk = NULL; in ext4_multi_mount_protect()
397 ext4_warning(sb, "Unable to create kmmpd thread for %s.", in ext4_multi_mount_protect()
398 sb->s_id); in ext4_multi_mount_protect()