From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756154AbcKVOVU (ORCPT ); Tue, 22 Nov 2016 09:21:20 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:57662 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756135AbcKVOVS (ORCPT ); Tue, 22 Nov 2016 09:21:18 -0500 From: Arnd Bergmann To: Jaegeuk Kim Cc: Arnd Bergmann , Chao Yu , Yunlei He , Damien Le Moal , Fan Li , linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH] f2fs: fix 32-bit build Date: Tue, 22 Nov 2016 15:20:16 +0100 Message-Id: <20161122142033.1680054-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:PXv1So1gu6NbOyhd+iVRq5p/RMG2gA9PRGb7AiBL8V+xgq9aidW 6fIf8HV0+3PCwkKtjPq0dpqEb9FY17oJpQqmEL3ClniNZW7LspWF+l2HzUAXyemYNMA5/0u kxn1v8V7GZ5abxoAZjJbw+U4OpmUTRB0Er7ATrjr69+VFx6OToqJr2iii9ME8Se93SLQD1q tW0103mvaAE2rYklZdMpA== X-UI-Out-Filterresults: notjunk:1;V01:K0:NS7u3d2aEsY=:JOoLjW1j1/ndbMUGOpLVT3 Gcvh6qfvQPh/s4BL9tHhOO5ovk9Pk8KESQ3bXFpRCBsTXwoz3NQ+Thw+89mdWEQV94h92dX7m bjxDV2WLdiu5uSj+Lgd16o1IJInfHsCjPtQIRouMNYHfNtVXG4jvAfwC88BfPx/2q/wVD+Lnu 0S1N6+LAfhE9ceMP8+QEh6FmZQW4p63oqTKW5ve+LAcEFefIGxSBXPghvnsQdcZuS+/Jz+U61 6O81qSNQ1RCeWdbJs8/9pPGBasUpNTNq+MYpwkcYIPeW7gRWNLpWMZfVVA6gPtlrWkpf3l3Pe BJ+s9qHKiIGu6R/mT2OolWMV43dS3ExJZC3Xuv1/sUpFw0daKWrVDdRdY/M56QK1ULvX/Vc46 cntLgZ9ETd7EC5XWWvtLpl3pR++7r0bTnGp1NQJ5D3k0hrif81RIWxJobjXMIPnlvY25cc2JC gIb//Ma1Q1IriHZxL2QCtRX9T7wyD5xjs2ig5HIzqjTlOuI5Gh8nvk+cNlFchNm8uE2ocVqO/ qqlYunaUyDebIIOGmc8slmIK+vIYcvkl7j5E1au79oWCOoiROutEHX7pDvqSw4M5eBNGLCuPs dn5yheQG1JXFJEUqtZSeTYCB1NB9Es88NzZH2LXpwtKoxB+foOgNZUKhx1WBWD8r6nW7nEtqj jDoVvO1KvT4AJQKw5aS7vLZLGz+JAaIu7/Wjkfh2ZT0QrLdZ6uDNG6DH2LdCWp/iEnx8= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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' Unfortunately, the sector number is usually a 64-bit number, and we probably can't guarantee that bdev_zone_size() returns a power-of-two number, so we actually have to do the expensive 64-bit operation to get the remainder. Fixes: 792b84b74b54 ("f2fs: support multiple devices") Signed-off-by: Arnd Bergmann --- fs/f2fs/segment.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 634834e5a232..e4c5497aa172 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -685,6 +685,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi, { sector_t nr_sects = SECTOR_FROM_BLOCK(blklen); sector_t sector; + u32 rem; int devi = 0; if (sbi->s_ndevs) { @@ -693,7 +694,8 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi, } sector = SECTOR_FROM_BLOCK(blkstart); - if (sector % bdev_zone_size(bdev) || nr_sects != bdev_zone_size(bdev)) { + div_u64_rem(sector, bdev_zone_size(bdev), &rem); + if (rem || nr_sects != bdev_zone_size(bdev)) { f2fs_msg(sbi->sb, KERN_INFO, "(%d) %s: Unaligned discard attempted (block %x + %x)", devi, sbi->s_ndevs ? FDEV(devi).path: "", -- 2.9.0