mkfs_minix: use get_volume_size_in_bytes instead of local version
No binary (build failed)
—
(log yok)
| @@ -196,54 +196,6 @@ static void minix_clrbit(char *a, unsigned i) | |
| # define BLKGETSIZE _IO(0x12,96) /* return device size */ | |
| #endif | |
| - | |
| - | static long valid_offset(int fd, int offset) |
| - | { |
| - | char ch; |
| - | |
| - | if (lseek(fd, offset, SEEK_SET) < 0) |
| - | return 0; |
| - | if (read(fd, &ch, 1) < 1) |
| - | return 0; |
| - | return 1; |
| - | } |
| - | |
| - | static int count_blocks(int fd) |
| - | { |
| - | int high, low; |
| - | |
| - | low = 0; |
| - | for (high = 1; valid_offset(fd, high); high *= 2) |
| - | low = high; |
| - | |
| - | while (low < high - 1) { |
| - | const int mid = (low + high) / 2; |
| - | |
| - | if (valid_offset(fd, mid)) |
| - | low = mid; |
| - | else |
| - | high = mid; |
| - | } |
| - | valid_offset(fd, 0); |
| - | return (low + 1); |
| - | } |
| - | |
| - | static int get_size(const char *file) |
| - | { |
| - | int fd; |
| - | long size; |
| - | |
| - | fd = xopen(file, O_RDWR); |
| - | if (ioctl(fd, BLKGETSIZE, &size) >= 0) { |
| - | close(fd); |
| - | return (size * 512); |
| - | } |
| - | |
| - | size = count_blocks(fd); |
| - | close(fd); |
| - | return size; |
| - | } |
| - | |
| static void write_tables(void) | |
| { | |
| /* Mark the superblock valid. */ | |
| @@ -636,7 +588,6 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) | |
| { | |
| unsigned opt; | |
| char *tmp; | |
| - | struct stat statbuf; |
| char *str_i; | |
| char *listfile = NULL; | |
| @@ -673,13 +624,17 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) | |
| #endif | |
| } | |
| - | G.device_name = *argv++; |
| + | G.device_name = argv[0]; |
| if (!G.device_name) | |
| bb_show_usage(); | |
| - | if (*argv) |
| - | G.total_blocks = xatou32(*argv); |
| - | else |
| - | G.total_blocks = get_size(G.device_name) / 1024; |
| + | |
| + | /* Check if it is mounted */ |
| + | if (find_mount_point(G.device_name, 0)) |
| + | bb_error_msg_and_die("can't format mounted filesystem"); |
| + | |
| + | xmove_fd(xopen(G.device_name, O_RDWR), dev_fd); |
| + | |
| + | G.total_blocks = get_volume_size_in_bytes(dev_fd, argv[1], 1024, /*extend:*/ 1) / 1024; |
| if (G.total_blocks < 10) | |
| bb_error_msg_and_die("must have at least 10 blocks"); | |
| @@ -690,25 +645,21 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) | |
| G.magic = MINIX2_SUPER_MAGIC; | |
| } else if (G.total_blocks > 65535) | |
| G.total_blocks = 65535; | |
| - | |
| - | /* Check if it is mounted */ |
| - | if (find_mount_point(G.device_name, 0)) |
| - | bb_error_msg_and_die("can't format mounted filesystem"); |
| - | |
| - | xmove_fd(xopen(G.device_name, O_RDWR), dev_fd); |
| + | #if 0 |
| + | struct stat statbuf; |
| xfstat(dev_fd, &statbuf, G.device_name); | |
| + | /* why? */ |
| if (!S_ISBLK(statbuf.st_mode)) | |
| opt &= ~1; // clear -c (check) | |
| - | |
| + | #if 0 |
| /* I don't know why someone has special code to prevent mkfs.minix | |
| * on IDE devices. Why IDE but not SCSI, etc?... */ | |
| - | #if 0 |
| else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) | |
| /* what is this? */ | |
| bb_error_msg_and_die("will not try " | |
| "to make filesystem on '%s'", G.device_name); | |
| #endif | |
| - | |
| + | #endif |
| tmp = G.root_block; | |
| *(short *) tmp = 1; | |
| strcpy(tmp + 2, "."); | |