mirror of
https://github.com/sheumann/hush.git
synced 2024-12-21 23:29:34 +00:00
hdparm: do not lie about supporting -q (quiet)
hdparm: interpret_standby() shrink hdparm: make HDIO_GET/SET_QDMA #ifdef more complete (by Joe Krahn <krahn AT niehs.nih.gov>) function old new delta packed_usage 23798 23776 -22 process_dev 5342 5315 -27
This commit is contained in:
parent
0f3a580c4f
commit
3c96d0258c
@ -1415,7 +1415,7 @@
|
|||||||
"\n -n Get/set ignore-write-errors flag (0/1)" \
|
"\n -n Get/set ignore-write-errors flag (0/1)" \
|
||||||
"\n -p Set PIO mode on IDE interface chipset (0,1,2,3,4,...)" \
|
"\n -p Set PIO mode on IDE interface chipset (0,1,2,3,4,...)" \
|
||||||
"\n -P Set drive prefetch count" \
|
"\n -P Set drive prefetch count" \
|
||||||
"\n -q Change next setting quietly" \
|
/* "\n -q Change next setting quietly" - not supported ib bbox */ \
|
||||||
"\n -Q Get/set DMA tagged-queuing depth (if supported)" \
|
"\n -Q Get/set DMA tagged-queuing depth (if supported)" \
|
||||||
"\n -r Get/set readonly flag (DANGEROUS to set)" \
|
"\n -r Get/set readonly flag (DANGEROUS to set)" \
|
||||||
USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( \
|
USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( \
|
||||||
|
@ -245,7 +245,12 @@ struct globals {
|
|||||||
smallint set_readonly, get_readonly;
|
smallint set_readonly, get_readonly;
|
||||||
smallint set_unmask, get_unmask;
|
smallint set_unmask, get_unmask;
|
||||||
smallint set_mult, get_mult;
|
smallint set_mult, get_mult;
|
||||||
smallint set_dma_q, get_dma_q;
|
#ifdef HDIO_GET_QDMA
|
||||||
|
smallint get_dma_q;
|
||||||
|
#ifdef HDIO_SET_QDMA
|
||||||
|
smallint set_dma_q;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
smallint set_nowerr, get_nowerr;
|
smallint set_nowerr, get_nowerr;
|
||||||
smallint set_keep, get_keep;
|
smallint set_keep, get_keep;
|
||||||
smallint set_io32bit, get_io32bit;
|
smallint set_io32bit, get_io32bit;
|
||||||
@ -254,7 +259,9 @@ struct globals {
|
|||||||
unsigned long readonly;
|
unsigned long readonly;
|
||||||
unsigned long unmask;
|
unsigned long unmask;
|
||||||
unsigned long mult;
|
unsigned long mult;
|
||||||
|
#ifdef HDIO_SET_QDMA
|
||||||
unsigned long dma_q;
|
unsigned long dma_q;
|
||||||
|
#endif
|
||||||
unsigned long nowerr;
|
unsigned long nowerr;
|
||||||
unsigned long keep;
|
unsigned long keep;
|
||||||
unsigned long io32bit;
|
unsigned long io32bit;
|
||||||
@ -278,7 +285,7 @@ struct globals {
|
|||||||
smallint set_apmmode, get_apmmode;
|
smallint set_apmmode, get_apmmode;
|
||||||
int xfermode_requested;
|
int xfermode_requested;
|
||||||
unsigned long dkeep;
|
unsigned long dkeep;
|
||||||
unsigned long standby_requested;
|
unsigned long standby_requested; /* 0..255 */
|
||||||
unsigned long lookahead;
|
unsigned long lookahead;
|
||||||
unsigned long prefetch;
|
unsigned long prefetch;
|
||||||
unsigned long defects;
|
unsigned long defects;
|
||||||
@ -1444,29 +1451,22 @@ static void bus_state_value(unsigned value)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HDIO_DRIVE_CMD
|
#ifdef HDIO_DRIVE_CMD
|
||||||
static void interpret_standby(unsigned standby)
|
static void interpret_standby(uint8_t standby)
|
||||||
{
|
{
|
||||||
unsigned t;
|
|
||||||
|
|
||||||
printf(" (");
|
printf(" (");
|
||||||
if (standby == 0)
|
if (standby == 0) {
|
||||||
printf("off");
|
printf("off");
|
||||||
else if (standby == 252)
|
} else if (standby <= 240 || standby == 252 || standby == 255) {
|
||||||
printf("21 minutes");
|
/* standby is in 5 sec units */
|
||||||
else if (standby == 253)
|
printf("%u minutes %u seconds", standby / 12, (standby*5) % 60);
|
||||||
printf("vendor-specific");
|
|
||||||
else if (standby == 254)
|
|
||||||
printf("reserved");
|
|
||||||
else if (standby == 255)
|
|
||||||
printf("21 minutes + 15 seconds");
|
|
||||||
else if (standby <= 240) {
|
|
||||||
t = standby * 5;
|
|
||||||
printf("%u minutes + %u seconds", t / 60, t % 60);
|
|
||||||
} else if (standby <= 251) {
|
} else if (standby <= 251) {
|
||||||
t = (standby - 240) * 30;
|
unsigned t = (standby - 240); /* t is in 30 min units */;
|
||||||
printf("%u hours + %u minutes", t / 60, t % 60);
|
printf("%u.%c hours", t / 2, (t & 1) ? '0' : '5');
|
||||||
} else
|
}
|
||||||
printf("illegal value");
|
if (standby == 253)
|
||||||
|
printf("vendor-specific");
|
||||||
|
if (standby == 254)
|
||||||
|
printf("reserved");
|
||||||
printf(")\n");
|
printf(")\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1604,10 +1604,12 @@ static void process_dev(char *devname)
|
|||||||
ioctl_or_warn(fd, HDIO_SET_DMA, (int *)dma);
|
ioctl_or_warn(fd, HDIO_SET_DMA, (int *)dma);
|
||||||
}
|
}
|
||||||
#endif /* FEATURE_HDPARM_HDIO_GETSET_DMA */
|
#endif /* FEATURE_HDPARM_HDIO_GETSET_DMA */
|
||||||
|
#ifdef HDIO_SET_QDMA
|
||||||
if (set_dma_q) {
|
if (set_dma_q) {
|
||||||
print_flag_on_off(get_dma_q, "DMA queue_depth", dma_q);
|
print_flag_on_off(get_dma_q, "DMA queue_depth", dma_q);
|
||||||
ioctl_or_warn(fd, HDIO_SET_QDMA, (int *)dma_q);
|
ioctl_or_warn(fd, HDIO_SET_QDMA, (int *)dma_q);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (set_nowerr) {
|
if (set_nowerr) {
|
||||||
print_flag_on_off(get_nowerr, "nowerr", nowerr);
|
print_flag_on_off(get_nowerr, "nowerr", nowerr);
|
||||||
ioctl_or_warn(fd, HDIO_SET_NOWERR, (int *)nowerr);
|
ioctl_or_warn(fd, HDIO_SET_NOWERR, (int *)nowerr);
|
||||||
@ -1780,10 +1782,12 @@ static void process_dev(char *devname)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HDIO_GET_QDMA
|
||||||
if (get_dma_q) {
|
if (get_dma_q) {
|
||||||
if(!ioctl_or_warn(fd, HDIO_GET_QDMA, &parm))
|
if(!ioctl_or_warn(fd, HDIO_GET_QDMA, &parm))
|
||||||
print_value_on_off("queue_depth", parm);
|
print_value_on_off("queue_depth", parm);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (get_keep) {
|
if (get_keep) {
|
||||||
if(!ioctl_or_warn(fd, HDIO_GET_KEEPSETTINGS, &parm))
|
if(!ioctl_or_warn(fd, HDIO_GET_KEEPSETTINGS, &parm))
|
||||||
print_value_on_off("keepsettings", parm);
|
print_value_on_off("keepsettings", parm);
|
||||||
@ -2007,7 +2011,7 @@ int hdparm_main(int argc, char **argv)
|
|||||||
do_flush |= do_timings |= (c == 't');
|
do_flush |= do_timings |= (c == 't');
|
||||||
do_flush |= do_ctimings |= (c == 'T');
|
do_flush |= do_ctimings |= (c == 'T');
|
||||||
#ifdef HDIO_DRIVE_CMD
|
#ifdef HDIO_DRIVE_CMD
|
||||||
if (c == 'S') parse_opts(&get_standby, &set_standby, &standby_requested, 0, INT_MAX);
|
if (c == 'S') parse_opts(&get_standby, &set_standby, &standby_requested, 0, 255);
|
||||||
if (c == 'D') parse_opts(&get_defects, &set_defects, &defects, 0, INT_MAX);
|
if (c == 'D') parse_opts(&get_defects, &set_defects, &defects, 0, INT_MAX);
|
||||||
if (c == 'P') parse_opts(&get_prefetch, &set_prefetch, &prefetch, 0, INT_MAX);
|
if (c == 'P') parse_opts(&get_prefetch, &set_prefetch, &prefetch, 0, INT_MAX);
|
||||||
parse_xfermode((c == 'X'), &get_xfermode, &set_xfermode, &xfermode_requested);
|
parse_xfermode((c == 'X'), &get_xfermode, &set_xfermode, &xfermode_requested);
|
||||||
|
Loading…
Reference in New Issue
Block a user