From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752699AbdFQSXi (ORCPT ); Sat, 17 Jun 2017 14:23:38 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:47154 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752066AbdFQSXh (ORCPT ); Sat, 17 Jun 2017 14:23:37 -0400 Date: Sat, 17 Jun 2017 19:23:28 +0100 From: Al Viro To: Guenter Roeck Cc: Evgeniy Dushistov , Mark Brown , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: Re: [PATCH] ufs: Fix build errors on 32 bit machines Message-ID: <20170617182328.GV31671@ZenIV.linux.org.uk> References: <1497720913-10787-1-git-send-email-linux@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1497720913-10787-1-git-send-email-linux@roeck-us.net> User-Agent: Mutt/1.8.0 (2017-02-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jun 17, 2017 at 10:35:13AM -0700, Guenter Roeck wrote: > Various 32 builds fail with error messages such as > > ERROR: "__udivdi3" [fs/ufs/ufs.ko] undefined! > > due to a variable type change from 32 bit to 64 bit. Actually, that's not the only problem in that place. The breakage came in 2.4.14.7; the critical part was this: default: - usb1->fs_optim = SWAB32(UFS_OPTTIME); + usb1->fs_optim = cpu_to_fs32(sb, UFS_OPTTIME); case UFS_OPTTIME: request = uspi->s_fpb; - if (SWAB32(usb1->fs_cstotal.cs_nffree) < uspi->s_dsize * + if (fs32_to_cpu(sb, usb1->fs_cstotal.cs_nffree) < uspi->s_dsize * (uspi->s_minfree - 2) / 100) break; - usb1->fs_optim = SWAB32(UFS_OPTSPACE); + usb1->fs_optim = cpu_to_fs32(sb, UFS_OPTTIME); break; See the problem? Instead of hysteresis loop flipping between optspace and opttime allocation policies, it *never* switches out of opttime. That came in commit 6293d56ca18db9ed322b2a5550ac7b27bd538cff Author: Linus Torvalds Date: Mon Feb 4 20:33:51 2002 -0800 v2.4.14.6 -> v2.4.14.7 - Jeff Garzik: network driver updates - Christoph Hellwig: UFS filesystem byteorder cleanups - me: modified Andrea VM page allocator tuning so probably a typo in Christoph's patches, missed by everyone at the time. And I would prefer to have the nffree levels at which we switch back and forth precalculated at mount time. I'll send a fix (along with those for the last remaining xfstests failures) later today.