1. 19 Sep, 2014 7 commits
  2. 18 Sep, 2014 13 commits
  3. 16 Sep, 2014 3 commits
  4. 15 Sep, 2014 1 commit
  5. 12 Sep, 2014 2 commits
  6. 10 Sep, 2014 5 commits
    • Andrey Vagin's avatar
      zdtm/mountpoints: add "unknown" options to reproduce the previous bug · 75768982
      Andrey Vagin authored
      tmpfs has the "size" option, which is not standard.
      
      Execute zdtm/live/static/mountpoints
      ./mountpoints --pidfile=mountpoints.pid --outfile=mountpoints.out
      Dump 2737
      WARNING: mountpoints returned 1 and left running for debug needs
      Test: zdtm/live/static/mountpoints, Result: FAIL
      ==================================== ERROR ====================================
      Test: zdtm/live/static/mountpoints, Namespace:
      Dump log   : /root/git/criu/test/dump/static/mountpoints/2737/1/dump.log
      --------------------------------- grep Error ---------------------------------
      (00.146444) Error (mount.c:399): Two shared mounts 50, 67 have different sets of children
      (00.146460) Error (mount.c:402): 67:./zdtm_mpts/dev/share-1 doesn't have a proper point for 54:./zdtm_mpts/dev/share-3/test.mnt.share
      (00.146820) Error (cr-dump.c:1921): Dumping FAILED.
      ------------------------------------- END -------------------------------------
      ================================= ERROR OVER =================================
      Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
      Tested-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      75768982
    • Andrey Vagin's avatar
      mount: strip options for all mounts · f88d72d0
      Andrey Vagin authored
      Currently we stript options only one of brothers, but
      mount_equal() thinks that two brothers should have the same options.
      
      Execute zdtm/live/static/mountpoints
      ./mountpoints --pidfile=mountpoints.pid --outfile=mountpoints.out
      Dump 2737
      WARNING: mountpoints returned 1 and left running for debug needs
      Test: zdtm/live/static/mountpoints, Result: FAIL
      ==================================== ERROR ====================================
      Test: zdtm/live/static/mountpoints, Namespace:
      Dump log   : /root/git/criu/test/dump/static/mountpoints/2737/1/dump.log
      --------------------------------- grep Error ---------------------------------
      (00.146444) Error (mount.c:399): Two shared mounts 50, 67 have different sets of children
      (00.146460) Error (mount.c:402): 67:./zdtm_mpts/dev/share-1 doesn't have a proper point for 54:./zdtm_mpts/dev/share-3/test.mnt.share
      (00.146820) Error (cr-dump.c:1921): Dumping FAILED.
      ------------------------------------- END -------------------------------------
      ================================= ERROR OVER =================================
      Reported-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
      Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
      Tested-by: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      f88d72d0
    • Andrey Vagin's avatar
      mount: don't skip checks in validate_mounts() · cb738520
      Andrey Vagin authored
      "continue" is called by mistake, so we skip a few checks for shared
      mounts without siblings.
      Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      cb738520
    • Pavel Emelyanov's avatar
      restore: Introduce the --restore-sibling option · 53957fad
      Pavel Emelyanov authored
      We have a slight mess with how criu restores root task.
      Right now we have the following options.
      
      1) CLI
      	a) Usually
      	task calling criu
      	 `- criu
      	     `- root restored task
      
      	b) when --restore-detached AND root has pdeath_sig
      
      	task calling criu
      	 `- criu
      	 `- root restored task
      
      2) Library/SWRK
      	task using lib/swrk
      	 `- criu
      	 `- root restored task
      
      3) Standalone service
      	a) Usually
      	service
      	 `- service sub task
      	     `- root restored task
      
      	b) when root has pdeath_sig
      	criu service
      	 `- criu sub task
      	 `- root restored task
      
      It would be better is CRIU always restored the root task as sibling,
      but we have 3 constraints:
      
      First, the case 1.a is kept for zdtm to run tests in pid namespaces
      on 3.11, which in turn doesn't allow CLONE_PARENT | CLONE_NEWPID.
      
      Second, CLI w/o --restore-detach waits for the restored task to die and
      this behavior can be "expected" already.
      
      Third, in case of standalone service tasks shouldn't become service's
      children.
      
      And I have one "plan". The p.haul project while live migrating tasks
      on destination node starts a service, which uses library/swrk mode. In
      this case the restored processes become p.haul service's kids which is
      also not great.
      
      That said, here's the option called --restore-child that pairs the
      --restore-detach like this:
      
      * detached AND child:
      
      task
       `- criu restore (exits at the end)
       `- root task
      
      The root task will become task's child.
      This will be default to library/swrk.
      This is what LXC needs.
      
      * detach AND !child
      
      task
       `- criu restore (exits at the end)
           `- root task
      
      The root task will get re-parented to init.
      This will be compatible with 1.3.
      This will be default to standalone service and
      to my wish with the p.haul case.
      
      * !detach AND child
      
      task
       `- criu restore (waits for root task to die)
       `- root task
      
      This should be deprecated, so that criu restore doesn't mess
       with task <-> root task signalling.
      
      * !detach AND !child
      
      task
       `- criu restore (waits for root task to die)
           `- root task
      
      This is how plain criu restore works now.
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      Acked-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
      Acked-by: 's avatarAndrew Vagin <avagin@openvz.org>
      53957fad
    • Tycho Andersen's avatar
      restore: use root_as_sibling only after defining it · 1ff2500b
      Tycho Andersen authored
      root_as_sibling was used in criu_signals_setup(), but was only defined later
      (when forking the root task for the first time). This meant that the
      SA_NOCLDSTOP was never masked off, which meant SIGCHLD was never delivered
      after ptracing the root task. Thus, when the a child of the root task died
      (e.g. from cr_system), the root task sat in PTRACE_STOP, and the restore task
      never PTRACE_CONT'd, resulting in a deadlock.
      
      Instead, we only unmask SA_NOCLDSTOP right before we PTRACE_SEIZE, after the
      value is defined.
      
      v2: re-work the condition for CLONE_PARENT
      v3: move unmasking of SA_NOCLDSTOP to restore_root_task
      v4: keep all the comments in the original code
      Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      1ff2500b
  7. 09 Sep, 2014 2 commits
  8. 05 Sep, 2014 7 commits