mount の修正 ― 2007年02月02日 13時00分18秒
それなら、use_mountprog
な内部で処理できるファイルシステム型を、把握していれば良い。
% cvs diff -u8
Index: mount.c
===================================================================
RCS file: /home/ncvs/src/sbin/mount/mount.c,v
retrieving revision 1.92
diff -u -u -8 -r1.92 mount.c
--- mount.c 14 Nov 2006 01:07:42 -0000 1.92
+++ mount.c 2 Feb 2007 02:18:27 -0000
@@ -128,28 +128,29 @@
use_mountprog(const char *vfstype)
{
/* XXX: We need to get away from implementing external mount
* programs for every filesystem, and move towards having
* each filesystem properly implement the nmount() system call.
*/
unsigned int i;
const char *fs[] = {
- "cd9660", "mfs", "msdosfs", "nfs", "nfs4", "ntfs",
- "nwfs", "nullfs", "portalfs", "smbfs", "udf", "umapfs",
- "unionfs",
+ "ufs",
+ "ext2fs",
+ "devfs", "fdescfs", "procfs", "linprocfs", "linsysfs",
+ "std",
NULL
};
for (i = 0; fs[i] != NULL; ++i) {
if (strcmp(vfstype, fs[i]) == 0)
- return (1);
+ return (0);
}
- return (0);
+ return (1);
}
static int
コードのなかのコメントからして、外部プログラムを呼ぶのを止めて、nmount システムコールで各種ファイルシステムのマウントを実装する方向らしい。
マウントする為の作業は、ユーザランドの mount または 外部 mount コマンドを通してシステムコールを呼び出す作業が一つ。そして、システムコールにより、特定のメモリ領域をユーザがアクセス出来るように、管理する作業に分かれる。ufs、msdosfs、ext2fs などを代表とするマウントに関する主な作業は、後者の作業が大部分を締める。新しいファイルシステムを実装する場合の大方の作業は、カーネル内になる。mdmfs/mount_md の様な実装は例外的といってもいいだろう。
そのような事を考慮すると、mount が nmount システムコールの橋渡しに徹っし、カーネル内部で全てを処理するのも悪くはないのかもしれない。
前回。
最近のコメント