[lvm-devel] [PATCH 2 of 4] Handle transient secondary mirror leg failures

malahal at us.ibm.com malahal at us.ibm.com
Fri Dec 18 20:54:30 UTC 2009


Takahiro Yasui [tyasui at redhat.com] wrote:
> > IMHO, suspend/resume is doing two things if the kernel code blocks on
> > failure -- 1) letting the kernel module unblock 2) start resync. We
> > should separate those two actions. Maybe, we should do something here???
> > Have an ioctl to start resync or have a message to unblock....
> 
> I'm sorry I don't get your point to separate unblock and resync.
> Currently "unblock" is done by "suspend" and resync is done by "resume"
> We need to reset log_failure/leg_failre, but anything else?

Let us talk about suspend with noflush as the other case would fail the
I/O.  The suspend just REQUEUE's, so it really needs resume to send the
I/O down to a surviving leg. As far as the application goes, the I/O
gets blocked until the resume, anyway.

Also in do_writes(), we block any I/O that is going to a nosync region.
If I understand, The recent block on error patch just fails to do any
I/O on a "nosync" region. In other words, we don't entertain any mirror
with leg failures and still continue to function as a mirror!

We can reset log_failure/leg_failure in resume to make them work for now
as you say.

--Malahal.




More information about the lvm-devel mailing list