Date: Sat, 11 Dec 1999 16:59:18 -0500 (EST) From: vsilyaev@mindspring.com To: FreeBSD-gnats-submit@freebsd.org Cc: marcel@scc.nl Subject: kern/15425: statfs and fstatfs syscall in linux emulator Message-ID: <199912112159.QAA00584@mindspring.com>
next in thread | raw e-mail | index | archive | help
>Number: 15425 >Category: kern >Synopsis: statfs and fstatfs syscall in linux emulator >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Dec 11 14:00:01 PST 1999 >Closed-Date: >Last-Modified: >Originator: Vladimir N.Silyaev >Release: FreeBSD 4.0-CURRENT i386 >Organization: >Environment: FreeBSD 4.0-CURRENT i386 Linux emulator and any linux program, that examine filesystem type >Description: Linux program confused by BSD filesystem types. >How-To-Repeat: Linux have different filestems type, than a FreeBSD. Currently linux emulator assume, that FreeBSD filesystem type equal Linux, this affect the statfs and fstatfs syscalls. >Fix: The following patch provide required translations. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- --- sys/i386/linux/linux_stats.c.orig Fri Dec 3 20:12:40 1999 +++ sys/i386/linux/linux_stats.c Sat Dec 11 13:59:42 1999 @@ -204,6 +204,52 @@ long fspare[6]; }; +#define LINUX_EXT2_SUPER_MAGIC 0xEF53 +#define LINUX_NFS_SUPER_MAGIC 0x6969 +#define LINUX_MSDOS_SUPER_MAGIC 0x4d44 +#define LINUX_PROC_SUPER_MAGIC 0x9fa0 +#define LINUX_ADFS_SUPER_MAGIC 0xadf5 +#define LINUX_ISOFS_SUPER_MAGIC 0x9660 +#define LINUX_CODA_SUPER_MAGIC 0x73757245 +#define LINUX_NTFS_SUPER_MAGIC 0x5346544E +#define LINUX_HPFS_SUPER_MAGIC 0xf995e849 + +static const long bsd_to_linux_ftype_[] = { + /* from sys/vnode.h */ +0, /* VT_NON */ +LINUX_EXT2_SUPER_MAGIC, /* VT_UFS */ /* this is a fake, but ext2fs use VT_UFS */ +LINUX_NFS_SUPER_MAGIC, /* VT_NFS */ +LINUX_EXT2_SUPER_MAGIC, /* VT_MFS */ /* another one fake */ +LINUX_MSDOS_SUPER_MAGIC,/* VT_PC */ +LINUX_EXT2_SUPER_MAGIC, /* VT_LFS */ +LINUX_EXT2_SUPER_MAGIC, /* VT_LOFS */ +LINUX_PROC_SUPER_MAGIC, /* VT_FDESC */ +LINUX_EXT2_SUPER_MAGIC, /* VT_PORTAL */ +LINUX_EXT2_SUPER_MAGIC, /* VT_NULL */ +LINUX_EXT2_SUPER_MAGIC, /* VT_UMAP */ +LINUX_PROC_SUPER_MAGIC, /* VT_KERNFS */ +LINUX_PROC_SUPER_MAGIC, /* VT_PROCFS */ +LINUX_ADFS_SUPER_MAGIC, /* VT_AFS */ +LINUX_ISOFS_SUPER_MAGIC,/* VT_ISOFS */ +LINUX_EXT2_SUPER_MAGIC, /* VT_UNION */ +LINUX_MSDOS_SUPER_MAGIC,/* VVT_MSDOSFS */ +LINUX_PROC_SUPER_MAGIC, /* VT_DEVFS */ +LINUX_EXT2_SUPER_MAGIC, /* VT_TFS */ +LINUX_EXT2_SUPER_MAGIC, /* VT_VFS */ +LINUX_CODA_SUPER_MAGIC, /* VT_CODA */ +LINUX_NTFS_SUPER_MAGIC, /* VT_NTFS */ +LINUX_HPFS_SUPER_MAGIC /* VT_HPFS */ +}; + +static long +bsd_to_linux_ftype(int bsd_f_type) +{ + if (bsd_f_type<sizeof(bsd_to_linux_ftype_)/sizeof(*bsd_to_linux_ftype_)) + return bsd_to_linux_ftype_[bsd_f_type]; + else + return bsd_f_type; +} + int linux_statfs(struct proc *p, struct linux_statfs_args *args) { @@ -233,7 +279,7 @@ if (error) return error; bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - linux_statfs_buf.ftype = bsd_statfs->f_type; + linux_statfs_buf.ftype = bsd_to_linux_ftype(bsd_statfs->f_type); linux_statfs_buf.fbsize = bsd_statfs->f_bsize; linux_statfs_buf.fblocks = bsd_statfs->f_blocks; linux_statfs_buf.fbfree = bsd_statfs->f_bfree; @@ -268,7 +314,7 @@ if (error) return error; bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - linux_statfs_buf.ftype = bsd_statfs->f_type; + linux_statfs_buf.ftype = bsd_to_linux_ftype(bsd_statfs->f_type); linux_statfs_buf.fbsize = bsd_statfs->f_bsize; linux_statfs_buf.fblocks = bsd_statfs->f_blocks; linux_statfs_buf.fbfree = bsd_statfs->f_bfree; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- After aplying this patch, some programs including vmware, don't be complained about unknown filesystem type. >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912112159.QAA00584>