Package: gparted
Version: 0.30.0-3
Severity: normal
Tags: patch upstream

Dear Maintainer,


== GParted fails to shrink an LVM2 PV reporting this

# lvm pvresize -v --setphysicalvolumesize 786432K '/dev/sda9'
0 physical volume(s) resized / 1 physical volume(s) not resized

Wiping internal VG cache
Wiping cache of LVM-capable devices
/dev/sda9: Requested size 712.00 MiB is less than real size 1.00 GiB.  Proceed?
[y/n]:[n]
Physical Volume /dev/sda9 not resized.


== Confirmed on Debian 10 Buster with these packages

$ dpkg -l lvm2 gparted
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  gparted        0.30.0-3     amd64        GNOME partition editor
ii  lvm2           2.02.176-4.1 amd64        Linux Logical Volume Manager


== Relevant bug references

Issue #1 - Can't shrink LVM partition due to pvresize prompt
https://gitlab.gnome.org/GNOME/gparted/issues/1

Bug 1460577 - regression: lvm2 pvresize command suddenly became interactive,
breaking automated usage
https://bugzilla.redhat.com/show_bug.cgi?id=1460577


== Attached patch

Attached is the upstream patch to workaround the change in pvresize.
Patch applies to gparted >= 0.14.0.



-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.16.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages gparted depends on:
ii  libatkmm-1.6-1v5      2.24.2-3
ii  libc6                 2.27-3
ii  libgcc1               1:8.1.0-8
ii  libglib2.0-0          2.56.1-2
ii  libglibmm-2.4-1v5     2.56.0-2
ii  libgtk2.0-0           2.24.32-1
ii  libgtkmm-2.4-1v5      1:2.24.5-2
ii  libpangomm-1.4-1v5    2.40.1-4
ii  libparted-fs-resize0  3.2-21+b1
ii  libparted2            3.2-21+b1
ii  libsigc++-2.0-0v5     2.10.0-2
ii  libstdc++6            8.1.0-8
ii  libuuid1              2.32-0.1

gparted recommends no packages.

Versions of packages gparted suggests:
pn  dmraid         <none>
ii  dmsetup        2:1.02.145-4.1
ii  dosfstools     4.1-2
pn  gpart          <none>
ii  jfsutils       1.1.15-3
pn  kpartx         <none>
ii  mtools         4.0.18-2+b1
ii  ntfs-3g        1:2017.3.23-2
ii  reiser4progs   1.2.0-2
ii  reiserfsprogs  1:3.6.27-2
ii  xfsprogs       4.15.1-1
ii  yelp           3.28.1-1

-- no debconf information
>From 2f090b4a2b649c30c649d36b9919e1d4a4f65c07 Mon Sep 17 00:00:00 2001
From: Mike Fleetwood <mike.fleetw...@googlemail.com>
Date: Mon, 11 Jun 2018 12:57:52 +0100
Subject: [PATCH] Fix LVM2 PV shrinking with lvm2 2.02.171 and later (#1)

Shrinking an LVM2 Physical Volume on CentOS 7 with the latest
lvm2 2.02.177 fails like this:

  Shrink /dev/sda9 from 1.00 GiB to 768.00 MiB
  * calibrate /dev/sda9
  * check file system on /dev/sda9 for errors and (if possib...(SUCCESS)
  * shrink file system                                         (ERROR)
    * lvm pvresize -v --setphysicalvolumesize 786432K '/dev/...(ERROR)
        0 physical volume(s) resized / 1 physical volume(s) not resized

        Wiping internal VG cache
        Wiping cache of LVM-capable devices
        /dev/sda9: Requested size 712.00 MiB is less than real size 1.00 GiB.  
Proceed? [y/n]:[n]
        Physical Volume /dev/sda9 not resized.

This upstream change to lvm2 [1] makes pvresize prompt for confirmation
whenever the --setphysicalvolumesize option is used.  (The change was
included in lvm2 2.02.171 and later, which is used in recent
distributions.  The reporter found the issue on Ubuntu 18.04 LTS and I
reproduced the issue on RHEL/CentOS 7.5).  The set size option has to be
used when shrinking the PV before shrinking the partition therefore fix
this issue by adding lvm common option --yes when using the set size
option.

[1] 
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=cbc69f8c693edf0d1307c9447e2e66d07a04bfe9
    pvresize: Prompt when non-default size supplied.

Closes #1 - Can't shrink LVM partition due to pvresize prompt
---
 src/lvm2_pv.cc |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/lvm2_pv.cc b/src/lvm2_pv.cc
index 15af3eb..5f7c7bb 100644
--- a/src/lvm2_pv.cc
+++ b/src/lvm2_pv.cc
@@ -102,7 +102,7 @@ bool lvm2_pv::resize( const Partition & partition_new, 
OperationDetail & operati
 {
        Glib::ustring size = "" ;
        if ( ! fill_partition )
-               size = " --setphysicalvolumesize " +
+               size = " --yes --setphysicalvolumesize " +
                        Utils::num_to_str( floor( Utils::sector_to_unit(
                                partition_new .get_sector_length(), 
partition_new .sector_size, UNIT_KIB ) ) ) + "K " ;
        return ! execute_command( "lvm pvresize -v " + size + 
Glib::shell_quote( partition_new.get_path() ),
-- 
1.7.1

Reply via email to