Re: trying to read from dying disk

2005-04-23 Thread Mike Meyer
[EMAIL PROTECTED] writes:

 I have a python file that is trying to read raw data from a raw
 partition on a dying dist, eg

   f = file('/dev/sda')
   f.seek(SOMEWHERE)
   s = f.read(SOMEBYTES)

 On some blocks, the read succeeds, on others it fails and an IOError is
 thrown, and on others it appears to hang indefinitely and will not
 respond to any attempt to kill it with 'kill -9 PID', etc.

 Is there anyway to do a timeout read on this kind of file, or even to
 kill the process once it hangs?

 linux kernel 2.6.10
 python 2.4.1

Don't do this in Python. Dealing with flaky hardware is a maintenance
problem, and applications should report the error, and either exit or
proceed as best as possible after the error.

Use the dd command to extract as much good data as you can from the
failing disk.

Ok, if you *really* want to do this in Python, the answer is - you
need to provide more information. For instance, *where* does the
process hang? It's possible you've hung the process in an
uninterruptible state in the kernel. If so, you're screwed. You need
to find out where the process hangs (kernel, libc, python, etc.), and
if in the kernel what it's waiting on. In the latter case, you need to
ask on a Linux list.

mike
-- 
Mike Meyer [EMAIL PROTECTED]  http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: trying to read from dying disk

2005-04-23 Thread Ivan Van Laningham
Hi All--

[EMAIL PROTECTED] wrote:
 
 I'm currently attempting something with
 
   http://www.python.org/doc/current/lib/node368.html
 
 but it seems the read operation is ignoring these signals just as it is
 ignoring my signals from the kill command -- perhaps unsurprisingly.
 
 Perhaps there is no hope.
 


Basically, if you are waiting for a hardware interrupt that never comes,
you are doomed.  You can escape by rebooting; in dire cases the only way
out is to power down.  One of the prime sources of zombie processes on
unix systems is users trying to interrupt (with ^C) a process that is
waiting for a hardware interrupt.

Metta,
Ivan
--
Ivan Van Laningham
God N Locomotive Works
http://www.andi-holmes.com/
http://www.foretec.com/python/workshops/1998-11/proceedings.html
Army Signal Corps:  Cu Chi, Class of '70
Author:  Teach Yourself Python in 24 Hours
-- 
http://mail.python.org/mailman/listinfo/python-list