errcode_t ext2fs_mmp_init(ext2_filsys fs) { struct ext2_super_block *sb = fs->super; blk64_t mmp_block; errcode_t retval; if (sb->s_mmp_update_interval == 0) sb->s_mmp_update_interval = EXT4_MMP_UPDATE_INTERVAL; /* This is probably excessively large, but who knows? */ else if (sb->s_mmp_update_interval > EXT4_MMP_MAX_UPDATE_INTERVAL) return EXT2_ET_INVALID_ARGUMENT; if (fs->mmp_buf == NULL) { retval = ext2fs_get_mem(fs->blocksize, &fs->mmp_buf); if (retval) goto out; } retval = ext2fs_alloc_block2(fs, 0, fs->mmp_buf, &mmp_block); if (retval) goto out; sb->s_mmp_block = mmp_block; retval = ext2fs_mmp_reset(fs); if (retval) goto out; out: return retval; }
errcode_t ext2fs_mmp_clear(ext2_filsys fs) { errcode_t retval = 0; if (!(fs->flags & EXT2_FLAG_RW)) return EXT2_ET_RO_FILSYS; retval = ext2fs_mmp_reset(fs); return retval; }
errcode_t ext2fs_mmp_clear(ext2_filsys fs) { #ifdef CONFIG_MMP errcode_t retval = 0; if (!(fs->flags & EXT2_FLAG_RW)) return EXT2_ET_RO_FILSYS; retval = ext2fs_mmp_reset(fs); return retval; #else return EXT2_ET_OP_NOT_SUPPORTED; #endif }