mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
pre-release
This commit is contained in:
parent
cf97d8d5f9
commit
aa21e79991
@ -1 +1 @@
|
||||
1.02.84-git (2013-11-13)
|
||||
1.02.84-git (2014-01-20)
|
||||
|
28
WHATS_NEW
28
WHATS_NEW
@ -1,7 +1,7 @@
|
||||
Version 2.02.105 -
|
||||
=====================================
|
||||
Fix thin LV flagging for udev to skip scanning only if the LV is wiped
|
||||
Replace use of xfs_check with xfs_reparir in fsadm.
|
||||
Version 2.02.105 - 20th January 2014
|
||||
====================================
|
||||
Fix thin LV flagging for udev to skip scanning only if the LV is wiped.
|
||||
Replace use of xfs_check with xfs_repair in fsadm.
|
||||
Mark lvm1 format metadata as FMT_OBSOLETE. Do not use it with lvmetad.
|
||||
Invalidate cached VG struct after a PV in it gets orphaned. (2.02.87)
|
||||
Mark pool format metadata as FMT_OBSOLETE.
|
||||
@ -12,7 +12,7 @@ Version 2.02.105 -
|
||||
Optimize double call of stat() for cached devices.
|
||||
Enable support for thin provisioning for default configuration.
|
||||
Improve process_each_lv_in_vg() tag processing.
|
||||
Reodered and simplified logging code.
|
||||
Reordered and simplified logging code.
|
||||
Fix SYSTEMD_READY assignment for foreign devices in lvmetad udev rules.
|
||||
Disable online thin pool metadata resize for 1.9 kernel thin target.
|
||||
Shortened code for initialization of raid segment types.
|
||||
@ -49,13 +49,19 @@ Version 2.02.105 -
|
||||
Check for failure of dev_get_size() when reporting device size.
|
||||
Drop extra unneeded '/' when scanning sysfs directory.
|
||||
Fix undef value if skipped clustered VG ignored for toollib PV seg. (2.02.103)
|
||||
liblvm/python API Add ability to validate VG/LV names.
|
||||
liblvm/python API Add ability to create PV with arguments.
|
||||
liblvm/python API Fail VG reduce when insufficient metadata copies
|
||||
Fix install of conf subdir when not building in srcdir.
|
||||
Support validation of VG/LV names in liblvm/python.
|
||||
Allow creation of PVs with arguments to liblvm/python.
|
||||
Ensure sufficient metadata copies retained in liblvm/python vgreduce.
|
||||
Fix installation of profiles from conf subdir when not building in srcdir.
|
||||
Show UUIDs for missing PVs in reports.
|
||||
Change dev_size/name, pv_fmt/mda_free/mda_size/uuid fields from pv to label.
|
||||
Add struct device *dev to struct label.
|
||||
Introduce process_each_label.
|
||||
Change void *private to struct format_type *fmt in struct labeller.
|
||||
Remove pv_read.
|
||||
Add reporting of thin_id device id for thin volumes.
|
||||
Fix reporting of empty numerical values.
|
||||
Simplify reporting code.
|
||||
Fix reporting of empty numerical values for recently-added fields.
|
||||
Use _field_set_percent/value in reporting code.
|
||||
|
||||
Version 2.02.104 - 13th November 2013
|
||||
=====================================
|
||||
|
@ -1,8 +1,8 @@
|
||||
Version 1.02.84 -
|
||||
====================================
|
||||
Deactive already actived nodes when node's preload callback fails.
|
||||
Version 1.02.84 - 20th January 2014
|
||||
===================================
|
||||
Revert activation of activated nodes if a node preload callback fails.
|
||||
Avoid busy looping on CPU when dmeventd reads event DM_WAIT_RETRY.
|
||||
Ensure global mutex is being hold when working with dmeventd thread.
|
||||
Ensure global mutex is held when working with dmeventd thread.
|
||||
Drop taking timeout mutex for un/registering dmeventd monitor.
|
||||
Allow section names in config file data to be quoted strings.
|
||||
Close fifos before exiting in dmeventd restart() error path.
|
||||
|
@ -88,6 +88,7 @@ uint64_t pv_dev_size(const struct physical_volume *pv)
|
||||
|
||||
if (!dev_get_size(pv->dev, &size))
|
||||
size = 0;
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@ -99,6 +100,7 @@ uint64_t pv_size_field(const struct physical_volume *pv)
|
||||
size = pv->size;
|
||||
else
|
||||
size = (uint64_t) pv->pe_count * pv->pe_size;
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@ -111,6 +113,7 @@ uint64_t pv_free(const struct physical_volume *pv)
|
||||
else
|
||||
freespace = (uint64_t)
|
||||
(pv->pe_count - pv->pe_alloc_count) * pv->pe_size;
|
||||
|
||||
return freespace;
|
||||
}
|
||||
|
||||
@ -154,14 +157,17 @@ uint32_t pv_mda_count(const struct physical_volume *pv)
|
||||
struct lvmcache_info *info;
|
||||
|
||||
info = lvmcache_info_from_pvid((const char *)&pv->id.uuid, 0);
|
||||
|
||||
return info ? lvmcache_mda_count(info) : UINT64_C(0);
|
||||
}
|
||||
|
||||
static int _count_unignored(struct metadata_area *mda, void *baton)
|
||||
{
|
||||
uint32_t *count = baton;
|
||||
|
||||
if (!mda_is_ignored(mda))
|
||||
(*count) ++;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -174,6 +180,7 @@ uint32_t pv_mda_used_count(const struct physical_volume *pv)
|
||||
if (!info)
|
||||
return 0;
|
||||
lvmcache_foreach_mda(info, _count_unignored, &used_count);
|
||||
|
||||
return used_count;
|
||||
}
|
||||
|
||||
@ -228,7 +235,8 @@ uint64_t pv_mda_size(const struct physical_volume *pv)
|
||||
return min_mda_size;
|
||||
}
|
||||
|
||||
static int _pv_mda_free(struct metadata_area *mda, void *baton) {
|
||||
static int _pv_mda_free(struct metadata_area *mda, void *baton)
|
||||
{
|
||||
uint64_t mda_free;
|
||||
uint64_t *freespace = baton;
|
||||
|
||||
@ -238,6 +246,7 @@ static int _pv_mda_free(struct metadata_area *mda, void *baton) {
|
||||
mda_free = mda->ops->mda_free_sectors(mda);
|
||||
if (mda_free < *freespace)
|
||||
*freespace = mda_free;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -258,8 +267,10 @@ uint64_t pv_mda_free(const struct physical_volume *pv)
|
||||
{
|
||||
const char *pvid = (const char *)&pv->id.uuid;
|
||||
struct lvmcache_info *info;
|
||||
|
||||
if ((info = lvmcache_info_from_pvid(pvid, 0)))
|
||||
return lvmcache_info_mda_free(info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -271,6 +282,7 @@ uint64_t pv_used(const struct physical_volume *pv)
|
||||
used = 0LL;
|
||||
else
|
||||
used = (uint64_t) pv->pe_alloc_count * pv->pe_size;
|
||||
|
||||
return used;
|
||||
}
|
||||
|
||||
@ -299,6 +311,7 @@ static int _pv_mda_set_ignored_one(struct metadata_area *mda, void *baton)
|
||||
mda_set_ignored(vg_mda, b->mda_ignored);
|
||||
|
||||
mda_set_ignored(mda, b->mda_ignored);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -355,12 +368,14 @@ struct label *pv_label(const struct physical_volume *pv)
|
||||
{
|
||||
struct lvmcache_info *info =
|
||||
lvmcache_info_from_pvid((const char *)&pv->id.uuid, 0);
|
||||
if (!info) {
|
||||
if (pv->vg && pv->dev) /* process_each_pv will create PVs that are dummy
|
||||
* and that have no label associated */
|
||||
log_error(INTERNAL_ERROR "PV %s unexpectedly not in cache.",
|
||||
dev_name(pv->dev));
|
||||
return NULL;
|
||||
}
|
||||
return lvmcache_get_label(info);
|
||||
|
||||
if (info)
|
||||
return lvmcache_get_label(info);
|
||||
|
||||
/* process_each_pv() may create dummy PVs that have no label */
|
||||
if (pv->vg && pv->dev)
|
||||
log_error(INTERNAL_ERROR "PV %s unexpectedly not in cache.",
|
||||
dev_name(pv->dev));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -55,7 +55,6 @@ static int _field_set_percent(struct dm_report_field *field,
|
||||
uint64_t *sortval;
|
||||
|
||||
if (percent == PERCENT_INVALID)
|
||||
// FIXME maybe use here '--'?
|
||||
return _field_set_value(field, "", &_minusone64);
|
||||
|
||||
if (!(repstr = dm_pool_alloc(mem, 8)) ||
|
||||
|
Loading…
Reference in New Issue
Block a user