dm: remove EOPNOTSUPP for barriers
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 22 Jun 2009 09:12:19 +0000 (10:12 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Mon, 22 Jun 2009 09:12:19 +0000 (10:12 +0100)
If the underlying device doesn't support barriers and dm receives a
barrier, it waits until all requests on that device drain so it no
longer needs to report -EOPNOTSUPP to the caller.

This patch deals with the confusing situation when moving a volume from
one physical device to another triggers an EOPNOTSUPP on a volume that
didn't report it before.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm.c

index 77972090abe5637a1cbb1c8bc82d8e8e3adf07b0..8498dc4ce1f0aff5c7208e35fbe9a1c0fd5d4862 100644 (file)
@@ -555,7 +555,7 @@ static void dec_pending(struct dm_io *io, int error)
                         * a per-device variable for error reporting.
                         * Note that you can't touch the bio after end_io_acct
                         */
-                       if (!md->barrier_error)
+                       if (!md->barrier_error && io_error != -EOPNOTSUPP)
                                md->barrier_error = io_error;
                        end_io_acct(io);
                } else {