summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/blkdev.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/blkdev.c b/lib/blkdev.c
index 824a87c40..aa323f218 100644
--- a/lib/blkdev.c
+++ b/lib/blkdev.c
@@ -138,6 +138,15 @@ blkdev_get_size(int fd, unsigned long long *bytes)
}
#endif /* HAVE_SYS_DISKLABEL_H */
+ {
+ struct stat st;
+
+ if (fstat(fd, &st) == 0 && S_ISREG(st.st_mode)) {
+ *bytes = st.st_size;
+ return 0;
+ }
+ }
+
*bytes = blkdev_find_size(fd);
return 0;
}