[lvm-devel] master - thin: use noflush for obtaining transaction_id
Zdenek Kabelac
zkabelac at fedoraproject.org
Mon Feb 4 18:08:16 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a4870c79cad46e6063862d7cc828a2bbef9251c3
Commit: a4870c79cad46e6063862d7cc828a2bbef9251c3
Parent: 153ce89af36e716ace78182d8fe0668a6e98053d
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Thu Jan 17 10:54:41 2013 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Feb 4 19:05:56 2013 +0100
thin: use noflush for obtaining transaction_id
Do not flush thin pool data, when reading transation_id status.
---
WHATS_NEW | 1 +
lib/activate/activate.c | 2 +-
lib/activate/dev_manager.c | 6 +++++-
lib/activate/dev_manager.h | 3 ++-
libdm/libdm-deptree.c | 3 +++
5 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index cfaa152..272c6c8 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Avoid flushing thin pool when quering for transaction_id.
Add internal function lv_layer() to obtain layer name for LV.
Report partial and in-sync RAID attribute based on kernel status
Fix blkdeactivate to handle nested mountpoints and mangled mount paths.
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index e39c04a..6187828 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -888,7 +888,7 @@ int lv_thin_pool_transaction_id(const struct logical_volume *lv,
if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name, 1)))
return_0;
- if (!(r = dev_manager_thin_pool_status(dm, lv, &status)))
+ if (!(r = dev_manager_thin_pool_status(dm, lv, &status, 1)))
stack;
else
*transaction_id = status->transaction_id;
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index e4cb0c3..1916d3e 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1124,7 +1124,8 @@ static int _belong_to_vg(const char *vgname, const char *name)
int dev_manager_thin_pool_status(struct dev_manager *dm,
const struct logical_volume *lv,
- struct dm_status_thin_pool **status)
+ struct dm_status_thin_pool **status,
+ int noflush)
{
const char *dlid;
struct dm_task *dmt;
@@ -1146,6 +1147,9 @@ int dev_manager_thin_pool_status(struct dev_manager *dm,
if (!dm_task_no_open_count(dmt))
log_error("Failed to disable open_count.");
+ if (noflush && !dm_task_no_flush(dmt))
+ log_warn("Can't set no_flush.");
+
if (!dm_task_run(dmt))
goto_out;
diff --git a/lib/activate/dev_manager.h b/lib/activate/dev_manager.h
index e363aed..a4556e7 100644
--- a/lib/activate/dev_manager.h
+++ b/lib/activate/dev_manager.h
@@ -59,7 +59,8 @@ int dev_manager_raid_status(struct dev_manager *dm,
struct dm_status_raid **status);
int dev_manager_thin_pool_status(struct dev_manager *dm,
const struct logical_volume *lv,
- struct dm_status_thin_pool **status);
+ struct dm_status_thin_pool **status,
+ int noflush);
int dev_manager_thin_pool_percent(struct dev_manager *dm,
const struct logical_volume *lv,
int metadata, percent_t *percent);
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 6a73859..5e938d7 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -1360,6 +1360,9 @@ static int _thin_pool_status_transaction_id(struct dm_tree_node *dnode, uint64_t
goto out;
}
+ if (!dm_task_no_flush(dmt))
+ log_warn("Can't set no_flush flag."); /* Non fatal */
+
if (!dm_task_run(dmt))
goto_out;
More information about the lvm-devel
mailing list