blockdev: add --getsz to replace --getsize
function old new delta blockdev_main 255 273 +18 bdcommands 160 176 +16 packed_usage 28142 28107 -35 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 34/-35) Total: -1 bytes Signed-off-by: Dan Fandrich <dan@coneharvesters.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
5369563bf9
commit
f303bdd918
@ -26,7 +26,8 @@
|
|||||||
//usage: "\n --getss Get sector size"
|
//usage: "\n --getss Get sector size"
|
||||||
//usage: "\n --getbsz Get block size"
|
//usage: "\n --getbsz Get block size"
|
||||||
//usage: "\n --setbsz BYTES Set block size"
|
//usage: "\n --setbsz BYTES Set block size"
|
||||||
//usage: "\n --getsize Get device size in 512-byte sectors"
|
//usage: "\n --getsz Get device size in 512-byte sectors"
|
||||||
|
/*//usage: "\n --getsize Get device size in sectors (deprecated)"*/
|
||||||
//usage: "\n --getsize64 Get device size in bytes"
|
//usage: "\n --getsize64 Get device size in bytes"
|
||||||
//usage: "\n --flushbufs Flush buffers"
|
//usage: "\n --flushbufs Flush buffers"
|
||||||
//usage: "\n --rereadpt Reread partition table"
|
//usage: "\n --rereadpt Reread partition table"
|
||||||
@ -45,6 +46,7 @@ enum {
|
|||||||
|
|
||||||
FL_USRARG = 4, /* argument is provided by user */
|
FL_USRARG = 4, /* argument is provided by user */
|
||||||
FL_NORESULT = 8,
|
FL_NORESULT = 8,
|
||||||
|
FL_SCALE512 = 16,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bdc {
|
struct bdc {
|
||||||
@ -85,6 +87,11 @@ static const struct bdc bdcommands[] = {
|
|||||||
.name = "setbsz",
|
.name = "setbsz",
|
||||||
.flags = ARG_INT + FL_NORESULT + FL_USRARG,
|
.flags = ARG_INT + FL_NORESULT + FL_USRARG,
|
||||||
.argval = 0,
|
.argval = 0,
|
||||||
|
},{
|
||||||
|
.ioc = BLKGETSIZE64,
|
||||||
|
.name = "getsz",
|
||||||
|
.flags = ARG_U64 + FL_SCALE512,
|
||||||
|
.argval = -1,
|
||||||
},{
|
},{
|
||||||
.ioc = BLKGETSIZE,
|
.ioc = BLKGETSIZE,
|
||||||
.name = "getsize",
|
.name = "getsize",
|
||||||
@ -123,7 +130,7 @@ static const struct bdc *find_cmd(const char *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int blockdev_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int blockdev_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int blockdev_main(int argc, char **argv)
|
int blockdev_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
const struct bdc *bdcmd;
|
const struct bdc *bdcmd;
|
||||||
int fd;
|
int fd;
|
||||||
@ -134,18 +141,20 @@ int blockdev_main(int argc, char **argv)
|
|||||||
uint64_t u64;
|
uint64_t u64;
|
||||||
} ioctl_val_on_stack;
|
} ioctl_val_on_stack;
|
||||||
|
|
||||||
if ((unsigned)(argc - 3) > 1) /* must have 2 or 3 args */
|
argv++;
|
||||||
|
if (!argv[0] || !argv[1]) /* must have at least 2 args */
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
|
|
||||||
bdcmd = find_cmd(*++argv);
|
bdcmd = find_cmd(*argv);
|
||||||
|
|
||||||
u64 = (int)bdcmd->argval;
|
u64 = (int)bdcmd->argval;
|
||||||
if (bdcmd->flags & FL_USRARG)
|
if (bdcmd->flags & FL_USRARG)
|
||||||
u64 = xatoi_positive(*++argv);
|
u64 = xatoi_positive(*++argv);
|
||||||
|
|
||||||
if (!*++argv || argv[1])
|
argv++;
|
||||||
|
if (!argv[0] || argv[1])
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
fd = xopen(*argv, O_RDONLY);
|
fd = xopen(argv[0], O_RDONLY);
|
||||||
|
|
||||||
ioctl_val_on_stack.u64 = u64;
|
ioctl_val_on_stack.u64 = u64;
|
||||||
#if BB_BIG_ENDIAN
|
#if BB_BIG_ENDIAN
|
||||||
@ -173,6 +182,9 @@ int blockdev_main(int argc, char **argv)
|
|||||||
/* Fetch it into register(s) */
|
/* Fetch it into register(s) */
|
||||||
u64 = ioctl_val_on_stack.u64;
|
u64 = ioctl_val_on_stack.u64;
|
||||||
|
|
||||||
|
if (bdcmd->flags & FL_SCALE512)
|
||||||
|
u64 >>= 9;
|
||||||
|
|
||||||
/* Zero- or one-extend the value if needed, then print */
|
/* Zero- or one-extend the value if needed, then print */
|
||||||
switch (bdcmd->flags & (ARG_MASK+FL_NORESULT)) {
|
switch (bdcmd->flags & (ARG_MASK+FL_NORESULT)) {
|
||||||
case ARG_INT:
|
case ARG_INT:
|
||||||
|
Loading…
Reference in New Issue
Block a user