* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] [not found] ` <20090410153102.GC3800@redhat.com> @ 2009-04-15 19:09 ` Mikulas Patocka 2009-04-15 20:18 ` Mike Snitzer 0 siblings, 1 reply; 7+ messages in thread From: Mikulas Patocka @ 2009-04-15 19:09 UTC (permalink / raw) To: Mike Snitzer; +Cc: Jun'ichi Nomura, Kiyoshi Ueda, dm-devel, agk On Fri, 10 Apr 2009, Mike Snitzer wrote: > Hi Mikulaus, > > Figured I'd give you this heads up on the request-based multipath > patches too considering your recent "bottom-layer barrier support" > patchset (where you said multipath support is coming later). > > We likely want to coordinate with the NEC guys so as to make sure things > are in order for the request-based patches to get merged along with your > remaining barrier work for 2.6.31. > > Mike > > p.s. below you can see I mistakenly said to Kiyoshi that the recent > barrier patches that got merged upstream were "the last of the DM > barrier support"... Hi I would say one thing about the request-based patches --- don't do this. Your patch adds an alternate I/O path to request processing on device mapper. So, with your patch, there will be two I/O request paths. It means that any work on generic device-mapper code that will have to be done in the future (such as for example barriers that I did) will be twice harder. It will take twice the time to understand request processing, twice brain capacity to remember it, twice the time for coding, twice the time for code review, twice the time for testing. If the patch goes in, it will make a lot of things twice harder. And once the patch is in productive kernels, there'd be very little possibility to pull it out. What is the exact reason for your patch? I suppose that it's some performance degradation caused by the fact that dm-multipath doesn't distributes requests optimally across both paths. dm-multipath has pluggable path selectors, so you could improve dm-round-robin.c (or write alternate path selector module) and you don't have to touch generic dm code to solve this problem. The point is that improving dm-multipath target with better path selector is much less intrusive than patching device mapper core. If you improve dm-multipath target, only people hacking on dm-multipath will have to learn about your code. If you modify generic dm.c file, anyone doing anything on device mapper must learn about your code --- so human time consumed in much worse in this case. So, try the alternate solution (write new path selector for dm-multipath) and then you can compare them and see the result --- and then it can be consisdered if the high human time consumed by patching dm.c is worth the performance improvement. Mikulas > On Fri, Apr 10 2009 at 11:19am -0400, > Mike Snitzer <snitzer@redhat.com> wrote: > > > FYI > > > > ----- Forwarded message from Kiyoshi Ueda <k-ueda@ct.jp.nec.com> ----- > > > > > From: Kiyoshi Ueda <k-ueda@ct.jp.nec.com> > > > Date: Fri, 10 Apr 2009 15:08:06 +0900 > > > To: Mike Snitzer <snitzer@redhat.com> > > > CC: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> > > > Subject: Re: request-based dm-multipath > > > > > > Hi Mike, > > > > > > > > > > > Hi Kiyoshi, > > > > > > > > I just wanted to follow-up with you to understand if you'll be posting > > > > the request-based patches rebased against 2.6.30-rcX. Please note that > > > > Alasdair just requested Linus pull the last of the DM barrier support > > > > into what will be 2.6.30-rc2. > > > > > > Yes. > > > Current request-based patch does't have barrier support. > > > So I think I have to implement barrier support to post the next update. > > > > > > > I'd imagine you'd like the merging of the request-based and dynamic load > > > > balancer patches to be a priority for 2.6.31? > > > > > > Yes. That's right. > > > > > > Thanks, > > > Kiyoshi Ueda > > > > ----- End forwarded message ----- > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-15 19:09 ` [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] Mikulas Patocka @ 2009-04-15 20:18 ` Mike Snitzer 2009-04-15 22:24 ` Mikulas Patocka 0 siblings, 1 reply; 7+ messages in thread From: Mike Snitzer @ 2009-04-15 20:18 UTC (permalink / raw) To: Mikulas Patocka Cc: Kiyoshi Ueda, dm-devel, Michael Christie, Jun'ichi Nomura, agk On Wed, Apr 15 2009 at 3:09pm -0400, Mikulas Patocka <mpatocka@redhat.com> wrote: > On Fri, 10 Apr 2009, Mike Snitzer wrote: > > > Hi Mikulaus, > > > > Figured I'd give you this heads up on the request-based multipath > > patches too considering your recent "bottom-layer barrier support" > > patchset (where you said multipath support is coming later). > > > > We likely want to coordinate with the NEC guys so as to make sure things > > are in order for the request-based patches to get merged along with your > > remaining barrier work for 2.6.31. > > > > Mike > > > > p.s. below you can see I mistakenly said to Kiyoshi that the recent > > barrier patches that got merged upstream were "the last of the DM > > barrier support"... > > Hi > > I would say one thing about the request-based patches --- don't do this. > > Your patch adds an alternate I/O path to request processing on device > mapper. > > So, with your patch, there will be two I/O request paths. It means that > any work on generic device-mapper code that will have to be done in the > future (such as for example barriers that I did) will be twice harder. It > will take twice the time to understand request processing, twice brain > capacity to remember it, twice the time for coding, twice the time for > code review, twice the time for testing. > > If the patch goes in, it will make a lot of things twice harder. And once > the patch is in productive kernels, there'd be very little possibility to > pull it out. > > What is the exact reason for your patch? I suppose that it's some > performance degradation caused by the fact that dm-multipath doesn't > distributes requests optimally across both paths. dm-multipath has > pluggable path selectors, so you could improve dm-round-robin.c (or write > alternate path selector module) and you don't have to touch generic dm > code to solve this problem. > > The point is that improving dm-multipath target with better path selector > is much less intrusive than patching device mapper core. If you improve > dm-multipath target, only people hacking on dm-multipath will have to > learn about your code. If you modify generic dm.c file, anyone doing > anything on device mapper must learn about your code --- so human time > consumed in much worse in this case. > > So, try the alternate solution (write new path selector for dm-multipath) > and then you can compare them and see the result --- and then it can be > consisdered if the high human time consumed by patching dm.c is worth the > performance improvement. Mikulas, Section 3.1 of the the following 2007 Linux Symposium paper answers the "why?" on request-based dm-multipath: http://ols.108.redhat.com/2007/Reprints/ueda-Reprint.pdf In summary: With request-based multipath performance and path error handling is improved. Performance: The I/O scheduler is leveraged to merge bios into requests; and these requests are then able to be more evenly balanced across the available paths (no need to starve other paths like the bio-based multipath is prone to do). Error handling: Finer grained error statistics are available when interfacing more directly with the hardware like the request-based multipath does. NEC may already have comparative performance data that will help illustrate the improvement associated with request-based multipath? They apparently have dynamic load balancing patches that they developed for use with the current bio-based multipath. It'd be interesting to understand the performance difference between that bio-based implementation and the new request-based implementations (both service-time and queue-length) of dynamic load balancing. Mike ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-15 20:18 ` Mike Snitzer @ 2009-04-15 22:24 ` Mikulas Patocka 2009-04-16 7:29 ` Hannes Reinecke 2009-04-16 9:30 ` Jun'ichi Nomura 0 siblings, 2 replies; 7+ messages in thread From: Mikulas Patocka @ 2009-04-15 22:24 UTC (permalink / raw) To: Mike Snitzer Cc: Kiyoshi Ueda, dm-devel, Michael Christie, Jun'ichi Nomura, agk On Wed, 15 Apr 2009, Mike Snitzer wrote: > On Wed, Apr 15 2009 at 3:09pm -0400, > Mikulas Patocka <mpatocka@redhat.com> wrote: > > > On Fri, 10 Apr 2009, Mike Snitzer wrote: > > > > > Hi Mikulaus, > > > > > > Figured I'd give you this heads up on the request-based multipath > > > patches too considering your recent "bottom-layer barrier support" > > > patchset (where you said multipath support is coming later). > > > > > > We likely want to coordinate with the NEC guys so as to make sure things > > > are in order for the request-based patches to get merged along with your > > > remaining barrier work for 2.6.31. > > > > > > Mike > > > > > > p.s. below you can see I mistakenly said to Kiyoshi that the recent > > > barrier patches that got merged upstream were "the last of the DM > > > barrier support"... > > > > Hi > > > > I would say one thing about the request-based patches --- don't do this. > > > > Your patch adds an alternate I/O path to request processing on device > > mapper. > > > > So, with your patch, there will be two I/O request paths. It means that > > any work on generic device-mapper code that will have to be done in the > > future (such as for example barriers that I did) will be twice harder. It > > will take twice the time to understand request processing, twice brain > > capacity to remember it, twice the time for coding, twice the time for > > code review, twice the time for testing. > > > > If the patch goes in, it will make a lot of things twice harder. And once > > the patch is in productive kernels, there'd be very little possibility to > > pull it out. > > > > What is the exact reason for your patch? I suppose that it's some > > performance degradation caused by the fact that dm-multipath doesn't > > distributes requests optimally across both paths. dm-multipath has > > pluggable path selectors, so you could improve dm-round-robin.c (or write > > alternate path selector module) and you don't have to touch generic dm > > code to solve this problem. > > > > The point is that improving dm-multipath target with better path selector > > is much less intrusive than patching device mapper core. If you improve > > dm-multipath target, only people hacking on dm-multipath will have to > > learn about your code. If you modify generic dm.c file, anyone doing > > anything on device mapper must learn about your code --- so human time > > consumed in much worse in this case. > > > > So, try the alternate solution (write new path selector for dm-multipath) > > and then you can compare them and see the result --- and then it can be > > consisdered if the high human time consumed by patching dm.c is worth the > > performance improvement. > > Mikulas, > > Section 3.1 of the the following 2007 Linux Symposium paper answers the > "why?" on request-based dm-multipath: > http://ols.108.redhat.com/2007/Reprints/ueda-Reprint.pdf > > In summary: > With request-based multipath performance and path error handling is > improved. > > Performance: > The I/O scheduler is leveraged to merge bios into requests; and these > requests are then able to be more evenly balanced across the available > paths (no need to starve other paths like the bio-based multipath is > prone to do). So you can improve the bio-based selector. You can count number&size of outstanding requests on each path and select the less loaded path. You can remember several end positions of last requests and when new request matches one of them, send it to the appropriate path, assuming that the lower device's scheduler will marge that. Or --- another solution is to access queues of the underlying devices and ask them if there's anything to merge --- and then send the request down the path that has some adjacent request. I know that the round-robin selector is silly, but you just haven't even try to improve it. If there is non-intrusive solution (improve path selector), it should be tried first, before making an intrusive solution (alternate request path in dm core). > Error handling: > Finer grained error statistics are available when interfacing more > directly with the hardware like the request-based multipath does. You can signal it via flags in bios. No need to rewrite dm core. > NEC may already have comparative performance data that will help > illustrate the improvement associated with request-based multipath? > They apparently have dynamic load balancing patches that they developed > for use with the current bio-based multipath. So where is it better and why? Does it save CPU time or disk throughtput? How? On which workload? Did they really try to implement some smart path ballancing that takes into account merging? > It'd be interesting to understand the performance difference between > that bio-based implementation and the new request-based implementations > (both service-time and queue-length) of dynamic load balancing. > > Mike There is downside and benchmarks completely ignore it. It makes programming harder. For example, suppose that you committed rq-based multipath before barriers. It would make barrier writing much harder and the result is that people will get barriers later and meanwhile won't be able to turn on write cache. So rq-based multipath patch improves performance for multipath devices (you can measure it) and DEGRADES performance for normal disks (no barriers, no hardware cache). And you see how many users use ATA+SCSI disks and how many use multipath, you may consider that performance of multipath is really not that important. Besides barriers, I'm also developing new snapshot implementation, if programming of barriers were harder, I'd be lagged on development of snapshots --- so rq-based multipath would degrade performance of snapshots (although it doesn't touch snapshot code at all --- the performance degradation comes from comsuming excessive human time that could be used for other, better things). And these are things that benchmarks won't show you. Benchmarks just show you improvement, but they can't show you the downside. But if you don't consider them, you cause damage to Linux. Mikulas ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-15 22:24 ` Mikulas Patocka @ 2009-04-16 7:29 ` Hannes Reinecke 2009-04-16 9:30 ` Jun'ichi Nomura 1 sibling, 0 replies; 7+ messages in thread From: Hannes Reinecke @ 2009-04-16 7:29 UTC (permalink / raw) To: device-mapper development Mikulas Patocka wrote: > On Wed, 15 Apr 2009, Mike Snitzer wrote: > >> On Wed, Apr 15 2009 at 3:09pm -0400, >> Mikulas Patocka <mpatocka@redhat.com> wrote: >> >>> On Fri, 10 Apr 2009, Mike Snitzer wrote: >>> >>>> Hi Mikulaus, >>>> >>>> Figured I'd give you this heads up on the request-based multipath >>>> patches too considering your recent "bottom-layer barrier support" >>>> patchset (where you said multipath support is coming later). >>>> >>>> We likely want to coordinate with the NEC guys so as to make sure things >>>> are in order for the request-based patches to get merged along with your >>>> remaining barrier work for 2.6.31. >>>> >>>> Mike >>>> >>>> p.s. below you can see I mistakenly said to Kiyoshi that the recent >>>> barrier patches that got merged upstream were "the last of the DM >>>> barrier support"... >>> Hi >>> >>> I would say one thing about the request-based patches --- don't do this. >>> >>> Your patch adds an alternate I/O path to request processing on device >>> mapper. >>> >>> So, with your patch, there will be two I/O request paths. It means that >>> any work on generic device-mapper code that will have to be done in the >>> future (such as for example barriers that I did) will be twice harder. It >>> will take twice the time to understand request processing, twice brain >>> capacity to remember it, twice the time for coding, twice the time for >>> code review, twice the time for testing. >>> >>> If the patch goes in, it will make a lot of things twice harder. And once >>> the patch is in productive kernels, there'd be very little possibility to >>> pull it out. >>> >>> What is the exact reason for your patch? I suppose that it's some >>> performance degradation caused by the fact that dm-multipath doesn't >>> distributes requests optimally across both paths. dm-multipath has >>> pluggable path selectors, so you could improve dm-round-robin.c (or write >>> alternate path selector module) and you don't have to touch generic dm >>> code to solve this problem. >>> >>> The point is that improving dm-multipath target with better path selector >>> is much less intrusive than patching device mapper core. If you improve >>> dm-multipath target, only people hacking on dm-multipath will have to >>> learn about your code. If you modify generic dm.c file, anyone doing >>> anything on device mapper must learn about your code --- so human time >>> consumed in much worse in this case. >>> >>> So, try the alternate solution (write new path selector for dm-multipath) >>> and then you can compare them and see the result --- and then it can be >>> consisdered if the high human time consumed by patching dm.c is worth the >>> performance improvement. >> Mikulas, >> >> Section 3.1 of the the following 2007 Linux Symposium paper answers the >> "why?" on request-based dm-multipath: >> http://ols.108.redhat.com/2007/Reprints/ueda-Reprint.pdf >> >> In summary: >> With request-based multipath performance and path error handling is >> improved. >> >> Performance: >> The I/O scheduler is leveraged to merge bios into requests; and these >> requests are then able to be more evenly balanced across the available >> paths (no need to starve other paths like the bio-based multipath is >> prone to do). > > So you can improve the bio-based selector. You can count number&size of > outstanding requests on each path and select the less loaded path. > And which is what you _cannot_ do. You have _no_ idea at all how the bios are merged in to requests. And as you do scheduling decisions based on the _bios_ you will interfere with the elevator. Hence you always have to select large scheduling intervals as to have the disturbance of the elevator as small as possible. Just decrease 'min_rr_io' setting and watch the performace to drop. > You can remember several end positions of last requests and when new > request matches one of them, send it to the appropriate path, assuming > that the lower device's scheduler will marge that. Or --- another solution > is to access queues of the underlying devices and ask them if there's > anything to merge --- and then send the request down the path that has > some adjacent request. > But this would duplicate the elevator merging logic, wouldn't it? You would have to out-guess the elevator which requests it would merge next ... > I know that the round-robin selector is silly, but you just haven't even > try to improve it. > > If there is non-intrusive solution (improve path selector), it should be > tried first, before making an intrusive solution (alternate request path > in dm core). > >> Error handling: >> Finer grained error statistics are available when interfacing more >> directly with the hardware like the request-based multipath does. > > You can signal it via flags in bios. No need to rewrite dm core. > But this makes failover costly, as you have to fail over each individual bio. Hence you cannot (by design) have a real load balancing as the cost of failover a single path is prohibitively high. Using request-based multipathing OTOH the cost for failover becomes really small and you can do real load-balancing. Like setting rr_min_io setting to '1' and you won't suffer any performance drawback. >> NEC may already have comparative performance data that will help >> illustrate the improvement associated with request-based multipath? >> They apparently have dynamic load balancing patches that they developed >> for use with the current bio-based multipath. > > So where is it better and why? Does it save CPU time or disk throughtput? > How? On which workload? > > Did they really try to implement some smart path ballancing that takes > into account merging? > No, they didn't, because of the abovementioned points. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-15 22:24 ` Mikulas Patocka 2009-04-16 7:29 ` Hannes Reinecke @ 2009-04-16 9:30 ` Jun'ichi Nomura 2009-04-17 2:01 ` Mikulas Patocka 1 sibling, 1 reply; 7+ messages in thread From: Jun'ichi Nomura @ 2009-04-16 9:30 UTC (permalink / raw) To: Mikulas Patocka Cc: Kiyoshi Ueda, Mike Snitzer, dm-devel, Michael Christie, agk Mikulas Patocka wrote: >>> What is the exact reason for your patch? I suppose that it's some >>> performance degradation caused by the fact that dm-multipath doesn't >>> distributes requests optimally across both paths. dm-multipath has >>> pluggable path selectors, so you could improve dm-round-robin.c (or write >>> alternate path selector module) and you don't have to touch generic dm >>> code to solve this problem. >>> >>> The point is that improving dm-multipath target with better path selector >>> is much less intrusive than patching device mapper core. If you improve >>> dm-multipath target, only people hacking on dm-multipath will have to >>> learn about your code. If you modify generic dm.c file, anyone doing >>> anything on device mapper must learn about your code --- so human time >>> consumed in much worse in this case. >>> >>> So, try the alternate solution (write new path selector for dm-multipath) >>> and then you can compare them and see the result --- and then it can be >>> consisdered if the high human time consumed by patching dm.c is worth the >>> performance improvement. The main purpose of request-based dm patches is to provide a framework to implement optimal path selectors in non-intrusive way. As you mentioned, it might be possible to implement a good path selector at bio-level by checking internals of underlying devices' request queues and/or I/O schedulers. However, requiring knowledge/assumptions of internals of other layer is not a right approach. Or, splitting the request-based multipath driver out of dm would trash the existing userspace tools and libraries, so that's not good either. Thus we chose the design of 'adding request-based mapping feature to dm'. It doesn't break existing target drivers and userspace tools. The feature is enabled only for request-based target drivers. If you want to add a bio-specific new feature, it's still possible. The design has been discussed in several mailing lists, Ottawa Linux Symposium and Linux Storage/Filesystem workshop including maintainers of related subsystems for these few years, and I think we got basic agreement on this direction. As for your barrier works, we are looking into the patches to make them work on request-based dm as well. Thanks, -- Jun'ichi Nomura, NEC Corporation ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-16 9:30 ` Jun'ichi Nomura @ 2009-04-17 2:01 ` Mikulas Patocka 2009-04-17 9:46 ` Jun'ichi Nomura 0 siblings, 1 reply; 7+ messages in thread From: Mikulas Patocka @ 2009-04-17 2:01 UTC (permalink / raw) To: Jun'ichi Nomura Cc: Kiyoshi Ueda, Mike Snitzer, dm-devel, Michael Christie, agk On Thu, 16 Apr 2009, Jun'ichi Nomura wrote: > The main purpose of request-based dm patches is to provide a framework > to implement optimal path selectors in non-intrusive way. > > As you mentioned, it might be possible to implement a good path > selector at bio-level by checking internals of underlying devices' > request queues and/or I/O schedulers. > > However, requiring knowledge/assumptions of internals of other layer > is not a right approach. There is also a number of functions that any driver can call on queue to access the queue state (see blkdev.h). So if you add one more function (something like blk_queue_can_merge_at_this_point(struct request_queue *, sector_t), there's nothing wrong about it, it's much less intrusive than adding an alternate i/o path. > Or, splitting the request-based multipath driver out of dm would trash > the existing userspace tools and libraries, so that's not good either. > Thus we chose the design of 'adding request-based mapping feature to dm'. > It doesn't break existing target drivers and userspace tools. > The feature is enabled only for request-based target drivers. > If you want to add a bio-specific new feature, it's still possible. I don't want to pull multipath out of dm. I want it to use the standard i/o path in dm. I am convinced that the path balacing can be solved without using requests. > The design has been discussed in several mailing lists, Ottawa Linux Symposium > and Linux Storage/Filesystem workshop including maintainers > of related subsystems for these few years, > and I think we got basic agreement on this direction. That is groupthink (http://en.wikipedia.org/wiki/Groupthink). It is not valid argument to support your point with opinions of other people. You should either support it with *your own* opinion or not supoprt it at all :) > As for your barrier works, we are looking into the patches > to make them work on request-based dm as well. So you'll have to write barriers and maybe you start to see why this approach is not so good. Basically, suppose that you have a feature A and it takes "t(A)" time to implement it. You have a feature B and it takes "t(B)" time to implement it. Now --- if the software is correctly designed, the time to implement both features A and B is equal to t(A)+t(B). This is the ideal case how it should be. If the time to implement both A and B t(A and B) is grossly greater than t(A)+t(B), there is some trouble. If such disruptive features were added frequently, you end up with a system where programming time is exponentially dependent on the number of features --- i.e. something totally unmaintainable. And this double-i/o path is exactly the same case. t(barriers) is some time. t(rq-based mpath) takes another time. t(barriers & rq-based mpath) > t(barriers) + t(rq-based mpath) (because the barriers basically have to be reimplemented from scratch for the request-based i/o path). And any new features that come into the i/o path after barriers will also be twice harder. See for example the thread with bugs here: https://www.redhat.com/archives/dm-devel/2009-March/thread.html#00026 It shows that that debugging-time-doubling that I talked about is already hapenning, you are fixing bugs that were already fixed in generic dm core long time ago. And I don't believe that those bugs are the last. If this patch goes in, we all will just double our maintenance time. So I'm saying that if there's an alternate solution for multipath request-dispatching that doesn't have this maintenance-time-increasing problem, it should be tried. Mikulas > Thanks, > -- > Jun'ichi Nomura, NEC Corporation > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] 2009-04-17 2:01 ` Mikulas Patocka @ 2009-04-17 9:46 ` Jun'ichi Nomura 0 siblings, 0 replies; 7+ messages in thread From: Jun'ichi Nomura @ 2009-04-17 9:46 UTC (permalink / raw) To: Mikulas Patocka Cc: Kiyoshi Ueda, Mike Snitzer, dm-devel, Michael Christie, agk Mikulas Patocka wrote: > On Thu, 16 Apr 2009, Jun'ichi Nomura wrote: >> The main purpose of request-based dm patches is to provide a framework >> to implement optimal path selectors in non-intrusive way. >> >> As you mentioned, it might be possible to implement a good path >> selector at bio-level by checking internals of underlying devices' >> request queues and/or I/O schedulers. >> >> However, requiring knowledge/assumptions of internals of other layer >> is not a right approach. > > There is also a number of functions that any driver can call on queue to > access the queue state (see blkdev.h). > > So if you add one more function (something like > blk_queue_can_merge_at_this_point(struct request_queue *, sector_t), > there's nothing wrong about it, it's much less intrusive than adding an > alternate i/o path. And it means exposing the I/O scheduler internal to let the path selector guess its behavior, which is what I would like to avoid. I think existing block layer interfaces are not doing that. >> Or, splitting the request-based multipath driver out of dm would trash >> the existing userspace tools and libraries, so that's not good either. >> Thus we chose the design of 'adding request-based mapping feature to dm'. >> It doesn't break existing target drivers and userspace tools. >> The feature is enabled only for request-based target drivers. >> If you want to add a bio-specific new feature, it's still possible. > > I don't want to pull multipath out of dm. I want it to use the standard > i/o path in dm. > > I am convinced that the path balacing can be solved without using > requests. The point is not about 'can' or 'cannot'. My point is that by adding the request-based mapping interface, path selectors can be implemented in a clean and maintainable way. Thanks, -- Jun'ichi Nomura, NEC Corporation ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-04-17 9:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20090410151914.GA3800@redhat.com>
[not found] ` <20090410153102.GC3800@redhat.com>
2009-04-15 19:09 ` [k-ueda@ct.jp.nec.com: Re: request-based dm-multipath] Mikulas Patocka
2009-04-15 20:18 ` Mike Snitzer
2009-04-15 22:24 ` Mikulas Patocka
2009-04-16 7:29 ` Hannes Reinecke
2009-04-16 9:30 ` Jun'ichi Nomura
2009-04-17 2:01 ` Mikulas Patocka
2009-04-17 9:46 ` Jun'ichi Nomura
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.