// extend file?
if (request_size + request_offset > in->effective_size()) {
+ size = request_size + request_offset;
if (encrypted) {
- in->set_effective_size(request_size + request_offset);
+ in->set_effective_size(size);
in->mark_caps_dirty(CEPH_CAP_FILE_EXCL);
+ size = fscrypt_next_block_start(offset + size);
}
ldout(cct, 7) << "in->effective_size()=" << in->effective_size() << dendl;
- in->size = offset + size;
+ in->size = size;
in->mark_caps_dirty(CEPH_CAP_FILE_WR);
if (is_quota_bytes_approaching(in, f->actor_perms)) {
}
} else if (!(mode & FALLOC_FL_KEEP_SIZE)) {
uint64_t size = offset + length;
- if (size > in->size) {
+ if (size > in->effective_size()) {
+ if (in->is_fscrypt_enabled()) {
+ in->set_effective_size(size);
+ size = fscrypt_next_block_start(size);
+ }
in->size = size;
in->mtime = in->ctime = ceph_clock_now();
in->change_attr++;