Commit Graph

1999 Commits

Author SHA1 Message Date
Mike Fleetwood 96c9fc129c Implement common LVM2_PV_Info cache search and index functions
Create common cache search and index functions get_attr_by_name() and
get_attr_by_row() as the existing ones, get_pv_attr_by_*() and
get_vg_attr_by_*(), only differ from each other by the string vector
they use.
2012-08-30 13:47:46 -06:00
Mike Fleetwood fdb7e9fe89 Correctly show multiple "unknown device" LVM2 VG members (#670171)
If an LVM2 Volume Group has two or more missing Physical Volumes, the VG
is displayed as only having one "unknown device" because
get_vg_members() only adds unique names to the list of members.

    # lvm pvcreate /dev/sda11 /dev/sda12 /dev/sda13
    # lvm vgcreate Test-VG1 /dev/sda11 /dev/sda12 /dev/sda13
    # wipefs -a /dev/sda12
    # wipefs -a /dev/sda13
    View partition information in GParted

The simplest fix would be to include the PV's UUID in the cache of LVM2
information and add PV names based on unique UUIDs being a member of the
relevant VG.  Unfortunately "lvm pvs" seems to have a bug when
displaying Logical Volume attributes, and there are two or more missing
PVs, which causes one of the PVs to be displayed multiple times, rather
than displaying each PV once.

Without LV attributes, every PV is listed:

    # lvm pvs --nosuffix --separator , --units b -o pv_name,pv_uuid,vg_name,vg_attr 2> /dev/null
      PV,PV UUID,VG,Attr
      /dev/sda11,pJ3R51-AOPP-rKlr-CKCT-nfPS-G5FP-B5Vyjm,Test-VG1,wz-pn-
      unknown device,Y72oSm-uBcE-ktZL-OIFA-Q129-Uv1B-x5IsrA,Test-VG1,wz-pn-
      unknown device,1ESORF-7wlR-0tnO-fy2z-nOL1-MrnJ-2O5yjK,Test-VG1,wz-pn-

With LV attributes, one missing PV is repeated:

    # lvm pvs --nosuffix --separator , --units b -o pv_name,pv_uuid,vg_name,vg_attr,lv_name,lv_attr 2> /dev/null
      PV,PV UUID,VG,Attr,LV,Attr
      /dev/sda11,pJ3R51-AOPP-rKlr-CKCT-nfPS-G5FP-B5Vyjm,Test-VG1,wz-pn-,,
      unknown device,Y72oSm-uBcE-ktZL-OIFA-Q129-Uv1B-x5IsrA,Test-VG1,wz-pn-,,
      unknown device,Y72oSm-uBcE-ktZL-OIFA-Q129-Uv1B-x5IsrA,Test-VG1,wz-pn-,,

Also "lvm vgs" and "lvm lvs" don't display anything when including both
VG and LV attributes.

Instead query the LVM2 information in two separate commands, one
querying PV attributes and one querying VG and LV attributes, saving the
results in lvm_pv_cache and lvm_vg_cache respectively.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:46 -06:00
Mike Fleetwood fbc4e9e941 Remove full stops from the end of primary text in dialogs
The GNOME HIG, 3.4.1 "Alert Text" states:

    ...  The primary text is punctuated in 'newspaper headline' style,
    that is, it has no terminating period, but it may have a terminating
    question mark.

http://developer.gnome.org/hig-book/3.0/windows-alert.html.en#alert-text
2012-08-30 13:47:46 -06:00
Mike Fleetwood 85e9ce3428 Remove outdated FIXME comment from active_partitions_on_device_count()
Active LVM2 PVs have the partition class busy member set in
GParted_Core::set_device_partitions() just as mounted file systems do.
This is a basic requirement for GParted so that it only manipulates
partitions and contained file systems when they are not in use.
2012-08-30 13:47:46 -06:00
Mike Fleetwood 5cb6c687ba New LVM2_PV_Info::bit_set() testing VG and LV attribs "bits"
Abstract repeated code used to test the setting of individual LVM Volume
Group and Logical Volume "bits" attributes into bit_set() function.
2012-08-30 13:47:46 -06:00
Mike Fleetwood c90365a6db Update declarations of some LVM2_PV_Info member functions
Add const qualifier to get_pv_attr_by_path() and get_pv_attr_by_row() as
they only access member variables read-only.

Make lvm2_pv_attr_to_num() a static member function as it doesn't access
any member variables.
2012-08-30 13:47:45 -06:00
Mike Fleetwood 7c8156b7d2 Remove redundant lines from LVM2_PV_Info functions
Splitting of each cache string on comma "," is performed in
get_pv_attr_by_row() and not needed in the caller functions.
2012-08-30 13:47:45 -06:00
Mike Fleetwood fae040c63e Only lookup LVM2 VG name once in Display_Info()
For LVM2 Physical Volumes the Volume Group name was looked up multiple
times, sometimes from the secondary location of the mount point and at
other times from the primary location in the LVM2_PV_Info class.  Just
lookup the VG name once from the primary location.
2012-08-30 13:47:45 -06:00
Mike Fleetwood ca3d40d9c7 Rename *toggle_swap_mount* -> *toggle_busy*
Rename functions and a variable to use a generic term for the menu item
which changes the busy state of partitions now that it also activates
and deactivates LVM2 Physical Volumes as well as mounting and unmounting
file systems and enables and disables swap partitions.
2012-08-30 13:47:45 -06:00
Mike Fleetwood 590f1377f9 Add fallback implementation to new delete LVM2 PV warning dialog (#670171)
The new delete non-empty LVM2 Physical Volume warning dialog uses
Gtk::MessageDialog::get_message_area() in the display of Volume Group
members.  This function was new in gtkmm 2.22, released September 2010,
which is not available in a number of current distributions including:
Unbuntu 10.04 LTS, RHEL 6.3, SLES 11-SP2, Debian 6.0.

Implement fallback method to display the VG name and member PVs in the
warning dialog for when get_message_area() is not available.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 69c8acce75 Add warning dialog when deleting non-empty LVM2 PVs (#670171)
When attempting to delete a non-empty LVM2 Physical Volume (one which is
still a member of a Volume Group) display a warning dialog which
includes the VG name and a list of the PV members to allow the user to
make an informed choice whether to go ahead and perform the deletion or
cancel to the operation.  This dialog is displayed when a partition
containing a PV is being deleted or being overwritten by being
reformatted or pasted into.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 307f489177 Add LVM2 VG member details to the Information dialog (#670171)
For LVM2 Physical Volumes display the Volume Group name and all the
members in the Information dialog.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 1a62354995 Implement LVM2 PV remove() method (#670171)
Implement remove() method so that the LVM2 metadata is updated to
reflect the removal of the LVM2 Physical Volume as well as removing the
signature from the PV before the partition is deleted or overwritten.
    lvm pvremove /dev/DEVICE

Also specifically force the removal of the PV when it is a member of a
Volume Group so that it will succeed.

RATIONAL:

If the PV was not removed before the partition was deleted or
overwritten, LVM2 would be left in a broken state with metadata
describing missing PVs for any partially deleted VGs.  This leaves the
user needing to perform recovery of a lost PV, which required in depth
understanding of LVM2 and is beyond the scope of what GParted can
currently provide.

The alternative is to use the pvremove command to instruct LVM2 to
remove the PV and update LVM2 metadata to reflect the removal of the PV.
For PVs which are a member of a VG this includes forcing the removal.
This has the impact of making recovery from accidental deletion of a
partition containing a PV irrecoverable.  GParted is not able to recover
this situation anyway because Device -> Attempt Data Rescue, using the
gpart command, is not able to detect the signature of an LVM2 PV.

Choose to remove the PV, forcibly if required, rather than potentially
leave LVM2 with missing PVs.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 795a92f5b2 Add file system specific remove() methods (#670171)
This commit only adds a remove() method to every file system and an
optional call to it in the relevant operations.  All remove() methods
are no operations and not enabled.

The remove() method provides explicit controlled removal of a file
system before the partition is deleted or overwritten by being formatted
or pasted into.  When implemented, it appears as an extra step in the
relevant operation.  The file system specific remove() method is
explicitly allowed to fail and stop the operations currently being
applied.

This is different to the existing erase_filesystem_signatures() which
wipes any previous file system signatures immediately before a new file
system is written to ensure there is no possibility of the partition
containing two or more different file system signatures.  It never fails
or reports anything to the user.

NOTE:
Most file systems should NOT implement a remove() method as it will
prevent recovery from accidental partition deletion.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 566ebc1b88 Add LVM2 PV resize, check and move operations (#670171)
Copy operation for LVM2 Physical Volumes is deliberately not implemented
because it doesn't fit with how LVM2 works and is not safe in the
general case without an understanding of its internals.  See comment in
lvm2_pv::copy() for more details.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 619bda5d8b Enable LVM2 VG activation / deactivation (#670171)
In the Partition menu enable activation / deactivation of the LVM2
Volume Group of which the Physical Volume is a member.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood c3ab62591b Add creation of LVM2 PVs (#670171)
Add creation of Physical Volumes specifying LVM2 metatdata format:
    lvm pvcreate -M 2 /dev/DEVICE

Also set the partition type to identify its contents as LVM.  Note that
libparted treats every partition type as a file system except LVM which
it treats as a flag, hence GParted displaying "lvm" in the Manage Flags
dialog.  Never the less libparted set the partition types correctly.
For MBR partitioning the type is 8e "Linux LVM" and for GPT partitioning
the type is E6D6D379-F507-44C2-A23C-238F2A3DF928.  Setting the partition
type as LVM is not strictly required as LVM2 scans the contents of all
partitions looking for PVs, but it is best practice.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 87625c2b0a Prevent crash from pressing Esc in dialogs with number entry (#682658)
Steps to reproduce:
1) Open any of these dialogs: Create New Partition, Resize/Move or
   Paste;
2) Update any of the following numeric entry fields to a different value
   using the keyboard: Free space preceding, New size or Free space
   following;
3) Press [Esc] key;
Gparted crashes.

What is happening is that the [Esc] key is leading to the dialog being
closed and calling the ~Dialog_Base_Partition() destructor.  However
after this the GTK widget is calling the on_spinbutton_value_change()
registered callbacks for the change to the other two values, on the now
just deleted object.

Fix by disconnecting the change notification callbacks in the
destructor.

Closes bug #682658 - GParted crash by pressing Esc in dialogs with
                     number entry
2012-08-30 13:14:04 -06:00
Fran Diéguez 34cf70f41d Updated Galician translations 2012-08-30 14:40:14 +02:00
Chao-Hsiung Liao 770fab8ca4 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-08-11 21:31:27 +08:00
Curtis Gedak c0a9673146 Append -git to version for continuing development 2012-08-08 10:18:16 -06:00
Curtis Gedak e606eae836 ========== gparted-0.13.1 ========== 2012-08-08 09:26:05 -06:00
Tom Tryfonidis d5f380aff6 Updated Greek translation 2012-08-07 14:49:30 +03:00
Мирослав Николић 08be77cbcc Updated Serbian translation 2012-08-07 08:50:39 +02:00
Aurimas Černius 7748a73532 Updated Lithuanian translation 2012-08-05 17:20:31 +03:00
Yngve Spjeld Landro e28f5ff45e Added Norwegian Nynorsk translation 2012-08-05 14:43:58 +02:00
Joan Lledó 14374c19f3 Fix failure creating read-only view of rescued file systems (#680740)
The mount of lost file systems that were larger than a 32 bit integer
could hold (~2 GiB), or started after the first ~2 GiB of disk, would
fail.

Closes Bug #680740 - Gparted fails when mounting the read-only view of
                     lost filesystems
2012-07-31 10:34:14 -06:00
Baurzhan Muftakhidinov eb74ed69b8 Updated Kazakh translation 2012-07-26 09:16:32 +06:00
Wylmer Wang c472b60046 Update Chinese translation 2012-07-17 21:40:49 +08:00
Christian Kirbach 204a3448f2 Updated German translation 2012-07-15 13:39:27 +02:00
Enrico Nicoletto ba3e44c52f Updated Brazilian Portuguese translation 2012-07-13 17:36:15 -03:00
Curtis Gedak 3d7ea276c5 Minor spelling and word changes to NEWS for last release 2012-07-13 10:39:41 -06:00
Curtis Gedak 6a68734a1e Append -git to version for continuing development 2012-07-13 10:38:04 -06:00
Curtis Gedak 09761dd0d4 ========== gparted-0.13.0 ========== 2012-07-13 09:21:19 -06:00
Curtis Gedak e5c7172440 Add more contributors to AUTHORS
Scanned ChangeLog and added some GParted code contributors that had
been accidentally missed from being included in the AUTHORS file.
2012-07-12 15:12:59 -06:00
Aleksej Kabanov 0f0af430e6 Updated Russian translation 2012-07-11 23:40:10 +04:00
Aleksej Kabanov 49c3bfea29 Updated Russian translation 2012-07-11 12:57:01 +04:00
Alexander Shopov ce1bf8693b Updated Bulgarian translation 2012-07-10 21:14:36 +03:00
Alexander Shopov a921e65cec Updated Bulgarian translation 2012-07-10 20:40:19 +03:00
Mike Fleetwood a6ff181faf Make btrfs_size_*() static member functions
The member functions btrfs_size_to_num(), btrfs_size_max_delta() and
btrfs_size_to_gdouble() don't access any member variables.  Therefore
they don't need the const qualifier allowing them to be called when the
btrfs object is const for read-only access to member variables, but
instead need to be static member functions with no access to member
variables.
2012-07-08 12:12:16 -06:00
Milo Casagrande 9020d6cced [l10n] Updated Italian translation. 2012-07-05 22:28:31 +02:00
Andika Triwidada ff441f85b9 Updated Indonesian translation 2012-07-05 23:08:39 +07:00
Piotr Drąg 7bae117213 Updated Polish translation 2012-07-05 17:50:57 +02:00
Curtis Gedak 9591b2de08 Provide credit in About dialog for significant contributions (#678486)
Closes Bug #678486 - Provide Credit in About Dialog for Significant
                     Contributions
2012-06-30 11:27:25 -06:00
Curtis Gedak 66961a9057 Reorder names and add significant contribution reminder to AUTHORS 2012-06-30 11:15:44 -06:00
Curtis Gedak 14f48809ff Update AUTHORS
Update email address for Seth Heeren
2012-06-30 11:02:59 -06:00
Curtis Gedak 6a6607e1c6 Avoid end partition overlap when resizing extended partition (#678831)
When resizing an extended partition, a problem can occur with MiB
alignment wherein the requested end sector could be less than the end
sector of the last logical partition.  This would be an invalid
geometry because all the logical partitions must be wholly contained
within the extended partition.

Check for this situation and if found then set requested end for
the extended partition to the end of the last logical partition.

Closes Bug #678831 - Partition End Overlap when Resizing Extended
                     Partition
2012-06-30 10:47:40 -06:00
Mike Fleetwood 367945bbb2 Restore original logic regarding negative values in get_usage_triple()
Restore intended logic accidentally changed by my recent commit:

    Simplify calc_usage_triple() interface and rename
    6c96ab34b3

Set each display integer to zero if the associated usage value is
negative, rather than setting 100% unused for unknown usage.  Graphical
display of partition usage for unknown and unsupported file system types
is not affected and continues to be all white because of the logic in
the callers.
2012-06-30 10:37:13 -06:00
Mike Fleetwood d9e314f82f Remove and rename local variables in Display_Info()
Local variables used, unused and unallocated were hiding class member
variables of the same name.  Remove first two local variables as they
were only accessed once and rename third.
2012-06-26 14:13:31 -06:00
Mike Fleetwood 6c96ab34b3 Simplify calc_usage_triple() interface and rename
Now that every call to calc_usage_triple() just passes usage figures
returned by get_sectors_*(), remove those parameters, call
get_sectors_*() internally and rename to get_usage_triple().
2012-06-26 14:13:31 -06:00