From owner-freebsd-current Wed Nov 1 12:19:40 2000 Delivered-To: freebsd-current@freebsd.org Received: from critter.freebsd.dk (flutter.freebsd.dk [212.242.40.147]) by hub.freebsd.org (Postfix) with ESMTP id 4006D37B4E5 for ; Wed, 1 Nov 2000 12:19:35 -0800 (PST) Received: from critter (localhost [127.0.0.1]) by critter.freebsd.dk (8.11.1/8.9.3) with ESMTP id eA1KH0u22798; Wed, 1 Nov 2000 21:17:00 +0100 (CET) (envelope-from phk@critter.freebsd.dk) To: Marcel Moolenaar Cc: Andrew Gallatin , freebsd-current@FreeBSD.ORG Subject: Re: linux emulation In-Reply-To: Your message of "Wed, 01 Nov 2000 15:08:24 EST." <3A007838.25121ACC@cup.hp.com> Date: Wed, 01 Nov 2000 21:16:59 +0100 Message-ID: <22796.973109819@critter> From: Poul-Henning Kamp Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In message <3A007838.25121ACC@cup.hp.com>, Marcel Moolenaar writes: >Poul-Henning Kamp wrote: >> >> >In short: given the (u)dev_t, get the FS statistics and return the >> >number of free blocks and inodes of the FS on that device. >> >> But the udev_t is a (32bit truncated to) 16bit one, right ? > >Correct. > >> In that case it will usually not work: >> >> crw-r----- 1 root operator 116, 0x00010002 1 Jan 1970 /dev/ad0 >> crw-r----- 1 root operator 116, 0x00020000 1 Jan 1970 /dev/ad0s1a >[snip] > >It won't always work. Will will most often not work. >> Considering the fact that we were likely to return statistics for the >> wrong filesystem with the old code, and most likely cannot return >> the right statistics anyway, I think we should just return zero >> for those values (or some other more sensible values) > >I think we should try to return the right statistics in the case where >we have it wrong now instead of returning the wrong statistics in the >case where we have it right now. OK. So, where do the programs that call this syscall have the udev_t from ? Do they know it to be a mountpoint ? Do the know it to be a bmajor or cmajor style udev_t ? Being Linux they only know one kind, right ? In that case, makebdev() has been wrong ever since we changed to mount cdevs in FreeBSD. You should simply change the makebdev() to makedev() and VBLK to VCHR in the vfinddev() right after. It's still mightily bogus though... -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message