ceph: check mapping to determine if FILE_CACHE cap is used
authorSage Weil <sage@newdream.net>
Fri, 17 Sep 2010 16:54:08 +0000 (09:54 -0700)
committerSage Weil <sage@newdream.net>
Fri, 17 Sep 2010 16:54:31 +0000 (09:54 -0700)
See if the i_data mapping has any pages to determine if the FILE_CACHE
capability is currently in use, instead of assuming it is any time the
rdcache_gen value is set (i.e., issued -> used).

This allows the MDS RECALL_STATE process work for inodes that have cached
pages.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/caps.c

index b01c316a8148700693ce4a4212166a288a162a3d..73c153092f7292f20616108a3f2e61cc0630659e 100644 (file)
@@ -814,7 +814,7 @@ int __ceph_caps_used(struct ceph_inode_info *ci)
                used |= CEPH_CAP_PIN;
        if (ci->i_rd_ref)
                used |= CEPH_CAP_FILE_RD;
-       if (ci->i_rdcache_ref || ci->i_rdcache_gen)
+       if (ci->i_rdcache_ref || ci->vfs_inode.i_data.nrpages)
                used |= CEPH_CAP_FILE_CACHE;
        if (ci->i_wr_ref)
                used |= CEPH_CAP_FILE_WR;