/**
* set if IO is on a compressed file
*/
- ci_compressed_io:1,
+ ci_compressed_file:1,
/**
- * Compression chunk size
+ * Maximum compression chunk size for this file - used by readahead to
+ * do rounding
*/
- ci_compr_chunk_bits:7,
+ ci_max_compr_chunk_bits:7,
/**
* Bypass quota check
*/
rc = cl_io_init(env, io, CIT_MISC, lli->lli_clob);
if (rc == 0) {
- if (io->ci_compressed_io)
+ if (io->ci_compressed_file)
rc = -EOPNOTSUPP;
} else if (rc == 1 || rc == -ENODATA) {
rc = 0;
RETURN(0);
}
- if (io->ci_compressed_io)
+ if (io->ci_compressed_file)
chunk_pages_mask =
- (COMPR_MIN_PAGES << io->ci_compr_chunk_bits) - 1;
+ (COMPR_MIN_PAGES << io->ci_max_compr_chunk_bits) - 1;
spin_lock(&ras->ras_lock);
else
*start_idx = ras->ras_next_readahead_idx;
- if (io->ci_compressed_io) {
+ if (io->ci_compressed_file) {
CDEBUG(D_SEC, "start_idx %lu\n", *start_idx);
*start_idx &= ~chunk_pages_mask;
CDEBUG(D_SEC, "start_idx %lu\n", *start_idx);
}
}
- if (io->ci_compressed_io) {
+ if (io->ci_compressed_file) {
pgoff_t old_end_idx = end_idx;
CDEBUG(D_SEC, "end_idx %lu\n", end_idx);
/* compression is not supported with direct I/O yet, so we fall back to
* buffered I/O by returning 0 to the kernel
*/
- if (io->ci_compressed_io)
+ if (io->ci_compressed_file)
RETURN(0);
ll_dio_aio = io->ci_dio_aio;
if (pos >= inode_size)
write_beyond_eof = true;
- chunk_size = (1 << (io->ci_compr_chunk_bits + 16));
+ chunk_size = (1 << (io->ci_max_compr_chunk_bits + 16));
/* compressed files require chunk-aligned writes for overwrites
* writes at EOF are OK because they do not update existing data
* EX-7601
*/
- if (io->ci_compressed_io && !write_beyond_eof &&
+ if (io->ci_compressed_file && !write_beyond_eof &&
(pos % chunk_size || cnt % chunk_size)) {
CERROR("Compression preview requires writes to be chunk size aligned or at EOF, write pos: %llu, bytes: %lu, chunk_size: %d\n",
pos, cnt, chunk_size);
}
case CIT_LSEEK: {
- if (io->ci_compressed_io)
+ if (io->ci_compressed_file)
GOTO(out, result = -EOPNOTSUPP);
lio->lis_pos = io->u.ci_lseek.ls_start;
lio->lis_endpos = OBD_OBJECT_EOF;
lov_foreach_layout_entry(lov, lle) {
if (lle->lle_lsme->lsme_pattern & LOV_PATTERN_COMPRESS) {
- io->ci_compressed_io = true;
+ io->ci_compressed_file = true;
/* a single IO may hit different components with
* different compression chunk sizes; since this is
* used for chunk-alignment, we can take the largest
* smaller sizes
*/
if (lle->lle_lsme->lsme_compr_chunk_log_bits >
- io->ci_compr_chunk_bits) {
- io->ci_compr_chunk_bits =
+ io->ci_max_compr_chunk_bits) {
+ io->ci_max_compr_chunk_bits =
lle->lle_lsme->lsme_compr_chunk_log_bits;
}
break;
DFID "io %p type %d ignore/verify layout %d/%d, compressed %x, chunk_size %d\n",
PFID(lu_object_fid(&obj->co_lu)), io, io->ci_type,
io->ci_ignore_layout, io->ci_verify_layout,
- io->ci_compressed_io,
- io->ci_compressed_io ? (1 << (io->ci_compr_chunk_bits + 16)) : 0);
+ io->ci_compressed_file,
+ io->ci_compressed_file ? (1 << (io->ci_max_compr_chunk_bits + 16)) : 0);
/* IO type CIT_MISC with ci_ignore_layout set are usually invoked from
* the OSC layer. It shouldn't take lov layout conf lock in that case,