summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/blkdev.h3
-rw-r--r--lib/blkdev.c12
2 files changed, 15 insertions, 0 deletions
diff --git a/include/blkdev.h b/include/blkdev.h
index b6c46edde..6a641723f 100644
--- a/include/blkdev.h
+++ b/include/blkdev.h
@@ -92,4 +92,7 @@ int blkdev_get_sectors(int fd, unsigned long long *sectors);
/* get hardware sector size */
int blkdev_get_sector_size(int fd, int *sector_size);
+/* specifies whether or not the device is misaligned */
+int blkdev_is_misaligned(int fd);
+
#endif /* BLKDEV_H */
diff --git a/lib/blkdev.c b/lib/blkdev.c
index 0c27a6df9..fb69e88b5 100644
--- a/lib/blkdev.c
+++ b/lib/blkdev.c
@@ -205,6 +205,18 @@ blkdev_get_sector_size(int fd, int *sector_size)
}
+/*
+ * Return the alignment status of a device
+ */
+int blkdev_is_misaligned(int fd)
+{
+ int aligned;
+
+ if (ioctl(fd, BLKALIGNOFF, &aligned) < 0)
+ return 0; /* probably kernel < 2.6.32 */
+ return aligned;
+}
+
#ifdef TEST_PROGRAM
#include <stdio.h>
#include <stdlib.h>