if (cl_io_is_trunc(io)) {
trunc_sem_down_write(&lli->lli_trunc_sem);
- inode_lock(inode);
+ mutex_lock(&lli->lli_setattr_mutex);
inode_dio_wait(inode);
} else if (cl_io_is_fallocate(io)) {
inode_lock(inode);
inode_dio_wait(inode);
} else {
- inode_lock(inode);
+ mutex_lock(&lli->lli_setattr_mutex);
}
if (io->u.ci_setattr.sa_avalid & TIMES_SET_FLAGS)
/* Truncate in memory pages - they must be clean pages
* because osc has already notified to destroy osc_extents. */
vvp_do_vmtruncate(inode, io->u.ci_setattr.sa_attr.lvb_size);
- inode_unlock(inode);
+ mutex_unlock(&lli->lli_setattr_mutex);
trunc_sem_up_write(&lli->lli_trunc_sem);
} else if (cl_io_is_fallocate(io)) {
inode_unlock(inode);
} else {
- inode_unlock(inode);
+ mutex_unlock(&lli->lli_setattr_mutex);
}
}