http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html :
The <sys/stat.h> header shall define the structure of the data returned by the fstat(), lstat(), and stat() functions. The <sys/stat.h> header shall define the stat structure, which shall include at least the following members: [...] dev_t st_dev Device ID of device containing file. [...] dev_t st_rdev Device ID (if file is character or block special). [...] In disk_info_from_fd(), we don't care about the device containing the special file -- we care about the device the special file identifies. Signed-off-by: Laszlo Ersek <ler...@redhat.com> --- src/lib/disk.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/disk.c b/src/lib/disk.c index 8ad590b..6c710f2 100644 --- a/src/lib/disk.c +++ b/src/lib/disk.c @@ -50,12 +50,18 @@ disk_info_from_fd(int fd, perror("stat"); return 1; } - if (!(S_ISBLK(buf.st_mode) || S_ISREG(buf.st_mode))) { + if (S_ISBLK(buf.st_mode)) { + major = buf.st_rdev >> 8; + minor = buf.st_rdev & 0xFF; + } + else if (S_ISREG(buf.st_mode)) { + major = buf.st_dev >> 8; + minor = buf.st_dev & 0xFF; + } + else { printf("Cannot stat non-block or non-regular file\n"); return 1; } - major = buf.st_dev >> 8; - minor = buf.st_dev & 0xFF; /* IDE disks can have up to 64 partitions, or 6 bits worth, * and have one bit for the disk number. -- 1.7.1 ------------------------------------------------------------------------------ Introducing Performance Central, a new site from SourceForge and AppDynamics. Performance Central is your source for news, insights, analysis and resources for efficient Application Performance Management. Visit us today! http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel