From 32edeb624f166f0ead2585b89e845e49b979909b Mon Sep 17 00:00:00 2001 From: Krzysztof Mazur Date: Tue, 7 Jun 2011 23:40:45 +0200 Subject: [PATCH 38/84] lsbd: move zeroed block read to separate function The lsbd_make_request() function is too long and it's a good idea to move this code to separate function. --- drivers/block/lsbd.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/block/lsbd.c b/drivers/block/lsbd.c index 33a19ea..79d5e42 100644 --- a/drivers/block/lsbd.c +++ b/drivers/block/lsbd.c @@ -1443,6 +1443,23 @@ static int lsbd_switch_mirror(struct lsbd *p, unsigned int lsector, return 0; } +/** + * lsbd_read_zero_sector - read zeroed sector + * @bh: buffer head + * + * This function reads sector which is mapped to zero. + */ +static int lsbd_read_zero_sector(struct buffer_head *bh) +{ + char *buf; + + buf = bh_kmap(bh); + memset(buf, 0, bh->b_size); + kunmap(bh); + bh->b_end_io(bh, 1); + return 0; +} + static int lsbd_make_request(request_queue_t *q, int rw, struct buffer_head *bh) { @@ -1476,14 +1493,10 @@ static int lsbd_make_request(request_queue_t *q, int rw, buffer_IO_error(bh); return 0; } - if (sector == LSBD_SECT_ZERO) { - char *buf; - buf = bh_kmap(bh); - memset(buf, 0, bh->b_size); - kunmap(bh); - bh->b_end_io(bh, 1); - return 0; - } + + if (sector == LSBD_SECT_ZERO) + return lsbd_read_zero_sector(bh); + if (sector >= p->psectors) { lsbd_info(p, "invalid lcache entry: %d -> %d\n", lsector, sector); -- 1.8.4.652.g0d6e0ce