Lines Matching refs:capsnap
1471 struct ceph_cap_snap *capsnap; in __prep_cap() local
1472 list_for_each_entry_reverse(capsnap, &ci->i_cap_snaps, ci_item) { in __prep_cap()
1473 if (capsnap->cap_flush.tid) in __prep_cap()
1475 if (capsnap->need_flush) { in __prep_cap()
1550 struct ceph_cap_snap *capsnap, in __send_flush_snap() argument
1559 arg.follows = capsnap->follows; in __send_flush_snap()
1560 arg.flush_tid = capsnap->cap_flush.tid; in __send_flush_snap()
1563 arg.size = capsnap->size; in __send_flush_snap()
1565 arg.xattr_version = capsnap->xattr_version; in __send_flush_snap()
1566 arg.xattr_buf = capsnap->xattr_blob; in __send_flush_snap()
1569 arg.atime = capsnap->atime; in __send_flush_snap()
1570 arg.mtime = capsnap->mtime; in __send_flush_snap()
1571 arg.ctime = capsnap->ctime; in __send_flush_snap()
1572 arg.btime = capsnap->btime; in __send_flush_snap()
1573 arg.change_attr = capsnap->change_attr; in __send_flush_snap()
1576 arg.caps = capsnap->issued; in __send_flush_snap()
1578 arg.dirty = capsnap->dirty; in __send_flush_snap()
1583 arg.time_warp_seq = capsnap->time_warp_seq; in __send_flush_snap()
1585 arg.uid = capsnap->uid; in __send_flush_snap()
1586 arg.gid = capsnap->gid; in __send_flush_snap()
1587 arg.mode = capsnap->mode; in __send_flush_snap()
1589 arg.inline_data = capsnap->inline_data; in __send_flush_snap()
1624 struct ceph_cap_snap *capsnap; in __ceph_flush_snaps() local
1631 list_for_each_entry(capsnap, &ci->i_cap_snaps, ci_item) { in __ceph_flush_snaps()
1636 if (capsnap->dirty_pages || capsnap->writing) in __ceph_flush_snaps()
1640 BUG_ON(!capsnap->need_flush); in __ceph_flush_snaps()
1643 if (capsnap->cap_flush.tid > 0) { in __ceph_flush_snaps()
1644 doutc(cl, "already flushed %p, skipping\n", capsnap); in __ceph_flush_snaps()
1649 capsnap->cap_flush.tid = ++mdsc->last_cap_flush_tid; in __ceph_flush_snaps()
1650 list_add_tail(&capsnap->cap_flush.g_list, in __ceph_flush_snaps()
1660 list_add_tail(&capsnap->cap_flush.i_list, in __ceph_flush_snaps()
1664 first_tid = capsnap->cap_flush.tid; in __ceph_flush_snaps()
1665 last_tid = capsnap->cap_flush.tid; in __ceph_flush_snaps()
1694 capsnap = container_of(cf, struct ceph_cap_snap, cap_flush); in __ceph_flush_snaps()
1695 refcount_inc(&capsnap->nref); in __ceph_flush_snaps()
1699 ceph_vinop(inode), capsnap, cf->tid, in __ceph_flush_snaps()
1700 ceph_cap_string(capsnap->dirty)); in __ceph_flush_snaps()
1702 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __ceph_flush_snaps()
1708 capsnap->follows); in __ceph_flush_snaps()
1711 ceph_put_cap_snap(capsnap); in __ceph_flush_snaps()
2617 struct ceph_cap_snap *capsnap = in __kick_flushing_caps() local
2621 inode, ceph_vinop(inode), capsnap, cf->tid, in __kick_flushing_caps()
2622 ceph_cap_string(capsnap->dirty)); in __kick_flushing_caps()
2624 refcount_inc(&capsnap->nref); in __kick_flushing_caps()
2627 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __kick_flushing_caps()
2633 capsnap->follows); in __kick_flushing_caps()
2636 ceph_put_cap_snap(capsnap); in __kick_flushing_caps()
3198 struct ceph_cap_snap *capsnap) in ceph_try_drop_cap_snap() argument
3203 if (!capsnap->need_flush && in ceph_try_drop_cap_snap()
3204 !capsnap->writing && !capsnap->dirty_pages) { in ceph_try_drop_cap_snap()
3205 doutc(cl, "%p follows %llu\n", capsnap, capsnap->follows); in ceph_try_drop_cap_snap()
3206 BUG_ON(capsnap->cap_flush.tid > 0); in ceph_try_drop_cap_snap()
3207 ceph_put_snap_context(capsnap->context); in ceph_try_drop_cap_snap()
3208 if (!list_is_last(&capsnap->ci_item, &ci->i_cap_snaps)) in ceph_try_drop_cap_snap()
3211 list_del(&capsnap->ci_item); in ceph_try_drop_cap_snap()
3212 ceph_put_cap_snap(capsnap); in ceph_try_drop_cap_snap()
3285 struct ceph_cap_snap *capsnap = in __ceph_put_cap_refs() local
3290 capsnap->writing = 0; in __ceph_put_cap_refs()
3291 if (ceph_try_drop_cap_snap(ci, capsnap)) in __ceph_put_cap_refs()
3294 else if (__ceph_finish_cap_snap(ci, capsnap)) in __ceph_put_cap_refs()
3347 struct ceph_cap_snap *capsnap = NULL, *iter; in ceph_put_wrbuffer_cap_refs() local
3377 capsnap = iter; in ceph_put_wrbuffer_cap_refs()
3382 if (!capsnap) { in ceph_put_wrbuffer_cap_refs()
3391 capsnap->dirty_pages -= nr; in ceph_put_wrbuffer_cap_refs()
3392 if (capsnap->dirty_pages == 0) { in ceph_put_wrbuffer_cap_refs()
3394 if (!capsnap->writing) { in ceph_put_wrbuffer_cap_refs()
3395 if (ceph_try_drop_cap_snap(ci, capsnap)) { in ceph_put_wrbuffer_cap_refs()
3404 inode, ceph_vinop(inode), capsnap, capsnap->context->seq, in ceph_put_wrbuffer_cap_refs()
3405 ci->i_wrbuffer_ref+nr, capsnap->dirty_pages + nr, in ceph_put_wrbuffer_cap_refs()
3406 ci->i_wrbuffer_ref, capsnap->dirty_pages, in ceph_put_wrbuffer_cap_refs()
3923 void __ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap, in __ceph_remove_capsnap() argument
3933 doutc(cl, "removing capsnap %p, %p %llx.%llx ci %p\n", capsnap, in __ceph_remove_capsnap()
3936 list_del_init(&capsnap->ci_item); in __ceph_remove_capsnap()
3937 ret = __detach_cap_flush_from_ci(ci, &capsnap->cap_flush); in __ceph_remove_capsnap()
3945 ret = __detach_cap_flush_from_mdsc(mdsc, &capsnap->cap_flush); in __ceph_remove_capsnap()
3951 void ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap, in ceph_remove_capsnap() argument
3958 WARN_ON_ONCE(capsnap->dirty_pages || capsnap->writing); in ceph_remove_capsnap()
3959 __ceph_remove_capsnap(inode, capsnap, wake_ci, wake_mdsc); in ceph_remove_capsnap()
3976 struct ceph_cap_snap *capsnap = NULL, *iter; in handle_cap_flushsnap_ack() local
3993 capsnap = iter; in handle_cap_flushsnap_ack()
4000 if (capsnap) in handle_cap_flushsnap_ack()
4001 ceph_remove_capsnap(inode, capsnap, &wake_ci, &wake_mdsc); in handle_cap_flushsnap_ack()
4004 if (capsnap) { in handle_cap_flushsnap_ack()
4005 ceph_put_snap_context(capsnap->context); in handle_cap_flushsnap_ack()
4006 ceph_put_cap_snap(capsnap); in handle_cap_flushsnap_ack()
4984 struct ceph_cap_snap *capsnap; in remove_capsnaps() local
4993 capsnap = list_first_entry(&ci->i_cap_snaps, in remove_capsnaps()
4995 __ceph_remove_capsnap(inode, capsnap, NULL, NULL); in remove_capsnaps()
4996 ceph_put_snap_context(capsnap->context); in remove_capsnaps()
4997 ceph_put_cap_snap(capsnap); in remove_capsnaps()