Commit Graph

2241 Commits

Author SHA1 Message Date
Matthias Gehre 6a3b17adc0 Remove lp_partition from GParted_Core (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre 7dd46df954 Remove unnecessary close_device_and_disk()
1) lp_disk is not used and assigned NULL so doesn't need closing.
2) lp_device is already ped_device_open()ed and ped_device_close()d
within the above while loop.  lp_device will be set to NULL when the
while loop ends so this doesn't need closing either.  Hence
close_device_and_disk() is always passed with two NULL pointers and is a
no operation so can be removed.
2012-11-11 11:47:59 +00:00
Matthias Gehre 500f1bcd9b Remove lp_device and lp_disk from GParted_Core (#683149)
They were used like global variables.  Now they are moved to the
functions that actually use them to make clearer how the data flow is.

Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Mike Fleetwood 5ca702019e Recognise when Linux swap label is changed to blank (#685656)
Use swaplabel to read the Linux swap label so that 1) a blank label can
be read, and 2) to replace deprecated and removed vol_id.

Vol_id was deprecated in May 2009, superseded by blkid and soon
thereafter removed.  Swaplabel is available in util-linux 2.18 from Jun
2010.

If the swaplabel command is not available GParted falls back on reading
the label through the FS_Info cache which uses the blkid command.  If
the blkid command is also not available FS_Info cache will *NOT* return
any label and GParted will display blank.

Bug 685656 - GParted doesn't notice when file system label is changed to
             blank
