Skip to content

Commit 248e942

Browse files
arndbpundiramit
authored andcommitted
f2fs: fix 32-bit build
commit 19c526515f6b998039d5d71fea879d255f173746 upstream. The addition of multiple-device support broke CONFIG_BLK_DEV_ZONED on 32-bit machines because of a 64-bit division: fs/f2fs/f2fs.o: In function `__issue_discard_async': extent_cache.c:(.text.__issue_discard_async+0xd4): undefined reference to `__aeabi_uldivmod' Fortunately, bdev_zone_size() is guaranteed to return a power-of-two number, so we can replace the % operator with a cheaper bit mask. Fixes: 792b84b74b54 ("f2fs: support multiple devices") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 8d0c7ea commit 248e942

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

fs/f2fs/segment.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,8 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
614614
}
615615
sector = SECTOR_FROM_BLOCK(blkstart);
616616

617-
if (sector % bdev_zone_size(bdev) || nr_sects != bdev_zone_size(bdev)) {
617+
if (sector & (bdev_zone_size(bdev) - 1) ||
618+
nr_sects != bdev_zone_size(bdev)) {
618619
f2fs_msg(sbi->sb, KERN_INFO,
619620
"(%d) %s: Unaligned discard attempted (block %x + %x)",
620621
devi, sbi->s_ndevs ? FDEV(devi).path: "",

0 commit comments

Comments
 (0)