diff options
author | Yan, Zheng <zyan@redhat.com> | 2015-06-09 15:48:57 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2015-06-25 11:49:30 +0300 |
commit | 553adfd941f8ca622965ef809553d918ea039929 (patch) | |
tree | 26ebb1577287a48cb9bcea96e8197ef1ac3b72bc /fs/ceph/mds_client.h | |
parent | 6c13a6bb55df6666275b992ba76620324429d7cf (diff) | |
download | linux-553adfd941f8ca622965ef809553d918ea039929.tar.gz linux-553adfd941f8ca622965ef809553d918ea039929.tar.bz2 linux-553adfd941f8ca622965ef809553d918ea039929.zip |
ceph: track pending caps flushing accurately
Previously we do not trace accurate TID for flushing caps. when
MDS failovers, we have no choice but to re-send all flushing caps
with a new TID. This can cause problem because MDS can has already
flushed some caps and has issued the same caps to other client.
The re-sent cap flush has a new TID, which makes MDS unable to
detect if it has already processed the cap flush.
This patch adds code to track pending caps flushing accurately.
When re-sending cap flush is needed, we use its original flush
TID.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/mds_client.h')
-rw-r--r-- | fs/ceph/mds_client.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 509d6822e9b1..19f6084203f0 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -307,6 +307,7 @@ struct ceph_mds_client { spinlock_t snap_flush_lock; u64 cap_flush_seq; + u64 last_cap_flush_tid; struct list_head cap_dirty; /* inodes with dirty caps */ struct list_head cap_dirty_migrating; /* ...that are migration... */ int num_cap_flushing; /* # caps we are flushing */ |