2012-11-04 12:26:09 +00:00
Mike Fleetwood 686ec8f713 Make GParted recognise reading blank file system labels (#685656)
GParted doesn't notice when a file system label is changed to blank.
GParted first calls the file system specific read_label() method.  When
the label is blank read_label() correctly sets partition.label to the
zero length string.  Second GParted_Core::set_device_partitions() treats
the zero length string to mean that the label is unset and calls
FS_Info::get_label() to retrieve it from the cache of blkid output.
Blkid also doesn't notice when the file system label has been changed to
blank so reports the previous label.  Hence GParted displays the
previous file system label.

Fix by making label a private member variable of the class Partition and
providing access methods set_label(), get_label() and label_known()
which track whether the label has been set or not.  This only fixes the
fault for file systems which use file system specific commands to read
the label and when these tools are installed.  Otherwise GParted uses,
or has to fall back on using, the buggy blkid command to read the file
system label.

NOTE:
Many of the file system specific read_label() methods use a tool which
outputs more than just the label and use Utils::regexp_label() to match
leading text and the label itself.  If the surrounding text changes or
disappears altogether to indicated a blank label, regexp_label() doesn't
match anything and returns the zero length string.  This  is exactly
what is required and is passed to set_label() to set the label to blank.

Bug 685656 - GParted doesn't notice when file system label is changed to
             blank
2012-11-04 12:26:09 +00:00
Christian Kirbach e2a04d32d3 Updated German translation 2012-10-30 18:56:06 +01:00
Yngve Spjeld Landro 31e3e7f387 Updated Norwegian Nynorsk translation 2012-10-16 21:08:30 +02:00
Rūdolfs Mazurs 3c56801ace Updated Latvian translation 2012-10-14 01:28:02 +03:00
Chao-Hsiung Liao 325fbdd8e6 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-10-11 22:39:03 +08:00
Curtis Gedak c49edb369f Append -git to version for continuing development 2012-10-10 11:00:58 -06:00
Curtis Gedak d553b148a6 ========== gparted-0.14.0 ========== 2012-10-10 09:59:42 -06:00
Gabor Kelemen 8531b103bb Updated Hungarian translation 2012-10-08 12:33:43 +02:00
Daniel Korostil ea7c85b714 Uploaded Ukranian 2012-10-04 21:57:20 +03:00
Claude Paroz 858172d24c Updated French translation 2012-10-04 19:45:03 +02:00
Milo Casagrande 6b3ec7887d [l10n] Updated Italian translation. 2012-10-04 11:25:40 +02:00
Piotr Drąg 320ecff46c Updated Polish translation 2012-10-03 21:11:45 +02:00
Mike Fleetwood eaeaebb421 Remove old FIXME comment from reiserfs::read_label()
Traced debugreiserfs on a 10GiB reiserfs file system which was 100% full
full with nearly 900,000 files.  It read exactly three 4KiB blocks from
different offsets and the program never took more than 0.1 seconds.
2012-10-02 13:19:30 -06:00
Mike Fleetwood e7bfd52a4d Remove old #include <cerrno> from jfs and xfs modules
Use of errno disappeared from jfs and xfs when they switched to using
helper functions for file system resizing.
2012-10-02 13:19:30 -06:00
Mike Fleetwood 3828019030 Read file system size for mounted ext2/3/4 from superblock (#683255)
A user had a 190 MiB partition containing an old ext2 file system.  When
unmounted it was reported as filling the partition, but when mounted it
was reported as having 6% unallocated space.  The file system's inode
tables were approximately twice the size of those created by default
with the current mkfs.ext2 defaults.

To create an equivalent file system in a 190 MiB partition:
    mkfs.ext2 -N 97344 /dev/sda15

It turns out that for ext2, ext3 and ext4 file systems what was
described as intrinsic unallocated space during the development of
Bug #499202 is actually file system overhead.  When mounted the ext2/3/4
kernel code reports the size of the file system after subtracting the
overhead.  Overhead is made up of superblock backups, group descriptors,
allocation bitmaps and largest of all inode tables.  E2fsprogs tools
don't subtract this overhead when reporting the file system size.

References:

 *  The Second Extended File System, Internal Layout, by Dave Poirier
    http://www.nongnu.org/ext2-doc/ext2.html

 *  Linux ext2_statfs() function
    http://lxr.linux.no/#linux+v3.5.3/fs/ext2/super.c#L1311

Call the file system specific method for reading the usage of ext2, ext3
and ext4 file systems while mounted.  Make it read the file system size
from the on disk superblock to avoid subtraction of overhead and use the
statvfs() system call to return an up to date free space figure.

Bug #683255 - ext2: statvfs differs from dumpe2fs (x MB unallocated
              space within the partition)
2012-10-02 13:19:29 -06:00
Mike Fleetwood 01150758c3 Make mounted partition usage method selectable per file system (#683255)
Each file system class can now choose how the size and free space of the
file system is determined when it is mounted.

    .fs.online_read = FS::NONE  (default)
        Do nothing.  Don't get the file system size and free space.

    .fs.online_read = FS::GPARTED
        Use internal GParted method which calls statvfs() system call on
        the mounted file system.

    .fs.online_read = FS::EXTERNAL
        Call the file system's member function set_used_sectors().  This
        is the same function as called when the file system is not
        mounted.   It can determine if the file system is mounted or not
        by testing partition.busy and acting accordingly.

This means that determining the size and free space of active LVM2
Physical Volumes is no longer a special case.  Instead the lvm2_pv class
just elects to have its set_used_sectors() method called for both the
active and deactive cases.

Bug #683255 - ext2: statvfs differs from dumpe2fs (x MB unallocated
              space within the partition)
2012-10-02 13:19:29 -06:00
Akom Chotiphantawanon e6365a79eb Updated Thai translation 2012-10-02 21:22:08 +07:00
Mike Fleetwood e282b78b4a Switch to using debugfs.reiser4 to read the label
Vol_id command was deprecated in May 2009 and superseded by the blkid
command.  Replace the generic vol_id command with the file system
specific debugfs.reiser4 command to read the file system label.
Debugfs.reiser4 will exist as it's already required to read the file
system usage and UUID.
2012-09-28 16:45:43 -06:00
Mike Fleetwood 4f235ecb06 Update file system specific validation of RFC 4122 UUIDs
Use the new RFC 4122 none Nil UUID regular expression to validate the
UUID read in all the Linux native file system specific read_uuid()
methods.  No longer need to explicitly exclude "<none>" or all zeros Nil
UUID as the regular expression does this.
2012-09-28 16:45:43 -06:00
Mike Fleetwood aa16bf5451 Switch to using jfs_tune to read the UUID
Not necessary but use the simpler file system tune command rather than
the file system debug command where possible.  Also saves creating an
echo process.
2012-09-28 16:45:43 -06:00
Mike Fleetwood ee87cee96f Switch to using debugreiserfs to read the UUID (#684115)
For a mounted reiserfs file system with a Nil UUID (all zeros) GParted
will display a partition specific warning.  This comes from the reiserfs
specific read_uuid() method.  Error demonstration:

    # blkid /dev/sda15
    /dev/sda15: LABEL="test-reiserfs-2" TYPE="reiserfs"
    # mount | grep sda15
    /dev/sda15 on /mnt/2 type reiserfs (rw,relatime)
    # reiserfstune /dev/sda15
    reiserfstune: Reiserfstune is not allowed to be run on mounted filesystem.

Switch to using debugreiserfs to read the UUID as it can be used on a
mounted file system.

    # debugreiserfs /dev/sda15 2> /dev/null | grep UUI
    UUID: 00000000-0000-0000-0000-000000000000

Bug #684115 - Reiserfs UUID reading issues on Fedora and CentOS
2012-09-28 16:45:43 -06:00
Mike Fleetwood eca986c96d Ignore invalid reiserfs UUIDs (#684115)
On Fedora up to and including Fedora 16 and Red Hat and CentOS up to the
current 6.3 release the UUID of an unmounted reiserfs file system is
displayed as "<no" and a GTK markup warning is written to the terminal.

This was because the reiserfs-utils package isn't linked with libuuid
support so reiserfs file systems were created with a Nil UUID (all
zeros).  To read the UUID GParted first tries to retrieve the UUID from
the blkid command output via the FS_Info cache.  Secondly it tries the
reiserfs file system specific read_uuid() method which uses the first
space separated word following the text "UUID:", hence it gets "<no".

    # debugreiserfs /dev/sda15 2> /dev/null | grep UUID
    UUID: <no libuuid installed>

In September 2012 Red Hat bug 660285 "reiserfstune compiled without UUID
support" was fixed for Fedora 16 and later releases.  On Fedora with
this fix applied GParted will display the Nil UUID (all zeros) for a
previously created reiserfs file system rather than suppressing it.

Only accept valid, none Nil UUIDs in the reiserfs file system specific
read_uuid() method.

Bug #684115 - Reiserfs UUID reading issues on Fedora and CentOS
2012-09-28 16:45:42 -06:00
Ani Peter 08367aca0d Updated Malayalam file 2012-09-16 21:08:11 +05:30
Aurimas Černius 2694b32591 Updated Lithuanian translation 2012-09-15 20:55:27 +03:00
Matej Urbančič 1bca7bee77 Updated Slovenian translation 2012-09-12 20:44:39 +02:00
Djavan Fagundes d5bf50e16c Updated Brazilian Portuguese translation by Fábio Nogueira <deb-user-ba@ubuntu.com> and myself 2012-09-12 10:10:51 -03:00
Andika Triwidada 5768c6ecf3 Updated Indonesian translation 2012-09-09 22:36:49 +07:00
Seong-ho Cho b06cb7109a Updated Korean translation 2012-09-09 06:51:01 +09:00
Мирослав Николић 3d0cc914cf Updated Serbian translation 2012-09-08 11:14:42 +02:00
Fran Diéguez 90e3631aa5 Updated Galician translations 2012-09-04 23:21:38 +02:00
Piotr Drąg 36bc88f693 Updated Polish translation 2012-09-04 01:02:13 +02:00
Daniel Mustieles b4ad173f9a Updated Spanish translation 2012-09-03 15:59:10 +02:00
Marek Černocký 109c1fa3f1 Updated Czech translation 2012-09-02 12:38:54 +02:00
Fran Diéguez ed1aa22389 Updated Galician translations 2012-09-01 23:47:42 +02:00
Curtis Gedak 4d7ea2bc88 Update AUTHORS
Provide credit for patches by Mike Fleetwood to add LVM PV read-write
support, and to prevent an ESC key crash in number entry dialogs.
2012-09-01 11:22:55 -06:00
Mike Fleetwood 99abbb06ff Recognise lvm command immediately when rescanning for supported actions
Rescanning for supported actions in the File System Support dialog was
not detecting the removal and restoration of the lvm command.  GParted
was only updating supported actions after refreshing all devices.

Checking for the lvm command was tied to the refresh of the LVM2_PV_Info
cache, hence the behaviour.  Fix by always checking for the lvm command
when requested.

Also remove extra new line from end of an error message in
load_lvm2_pv_info_cache().
2012-08-30 13:47:46 -06:00
Mike Fleetwood 60d7728177 Add a partition warning for LVM2 PVs which can't be resized (#670171)
As LVM2 Physical Volumes can't be resized when they are members of
exported Volume Groups add a warning message to explain this fact.
Display the message as a partition specific warning and as additional
text when growing the file system to fill the partition is skipped for
the check operation and when pasting into an existing larger partition.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:46 -06:00
Mike Fleetwood ee49891611 Disallow resizing of LVM2 PVs which are members of exported VGs (#670171)
When an inactive LVM2 Volume Group is exported it makes it unknown to
the local system, ready for moving the member Physical Volumes to
another system, where the VG can be imported and used.  In this state a
PV can't be resized.

    # lvm pvresize /dev/sda10
      Volume group Test-VG1 is exported
      Unable to read volume group "Test-VG1".
      0 physical volume(s) resized / 1 physical volume(s) not resized
    # echo $?
    5

Fix this by preventing resizing of such a PV.  This has been coded in a
generic way using new function filesystem_resize_disallowed() to
determine whether a file system is allowed to be resized or not.  For
a file system which can be resized, but is currently not allowed to be
resized, the behaviour is as follows:

1)  Pasting into unallocated space is limited to creating a new
    partition which is the same size as the copied partition.

2)  Resizing the partition is disallowed, only moving the partition is
    allowed.

3)  Pasting into an existing partition will only copy the file system.
    If the destination partition is larger a warning will report that
    growing the file system is not currently allowed.

4)  Checking a partition will also report a warning that growing the
    file system is not currently allowed.

This is exactly the same behaviour as for a file system which does not
implement resizing, except for a different warning message.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:46 -06:00
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