mirror of https://github.com/vitalif/e2fsprogs
debugfs.c (internal_dump_inode): Display the major/minor device
numbers for block/character devices. (do_mknod): Add support for new-style device numbers (where the major or minor number is greater than 255 and less than 65535). (Addresses Sourceforge bug #865289)bitmap-optimize
parent
ed52f62bbd
commit
2d10769ec6
|
@ -1,3 +1,11 @@
|
||||||
|
2004-02-23 Theodore Ts'o <tytso@mit.edu>
|
||||||
|
|
||||||
|
* debugfs.c (internal_dump_inode): Display the major/minor device
|
||||||
|
numbers for block/character devices.
|
||||||
|
(do_mknod): Add support for new-style device numbers (where
|
||||||
|
the major or minor number is greater than 255 and less
|
||||||
|
than 65535). (Addresses Sourceforge bug #865289)
|
||||||
|
|
||||||
2004-02-21 Theodore Ts'o <tytso@mit.edu>
|
2004-02-21 Theodore Ts'o <tytso@mit.edu>
|
||||||
|
|
||||||
* debugfs.8.in: Fix the debugfs man page to reference the
|
* debugfs.8.in: Fix the debugfs man page to reference the
|
||||||
|
|
|
@ -459,6 +459,23 @@ void internal_dump_inode(FILE *out, const char *prefix,
|
||||||
if (LINUX_S_ISLNK(inode->i_mode) && ext2fs_inode_data_blocks(current_fs,inode) == 0)
|
if (LINUX_S_ISLNK(inode->i_mode) && ext2fs_inode_data_blocks(current_fs,inode) == 0)
|
||||||
fprintf(out, "%sFast_link_dest: %.*s\n", prefix,
|
fprintf(out, "%sFast_link_dest: %.*s\n", prefix,
|
||||||
(int) inode->i_size, (char *)inode->i_block);
|
(int) inode->i_size, (char *)inode->i_block);
|
||||||
|
else if (LINUX_S_ISBLK(inode->i_mode) || LINUX_S_ISCHR(inode->i_mode)) {
|
||||||
|
int major, minor;
|
||||||
|
const char *devnote;
|
||||||
|
|
||||||
|
if (inode->i_block[0]) {
|
||||||
|
major = (inode->i_block[0] >> 8) & 255;
|
||||||
|
minor = inode->i_block[0] & 255;
|
||||||
|
devnote = "";
|
||||||
|
} else {
|
||||||
|
major = (inode->i_block[1] & 0xfff00) >> 8;
|
||||||
|
minor = ((inode->i_block[1] & 0xff) |
|
||||||
|
((inode->i_block[1] >> 12) & 0xfff00));
|
||||||
|
devnote = "(New-style) ";
|
||||||
|
}
|
||||||
|
fprintf(out, "%sDevice major/minor number: %02d:%02d (hex %02x:%02x)\n",
|
||||||
|
devnote, major, minor, major, minor);
|
||||||
|
}
|
||||||
else if (do_dump_blocks)
|
else if (do_dump_blocks)
|
||||||
dump_blocks(out, prefix, inode_num);
|
dump_blocks(out, prefix, inode_num);
|
||||||
}
|
}
|
||||||
|
@ -1181,7 +1198,7 @@ void do_mknod(int argc, char *argv[])
|
||||||
if (nr == 5) {
|
if (nr == 5) {
|
||||||
major = strtoul(argv[3], argv+3, 0);
|
major = strtoul(argv[3], argv+3, 0);
|
||||||
minor = strtoul(argv[4], argv+4, 0);
|
minor = strtoul(argv[4], argv+4, 0);
|
||||||
if (major > 255 || minor > 255 || argv[3][0] || argv[4][0])
|
if (major > 65535 || minor > 65535 || argv[3][0] || argv[4][0])
|
||||||
nr = 0;
|
nr = 0;
|
||||||
}
|
}
|
||||||
if (argc != nr)
|
if (argc != nr)
|
||||||
|
@ -1215,7 +1232,13 @@ void do_mknod(int argc, char *argv[])
|
||||||
memset(&inode, 0, sizeof(inode));
|
memset(&inode, 0, sizeof(inode));
|
||||||
inode.i_mode = mode;
|
inode.i_mode = mode;
|
||||||
inode.i_atime = inode.i_ctime = inode.i_mtime = time(NULL);
|
inode.i_atime = inode.i_ctime = inode.i_mtime = time(NULL);
|
||||||
|
if ((major < 256) && (minor < 256)) {
|
||||||
inode.i_block[0] = major*256+minor;
|
inode.i_block[0] = major*256+minor;
|
||||||
|
inode.i_block[1] = 0;
|
||||||
|
} else {
|
||||||
|
inode.i_block[0] = 0;
|
||||||
|
inode.i_block[1] = (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
|
||||||
|
}
|
||||||
inode.i_links_count = 1;
|
inode.i_links_count = 1;
|
||||||
if (debugfs_write_inode(newfile, &inode, argv[0]))
|
if (debugfs_write_inode(newfile, &inode, argv[0]))
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue