xfs
[Top] [All Lists]

ADD 802017 - ASSERT fail in xlog_get_bp on small mem machine

To: dxm@xxxxxxxxxxxx
Subject: ADD 802017 - ASSERT fail in xlog_get_bp on small mem machine
From: pv@xxxxxxxxxxxxx (dxm@xxxxxxxxxxxx)
Date: Mon, 18 Sep 2000 22:01:01 -0700 (PDT)
Cc: linux-xfs@xxxxxxxxxxx
Reply-to: sgi.bugs.xfs@xxxxxxxxxxxxxxxxx
Sender: owner-linux-xfs@xxxxxxxxxxx
Webexec: webpvupdate,pvincident
Webpv: proxy2.melbourne.sgi.com
View Incident: 
http://co-op.engr.sgi.com/BugWorks/code/bwxquery.cgi?search=Search&wlong=1&view_type=Bug&wi=802017

 Status : open                         Priority : 3                         
 Assigned Engineer : dxm               Submitter : dxm                      
*Modified User : dxm                  *Modified User Domain : engr          
*Description :
I haven't seen this problem for ages on my 64Mb crash box,
but the problem is still there.

I installed XFS on my home machine last night and was very
happy with its performance (P100, 32Mb RAM, 32Gb disk) until 
I tried to cleanly remount my XFS partition and tripped an 
ASSERT in xlog_get_bp.

My home machine is very tight on memory, but I don't think
it's an unreasonable machine to try to run XFS on. Unfortunately,

.....


==========================
ADDITIONAL INFORMATION (ADD)
From: dxm@engr (BugWorks)
Date: Sep 18 2000 10:01:00PM
==========================

I'd quite like this workaround (it stops the crash and
inevitable fsck) to get into the beta. Anyone want to rv 
this for me? 

(PS. I've also got an actual fix for the problem, but it's
going to need some decent testing so it's not going to make
beta).

dxm@snort ~/isms/slinx-xfs-tot/linux/fs/xfs> p_rdiff -i xfs_log_recover.c
153c153,156
<         ASSERT(bp);
---
>         if (!bp)
>             printk("XFS: Failed to allocate %d BB buffer for log recovery\n",
>                     num_bblks);
>                 
162c165
< }     /* xlog_get_bp */
---
> }     /* xlog_put_bp */
415a419,420
>     if (!bp)
>         return -ENOMEM;
497c502,507
<       big_bp = xlog_get_bp(num_scan_bblks,log->l_mp);
---
>     big_bp = xlog_get_bp(num_scan_bblks,log->l_mp);
>     if (!big_bp) {
>         error = -ENOMEM;
>         goto bp_err;
>     }
>         
665a676,677
>     if (!bp)
>         return -ENOMEM;
749a762,763
>         if (!bp) 
>             return -ENOMEM;
909a924,925
>         if (!bp)
>             return -ENOMEM;
949a966,969
>         if (!big_bp) {
>             error = -ENOMEM;
>             goto bp_err;
>         }
1114a1135,1136
>         if (!bp)
>             return -ENOMEM;
3118a3141,3142
>     if (!hbp)
>         return -ENOMEM;
3119a3144,3147
>     if (!dbp) {
>         xlog_put_bp(hbp);
>         return -ENOMEM;
>     }

<Prev in Thread] Current Thread [Next in Thread>