]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/ceph/inode.c
USB: serial: pl2303: add new ATEN device id
[karo-tx-linux.git] / fs / ceph / inode.c
index 4de6cdddf05928a29051e9996e75245732fee618..220dfd87cbfaa139d2d8f959d353bd70f032a82d 100644 (file)
@@ -1016,6 +1016,7 @@ static void update_dentry_lease(struct dentry *dentry,
        long unsigned ttl = from_time + (duration * HZ) / 1000;
        long unsigned half_ttl = from_time + (duration * HZ / 2) / 1000;
        struct inode *dir;
+       struct ceph_mds_session *old_lease_session = NULL;
 
        /*
         * Make sure dentry's inode matches tgt_vino. NULL tgt_vino means that
@@ -1051,8 +1052,10 @@ static void update_dentry_lease(struct dentry *dentry,
            time_before(ttl, di->time))
                goto out_unlock;  /* we already have a newer lease. */
 
-       if (di->lease_session && di->lease_session != session)
-               goto out_unlock;
+       if (di->lease_session && di->lease_session != session) {
+               old_lease_session = di->lease_session;
+               di->lease_session = NULL;
+       }
 
        ceph_dentry_lru_touch(dentry);
 
@@ -1065,6 +1068,8 @@ static void update_dentry_lease(struct dentry *dentry,
        di->time = ttl;
 out_unlock:
        spin_unlock(&dentry->d_lock);
+       if (old_lease_session)
+               ceph_put_mds_session(old_lease_session);
        return;
 }
 
@@ -1653,20 +1658,17 @@ out:
        return err;
 }
 
-int ceph_inode_set_size(struct inode *inode, loff_t size)
+bool ceph_inode_set_size(struct inode *inode, loff_t size)
 {
        struct ceph_inode_info *ci = ceph_inode(inode);
-       int ret = 0;
+       bool ret;
 
        spin_lock(&ci->i_ceph_lock);
        dout("set_size %p %llu -> %llu\n", inode, inode->i_size, size);
        i_size_write(inode, size);
        inode->i_blocks = calc_inode_blocks(size);
 
-       /* tell the MDS if we are approaching max_size */
-       if ((size << 1) >= ci->i_max_size &&
-           (ci->i_reported_size << 1) < ci->i_max_size)
-               ret = 1;
+       ret = __ceph_should_report_size(ci);
 
        spin_unlock(&ci->i_ceph_lock);
        return ret;