spin_lock(&ci->vfs_inode.i_lock);
if (ci->i_hold_caps_until > jiffies) {
dout(-10, "cap_dwork on %p -- rescheduling\n", &ci->vfs_inode);
- if (schedule_delayed_work(&ci->i_cap_dwork,
- ci->i_hold_caps_until - jiffies))
- igrab(&ci->vfs_inode);
+ schedule_delayed_work(&ci->i_cap_dwork,
+ ci->i_hold_caps_until - jiffies);
spin_unlock(&ci->vfs_inode.i_lock);
goto out;
}
spin_unlock(&ci->vfs_inode.i_lock);
ceph_check_caps(ci, 0);
out:
- iput(&ci->vfs_inode);
dout(-10, "cap_dwork on %p done\n", &ci->vfs_inode);
}
if (until > ci->i_hold_caps_until) {
ci->i_hold_caps_until = until;
dout(10, "hold_caps_until %lu\n", until);
- if (schedule_delayed_work(&ci->i_cap_dwork,
- until - jiffies))
- igrab(inode);
+ schedule_delayed_work(&ci->i_cap_dwork,
+ until - jiffies);
}
}
{
struct ceph_inode_info *ci = ceph_inode(inode);
dout(-30, "destroy_inode %p ino %llx\n", inode, ceph_ino(inode));
- if (cancel_delayed_work_sync(&ci->i_cap_dwork))
- iput(inode);
+ cancel_delayed_work_sync(&ci->i_cap_dwork);
kfree(ci->i_symlink);
kmem_cache_free(ceph_inode_cachep, ci);
}