From owner-freebsd-emulation@FreeBSD.ORG Sun Jan 14 20:54:30 2007 Return-Path: X-Original-To: freebsd-emulation@freebsd.org Delivered-To: freebsd-emulation@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 23C3E16A412 for ; Sun, 14 Jan 2007 20:54:30 +0000 (UTC) (envelope-from swhetzel@gmail.com) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.232]) by mx1.freebsd.org (Postfix) with ESMTP id D307913C45B for ; Sun, 14 Jan 2007 20:54:29 +0000 (UTC) (envelope-from swhetzel@gmail.com) Received: by wr-out-0506.google.com with SMTP id i28so772257wra for ; Sun, 14 Jan 2007 12:54:29 -0800 (PST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=QPY6+XRwrRo9W4wMfgk8MR1lHxC4DfyvVro6PjP6/+0m/cUzz0LeD2FxHRqRaGauyfW1FIPm7lauIAG6PNSvD0IEQYazVbWVbR/P99OXz8FzBiI4nd5tjZ69SwDWFBghoudLR3NjjjDKpCQ9rSLPKPq8bBTTMuPEp3laWwtzdkE= Received: by 10.64.27.13 with SMTP id a13mr4434098qba.1168808068828; Sun, 14 Jan 2007 12:54:28 -0800 (PST) Received: by 10.65.189.7 with HTTP; Sun, 14 Jan 2007 12:54:28 -0800 (PST) Message-ID: <790a9fff0701141254s2c92b10ag6b042a019bc283c@mail.gmail.com> Date: Sun, 14 Jan 2007 14:54:28 -0600 From: "Scot Hetzel" To: "Divacky Roman" In-Reply-To: <20070114105239.GA6955@stud.fit.vutbr.cz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_34096_20425344.1168808068782" References: <790a9fff0701060012x40063f48pc842510b082df5a5@mail.gmail.com> <20070106130830.3c2e6d98@Magellan.Leidinger.net> <790a9fff0701132017g6c081567la4a759cea4618535@mail.gmail.com> <20070114105239.GA6955@stud.fit.vutbr.cz> Cc: Alexander Leidinger , freebsd-emulation@freebsd.org Subject: Re: linuxolator: proc/filesystems and sysfs function implementations X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 20:54:30 -0000 ------=_Part_34096_20425344.1168808068782 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 1/14/07, Divacky Roman wrote: > a few notes.. > > + switch (args->option) { > + /* > + * Translate the filesystem identifier string into a > + * filesystem type index. > + */ > + case 1: > > I'd use #define BAH 1. I know linux code uses 1,2,3 but we are not linux :) > Ok, I'll change them to GETFSIND, GETFSTYP, and GETNFSTYP, found them defined in a couple of other online man pages (sgi, HP-UX, ..) for sysfs. http://www.docs.hp.com/en/B9106-90009/sysfs.2.html > + if (error) { > + LFREEPATH(name); > > use free() here. the LFREEPATH is meant to be used with the LCONVPATH... > macros. > Wasn't sure, if I should use free or LFREEPATH, it's simple enough to change. > + if (!vfsp) > + return EINVAL; > > style - return (EINVAL); > Missed that one, will make the change. > + buf = (char *)(uintptr_t)args->arg2; : > + bsd_to_linux_fs(vfsp->vfc_name, &fs); > + len = strlen(fs.name) + 1; > + error = copyout(fs.name, buf, len); > > no need to check if it fits in the userspace buffer? also you > dont check return value > According to the linux man page, there isn't a way to check the size of buf, as we are only passed the value of the pointer in args->arg2. Should I replace buf with (char *)(uintptr_t)args->arg2 in the copyout, since it is only used there. http://www.die.net/doc/linux/man/man2/sysfs.2.html I didn't check the return value, as error is going to be set to either 0 or EFAULT by the copyout function. Since it's the end of the case, it falls thru to the return statement at the bottom of the function. > + break; > + > + /* > + * Return the total number of file system types currently present > + * in the kernel. > + */ > + case 3: > + TAILQ_FOREACH(vfsp, &vfsconf, vfc_list) > + index++; > + td->td_retval[0] = index; > > does this make sense? shouldnt we return just the number of filesystems > that we share with linux? > There are only 7 filesystems that are freebsd specific (devfs, fdescfs, mfs, nullfs, portalfs, procfs (bsd), unionfs). If we exclude these filesystems, then we would need to ensure that we skip them in the other two options. The way that it is currently emulated, is that all freebsd filesystems (kldloaded filesystems) are available to the linuxolator. > + break; > + default: > + error = EINVAL; > + } > + return (error); > +} > Index: compat/linux/linux_util.c > =================================================================== > RCS file: /home/ncvs/src/sys/compat/linux/linux_util.c,v > retrieving revision 1.31 > diff -u -r1.31 linux_util.c > --- compat/linux/linux_util.c 15 Aug 2006 12:54:29 -0000 1.31 > +++ compat/linux/linux_util.c 14 Jan 2007 02:11:08 -0000 > @@ -224,3 +224,82 @@ > > return (EINVAL); > } > + > +void > +bsd_to_linux_fs(char *name, struct linux_file_system_type *fs) > +{ > +#define L_NODEV(fname) \ > + if (strcmp(fname, name) == 0) \ > + fs->fs_flags = 0; > +#define F2L_NAME(fname, lname) \ > + if (strcmp(fname, name) == 0) \ > + strcpy(fs->name, lname); > + > + L_NODEV("9p") > + else L_NODEV("afs") > + else L_NODEV("autofs") > + else L_NODEV("cifs") > + else L_NODEV("coda") > + else L_NODEV("configfs") > + else L_NODEV("debugfs") > + else L_NODEV("devfs") > + else L_NODEV("devpts") > + else L_NODEV("fdescfs") > + else L_NODEV("fuse") > + else L_NODEV("hostfs") > + else L_NODEV("hppfs") > + else L_NODEV("hugetlbfs") > + else L_NODEV("jffs2") > + else L_NODEV("mfs") > + else L_NODEV("ncpfs") > + else L_NODEV("nfs") > + else L_NODEV("nfs4") > + else L_NODEV("nfsd") > + else L_NODEV("nullfs") > + else L_NODEV("openpromfs") > + else L_NODEV("portalfs") > + else L_NODEV("procfs") > + else L_NODEV("linprocfs") > + else L_NODEV("ramfs") > + else L_NODEV("rootfs") > + else L_NODEV("smbfs") > + else L_NODEV("linsysfs") > + else L_NODEV("unionfs") > + else > + fs->fs_flags = 1; /* FS_REQUIRES_DEV */ > + > + F2L_NAME("ext2fs", "ext2") > + else F2L_NAME("cd9660", "iso9660") > + else F2L_NAME("msdosfs", "msdos") > + else F2L_NAME("procfs", "bsdprocfs") > + else F2L_NAME("linprocfs", "proc") > + else F2L_NAME("linsysfs", "sysfs") > + else F2L_NAME("ffs", "ufs") > + else > + strcpy(fs->name, name); > +#undef L_NODEV > +#undef F2L_NAME > > man, this is ugly :) cant you come up with some translation table or something? > I had created a table (see attached linux.fs), but wasn't sure how to parse it, or how to keep it up todate as more filesystems are added. > also... you strcpy string to another string, are you sure it always fits? how do you > asure that? > name can't be larger than MFSNAMELEN, and sizeof(fs->name) == MFSNAMELEN. > RCS file: /home/ncvs/src/sys/compat/linux/linux_util.h,v > retrieving revision 1.28 > diff -u -r1.28 linux_util.h > --- compat/linux/linux_util.h 27 Jun 2006 18:30:49 -0000 1.28 > +++ compat/linux/linux_util.h 14 Jan 2007 02:08:42 -0000 > @@ -101,4 +101,12 @@ > char *linux_get_char_devices(void); > void linux_free_get_char_devices(char *string); > > +struct linux_file_system_type { > + char name[16]; > + int fs_flags; > +}; > > 16? why 16? please comment or something > 16 is the value of MFSNAMELEN and used by the vfsconf struct to define the max size of vfc_name. I kept name (in the linux_file_system_type struct) the same size, so that we didn't have to worry about the size when using strcpy. I also wasn't sure if I should add: #include in linux_util.h so that MFSNAMELEN could be used to define the size of name in the struct (it may also affect other files, that include linux_util.h). Scot -- DISCLAIMER: No electrons were mamed while sending this message. Only slightly bruised. ------=_Part_34096_20425344.1168808068782 Content-Type: text/plain; name=linux.fs; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ewxubaua Content-Disposition: attachment; filename="linux.fs" CmxfbmFtZQkJZl9uYW1lCQlrX21vZHVsZSwJZmxhZ3MJCQlkZXNjcmlwdGlvbgoiOXAiLAkJTlVM TCwJCU5VTEwsCQlOVUxMLAkJCSJQbGFuIDkgRmlsZXN5c3RlbSIsCiJhZGZzIiwJCU5VTEwsCQlO VUxMLAkJRlNfUkVRVUlSRVNfREVWLAkiIiwKImFmZnMiLAkJTlVMTCwJCU5VTEwsCQlGU19SRVFV SVJFU19ERVYsCSJBbWlnYSBGaWxlc3lzdGVtIiwKImFmcyIsCQlOVUxMLAkJTlVMTCwJCUZTX0JJ TkFSWV9NT1VOVERBVEEsCSJBRlMgQ2xpZW50IEZpbGVzeXN0ZW0iLAoiYXV0b2ZzIiwJTlVMTCwJ CU5VTEwsCQlOVUxMLAkJCSJBdXRvIEZpbGVzeXN0ZW0iLAoiYmVmcyIsCQlOVUxMLAkJTlVMTCwJ CUZTX1JFUVVJUkVTX0RFViwJIkJlT1MgRmlsZXN5c3RlbSAoQmVGUykiLAoiYmZzIiwJCU5VTEws CQlOVUxMLAkJRlNfUkVRVUlSRVNfREVWLAkiU0NPIFVuaXhXYXJlIEJGUyBGaWxlc3lzdGVtIiwK ImNpZnMiCQlOVUxMLAkJTlVMTCwJCU5VTEwsCQkJIlNOSUEgQ0lGUyBGaWxlc3lzdGVtIiwKImNv ZGEiLAkJTlVMTCwJCU5VTEwsCQlGU19CSU5BUllfTU9VTlREQVRBLAkiIiwKImNvbmZpZ2ZzIglO VUxMLAkJTlVMTCwJCU5VTEwsCQkJIlNpbXBsZSBSQU0gRmlsZXN5c3RlbSBmb3IgdXNlciBkcml2 ZW4ga2VybmVsIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLiIsCiJjcmFtZnMiLAlOVUxMLAkJTlVM TCwJCUZTX1JFUVVJUkVTX0RFViwJIkNvbXByZXNzZWQgUk9NIEZpbGVzeXN0ZW0iLAoiZGVidWdm cyIsCU5VTEwsCQlOVUxMLAkJTlVMTCwJCQkiIiwKTlVMTCwJCSJkZXZmcyIsCSJkZXZmcyIsCU5V TEwsCQkJIkZyZWVCU0QgRGV2aWNlIEZpbGVzeXN0ZW0iLAoiZGV2cHRzIiwJTlVMTCwJCU5VTEwJ CU5VTEwsLAkJCSIiLAoiZWZzIiwJCU5VTEwsCQlOVUxMLAkJRlNfUkVRVUlSRVNfREVWLAkiIiwK ImV4dDIiLAkJImV4dDJmcyIsCSJleHQyZnMiLAlGU19SRVFVSVJFU19ERVYsCSJTZWNvbmQgRXh0 ZW5kZWQgRmlsZXN5c3RlbSIsCiJleHQzIiwJCSJleHQyZnMiLAkiZXh0MmZzIiwJRlNfUkVRVUlS RVNfREVWLAkiU2Vjb25kIEV4dGVuZGVkIEZpbGVzeXN0ZW0gd2l0aCBKb3VybmFsaW5nIiwKTlVM TCwJCSJmZGVzY2ZzIiwJImZkZXNjZnMiLAlOVUxMLAkJCSJGcmVlQlNEIEZpbGUgRGVzY3JpcHRv ciBGaWxlc3lzdGVtIiwKImZ1c2UiCQlOVUxMLAkJTlVMTCwJCU5VTEwsCQkJIkZpbGVzeXN0ZW0g aW4gVXNlcnNwYWNlIiwKImhmcyIsCQlOVUxMLAkJTlVMTCwJCUZTX1JFUVVJUkVTX0RFViwJIk1h Y2ludG9zaCBGaWxlc3lzdGVtIiwKImhmc3BsdXMiCU5VTEwsCQlOVUxMLAkJRlNfUkVRVUlSRVNf REVWLAkiRXh0ZW5kZWQgTWFjaW50b3NoIEZpbGVzeXN0ZW0iLAoiaG9zdGZzIglOVUxMLAkJTlVM TCwJCU5VTEwsCQkJIiIsCiJocGZzIiwJCU5VTEwsCQlOVUxMLAkJRlNfUkVRVUlSRVNfREVWLAki IiwKImhwcGZzIiwJTlVMTCwJCU5VTEwsCQlOVUxMLAkJCSIiLAoiaHVnZXRsYmZzIiwJTlVMTCwJ CU5VTEwsCQlOVUxMLAkJCSIiLAoiaXNvOTY2MCIsCSJjZDk2NjAiLAkiY2Q5NjYwIiwJRlNfUkVR VUlSRVNfREVWLAkiIiwKImpmZnMiLAkJTlVMTCwJCU5VTEwsCQlGU19SRVFVSVJFU19ERVYsCSJK b3VybmFsbGluZyBGbGFzaCBGaWxlc3lzdGVtIiwKImpmZnMyIiwJTlVMTCwJCU5VTEwsCQlOVUxM LAkJCSJUaGUgSm91cm5hbGxpbmcgRmxhc2ggRmlsZXN5c3RlbSwgdjIiLAoiamZzIiwJCU5VTEws CQlOVUxMLAkJRlNfUkVRVUlSRVNfREVWLAkiVGhlIEpvdXJuYWxlZCBGaWxlc3lzdGVtIChKRlMp IiwKTlVMTCwJCSJtZnMiCQkiZ19tZCIsCQlOVUxMLAkJCSJGcmVlQlNEIE1lbW9yeSBGaWxlc3lz dGVtIiwKIm1pbml4IiwJTlVMTCwJCU5VTEwsCQlGU19SRVFVSVJFU19ERVYsCSIiLAoibXNkb3Mi LAkibXNkb3NmcyIsCSJtc2Rvc2ZzIiwJRlNfUkVRVUlSRVNfREVWLAkiTVMtRE9TIGZpbGVzeXN0 ZW0gc3VwcG9ydCIsCiJuY3BmcyIsCU5VTEwsCQlOVUxMLAkJTlVMTCwJCQkiIiwKIm5mcyIsCQki bmZzIiwJCSJuZnMiLAkJRlNfT0REX1JFTkFNRXxGU19SRVZBTF9ET1R8RlNfQklOQVJZX01PVU5U REFUQSwJIiIsCiJuZnM0IiwJCSJuZnM0IiwJCSJuZnM0IiwJCUZTX09ERF9SRU5BTUV8RlNfUkVW QUxfRE9UfEZTX0JJTkFSWV9NT1VOVERBVEEsCSIiLAoibmZzZCIsCQlOVUxMLAkJTlVMTCwJCU5V TEwsCQkJIiIsCiJudGZzIgkJIm50ZnMiLAkJIm50ZnMiLAkJRlNfUkVRVUlSRVNfREVWLAkiTlRG UyAxLjIvMy54IGRyaXZlciAtIENvcHlyaWdodCAoYykgMjAwMS0yMDA2IEFudG9uIEFsdGFwYXJt YWtvdiIsCk5VTEwsCQkibnVsbGZzIiwJIm51bGxmcyIJTlVMTCwJCQkiRnJlZUJTRCBOdWxsIEZp bGVzeXN0ZW0iLAoib2NmczIiCQlOVUxMLAkJTlVMTCwJCUZTX1JFUVVJUkVTX0RFViwJIk9DRlMy IDEuMy4zIiwKIm9wZW5wcm9tZnMiLAlOVUxMLAkJTlVMTCwJCU5VTEwsCQkJIiIsCk5VTEwsCQki cG9ydGFsZnMiLAkicG9ydGFsZnMiLAlOVUxMLAkJCSJGcmVlQlNEIFBvcnRhbCBGaWxlc3lzdGVt IiwKTlVMTCwJCSJwcm9jZnMiLAkicHJvY2ZzIiwJTlVMTCwJCQkiRnJlZUJTRCBQcm9jZXNzIEZp bGVzeXN0ZW0iLAoicHJvYyIsCQkibGlucHJvY2ZzIiwJImxpbnByb2NmcyIsCU5VTEwsCQkJIkxp bnV4IFByb2Nlc3MgRmlsZXN5c3RlbSIsCiJxbng0IiwJCU5VTEwsCQlOVUxMLAkJRlNfUkVRVUlS RVNfREVWLAkiUU5YNCBmaWxlIHN5c3RlbSIsCiJyYW1mcyIsCU5VTEwsCQlOVUxMLAkJTlVMTCwJ CQkiUmVzaXphYmxlIHNpbXBsZSBSQU0gRmlsZXN5c3RlbSIsCiJyb290ZnMiLAlOVUxMLAkJTlVM TCwJCU5VTEwsCQkJIiIsCiJyZWlzZXJmcyIsCSJyZWlzZXJmcyIsCSJyZWlzZXJmcyIsCUZTX1JF UVVJUkVTX0RFViwJIlJlaXNlckZTIEpvdXJuYWxlZCBGaWxlc3lzdGVtIiwKInJvbWZzIgkJTlVM TCwJCU5VTEwsCQlGU19SRVFVSVJFU19ERVYsCSJST01GUyBGaWxlc3lzdGVtIiwKInNtYmZzIiwJ InNtYmZzIiwJInNtYmZzIiwJRlNfQklOQVJZX01PVU5UREFUQSwJIiIsCiJzeXNmcyIsCSJsaW5z eXNmcyIsCSJsaW5zeXNmcyIsCU5VTEwsCQkJIkxpbnV4IFN5c3RlbSBGaWxlc3lzdGVtIiwKInN5 c3YiLAkJTlVMTCwJCU5VTEwsCQlGU19SRVFVSVJFU19ERVYsCSIiLAoidjciLAkJTlVMTCwJCU5V TEwsCQlGU19SRVFVSVJFU19ERVYsCSIiLAoidWRmIgkJInVkZiIsCQkidWRmIiwJCUZTX1JFUVVJ UkVTX0RFViwJIlVuaXZlcnNhbCBEaXNrIEZvcm1hdCBGaWxlc3lzdGVtIiwKTlVMTCwJCSJmZnMi LAkJInVmcyIsCQlGU19SRVFVSVJFU19ERVYsCSJCZXJrZWxleSBGYXN0IEZpbGVzeXN0ZW0iLAoi dWZzIiwJCSJ1ZnMiLAkJInVmcyIsCQlGU19SRVFVSVJFU19ERVYsCSJCZXJrZWxleSBGYXN0IEZp bGVzeXN0ZW0iLApOVUxMLAkJInVuaW9uZnMiLAkidW5pb25mcyIJTlVMTCwJCQkiRnJlZUJTRCBV bmlvbiBGaWxlc3lzdGVtIiwKInZmYXQiLAkJIm1zZG9zZnMiLAkibXNkb3NmcyIsCUZTX1JFUVVJ UkVTX0RFViwJIlZGQVQgRmlsZXN5c3RlbSIsCiJ2eGZzIiwJCU5VTEwsCQlOVUxMLAkJRlNfUkVR VUlSRVNfREVWLAkiVmVyaXRhcyBGaWxlc3lzdGVtIChWeEZTKSBkcml2ZXIiLAoieGZzIiwJCSJ4 ZnMiLAkJInhmcyIsCQlGU19SRVFVSVJFU19ERVYsCSJTR0kgWEZTIiwKTlVMTCwJCSJ6ZnMiCQki emZzIgkJRlNfUkVRVUlSRVNfREVWLAkiU29sYXJpcyBaZXR0YWJ5dGUgRmlsZSBTeXN0ZW0i ------=_Part_34096_20425344.1168808068782--