]> sourceware.org Git - lvm2.git/commitdiff
more fixes to readahead etc.
authorAlasdair Kergon <agk@redhat.com>
Tue, 28 Jun 2011 09:24:13 +0000 (09:24 +0000)
committerAlasdair Kergon <agk@redhat.com>
Tue, 28 Jun 2011 09:24:13 +0000 (09:24 +0000)
libdm/libdm-common.c

index 75b2f50275e92b098696e5a22ee943e741035eb6..fa6746a04f9b3f86def10d39137dfe05dfade64b 100644 (file)
@@ -863,13 +863,6 @@ static int _stack_node_op(node_op_t type, const char *dev_name, uint32_t major,
        size_t len = strlen(dev_name) + strlen(old_name) + 2;
        char *pos;
 
-       /*
-        * Clear warn_if_udev_failed if rely_on_udev is set.  It doesn't get
-        * checked in this case - this just removes the flag from log messages.
-        */
-       if (rely_on_udev)
-               warn_if_udev_failed = 0;
-
        /*
         * Note: warn_if_udev_failed must have valid content
         */
@@ -911,10 +904,16 @@ static int _stack_node_op(node_op_t type, const char *dev_name, uint32_t major,
                 */
                dm_list_iterate_safe(noph, nopht, &_node_ops) {
                        nop = dm_list_item(noph, struct node_op_parms);
-                       if (!strcmp(old_name, nop->dev_name))
+                       if (!strcmp(old_name, nop->dev_name)) {
                                _log_node_op("Unstacking", nop);
                                _del_node_op(nop);
+                       }
                }
+       else if (type == NODE_READ_AHEAD) {
+               /* udev doesn't process readahead */
+               rely_on_udev = 0;
+               warn_if_udev_failed = 0;
+       }
 
        if (!(nop = dm_malloc(sizeof(*nop) + len))) {
                log_error("Insufficient memory to stack mknod operation");
@@ -930,9 +929,14 @@ static int _stack_node_op(node_op_t type, const char *dev_name, uint32_t major,
        nop->mode = mode;
        nop->read_ahead = read_ahead;
        nop->read_ahead_flags = read_ahead_flags;
-       nop->warn_if_udev_failed = warn_if_udev_failed;
        nop->rely_on_udev = rely_on_udev;
 
+       /*
+        * Clear warn_if_udev_failed if rely_on_udev is set.  It doesn't get
+        * checked in this case - this just removes the flag from log messages.
+        */
+       nop->warn_if_udev_failed = rely_on_udev ? 0 : warn_if_udev_failed;
+
        _store_str(&pos, &nop->dev_name, dev_name);
        _store_str(&pos, &nop->old_name, old_name);
 
This page took 0.043586 seconds and 5 git commands to generate.