diff options
author | Alexander Viro <viro@www.linux.org.uk> | 2003-09-22 22:51:41 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-09-22 22:51:41 -0700 |
commit | 917bb5a16c06eab7404d58fdf016dbdd44967d69 (patch) | |
tree | 41f1e1c92fb34a68f5968468c714a17fa55a5fb1 /init | |
parent | 3136f2b12d2e7b251b55c06a73d9e96cbaa5d8c0 (diff) | |
download | history-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.c | 8 | ||||
-rw-r--r-- | init/do_mounts.h | 4 | ||||
-rw-r--r-- | init/do_mounts_devfs.c | 4 | ||||
-rw-r--r-- | init/do_mounts_initrd.c | 6 | ||||
-rw-r--r-- | init/do_mounts_md.c | 2 | ||||
-rw-r--r-- | init/initramfs.c | 6 |
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]; } |