ceph: have __mark_caps_flushing return flush_tid
authorJeff Layton <jlayton@kernel.org>
Mon, 8 Jul 2019 16:27:57 +0000 (12:27 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 16 Sep 2019 10:06:24 +0000 (12:06 +0200)
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: Jeff Layton <jlayton@kernel.org>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/caps.c

index 2563f42445e64375e21362e6de89e9cdac499f0b..6b8300d72cac85a176d215905f68abf513a5640a 100644 (file)
@@ -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
  * 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,
-                               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_inode_info *ci = ceph_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);
 
-       *flush_tid = cf->tid;
-       return flushing;
+       return cf->tid;
 }
 
 /*
@@ -2056,9 +2055,9 @@ ack:
                }
 
                if (cap == ci->i_auth_cap && ci->i_dirty_caps) {
-                       flushing = __mark_caps_flushing(inode, session, false,
-                                                       &flush_tid,
-                                                       &oldest_flush_tid);
+                       flushing = ci->i_dirty_caps;
+                       flush_tid = __mark_caps_flushing(inode, session, false,
+                                                        &oldest_flush_tid);
                } else {
                        flushing = 0;
                        flush_tid = 0;
@@ -2137,8 +2136,9 @@ retry_locked:
                        goto retry_locked;
                }
 
-               flushing = __mark_caps_flushing(inode, session, true,
-                                               &flush_tid, &oldest_flush_tid);
+               flushing = ci->i_dirty_caps;
+               flush_tid = __mark_caps_flushing(inode, session, true,
+                                                &oldest_flush_tid);
 
                /* __send_cap drops i_ceph_lock */
                delayed = __send_cap(mdsc, cap, CEPH_CAP_OP_FLUSH,