[Devel] [RFC PATCH vz9 v6 56/62] dm-ploop: support REQ_FUA for data pios
Alexander Atanasov
alexander.atanasov at virtuozzo.com
Fri Dec 13 17:15:27 MSK 2024
On 13.12.24 15:22, Andrey Zhadchenko wrote:
>
>
> On 12/13/24 14:12, Alexander Atanasov wrote:
>> On 13.12.24 14:58, Andrey Zhadchenko wrote:
>>> No, REQ_FUA does not oblige us to make sync. REQ_FUA is translated
>>> into IOCB_DSYNC. It is IOCB layer job to datasync this exact request.
>>> Also REQ_FUA usually is coupled with REQ_PREFLUSH and we already
>>> handle that.
>>>
>>
>> We do this only for metadata in previous patches - pure data pios do
>> not handle it. And you are right about REQ_PREFLUSH but i think the
>> vfs layer will handle it along the sync - which is translated to
>> PREFLUSH+FUA
>>
>
> I think in "[RFC PATCH vz9 v6 17/62] dm-ploop: set IOCB_DSYNC on all FUA
> requests" we just save rq->cmd_flags and set IOCB_DSYNC if initial
> request contained REQ_FUA. Does this not cover pure data pios?
>
> I suppose you are talking about an extra code to mark piwb if one of
> data pios with REQ_FUA triggered metadata change.
I checked now and i think that patch would stay but i need to fix the
patch that copies to cmd_flags to bi_op.
I see REQ_FUA is not cleared anywhere but it should be. why?
split_and_chain_pio will clone it to all resulting split pios,
in turn ploop_call_rw_iter will set IOCB_DSYNC on all pios from that
split, which results in a vfs_fsync (in an aio worker, so one by one).
But we want to do only one vfs_sync for the whole split, right before we
call endio_cb.
--
Regards,
Alexander Atanasov
More information about the Devel
mailing list