dm io: retry after barrier error

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Wednesday, June 24, 2009 - 12:02 pm

Gitweb:     http://git.kernel.org/linus/51aa322849581f1a73594e48ea0df63f914ee6a2
Commit:     51aa322849581f1a73594e48ea0df63f914ee6a2
Parent:     5af443a7e1c0864100cc44525a9821aa2a2f4719
Author:     Mikulas Patocka <mpatocka@redhat.com>
AuthorDate: Mon Jun 22 10:12:26 2009 +0100
Committer:  Alasdair G Kergon <agk@redhat.com>
CommitDate: Mon Jun 22 10:12:26 2009 +0100

    dm io: retry after barrier error
    
    If -EOPNOTSUPP was returned and the request was a barrier request, retry it
    without barrier.
    
    Retry all regions for now. Barriers are submitted only for one-region requests,
    so it doesn't matter.  (In the future, retries can be limited to the actual
    regions that failed.)
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
---
 drivers/md/dm-io.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
index a89f41f..3a2e6a2 100644
--- a/drivers/md/dm-io.c
+++ b/drivers/md/dm-io.c
@@ -364,6 +364,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
 		return -EIO;
 	}
 
+retry:
 	io.error_bits = 0;
 	io.eopnotsupp_bits = 0;
 	atomic_set(&io.count, 1); /* see dispatch_io() */
@@ -382,6 +383,11 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
 	}
 	set_current_state(TASK_RUNNING);
 
+	if (io.eopnotsupp_bits && (rw & (1 << BIO_RW_BARRIER))) {
+		rw &= ~(1 << BIO_RW_BARRIER);
+		goto retry;
+	}
+
 	if (error_bits)
 		*error_bits = io.error_bits;
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
dm io: retry after barrier error, Linux Kernel Mailing ..., (Wed Jun 24, 12:02 pm)