patch-2.4.26 linux-2.4.26/fs/jfs/jfs_imap.c
Next file: linux-2.4.26/fs/jfs/jfs_logmgr.c
Previous file: linux-2.4.26/fs/jfs/jfs_extent.c
Back to the patch index
Back to the overall index
- Lines: 55
- Date:
2004-04-14 06:05:40.000000000 -0700
- Orig file:
linux-2.4.25/fs/jfs/jfs_imap.c
- Orig date:
2003-11-28 10:26:21.000000000 -0800
diff -urN linux-2.4.25/fs/jfs/jfs_imap.c linux-2.4.26/fs/jfs/jfs_imap.c
@@ -1552,6 +1552,7 @@
0);
if (rem >= INOSPEREXT) {
IREAD_UNLOCK(ipimap);
+ release_metapage(mp);
AG_UNLOCK(imap, agno);
jfs_error(ip->i_sb,
"diAlloc: can't find free bit "
@@ -1846,6 +1847,7 @@
*/
if (!iagp->nfreeinos) {
IREAD_UNLOCK(imap->im_ipimap);
+ release_metapage(mp);
jfs_error(ip->i_sb,
"diAllocIno: nfreeinos = 0, but iag on freelist");
return -EIO;
@@ -1857,6 +1859,7 @@
for (sword = 0;; sword++) {
if (sword >= SMAPSZ) {
IREAD_UNLOCK(imap->im_ipimap);
+ release_metapage(mp);
jfs_error(ip->i_sb,
"diAllocIno: free inode not found in summary map");
return -EIO;
@@ -1872,6 +1875,7 @@
rem = diFindFree(le32_to_cpu(iagp->inosmap[sword]), 0);
if (rem >= EXTSPERSUM) {
IREAD_UNLOCK(imap->im_ipimap);
+ release_metapage(mp);
jfs_error(ip->i_sb, "diAllocIno: no free extent found");
return -EIO;
}
@@ -1882,6 +1886,7 @@
rem = diFindFree(le32_to_cpu(iagp->wmap[extno]), 0);
if (rem >= INOSPEREXT) {
IREAD_UNLOCK(imap->im_ipimap);
+ release_metapage(mp);
jfs_error(ip->i_sb, "diAllocIno: free inode not found");
return -EIO;
}
@@ -2847,12 +2852,14 @@
* and should be free in persistent map;
*/
if (!(le32_to_cpu(iagp->wmap[extno]) & mask)) {
+ release_metapage(mp);
jfs_error(ipimap->i_sb,
"diUpdatePMap: the inode is not allocated in "
"the working map");
return -EIO;
}
if ((le32_to_cpu(iagp->pmap[extno]) & mask) != 0) {
+ release_metapage(mp);
jfs_error(ipimap->i_sb,
"diUpdatePMap: the inode is not free in the "
"persistent map");
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)