truncate-inode-pages-for-linux22-20010420
[openafs.git] / src / afs / LINUX / osi_vm.c
index 2b8fbb7..675c48e 100644 (file)
@@ -45,7 +45,13 @@ int osi_VM_FlushVCache(struct vcache *avc, int *slept)
     if (avc->opens != 0)
        return EBUSY;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+    truncate_inode_pages(&ip->i_data, 0);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,15)
+    truncate_inode_pages(ip, 0);
+#else
     invalidate_inode_pages(ip);
+#endif
     return 0;
 }
 
@@ -60,7 +66,17 @@ int osi_VM_FlushVCache(struct vcache *avc, int *slept)
  */
 void osi_VM_TryToSmush(struct vcache *avc, struct AFS_UCRED *acred, int sync)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(&ip->i_data, 0);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,15)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(ip, 0);
+#else
     invalidate_inode_pages((struct inode *)avc);
+#endif
 }
 
 /* Flush and invalidate pages, for fsync() with INVAL flag
@@ -88,7 +104,17 @@ void osi_VM_StoreAllSegments(struct vcache *avc)
  */
 void osi_VM_FlushPages(struct vcache *avc, struct AFS_UCRED *credp)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(&ip->i_data, 0);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,15)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(ip, 0);
+#else
     invalidate_inode_pages((struct inode*)avc);
+#endif
 }
 
 /* Purge pages beyond end-of-file, when truncating a file.
@@ -99,5 +125,15 @@ void osi_VM_FlushPages(struct vcache *avc, struct AFS_UCRED *credp)
  */
 void osi_VM_Truncate(struct vcache *avc, int alen, struct AFS_UCRED *acred)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(&ip->i_data, alen);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,15)
+    struct inode *ip = (struct inode*)avc;
+
+    truncate_inode_pages(ip, alen);
+#else
     invalidate_inode_pages((struct inode*)avc);
+#endif
 }