static size_t logfs_write_header(struct logfs_super *super, struct logfs_journal_header *jh, size_t datalen, u16 type) { size_t len = datalen; return __logfs_write_header(super, jh, len, datalen, type, COMPR_NONE); }
static size_t __logfs_write_je(struct super_block *sb, void *buf, u16 type, size_t len) { struct logfs_super *super = logfs_super(sb); void *header = super->s_compressed_je; void *data = header + sizeof(struct logfs_journal_header); ssize_t compr_len, pad_len; u8 compr = COMPR_ZLIB; if (len == 0) return logfs_write_header(super, header, 0, type); compr_len = logfs_compress(buf, data, len, sb->s_blocksize); if (compr_len < 0 || type == JE_ANCHOR) { BUG_ON(len > sb->s_blocksize); memcpy(data, buf, len); compr_len = len; compr = COMPR_NONE; } pad_len = ALIGN(compr_len, 16); memset(data + compr_len, 0, pad_len - compr_len); return __logfs_write_header(super, header, compr_len, len, type, compr); }