Date: Tue, 27 Apr 2004 20:09:28 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: Bosko Milekic <bmilekic@freebsd.org> Cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sbin/mount Makefile mount.c src/sys/ufs/ffs ffs_vfsops.c Message-ID: <20040427195514.T9334@gamplex.bde.org> In-Reply-To: <20040427115536.W7721@gamplex.bde.org> References: <200404261513.i3QFDkb5026044@repoman.freebsd.org> <20040427115536.W7721@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 27 Apr 2004, Bruce Evans wrote: > On Mon, 26 Apr 2004, Bosko Milekic wrote: > > > bmilekic 2004/04/26 08:13:46 PDT > > > > FreeBSD src repository > > > > Modified files: > > sbin/mount Makefile mount.c > > sys/ufs/ffs ffs_vfsops.c > > Log: > > The previous change to mount(8) to report ufs or ufs2 used > > libufs, which only works for Charlie root. > > > > This change reverts the introduction of libufs and moves the > > check into the kernel. Since the f_fstypename is the same > > for both ufs and ufs2, we check fs_magic for presence of > > ufs2 and copy "ufs2" explicitly instead. > > This seems to fix things like "mount -t ufs" and "find / -fstype ufs" > to not work with ufs2. Many scripts may depend on this. Testing shows that "df -t ufs" only finds ufs (because it looks up file systems by type name), but "find / -fstype ufs" cannot distinguish ufs from ufs2 (because it looks up file systems by type number). I think "mount -a -t ufs" works like "df -t ufs". The number in find's lookup is the type number returned by statfs(). Lookup by number is a historical bug. It is fixed in NetBSD: %%% --- function.c Sun Apr 4 14:44:05 2004 +++ /c/NetBSD/src/usr.bin/find/function.c Mon Apr 26 21:36:04 2004 @@ -819,66 +762,52 @@ * always copy both of them. */ - val_flags = sb.f_flags; - val_type = sb.f_type; + val = sb.f_flag; + strlcpy(fstype, sb.f_fstypename, sizeof(fstype)); } - switch (plan->flags & F_MTMASK) { + switch (plan->flags) { case F_MTFLAG: - return val_flags & plan->mt_data; + return (val & plan->mt_data); case F_MTTYPE: - return val_type == plan->mt_data; + return (strncmp(fstype, plan->c_data, MFSNAMELEN) == 0); default: abort(); } } ... %%% Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040427195514.T9334>