Skip to content

Commit 32be3c0

Browse files
Christoph Hellwigaxboe
authored andcommitted
zloop: fix write pointer calculation in zloop_forget_cache
The write pointer is absolute and in sector units, so we need to convert it to a relative byte address first. Fixes: c505448748f7 ("zloop: forget write cache on force removal") Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Johannes Thumshirn <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 5bdb407 commit 32be3c0

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

drivers/block/zloop.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,8 +1401,17 @@ static void zloop_forget_cache(struct zloop_device *zlo)
14011401
zlo->disk->part0, ret);
14021402
continue;
14031403
}
1404-
if (old_wp < zone->wp)
1405-
zloop_truncate(file, old_wp);
1404+
1405+
if (old_wp > zone->wp)
1406+
continue;
1407+
/*
1408+
* This should not happen, if we recored a full zone, it can't
1409+
* be active.
1410+
*/
1411+
if (WARN_ON_ONCE(old_wp == ULLONG_MAX))
1412+
continue;
1413+
1414+
zloop_truncate(file, (old_wp - zone->start) << SECTOR_SHIFT);
14061415
}
14071416
}
14081417

0 commit comments

Comments
 (0)