summaryrefslogtreecommitdiffstats
path: root/super-intel.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-06-13 17:27:30 -0700
committerDan Williams <dan.j.williams@intel.com>2008-06-13 17:27:30 -0700
commit90c8b707149a069a934bd0e2a0824edf1f6dfdf0 (patch)
treecbf55fdeb882dd7282166ddf438e329e8893cc70 /super-intel.c
parentc42ec1ed43a811ad866be58f8f7fa460e22a3109 (diff)
downloadmdadm-90c8b707149a069a934bd0e2a0824edf1f6dfdf0.tar.gz
mdadm-90c8b707149a069a934bd0e2a0824edf1f6dfdf0.tar.xz
mdadm-90c8b707149a069a934bd0e2a0824edf1f6dfdf0.zip
sysfs: provide a helper function for locating scsi_generic interfaces
imsm records and validates this data in its metadata Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/super-intel.c b/super-intel.c
index 2da4514..4052aa6 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -544,26 +544,19 @@ static int imsm_read_serial(int fd, char *devname,
__u8 serial[MAX_RAID_SERIAL_LEN])
{
unsigned char scsi_serial[255];
- struct stat stb;
int sg_fd;
- int minor;
- char sg_path[20];
int rv;
int rsp_len;
int i, cnt;
memset(scsi_serial, 0, sizeof(scsi_serial));
- fstat(fd, &stb);
- minor = minor(stb.st_rdev);
- minor /= 16;
- sprintf(sg_path, "/dev/sg%d", minor);
- sg_fd = open(sg_path, O_RDONLY);
+ sg_fd = sysfs_disk_to_sg(fd);
if (sg_fd < 0) {
if (devname)
fprintf(stderr,
- Name ": Failed to open %s for %s: %s\n",
- sg_path, devname, strerror(errno));
+ Name ": Failed to open sg interface for %s: %s\n",
+ devname, strerror(errno));
return 1;
}