]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: return mtime/atime in cap messages to mds
authorSage Weil <sage@newdream.net>
Thu, 27 Mar 2008 20:18:33 +0000 (13:18 -0700)
committerSage Weil <sage@newdream.net>
Thu, 27 Mar 2008 20:27:48 +0000 (13:27 -0700)
src/kernel/mds_client.c

index 36662827e155aace14b08ebb182979de166b3bf4..83bd90f8e724de5aa6001cf82d4bbfb4bf27de8b 100644 (file)
@@ -1199,6 +1199,7 @@ void check_new_map(struct ceph_mds_client *mdsc,
 
 void send_cap_ack(struct ceph_mds_client *mdsc, __u64 ino, int caps,
                  int wanted, __u32 seq, __u64 size, __u64 max_size, 
+                 struct timespec *mtime, struct timespec *atime,
                  int mds)
 {
        struct ceph_mds_file_caps *fc;
@@ -1222,6 +1223,10 @@ void send_cap_ack(struct ceph_mds_client *mdsc, __u64 ino, int caps,
        fc->ino = cpu_to_le64(ino);
        fc->size = cpu_to_le64(size);
        fc->max_size = cpu_to_le64(max_size);
+       if (mtime)
+               ceph_encode_timespec(&fc->mtime, mtime);
+       if (atime)
+               ceph_encode_timespec(&fc->atime, atime);
 
        send_msg_mds(mdsc, msg, mds);
 }
@@ -1279,7 +1284,7 @@ void ceph_mdsc_handle_filecaps(struct ceph_mds_client *mdsc,
        if (!inode) {
                dout(10, "wtf, i don't have ino %lu=%llx?  closing out cap\n",
                     inot, ino);
-               send_cap_ack(mdsc, ino, 0, 0, seq, size, max_size, mds);
+               send_cap_ack(mdsc, ino, 0, 0, seq, size, max_size, 0, 0, mds);
                return;
        }
 
@@ -1328,6 +1333,7 @@ int ceph_mdsc_update_cap_wanted(struct ceph_inode_info *ci, int wanted)
                cap->caps &= wanted;  /* drop caps we don't want */
                send_cap_ack(mdsc, ceph_ino(&ci->vfs_inode), cap->caps, wanted,
                             cap->seq, ci->vfs_inode.i_size, ci->i_max_size,
+                            &ci->vfs_inode.i_mtime, &ci->vfs_inode.i_atime, 
                             cap->mds);
        }