On Fri, May 16, 2014 at 06:27:27PM +0200, Jiri Kosina wrote: > On Tue, 6 May 2014, Steven Rostedt wrote: > > > > However, I also think if users can accept such freezing wait-time, > > > it means they can also accept kexec based "checkpoint-restart" patching. > > > So, I think the final goal of the kpatch will be live patching without > > > stopping the machine. I'm discussing the issue on github #138, but that is > > > off-topic. :) > > > > I agree with Ingo too. Being conservative at first is the right > > approach here. We should start out with a stop_machine making sure that > > everything is sane before we continue. Sure, that's not much different > > than a kexec, but lets take things one step at a time. > > > > ftrace did the stop_machine (and still does for some archs), and slowly > > moved to a more efficient method. kpatch/kgraft should follow suit. > > I don't really agree here. > > I actually believe that "lazy" switching kgraft is doing provides a little > bit more in the sense of consistency than stop_machine()-based aproach. > > Consider this scenario: > > void foo() > { > for (i=0; i<10000; i++) { > bar(i); > something_else(i); > } > } > > Let's say you want to live-patch bar(). With stop_machine()-based aproach, > you can easily end-up with old bar() and new bar() being called in two > consecutive iterations before the loop is even exited, right? (especially > on preemptible kernel, or if something_else() goes to sleep).
Can you clarify why this would be a problem? Is it because the new bar() changed some data semantics which confused foo() or something_else()? > > With lazy-switching implemented in kgraft, this can never happen. > > So I'd like to ask for a little bit more explanation why you think the > stop_machine()-based patching provides more sanity/consistency assurance > than the lazy switching we're doing. > > Thanks a lot, > > -- > Jiri Kosina > SUSE Labs -- Josh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/