Lines Matching defs:capsnap

1484 		struct ceph_cap_snap *capsnap;
1485 list_for_each_entry_reverse(capsnap, &ci->i_cap_snaps, ci_item) {
1486 if (capsnap->cap_flush.tid)
1488 if (capsnap->need_flush) {
1563 struct ceph_cap_snap *capsnap,
1572 arg.follows = capsnap->follows;
1573 arg.flush_tid = capsnap->cap_flush.tid;
1576 arg.size = capsnap->size;
1578 arg.xattr_version = capsnap->xattr_version;
1579 arg.xattr_buf = capsnap->xattr_blob;
1582 arg.atime = capsnap->atime;
1583 arg.mtime = capsnap->mtime;
1584 arg.ctime = capsnap->ctime;
1585 arg.btime = capsnap->btime;
1586 arg.change_attr = capsnap->change_attr;
1589 arg.caps = capsnap->issued;
1591 arg.dirty = capsnap->dirty;
1596 arg.time_warp_seq = capsnap->time_warp_seq;
1598 arg.uid = capsnap->uid;
1599 arg.gid = capsnap->gid;
1600 arg.mode = capsnap->mode;
1602 arg.inline_data = capsnap->inline_data;
1607 /* No fscrypt_auth changes from a capsnap.*/
1637 struct ceph_cap_snap *capsnap;
1644 list_for_each_entry(capsnap, &ci->i_cap_snaps, ci_item) {
1649 if (capsnap->dirty_pages || capsnap->writing)
1653 BUG_ON(!capsnap->need_flush);
1655 /* only flush each capsnap once */
1656 if (capsnap->cap_flush.tid > 0) {
1657 doutc(cl, "already flushed %p, skipping\n", capsnap);
1662 capsnap->cap_flush.tid = ++mdsc->last_cap_flush_tid;
1663 list_add_tail(&capsnap->cap_flush.g_list,
1673 list_add_tail(&capsnap->cap_flush.i_list,
1677 first_tid = capsnap->cap_flush.tid;
1678 last_tid = capsnap->cap_flush.tid;
1707 capsnap = container_of(cf, struct ceph_cap_snap, cap_flush);
1708 refcount_inc(&capsnap->nref);
1711 doutc(cl, "%p %llx.%llx capsnap %p tid %llu %s\n", inode,
1712 ceph_vinop(inode), capsnap, cf->tid,
1713 ceph_cap_string(capsnap->dirty));
1715 ret = __send_flush_snap(inode, session, capsnap, cap->mseq,
1721 capsnap->follows);
1724 ceph_put_cap_snap(capsnap);
1745 doutc(cl, " no capsnap needs flush, doing nothing\n");
2622 struct ceph_cap_snap *capsnap =
2625 doutc(cl, "%p %llx.%llx capsnap %p tid %llu %s\n",
2626 inode, ceph_vinop(inode), capsnap, cf->tid,
2627 ceph_cap_string(capsnap->dirty));
2629 refcount_inc(&capsnap->nref);
2632 ret = __send_flush_snap(inode, session, capsnap, cap->mseq,
2638 capsnap->follows);
2641 ceph_put_cap_snap(capsnap);
3197 struct ceph_cap_snap *capsnap)
3202 if (!capsnap->need_flush &&
3203 !capsnap->writing && !capsnap->dirty_pages) {
3204 doutc(cl, "%p follows %llu\n", capsnap, capsnap->follows);
3205 BUG_ON(capsnap->cap_flush.tid > 0);
3206 ceph_put_snap_context(capsnap->context);
3207 if (!list_is_last(&capsnap->ci_item, &ci->i_cap_snaps))
3210 list_del(&capsnap->ci_item);
3211 ceph_put_cap_snap(capsnap);
3284 struct ceph_cap_snap *capsnap =
3289 capsnap->writing = 0;
3290 if (ceph_try_drop_cap_snap(ci, capsnap))
3293 else if (__ceph_finish_cap_snap(ci, capsnap))
3346 struct ceph_cap_snap *capsnap = NULL, *iter;
3376 capsnap = iter;
3381 if (!capsnap) {
3383 * The capsnap should already be removed when removing
3390 capsnap->dirty_pages -= nr;
3391 if (capsnap->dirty_pages == 0) {
3393 if (!capsnap->writing) {
3394 if (ceph_try_drop_cap_snap(ci, capsnap)) {
3403 inode, ceph_vinop(inode), capsnap, capsnap->context->seq,
3404 ci->i_wrbuffer_ref+nr, capsnap->dirty_pages + nr,
3405 ci->i_wrbuffer_ref, capsnap->dirty_pages,
3407 complete_capsnap ? " (complete capsnap)" : "");
3827 /* Is this a capsnap? */
3917 void __ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
3927 doutc(cl, "removing capsnap %p, %p %llx.%llx ci %p\n", capsnap,
3930 list_del_init(&capsnap->ci_item);
3931 ret = __detach_cap_flush_from_ci(ci, &capsnap->cap_flush);
3939 ret = __detach_cap_flush_from_mdsc(mdsc, &capsnap->cap_flush);
3945 void ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
3952 WARN_ON_ONCE(capsnap->dirty_pages || capsnap->writing);
3953 __ceph_remove_capsnap(inode, capsnap, wake_ci, wake_mdsc);
3970 struct ceph_cap_snap *capsnap = NULL, *iter;
3987 capsnap = iter;
3994 if (capsnap)
3995 ceph_remove_capsnap(inode, capsnap, &wake_ci, &wake_mdsc);
3998 if (capsnap) {
3999 ceph_put_snap_context(capsnap->context);
4000 ceph_put_cap_snap(capsnap);
4961 struct ceph_cap_snap *capsnap;
4970 capsnap = list_first_entry(&ci->i_cap_snaps,
4972 __ceph_remove_capsnap(inode, capsnap, NULL, NULL);
4973 ceph_put_snap_context(capsnap->context);
4974 ceph_put_cap_snap(capsnap);