tech-kern archive

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

Re: genfs ignoring VOP_STRATEGY() buf's returned error



Dear Juergen,

On Fri, Mar 27, 2009 at 12:47:57PM +0100, Juergen Hannken-Illjes wrote:
> On Thu, Mar 26, 2009 at 06:12:23PM +0100, Reinoud Zandijk wrote:
> Chances are low you will get async errors here as the write requests are
> still in transit.  If you are looking for errors from VOP_STRATEGY() you
> mean something like:
> 
>       int error, allerror;
> 
>       allerror = 0;
> 
>       error = VOP_STRATEGY(devvp, bp);
>       if (error && allerror == 0)
>               allerror = error;
>       
> As we are writing devvp, allerror will catch only fscow errors.
> spec_strategy() calls bdev_strategy() and returns 0.

What i want to catch is out-of-disc space for late allocation file systems
like UDF. In those cases VOP_STRATEGY() will return an error. The structure of
nested buffers will propagate the error code to the master buffer. When
testing this patch it did catch the out-of-disc space and passed it to the
cp(1) processes. So far it does what it should do.

Do you think i can commit it? It won't catch all cases but i dont know how it
could otherwise be implemented in genfs without digging deep into
UBC/UVM/genfs semantics.

Without the patch the cp(1) could copy for megabytes on till it ends even
though strategy keep failing for whatever reason.

With regards,
Reinoud



Home | Main Index | Thread Index | Old Index