git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: make pci device driver loading passive, pci bus scanner will not load them...
[lunaix-os.git]
/
lunaix-os
/
kernel
/
fs
/
mount.c
diff --git
a/lunaix-os/kernel/fs/mount.c
b/lunaix-os/kernel/fs/mount.c
index 12e1d4b94c273acc87df26203f8ea96c2b611711..084a400a1993000a09f7a770fa844a3ec21f5927 100644
(file)
--- a/
lunaix-os/kernel/fs/mount.c
+++ b/
lunaix-os/kernel/fs/mount.c
@@
-137,7
+137,7
@@
vfs_mount_at(const char* fs_name,
return ENOTBLK;
}
return ENOTBLK;
}
- if (mnt_point->inode &&
!(mnt_point->inode->itype & VFS_IFDIR
)) {
+ if (mnt_point->inode &&
(mnt_point->inode->itype & F_MFILE
)) {
return ENOTDIR;
}
return ENOTDIR;
}
@@
-170,7
+170,7
@@
vfs_mount_at(const char* fs_name,
goto cleanup;
}
goto cleanup;
}
- kprintf("mount: dev=%s, fs=%s, mode=%d
\n
", dev_name, fs_name, options);
+ kprintf("mount: dev=%s, fs=%s, mode=%d", dev_name, fs_name, options);
mnt_point->mnt->flags = options;
} else {
mnt_point->mnt->flags = options;
} else {
@@
-180,11
+180,11
@@
vfs_mount_at(const char* fs_name,
return errno;
cleanup:
return errno;
cleanup:
-
kprintf(KERROR "mount: dev=%s, fs=%s, mode=%d, err=%d\n
",
-
dev_name,
-
fs_name,
-
options,
-
errno);
+
ERROR("mount: dev=%s, fs=%s, mode=%d, err=%d
",
+ dev_name,
+ fs_name,
+ options,
+ errno);
mnt_point->super_block = old_sb;
vfs_sb_free(sb);
return errno;
mnt_point->super_block = old_sb;
vfs_sb_free(sb);
return errno;
@@
-234,12
+234,11
@@
__DEFINE_LXSYSCALL4(int,
int,
options)
{
int,
options)
{
- struct v_dnode *dev
, *mnt
;
+ struct v_dnode *dev
= NULL, *mnt = NULL
;
int errno = 0;
int errno = 0;
- if ((errno = vfs_walk(__current->cwd, source, &dev, NULL, 0))) {
- goto done;
- }
+ // It is fine if source is not exist, as some mounting don't require it
+ vfs_walk(__current->cwd, source, &dev, NULL, 0);
if ((errno = vfs_walk(__current->cwd, target, &mnt, NULL, 0))) {
goto done;
if ((errno = vfs_walk(__current->cwd, target, &mnt, NULL, 0))) {
goto done;
@@
-252,11
+251,14
@@
__DEFINE_LXSYSCALL4(int,
// By our convention.
// XXX could we do better?
// By our convention.
// XXX could we do better?
- struct device* device =
(struct device*)dev->inode->data
;
+ struct device* device =
NULL
;
- if (!(dev->inode->itype & VFS_IFVOLDEV) || !device) {
- errno = ENOTDEV;
- goto done;
+ if (dev) {
+ if (!(dev->inode->itype & VFS_IFVOLDEV)) {
+ errno = ENOTDEV;
+ goto done;
+ }
+ device = (struct device*)dev->inode->data;
}
errno = vfs_mount_at(fstype, device, mnt, options);
}
errno = vfs_mount_at(fstype, device, mnt, options);