written = generic_perform_write(file, from, pos);
                if (likely(written >= 0))
                        iocb->ki_pos = pos + written;
-               if (inode->i_size > old_size)
+               if (i_size_read(inode) > old_size)
                        ceph_fscache_update_objectsize(inode);
 -              mutex_unlock(&inode->i_mutex);
 +              inode_unlock(inode);
        }
  
        if (written >= 0) {
  static loff_t ceph_llseek(struct file *file, loff_t offset, int whence)
  {
        struct inode *inode = file->f_mapping->host;
+       loff_t i_size;
        int ret;
  
 -      mutex_lock(&inode->i_mutex);
 +      inode_lock(inode);
  
        if (whence == SEEK_END || whence == SEEK_DATA || whence == SEEK_HOLE) {
                ret = ceph_do_getattr(inode, CEPH_STAT_CAP_SIZE, false);