ceph: only invalidate on check_caps if we actually have pages

The i_rdcache_gen value only implies we MAY have cached pages; actually
check the mapping to see if it's worth bothering with an invalidate.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2010-09-17 08:38:25 -07:00
parent 4c32f5dda5
commit 93afd449aa

View File

@ -1534,7 +1534,7 @@ retry_locked:
*/ */
if ((!is_delayed || mdsc->stopping) && if ((!is_delayed || mdsc->stopping) &&
ci->i_wrbuffer_ref == 0 && /* no dirty pages... */ ci->i_wrbuffer_ref == 0 && /* no dirty pages... */
ci->i_rdcache_gen && /* may have cached pages */ inode->i_data.nrpages && /* have cached pages */
(file_wanted == 0 || /* no open files */ (file_wanted == 0 || /* no open files */
(revoking & (CEPH_CAP_FILE_CACHE| (revoking & (CEPH_CAP_FILE_CACHE|
CEPH_CAP_FILE_LAZYIO))) && /* or revoking cache */ CEPH_CAP_FILE_LAZYIO))) && /* or revoking cache */