Commit 9f3345d8 authored by Jeff Layton's avatar Jeff Layton Committed by Ilya Dryomov

ceph: have __mark_caps_flushing return flush_tid

Currently, this function returns ci->i_dirty_caps, but the callers have
to check that that isn't 0 before calling this function. Have the
callers grab that value directly out of the inode, and have
__mark_caps_flushing return the flush_tid instead.
Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Reviewed-by: default avatar"Yan, Zheng" <zyan@redhat.com>
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent 354c63a0
...@@ -1722,11 +1722,11 @@ static bool __finish_cap_flush(struct ceph_mds_client *mdsc, ...@@ -1722,11 +1722,11 @@ static bool __finish_cap_flush(struct ceph_mds_client *mdsc,
* Add dirty inode to the flushing list. Assigned a seq number so we * Add dirty inode to the flushing list. Assigned a seq number so we
* can wait for caps to flush without starving. * can wait for caps to flush without starving.
* *
* Called under i_ceph_lock. * Called under i_ceph_lock. Returns the flush tid.
*/ */
static int __mark_caps_flushing(struct inode *inode, static u64 __mark_caps_flushing(struct inode *inode,
struct ceph_mds_session *session, bool wake, struct ceph_mds_session *session, bool wake,
u64 *flush_tid, u64 *oldest_flush_tid) u64 *oldest_flush_tid)
{ {
struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc; struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
struct ceph_inode_info *ci = ceph_inode(inode); struct ceph_inode_info *ci = ceph_inode(inode);
...@@ -1765,8 +1765,7 @@ static int __mark_caps_flushing(struct inode *inode, ...@@ -1765,8 +1765,7 @@ static int __mark_caps_flushing(struct inode *inode,
list_add_tail(&cf->i_list, &ci->i_cap_flush_list); list_add_tail(&cf->i_list, &ci->i_cap_flush_list);
*flush_tid = cf->tid; return cf->tid;
return flushing;
} }
/* /*
...@@ -2056,8 +2055,8 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags, ...@@ -2056,8 +2055,8 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags,
} }
if (cap == ci->i_auth_cap && ci->i_dirty_caps) { if (cap == ci->i_auth_cap && ci->i_dirty_caps) {
flushing = __mark_caps_flushing(inode, session, false, flushing = ci->i_dirty_caps;
&flush_tid, flush_tid = __mark_caps_flushing(inode, session, false,
&oldest_flush_tid); &oldest_flush_tid);
} else { } else {
flushing = 0; flushing = 0;
...@@ -2137,8 +2136,9 @@ static int try_flush_caps(struct inode *inode, u64 *ptid) ...@@ -2137,8 +2136,9 @@ static int try_flush_caps(struct inode *inode, u64 *ptid)
goto retry_locked; goto retry_locked;
} }
flushing = __mark_caps_flushing(inode, session, true, flushing = ci->i_dirty_caps;
&flush_tid, &oldest_flush_tid); flush_tid = __mark_caps_flushing(inode, session, true,
&oldest_flush_tid);
/* __send_cap drops i_ceph_lock */ /* __send_cap drops i_ceph_lock */
delayed = __send_cap(mdsc, cap, CEPH_CAP_OP_FLUSH, delayed = __send_cap(mdsc, cap, CEPH_CAP_OP_FLUSH,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment