From 02527b9130cc497ae675ab9dd6b08b9dedb238cb Mon Sep 17 00:00:00 2001 From: Krzysztof Mazur Date: Fri, 15 Jul 2011 13:47:38 +0200 Subject: [PATCH 46/84] lsbd: fix ptab sector loading order Current version of LSBD can write multiple versions of the same sector in the same block. The sector with higher offset in block is never. However the ptab sector loading code uses first sector in block. This patch fixes this problem by loading ptab sectors in reverse order. --- drivers/block/lsbd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/block/lsbd.c b/drivers/block/lsbd.c index f871ffe..a817a1d 100644 --- a/drivers/block/lsbd.c +++ b/drivers/block/lsbd.c @@ -709,7 +709,8 @@ int lsbd_read_lcache(struct lsbd *p) * sizeof(struct lsbd_sect)); if (be32_to_cpu(b->ptab_checksum) == ptab_checksum) { - for (i = 0; i < sectors; i++) { + i = sectors - 1; + do { sector_id = be32_to_cpu(sects[i].id); if (sector_id >= p->lsectors) @@ -722,7 +723,7 @@ int lsbd_read_lcache(struct lsbd *p) >= p->psectors); readed++; } - } + } while (i-- > 0); } else { lsbd_info(p, "block %d: ptab checksum error\n", block); -- 1.8.4.652.g0d6e0ce