← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1684869] Re: growing root partition does not always work with root=PARTUUID=

 

This bug was fixed in the package cloud-init -
0.7.9-113-g513e99e0-0ubuntu1

---------------
cloud-init (0.7.9-113-g513e99e0-0ubuntu1) artful; urgency=medium

  * New upstream snapshot.
    - nova-lxd: read product_name from environment, not platform.
      (LP: #1685810)
    - Fix yum repo config where keys contain array values
      [Dylan Perry] (LP: #1592150)
    - template: Update debian backports template [Joshua Powers] (LP: #1627293)
    - rsyslog: replace ~ with stop [Joshua Powers] (LP: #1367899)
    - Doc: add additional RTD examples [Joshua Powers] (LP: #1459604)
    - Fix growpart for some cases when booted with root=PARTUUID.
      (LP: #1684869)
    - pylint: update output style to parseable [Joshua Powers]
    - pylint: fix all logging warnings [Joshua Powers]
    - CloudStack: Add NetworkManager to list of supported DHCP lease dirs.
      [Syed Mushtaq Ahmed]
    - net: kernel lies about vlans not stealing mac addresses, when they do
      [Dimitri John Ledkov] (LP: #1682871)
    - ds-identify: Check correct path for "latest" config drive
      [Daniel Watkins] (LP: #1673637)
    - doc: Fix example for resolve.conf configuration.
      [Jon Grimm] (LP: #1531582)
    - Fix examples that reference upstream chef repository.
      [Jon Grimm] (LP: #1678145)
    - doc: correct grammar and improve clarity in merging documentation.
      [David Tagatac]
    - doc: Add missing doc link to snap-config module. [Ryan Harper]
    - snap: allows for creating cloud-init snap [Joshua Powers]
    - DigitalOcean: assign IPv4ll address to lowest indexed interface.
      [Ben Howard]
    - DigitalOcean: configure all NICs presented in meta-data. [Ben Howard]
    - Remove (and/or fix) URL shortener references [Jon Grimm] (LP: #1669727)
    - HACKING.rst: more info on filling out contributors agreement.
      [Scott Moser]
    - util: teach write_file about copy_mode option
      [Lars Kellogg-Stedman] (LP: #1644064)
    - DigitalOcean: bind resolvers to loopback interface. [Ben Howard]
    - tests: fix AltCloud tests to not rely on blkid (LP: #1636531)

 -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 25 Apr 2017 16:34:08 -0400

** Changed in: cloud-init (Ubuntu)
       Status: Confirmed => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/1684869

Title:
  growing root partition does not always work with root=PARTUUID=

Status in cloud-init:
  Confirmed
Status in cloud-init package in Ubuntu:
  Fix Released

Bug description:
  === Begin SRU Template ===
  [Impact]
  Growing the root partition would fail in either of two cases:
   a.) if the device /dev/root existed
   b.) the kernel command line had upper case letters in PARTUUID=<value>

  [Test Case]
  get-proposed-image is
    https://git.launchpad.net/~smoser/cloud-init/+git/sru-info/tree/bin/get-proposed-image
  It downloads a cloud image of a given release, and then creates a -proposed
  image with cloud-init upgraded.

  1.) get a (proposed) disk image image.
    and convert it to raw so you can read the partuuid with sfdisk
    (get-proposed-image does this, if not,
    'qemu-img convert -O raw orig.img orig.raw')
    ./get-proposed-image

  2.) get the partition uuid of the first partition
     $ raw=yakkety-server-cloudimg-amd64-proposed.raw
     $ ptuuid=$(sfdisk --part-uuid $raw 1)

  3.) create a nocloud seed
     $ printf "%s\n%s\n%s\n%s\n" "#cloud-config" "password: passw0rd" \
          "chpasswd: {expire: False}" "ssh_pwauth: True" > my-user-data
     $ echo "instance-id: $(uuidgen || echo i-abcdefg)" > my-meta-data
     $ cloud-localds my-seed.img my-user-data my-meta-data

  4.) extract kernel from inside the image
     $ sudo mount-image-callback $raw -- mchroot sh -xc 'cat /boot/vmlinu?-*' > kernel

  5.) boot instance with disk backed by the raw disk above.

     $ qemu-img create -f qcow2 -b $raw disk.img 10G
     $ qemu-system-x86_64 -enable-kvm \
         -drive file=disk.img,if=ide,index=0 -drive file=my-seed.img,if=ide \
         -net nic -net user,hostfwd=tcp::2222-:22 \
         -snapshot -m 768 -nographic -echr 0x05 \
         -kernel kernel \
         -append "root=PARTUUID=${ptuuid} ro console=tty1 console=ttyS0"

  6.) log in, verify / has been resized.
     log in with 'ubuntu' and password 'passw0rd'
      $ df -h /
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/root       9.6G 1009M  8.6G  11% /

  [Regression Potential]
  The regression path is really the case where devent2dev finds /dev/root
  and /dev/root exists.  In that case, we now possibly return a /dev/<device>
  path when previously it would have returned /dev/root.

  [Other Info]
  The qemu-system-x86 command above uses ide devices.  This is because
  the ide device emulated by qemu is built into the -generic kernel,
  whilei the more common virtio-block or virtio-scsi are not.  If you
  attach those device types, it will fail with 'cant find root'.

  === End SRU Template ===

  When trying to verify I found a couple cases where this still does not
  work.

  Related bugs:
   * bug 1677376: growing partitions does not work when booted without initramfs
   * bug 1685291: RFC: virtio and virtio-scsi should be built in

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1684869/+subscriptions


References