From ad7d66605936639bf50474c5ec77b2baddaea0da Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 8 Sep 2008 16:54:16 -0700 Subject: [PATCH] kclient: send time_warp_seq with flushsnaps --- src/kernel/caps.c | 5 ++++- src/kernel/snap.c | 3 ++- src/kernel/super.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/kernel/caps.c b/src/kernel/caps.c index 2a376fadd5cb9..247df2d90611e 100644 --- a/src/kernel/caps.c +++ b/src/kernel/caps.c @@ -323,6 +323,7 @@ void __ceph_flush_snaps(struct ceph_inode_info *ci) int issued; u64 size; struct timespec mtime, atime, ctime; + u64 time_warp_seq; u32 mseq; struct ceph_mds_client *mdsc = &ceph_inode_to_client(inode)->mdsc; struct ceph_mds_session *session = 0; @@ -363,6 +364,7 @@ retry: atime = capsnap->atime; mtime = capsnap->mtime; ctime = capsnap->ctime; + time_warp_seq = capsnap->time_warp_seq; issued = capsnap->issued; spin_unlock(&inode->i_lock); @@ -371,7 +373,8 @@ retry: send_cap(mdsc, ceph_vino(inode).ino, CEPH_CAP_OP_FLUSHSNAP, issued, 0, 0, mseq, - size, 0, &mtime, &atime, 0, + size, 0, + &mtime, &atime, time_warp_seq, follows, mds); spin_lock(&inode->i_lock); diff --git a/src/kernel/snap.c b/src/kernel/snap.c index c4162af8e8ad6..d386d995048f8 100644 --- a/src/kernel/snap.c +++ b/src/kernel/snap.c @@ -196,13 +196,14 @@ void __ceph_finish_cap_snap(struct ceph_inode_info *ci, capsnap->mtime = inode->i_mtime; capsnap->atime = inode->i_atime; capsnap->ctime = inode->i_ctime; + capsnap->time_warp_seq = ci->i_time_warp_seq; if (used & CEPH_CAP_WRBUFFER) { dout(10, "finish_cap_snap %p cap_snap %p snapc %p %llu used %d," " WRBUFFER, delaying\n", inode, capsnap, capsnap->context, capsnap->context->seq, used); } else { BUG_ON(ci->i_wrbuffer_ref_head); - capsnap->dirty = 0; + BUG_ON(capsnap->dirty); __ceph_flush_snaps(ci); } } diff --git a/src/kernel/super.h b/src/kernel/super.h index 4cfc0bfe7e99f..74b531d64e36c 100644 --- a/src/kernel/super.h +++ b/src/kernel/super.h @@ -192,6 +192,7 @@ struct ceph_cap_snap { int issued; u64 size; struct timespec mtime, atime, ctime; + u64 time_warp_seq; struct ceph_snap_context *context; int writing; int dirty; -- 2.39.5