瀏覽代碼

ceph: Do not do invalidate if the filesystem is mounted nofsc

Previously we would always try to enqueue work even if the filesystem is not
mounted with fscache enabled (or the file has no cookie). In the case of the
filesystem mouned nofsc (but with fscache compiled in) this would lead to a
crash.

Signed-off-by: Milosz Tanski <milosz@adfin.com>
Milosz Tanski 12 年之前
父節點
當前提交
e81568eb18
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      fs/ceph/cache.c

+ 4 - 0
fs/ceph/cache.c

@@ -374,8 +374,12 @@ out:
 
 
 void ceph_queue_revalidate(struct inode *inode)
 void ceph_queue_revalidate(struct inode *inode)
 {
 {
+	struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 
 
+	if (fsc->revalidate_wq == NULL || ci->fscache == NULL)
+		return;
+
 	ihold(inode);
 	ihold(inode);
 
 
 	if (queue_work(ceph_sb_to_client(inode->i_sb)->revalidate_wq,
 	if (queue_work(ceph_sb_to_client(inode->i_sb)->revalidate_wq,