xfs
[Top] [All Lists]

Re: [PATCH] XFS OOM hardening

To: Steve Lord <lord@xxxxxxx>
Subject: Re: [PATCH] XFS OOM hardening
From: Andi Kleen <ak@xxxxxxx>
Date: Fri, 17 Aug 2001 13:41:50 +0200
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <200108142221.f7EMLcQ15900@xxxxxxxxxxxxxxxxxxxx>; from lord@xxxxxxx on Tue, Aug 14, 2001 at 05:21:38PM -0500
References: <ak@xxxxxxx> <200108142221.f7EMLcQ15900@xxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
User-agent: Mutt/1.2.5i
On Tue, Aug 14, 2001 at 05:21:38PM -0500, Steve Lord wrote:
> 
> Thanks Andi, I know you have sent most of this before, things are a just
> a 'leetle bit' hectic around here right now, so things are taking longer
> than they otherwise would. The problem with the code which does some
> xfs memory allocation failure detection is that you can never get to
> all of them, this is why I have never checked in the stuff about
> seeing a NULL and doing an error return. There are also places in xfs
> where failure is not an option - once a transaction has dirtied
> metadata there is no turning back. So really the only option which will
> fly long term is making sure memory allocations do not return failure
> when they get back up to xfs proper. I do have some other ideas it is
> just a matter of finding the time.

In case you really want to defer this patch for some me hypothetic better
solution I would suggest at least applying the pagebuf errno fixes, as 
they are independent. Here are they extracted again.

-Andi


--- linux-xfs/fs/pagebuf/page_buf.c-XFSMEM      Tue Aug 14 01:12:43 2001
+++ linux-xfs/fs/pagebuf/page_buf.c     Tue Aug 14 20:43:57 2001
@@ -1200,7 +1202,7 @@
        page = bh->b_page;
        if (!test_bit(BH_Uptodate, &bh->b_state)) {
                set_bit(PG_error, &page->flags);
-               pb->pb_error = -EIO;
+               pb->pb_error = EIO;
        }
 
        unlock_buffer(bh);
@@ -1221,7 +1223,7 @@
        page = bh->b_page;
        if (!test_bit(BH_Uptodate, &bh->b_state)) {
                set_bit(PG_error, &page->flags);
-               pb->pb_error = -EIO;
+               pb->pb_error = EIO;
        }
 
        unlock_buffer(bh);
@@ -1244,7 +1246,7 @@
        page = bh->b_page;
        if (!test_bit(BH_Uptodate, &bh->b_state)) {
                set_bit(PG_error, &page->flags);
-               pb->pb_error = -EIO;
+               pb->pb_error = EIO;
        }
 
        unlock_buffer(bh);


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