aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorAlexander Viro <viro@www.linux.org.uk>2003-09-22 22:51:41 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-09-22 22:51:41 -0700
commit917bb5a16c06eab7404d58fdf016dbdd44967d69 (patch)
tree41f1e1c92fb34a68f5968468c714a17fa55a5fb1 /init
parent3136f2b12d2e7b251b55c06a73d9e96cbaa5d8c0 (diff)
downloadhistory-917bb5a16c06eab7404d58fdf016dbdd44967d69.tar.gz
[PATCH] prepare for 32-bit dev_t: mknod()/ustat()
Changed sys_mknod() prototype to have unsigned int passed to it instead of current dev_t. Added old_decode_dev() in sys_mknod() and made sure that its callers are passing it old_encode_dev(<value>) Switched sys_ustat() and its variants from dev_t to unsigned (and added old_decode_dev()). Took care of assignments to ROOT_DEV - again, old_decode_dev(). Late-boot search in devfs (call sys_newstat() and compare with st_rdev) also updated.
Diffstat (limited to 'init')
-rw-r--r--init/do_mounts.c8
-rw-r--r--init/do_mounts.h4
-rw-r--r--init/do_mounts_devfs.c4
-rw-r--r--init/do_mounts_initrd.c6
-rw-r--r--init/do_mounts_md.c2
-rw-r--r--init/initramfs.c6
6 files changed, 15 insertions, 15 deletions
diff --git a/init/do_mounts.c b/init/do_mounts.c
index f3812f4fc4f966..174a2b59e9f903 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -80,7 +80,7 @@ static dev_t __init try_name(char *name, int part)
/*
* Nope. Try old-style "0321"
*/
- res = (dev_t)simple_strtoul(buf, &s, 16);
+ res = old_decode_dev(simple_strtoul(buf, &s, 16));
if (*s)
goto fail;
}
@@ -107,7 +107,7 @@ static dev_t __init try_name(char *name, int part)
if (part < range)
return res + part;
fail:
- return (dev_t) 0;
+ return 0;
}
/*
@@ -146,7 +146,7 @@ dev_t name_to_dev_t(char *name)
if (sscanf(name, "%u:%u", &maj, &min) == 2) {
res = MKDEV(maj, min);
} else {
- res = (dev_t)simple_strtoul(name, &p, 16);
+ res = old_decode_dev(simple_strtoul(name, &p, 16));
if (*p)
goto fail;
}
@@ -187,7 +187,7 @@ out:
sys_rmdir("/sys");
return res;
fail:
- res = (dev_t) 0;
+ res = 0;
goto done;
}
diff --git a/init/do_mounts.h b/init/do_mounts.h
index b10b9654a2cda3..896a35e88b0cbd 100644
--- a/init/do_mounts.h
+++ b/init/do_mounts.h
@@ -10,7 +10,7 @@
#include <linux/root_dev.h>
asmlinkage long sys_unlink(const char *name);
-asmlinkage long sys_mknod(const char *name, int mode, dev_t dev);
+asmlinkage long sys_mknod(const char *name, int mode, unsigned dev);
asmlinkage long sys_newstat(char * filename, struct stat * statbuf);
asmlinkage long sys_ioctl(int fd, int cmd, unsigned long arg);
asmlinkage long sys_mkdir(const char *name, int mode);
@@ -43,7 +43,7 @@ static inline void umount_devfs(const char *path) {}
static inline int create_dev(char *name, dev_t dev, char *devfs_name)
{
sys_unlink(name);
- return sys_mknod(name, S_IFBLK|0600, dev);
+ return sys_mknod(name, S_IFBLK|0600, old_encode_dev(dev));
}
#endif
diff --git a/init/do_mounts_devfs.c b/init/do_mounts_devfs.c
index 652582658d280e..62823da6ab6b3d 100644
--- a/init/do_mounts_devfs.c
+++ b/init/do_mounts_devfs.c
@@ -78,7 +78,7 @@ static void * __init read_dir(char *path, int *len)
/*
* recursively scan <path>, looking for a device node of type <dev>
*/
-static int __init find_in_devfs(char *path, dev_t dev)
+static int __init find_in_devfs(char *path, unsigned dev)
{
struct stat buf;
char *end = path + strlen(path);
@@ -140,7 +140,7 @@ int __init create_dev(char *name, dev_t dev, char *devfs_name)
if (!dev)
return -1;
strcpy(path, "/dev");
- if (find_in_devfs(path, dev) < 0)
+ if (find_in_devfs(path, old_encode_dev(dev)) < 0)
return -1;
return sys_symlink(path + 5, name);
}
diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c
index 521e7f6aa78390..2dfa179de5f0d7 100644
--- a/init/do_mounts_initrd.c
+++ b/init/do_mounts_initrd.c
@@ -40,7 +40,7 @@ static void __init handle_initrd(void)
int error;
int i, pid;
- real_root_dev = ROOT_DEV;
+ real_root_dev = old_encode_dev(ROOT_DEV);
create_dev("/dev/root.old", Root_RAM0, NULL);
/* mount initrd on rootfs' /root */
mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY);
@@ -69,12 +69,12 @@ static void __init handle_initrd(void)
close(root_fd);
umount_devfs("/old/dev");
- if (real_root_dev == Root_RAM0) {
+ if (old_decode_dev(real_root_dev) == Root_RAM0) {
sys_chdir("/old");
return;
}
- ROOT_DEV = real_root_dev;
+ ROOT_DEV = old_decode_dev(real_root_dev);
mount_root();
printk(KERN_NOTICE "Trying to move old root to /initrd ... ");
diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
index a3444e771718fa..bb6dad2f82f091 100644
--- a/init/do_mounts_md.c
+++ b/init/do_mounts_md.c
@@ -136,7 +136,7 @@ static void __init md_setup_drive(void)
snprintf(comp_name, 63, "/dev/%s", devname);
if (sys_newstat(comp_name, &buf) == 0 &&
S_ISBLK(buf.st_mode))
- dev = buf.st_rdev;
+ dev = old_decode_dev(buf.st_rdev);
if (!dev) {
printk(KERN_WARNING "md: Unknown device name: %s\n", devname);
break;
diff --git a/init/initramfs.c b/init/initramfs.c
index 6aed40d0a3c503..2dc24eaedbc226 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -24,7 +24,7 @@ static void __init free(void *where)
}
asmlinkage long sys_mkdir(char *name, int mode);
-asmlinkage long sys_mknod(char *name, int mode, dev_t dev);
+asmlinkage long sys_mknod(char *name, int mode, unsigned dev);
asmlinkage long sys_symlink(char *old, char *new);
asmlinkage long sys_link(char *old, char *new);
asmlinkage long sys_write(int fd, const char *buf, size_t size);
@@ -92,7 +92,7 @@ static __initdata mode_t mode;
static __initdata unsigned long body_len, name_len;
static __initdata uid_t uid;
static __initdata gid_t gid;
-static __initdata dev_t rdev;
+static __initdata unsigned rdev;
static void __init parse_header(char *s)
{
@@ -113,7 +113,7 @@ static void __init parse_header(char *s)
body_len = parsed[6];
major = parsed[7];
minor = parsed[8];
- rdev = MKDEV(parsed[9], parsed[10]);
+ rdev = old_encode_dev(MKDEV(parsed[9], parsed[10]));
name_len = parsed[11];
}