From owner-freebsd-hackers Tue Sep 18 5:10:31 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from ipcard.iptcom.net (ipcard.iptcom.net [212.9.224.5]) by hub.freebsd.org (Postfix) with ESMTP id 02FE137B40A; Tue, 18 Sep 2001 05:10:06 -0700 (PDT) Received: from vega.vega.com (root@dialup13-46.iptelecom.net.ua [212.9.229.46]) by ipcard.iptcom.net (8.9.3/8.9.3) with ESMTP id PAA21866; Tue, 18 Sep 2001 15:09:29 +0300 (EEST) (envelope-from sobomax@FreeBSD.org) Received: from FreeBSD.org (big_brother.vega.com [192.168.1.1]) by vega.vega.com (8.11.4/8.11.3) with ESMTP id f8IC80917102; Tue, 18 Sep 2001 15:08:00 +0300 (EEST) (envelope-from sobomax@FreeBSD.org) Message-ID: <3BA7397D.A82C213@FreeBSD.org> Date: Tue, 18 Sep 2001 15:09:33 +0300 From: Maxim Sobolev Organization: Vega International Capital X-Mailer: Mozilla 4.78 [en] (Windows NT 5.0; U) X-Accept-Language: en,uk,ru MIME-Version: 1.0 To: chris@calldei.com Cc: phk@critter.freebsd.dk, brent@rcfile.org, current@FreeBSD.org, hackers@FreeBSD.org, marcel@FreeBSD.org Subject: Re: Junior Kernel Hacker task: improve vnode->v_tag References: <20010908030110.E548@holly.calldei.com> <200109081154.OAA95138@www.abc.com.ua> <20010908150620.F548@holly.calldei.com> Content-Type: multipart/mixed; boundary="------------EB2B6B9ED6329EFA77147776" Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG This is a multi-part message in MIME format. --------------EB2B6B9ED6329EFA77147776 Content-Type: text/plain; charset=x-user-defined Content-Transfer-Encoding: 7bit Chris Costello wrote: > On Saturday, September 08, 2001, Maxim Sobolev wrote: > > I don't like idea to hardcode the same string ("procfs"), with the > > same meaning in several places across kernel. As for your proposition > > to use f_fstypename to set v_tag, it is even more bogus because > > value of the f_fstypename is supplied from the user level, so > > potentially it could be anything and we can't make any reasonable > > assumptions about mapping between its value and type of the filesystem > > in question. > > How do you figure? The contents if `f_fstypename' must match > a configured file system exactly, so it could _not_ be anything. > To quote sys/kern/vfs_syscalls.c:mount(): Oh, yes, you are correct obviously (don't know what I was thinking about). In this case, it looks like v_tag is redundant, because f_fstypename could be used instead in a few places where v_tag is abused (the same applies to the statfs.f_type because essentually it is the same thing as v_tag). Poul, what do you think about it? In the meantime, I found another place in the kernel where VT_* macros are [ab]used - it is Linuxlator, attached please find patches to fix it - please review. -Maxim --------------EB2B6B9ED6329EFA77147776 Content-Type: text/plain; charset=x-user-defined; name="linux_stats.c.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="linux_stats.c.diff" Index: linux_stats.c =================================================================== RCS file: /home/ncvs/src/sys/compat/linux/linux_stats.c,v retrieving revision 1.37 diff -d -u -r1.37 linux_stats.c --- linux_stats.c 2001/09/12 08:36:57 1.37 +++ linux_stats.c 2001/09/18 11:52:02 @@ -187,10 +187,6 @@ l_int f_spare[6]; }; -#ifndef VT_NWFS -#define VT_NWFS VT_TFS /* XXX - bug compat. with sys/fs/nwfs/nwfs_node.h */ -#endif - #define LINUX_CODA_SUPER_MAGIC 0x73757245L #define LINUX_EXT2_SUPER_MAGIC 0xEF53L #define LINUX_HPFS_SUPER_MAGIC 0xf995e849L @@ -202,34 +198,30 @@ #define LINUX_PROC_SUPER_MAGIC 0x9fa0L #define LINUX_UFS_SUPER_MAGIC 0x00011954L /* XXX - UFS_MAGIC in Linux */ -/* - * ext2fs uses the VT_UFS tag. A mounted ext2 filesystem will therefore - * be seen as an ufs filesystem. - */ static long -bsd_to_linux_ftype(int tag) +bsd_to_linux_ftype(const char *fstypename) { - switch (tag) { - case VT_CODA: + if (strcmp(fstypename, "coda") == 0) return (LINUX_CODA_SUPER_MAGIC); - case VT_HPFS: + else if (strcmp(fstypename, "hpfs") == 0) return (LINUX_HPFS_SUPER_MAGIC); - case VT_ISOFS: + else if (strcmp(fstypename, "cd9660") == 0) return (LINUX_ISOFS_SUPER_MAGIC); - case VT_MSDOSFS: + else if (strcmp(fstypename, "msdosfs") == 0) return (LINUX_MSDOS_SUPER_MAGIC); - case VT_NFS: + else if (strcmp(fstypename, "nfs") == 0) return (LINUX_NFS_SUPER_MAGIC); - case VT_NTFS: + else if (strcmp(fstypename, "ntfs") == 0) return (LINUX_NTFS_SUPER_MAGIC); - case VT_NWFS: + else if (strcmp(fstypename, "nwfs") == 0) return (LINUX_NCP_SUPER_MAGIC); - case VT_PROCFS: + else if (strcmp(fstypename, "procfs") == 0) return (LINUX_PROC_SUPER_MAGIC); - case VT_UFS: + else if (strcmp(fstypename, "ufs") == 0) return (LINUX_UFS_SUPER_MAGIC); - } + else if (strcmp(fstypename, "ext2fs") == 0) + return (LINUX_EXT2_SUPER_MAGIC); return (0L); } @@ -265,7 +257,7 @@ if (error) return error; bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - linux_statfs.f_type = bsd_to_linux_ftype(bsd_statfs->f_type); + linux_statfs.f_type = bsd_to_linux_ftype(bsd_statfs->f_fstypename); linux_statfs.f_bsize = bsd_statfs->f_bsize; linux_statfs.f_blocks = bsd_statfs->f_blocks; linux_statfs.f_bfree = bsd_statfs->f_bfree; @@ -301,7 +293,7 @@ if (error) return error; bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - linux_statfs.f_type = bsd_to_linux_ftype(bsd_statfs->f_type); + linux_statfs.f_type = bsd_to_linux_ftype(bsd_statfs->f_fstypename); linux_statfs.f_bsize = bsd_statfs->f_bsize; linux_statfs.f_blocks = bsd_statfs->f_blocks; linux_statfs.f_bfree = bsd_statfs->f_bfree; --------------EB2B6B9ED6329EFA77147776-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message