Re: [PATCH, RFC/T] Fix handling of write failures to swap devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Richard Purdie wrote:
On Fri, 2006-10-27 at 18:22 +1000, Nick Piggin wrote:

Richard Purdie wrote:

Comments and testing from people who know this area of code better than
me would be appreciated!

This is the right approach to handling swap write errors. However, you need
to cut down on the amount of code duplication.


The code is subtly different to the swapoff code but I'll take another
look and see if I can refactor it now I have it all working.

Subtly different code is the worst kind of code to be duplicating. It
really needs improving, I think.

Also, if you hit that BUG_ON, then you probably have a bug, don't
remove it!


I gave that a lot of thought. We are in a write handler and have to
handle the write error from there so the page will be marked as
writeback. That function appears to be safe to call with that set
through the new code path I added (which wouldn't have happened in the
past). I therefore decided it was safe and the simplest solution was to
remove the BUG_ON. If anyone can see a problem with a page being in
writeback in that function, please enlighten me though!

It's just the wrong thing to do if the page has been set writeback with
a valid mapping. Presently we don't do any mapping specific accounting
in that path, but we could.

But now that I look at your patch, I don't think it is going to work.
end_swap_bio_write can be called from interrupt context, so you can't
lock the page, and you can't take any of those swap specific spinlocks
either.

You say that SetPageError makes the processes die unexpectedly? How and
where? We use SetPageError for IO errors, and it doesn't mean the page
has errors AFAIK.

The best policy would probably be to keep the end_page_writeback path as
it is, and then detect the PageError in the swap out path somewhere.

--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux