[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH parted 1/2] libparted: push/pop update mode around ped_disk_set_f
From: |
Hans de Goede |
Subject: |
[PATCH parted 1/2] libparted: push/pop update mode around ped_disk_set_flag |
Date: |
Thu, 17 Dec 2009 10:27:39 +0100 |
Disk flags can change how the metadata gets allocated, so push/pop
update mode around ops->disk_set_flag, so that the metadata gets
re-allocated.
* libparted/disk.c (ped_disk_set_flag): push/pop update mode.
---
libparted/disk.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/libparted/disk.c b/libparted/disk.c
index 7cbde81..0dc97f3 100644
--- a/libparted/disk.c
+++ b/libparted/disk.c
@@ -759,10 +759,15 @@ ped_disk_get_max_primary_partition_count (const PedDisk*
disk)
int
ped_disk_set_flag(PedDisk *disk, PedDiskFlag flag, int state)
{
+ int ret;
+
PED_ASSERT (disk != NULL, return 0);
PedDiskOps *ops = disk->type->ops;
+ if (!_disk_push_update_mode(disk))
+ return 0;
+
if (!ped_disk_is_flag_available(disk, flag)) {
ped_exception_throw (
PED_EXCEPTION_ERROR,
@@ -770,10 +775,16 @@ ped_disk_set_flag(PedDisk *disk, PedDiskFlag flag, int
state)
"The flag '%s' is not available for %s disk labels.",
ped_disk_flag_get_name(flag),
disk->type->name);
+ _disk_pop_update_mode(disk);
return 0;
}
- return ops->disk_set_flag(disk, flag, state);
+ ret = ops->disk_set_flag(disk, flag, state);
+
+ if (!_disk_pop_update_mode (disk))
+ return 0;
+
+ return ret;
}
/**
--
1.6.5.2
- [PATCH parted 1/2] libparted: push/pop update mode around ped_disk_set_flag,
Hans de Goede <=