Lines Matching defs:capsnap

1447 		struct ceph_cap_snap *capsnap;
1448 list_for_each_entry_reverse(capsnap, &ci->i_cap_snaps, ci_item) {
1449 if (capsnap->cap_flush.tid)
1451 if (capsnap->need_flush) {
1523 struct ceph_cap_snap *capsnap,
1532 arg.follows = capsnap->follows;
1533 arg.flush_tid = capsnap->cap_flush.tid;
1536 arg.size = capsnap->size;
1538 arg.xattr_version = capsnap->xattr_version;
1539 arg.xattr_buf = capsnap->xattr_blob;
1542 arg.atime = capsnap->atime;
1543 arg.mtime = capsnap->mtime;
1544 arg.ctime = capsnap->ctime;
1545 arg.btime = capsnap->btime;
1546 arg.change_attr = capsnap->change_attr;
1549 arg.caps = capsnap->issued;
1551 arg.dirty = capsnap->dirty;
1556 arg.time_warp_seq = capsnap->time_warp_seq;
1558 arg.uid = capsnap->uid;
1559 arg.gid = capsnap->gid;
1560 arg.mode = capsnap->mode;
1562 arg.inline_data = capsnap->inline_data;
1567 /* No fscrypt_auth changes from a capsnap.*/
1596 struct ceph_cap_snap *capsnap;
1602 list_for_each_entry(capsnap, &ci->i_cap_snaps, ci_item) {
1607 if (capsnap->dirty_pages || capsnap->writing)
1611 BUG_ON(!capsnap->need_flush);
1613 /* only flush each capsnap once */
1614 if (capsnap->cap_flush.tid > 0) {
1615 dout(" already flushed %p, skipping\n", capsnap);
1620 capsnap->cap_flush.tid = ++mdsc->last_cap_flush_tid;
1621 list_add_tail(&capsnap->cap_flush.g_list,
1631 list_add_tail(&capsnap->cap_flush.i_list,
1635 first_tid = capsnap->cap_flush.tid;
1636 last_tid = capsnap->cap_flush.tid;
1665 capsnap = container_of(cf, struct ceph_cap_snap, cap_flush);
1666 refcount_inc(&capsnap->nref);
1669 dout("__flush_snaps %p capsnap %p tid %llu %s\n",
1670 inode, capsnap, cf->tid, ceph_cap_string(capsnap->dirty));
1672 ret = __send_flush_snap(inode, session, capsnap, cap->mseq,
1677 ceph_vinop(inode), cf->tid, capsnap->follows);
1680 ceph_put_cap_snap(capsnap);
1700 dout(" no capsnap needs flush, doing nothing\n");
2562 struct ceph_cap_snap *capsnap =
2565 dout("kick_flushing_caps %p capsnap %p tid %llu %s\n",
2566 inode, capsnap, cf->tid,
2567 ceph_cap_string(capsnap->dirty));
2569 refcount_inc(&capsnap->nref);
2572 ret = __send_flush_snap(inode, session, capsnap, cap->mseq,
2579 capsnap->follows);
2582 ceph_put_cap_snap(capsnap);
3117 struct ceph_cap_snap *capsnap)
3119 if (!capsnap->need_flush &&
3120 !capsnap->writing && !capsnap->dirty_pages) {
3122 capsnap, capsnap->follows);
3123 BUG_ON(capsnap->cap_flush.tid > 0);
3124 ceph_put_snap_context(capsnap->context);
3125 if (!list_is_last(&capsnap->ci_item, &ci->i_cap_snaps))
3128 list_del(&capsnap->ci_item);
3129 ceph_put_cap_snap(capsnap);
3202 struct ceph_cap_snap *capsnap =
3207 capsnap->writing = 0;
3208 if (ceph_try_drop_cap_snap(ci, capsnap))
3211 else if (__ceph_finish_cap_snap(ci, capsnap))
3268 struct ceph_cap_snap *capsnap = NULL, *iter;
3299 capsnap = iter;
3304 if (!capsnap) {
3306 * The capsnap should already be removed when removing
3313 capsnap->dirty_pages -= nr;
3314 if (capsnap->dirty_pages == 0) {
3316 if (!capsnap->writing) {
3317 if (ceph_try_drop_cap_snap(ci, capsnap)) {
3327 inode, capsnap, capsnap->context->seq,
3328 ci->i_wrbuffer_ref+nr, capsnap->dirty_pages + nr,
3329 ci->i_wrbuffer_ref, capsnap->dirty_pages,
3331 complete_capsnap ? " (complete capsnap)" : "");
3746 /* Is this a capsnap? */
3833 void __ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
3842 dout("removing capsnap %p, inode %p ci %p\n", capsnap, inode, ci);
3844 list_del_init(&capsnap->ci_item);
3845 ret = __detach_cap_flush_from_ci(ci, &capsnap->cap_flush);
3853 ret = __detach_cap_flush_from_mdsc(mdsc, &capsnap->cap_flush);
3859 void ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
3866 WARN_ON_ONCE(capsnap->dirty_pages || capsnap->writing);
3867 __ceph_remove_capsnap(inode, capsnap, wake_ci, wake_mdsc);
3883 struct ceph_cap_snap *capsnap = NULL, *iter;
3899 capsnap = iter;
3906 if (capsnap)
3907 ceph_remove_capsnap(inode, capsnap, &wake_ci, &wake_mdsc);
3910 if (capsnap) {
3911 ceph_put_snap_context(capsnap->context);
3912 ceph_put_cap_snap(capsnap);
4834 struct ceph_cap_snap *capsnap;
4842 capsnap = list_first_entry(&ci->i_cap_snaps,
4844 __ceph_remove_capsnap(inode, capsnap, NULL, NULL);
4845 ceph_put_snap_context(capsnap->context);
4846 ceph_put_cap_snap(capsnap);