* /sys/block/.../holders + number of partition */
int nslaves; /* # of devices this device maps to */
int maj, min; /* devno */
+ int discard; /* supports discard */
uint64_t size; /* device size */
};
break;
case COL_DALIGN:
p = sysfs_strdup(&cxt->sysfs, "discard_alignment");
- if (p)
+ if (cxt->discard && p)
tt_line_set_data(ln, col, p);
+ else
+ tt_line_set_data(ln, col, "0");
break;
case COL_DGRAN:
p = sysfs_strdup(&cxt->sysfs, "queue/discard_granularity");
break;
case COL_DMAX:
p = sysfs_strdup(&cxt->sysfs, "queue/discard_max_bytes");
-
if (!lsblk->bytes)
- p = size_to_human_string(atoi(p));
+ p = size_to_human_string(atol(p));
if (p)
tt_line_set_data(ln, col, p);
break;
case COL_DZERO:
p = sysfs_strdup(&cxt->sysfs, "queue/discard_zeroes_data");
- if (p)
+ if (cxt->discard && p)
tt_line_set_data(ln, col, p);
+ else
+ tt_line_set_data(ln, col, "0");
break;
};
}
cxt->min = minor(devno);
cxt->size = sysfs_read_u64(&cxt->sysfs, "size") << 9;
+ cxt->discard = sysfs_read_int(&cxt->sysfs, "queue/discard_granularity");
/* Ignore devices of zero size */
if (!lsblk->all_devices && cxt->size == 0)