Darren J Moffat wrote:
> George Wilson wrote:
>>
>> Darren J Moffat wrote:
>>> George Wilson wrote:
>>>> Darren J Moffat wrote:
>>>>> Mark Maybee wrote:
>>>>>> Darren J Moffat wrote:
>>>>>>> For an encrypted dataset it is possible that by the time we arrive 
>>>>>>> in zio_write() [ zio_write_encrypt() ] that when we lookup which 
>>>>>>> key is needed to encrypted this data that key isn't available to us.
>>>>>>>
>>>>>>> Is there some value of zio->io_error I can set that will not 
>>>>>>> result in a panic ? but will put the write in to some state where 
>>>>>>> we can try again later - I guess not just this write but maybe the 
>>>>>>> whole transaction group ?
>>>>>>>
>>>>>> No, we have no ability to do this.  With George's fix for 6565042, we
>>>>>> will introduce the ability to "hang" the pool on an IO failure... this
>>>>>> may give you what you want.
>>>>> It might well do, but will it allow "unhanging" later ?  I couldn't 
>>>>> tell much from that bug unfortunately.
>>>>>
>>>> Once the error is corrected you will be able to resume the IOs.
>>> Great.  I'm thinking I might in the missing encryption key case even 
>>> want to fire off a sysevent so that someone knows the key is missing. 
>>> Does that sound reasonable ?
>>>
>> BTW, you will need to ensure that if you set the io_error in 
>> zio_encrypt_write() that it does not get overwritten in a later stage. 
>> Would you send the sysevent in zio_write_encrypt() or wait till zio_done()?
> 
> I'd probably sent it in zio_crypt_key_lookup() which zio_write_encrypt() 
> and zio_read_decrypt() both call.
> 
> Any opinion on what a suitable value for io_error would be ?  EIO feels 
> wrong, EPERM is maybe closer but not quite correct.

What about EACCES?

> 
>> Keep in mind that the user may decide to set the failure mode to one of 
>> three options:
>>
>> 1). wait - stop all IOs and block until the error is cleared
>> 2). continue - new IOs will return EIO but in-flight IOs will block 
>> until the error is cleared
>> 3). panic - same behavior, nicer message.
> 
> This sounds like a new pool level property, would that be the correct 
> interpretation ?
> 

Yep, that is the correct interpretation.

Thanks,
George

Reply via email to