[lvm-devel] LVM2/libdm libdm-deptree.c ioctl/libdm-iface.c ...
zkabelac at sourceware.org
zkabelac at sourceware.org
Wed Oct 19 16:36:03 UTC 2011
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: zkabelac at sourceware.org 2011-10-19 16:36:02
Modified files:
libdm : libdm-deptree.c
libdm/ioctl : libdm-iface.c libdm-targets.h
Log message:
Add internal expected_errno dm_tast var
Certain errno codes could be expected in some situations thus
add experimental support for them.
When expected errno is set after ioctl error - function skips error
printing and exits succefully.
Currently only useful for thin pool messages.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-deptree.c.diff?cvsroot=lvm2&r1=1.128&r2=1.129
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/ioctl/libdm-iface.c.diff?cvsroot=lvm2&r1=1.124&r2=1.125
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/ioctl/libdm-targets.h.diff?cvsroot=lvm2&r1=1.32&r2=1.33
--- LVM2/libdm/libdm-deptree.c 2011/10/17 14:16:25 1.128
+++ LVM2/libdm/libdm-deptree.c 2011/10/19 16:36:01 1.129
@@ -111,6 +111,7 @@
struct thin_message {
struct dm_list list;
struct dm_thin_message message;
+ int expected_errno;
};
/* Replicator-log has a list of sites */
@@ -1314,6 +1315,9 @@
if (!dm_task_set_message(dmt, buf))
goto_out;
+ /* Internal functionality of dm_task */
+ dmt->expected_errno = tm->expected_errno;
+
if (!dm_task_run(dmt))
goto_out;
@@ -2912,11 +2916,13 @@
if (!_thin_validate_device_id(message->u.m_create_thin.device_id))
return_0;
tm->message.u.m_create_thin.device_id = message->u.m_create_thin.device_id;
+ tm->expected_errno = EEXIST;
break;
case DM_THIN_MESSAGE_DELETE:
if (!_thin_validate_device_id(message->u.m_delete.device_id))
return_0;
tm->message.u.m_delete.device_id = message->u.m_delete.device_id;
+ tm->expected_errno = ENODATA;
break;
case DM_THIN_MESSAGE_TRIM:
if (!_thin_validate_device_id(message->u.m_trim.device_id))
--- LVM2/libdm/ioctl/libdm-iface.c 2011/10/17 14:36:06 1.124
+++ LVM2/libdm/ioctl/libdm-iface.c 2011/10/19 16:36:02 1.125
@@ -1635,7 +1635,8 @@
dmt->sector, _sanitise_message(dmt->message),
dmi->data_size, retry_repeat_count);
#ifdef DM_IOCTLS
- if (ioctl(_control_fd, command, dmi) < 0) {
+ if (ioctl(_control_fd, command, dmi) < 0 &&
+ dmt->expected_errno != errno) {
if (errno == ENXIO && ((dmt->type == DM_DEVICE_INFO) ||
(dmt->type == DM_DEVICE_MKNODES) ||
(dmt->type == DM_DEVICE_STATUS)))
--- LVM2/libdm/ioctl/libdm-targets.h 2011/09/22 17:09:49 1.32
+++ LVM2/libdm/ioctl/libdm-targets.h 2011/10/19 16:36:02 1.33
@@ -65,6 +65,7 @@
int secure_data;
int retry_remove;
int enable_checks;
+ int expected_errno;
char *uuid;
};
More information about the lvm-devel
mailing list