Re: [RFC PATCH 0/4] dm core: full barrier support

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

 



Hi Milan,
I'd like to ask, what's the current state of barrier support in DM?
Did You get any feedback? Are there any plans for pushing it to
mainline?
thanks a lot in advance
BR
nik

On Tue, Jul 08, 2008 at 06:48:53PM +0200, Milan Broz wrote:
> Hi,
> 
> there was several discussions about supporting barriers
> in device-mapper.
> 
> I wrote this code some time ago, but it never reached dm-devel
> tree. Take this more like RFC and experimental approach
> - maybe there is better way how to handle it. 
> Anyway this implementation works in my tests and is relatively simple.
> 
> [RFC PATCH 1/4] dm core: remove unused code
> 	- just remove never used code, already sent some time ago
> 	in another patchset
> 
> [RFC PATCH 2/4] dm core: add support for empty barriers
> 	- the core implementation of empty barrier support
> 	- implementation for stripe target
> 
> [RFC PATCH 3/4] dm core: add support for barrier bio with payload
> 	- tranform payload to sequence of data bio + empty barrier
> 
> [RFC PATCH 4/4] dm core: wait for barrier in process in suspend
> 	- try to solve the problem that we cannot suspend device
> 	during processing of barrier.
> 
> 
> Notes to implementation:
> 
> * Patches are generated with previously applied bvec_merge
> patches from dm-devel tree (but it should work even without them)
> (removing unnecessary bio split was part of solution)
> 
> * ignoring multipath for now, but it should probably process
> barriers correctly in multipath target
> 
> * barrier is expensive operation, so it should be used
> very rarely, processing (and cost) in DM is equivalent
> to suspending device
> 
> * There are several types of barrier implementation
> in hw drivers (DRAIN,TAGGING, ...) but DM doesn't care about
> it - I think that sending zero-sized barrier to low-lever driver
> is enough to allow its internal logic to decide what to do.
> 
> * DM target is responsible for processing barrier for its devices.
>   (barrier is sent per target not per device).
> 
>   - Only targets know which devices are related to barrier request,
>   and dm-core have no functionality to decide which devices are used
>   in specific targets (!)
> 
>   - Most of targets will probably need no special code to handle
>   zero-sized barrier
> 
>   - implementation is simpler, we can e.g. disable barriers
>   for some type of target (and implement it later)
> 
>   - it must process correctly mapping table reloads
> 
> * DM always send zero-sized barriers, barriers with payload
>   are converted to non-barrier bios with payload
>   + subsequent zero-size barrier
> 
> * All preceding IOs must be processed when barrier is issued
>   - All barriers is processed with down_write(io_lock) locked.
>   Because bios are internally queued per process (in *make_request)
>   this is sufficient to ensuring that all previous IOs are
>   submitted by DM (dm_request runs with down_read, so barrier
>   request will wait till all "readers" are done).
> 
>   - Moreover, after submitting zero barrier, code waits till
>   all processing IOs (per md) are finished before releasing flag.
>   It waits even for reads and barrier itself now.
> 
> * After processing all requests (including all barrier clones)
>   the queued IOs are flushed.
>   - If there is another barrier in queue, operation continues
>   without clearing BLOCK_IO flag (this flag is cleared only
>   when whole queue if flushed and no new barrier is on-the-fly).
> 
> * Some targets do not need changes (linear), others need review
> but should work in general (mirror, crypt, ...)
> 
> Milan
> --
> mbroz@xxxxxxxxxx
> 
> 
> 
> 
> 
> 
> 
> 
> --
> dm-devel mailing list
> dm-devel@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/dm-devel
> 

-- 
-------------------------------------
Nikola CIPRICH
LinuxBox.cz, s.r.o.
28. rijna 168, 709 01 Ostrava

tel.:   +420 596 603 142
fax:    +420 596 621 273
mobil:  +420 777 093 799
www.linuxbox.cz

mobil servis: +420 737 238 656
email servis: servis@xxxxxxxxxxx
-------------------------------------

--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel

[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux