u32 bitmap, mask;
struct inode *ipimap = JFS_SBI(ip->i_sb)->ipimap;
imap_t *imap = JFS_IP(ipimap)->i_imap;
- s64 xaddr;
- s64 xlen;
pxd_t freepxd;
tid_t tid;
struct inode *iplist[3];
* invalidate any page of the inode extent freed from buffer cache;
*/
freepxd = iagp->inoext[extno];
- xaddr = addressPXD(&iagp->inoext[extno]);
- xlen = lengthPXD(&iagp->inoext[extno]);
- invalidate_metapages(JFS_SBI(ip->i_sb)->direct_inode, xaddr, xlen);
+ invalidate_pxd_metapages(JFS_SBI(ip->i_sb)->direct_inode, freepxd);
/*
* update iag list(s) (careful update step 2)
jFYI(1, ("release_metapage: done\n"));
}
-void invalidate_metapages(struct inode *ip, unsigned long addr,
- unsigned long len)
+void __invalidate_metapages(struct inode *ip, s64 addr, int len)
{
metapage_t **hash_ptr;
unsigned long lblock;
}
/*
- * This routine uses hash to explicitly find small number of pages
+ * This routines invalidate all pages for an extent.
*/
-extern void invalidate_metapages(struct inode *, unsigned long, unsigned long);
+extern void __invalidate_metapages(struct inode *, s64, int);
+#define invalidate_pxd_metapages(ip, pxd) \
+ __invalidate_metapages((ip), addressPXD(&(pxd)), lengthPXD(&(pxd)))
+#define invalidate_dxd_metapages(ip, dxd) \
+ __invalidate_metapages((ip), addressDXD(&(dxd)), lengthDXD(&(dxd)))
/*
* This one uses mp_list to invalidate all pages for an inode
* free EA
*/
if (JFS_IP(ip)->ea.flag & DXD_EXTENT) {
- s64 xaddr;
- int xlen;
+ s64 xaddr = addressDXD(&JFS_IP(ip)->ea);
+ int xlen = lengthDXD(&JFS_IP(ip)->ea);
maplock_t maplock; /* maplock for COMMIT_WMAP */
pxdlock_t *pxdlock; /* maplock for COMMIT_WMAP */
/* free EA pages from cache */
- xaddr = addressDXD(&JFS_IP(ip)->ea);
- xlen = lengthDXD(&JFS_IP(ip)->ea);
-#ifdef _STILL_TO_PORT
- bmExtentInvalidate(ip, xaddr, xlen);
-#endif
+ invalidate_dxd_metapages(ip, JFS_IP(ip)->ea);
/* free EA extent from working block map */
maplock.index = 1;
* free ACL
*/
if (JFS_IP(ip)->acl.flag & DXD_EXTENT) {
- s64 xaddr;
- int xlen;
+ s64 xaddr = addressDXD(&JFS_IP(ip)->acl);
+ int xlen = lengthDXD(&JFS_IP(ip)->acl);
maplock_t maplock; /* maplock for COMMIT_WMAP */
pxdlock_t *pxdlock; /* maplock for COMMIT_WMAP */
- /* free ACL pages from cache */
- xaddr = addressDXD(&JFS_IP(ip)->acl);
- xlen = lengthDXD(&JFS_IP(ip)->acl);
-#ifdef _STILL_TO_PORT
- bmExtentInvalidate(ip, xaddr, xlen);
-#endif
+ invalidate_dxd_metapages(ip, JFS_IP(ip)->acl);
/* free ACL extent from working block map */
maplock.index = 1;