summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-05-15 16:48:21 +1000
committerNeil Brown <neilb@suse.de>2008-05-15 16:48:21 +1000
commit2f6079dc96180335fdb56d0b89e462e903abbb50 (patch)
treec643ba942b6a7a2ccb100e3707eed3d139b5253d /util.c
parent598f0d58ac3544e25f90f2d34337e15764f4d877 (diff)
Create a container member
From: Neil Brown <neilb@suse.de>
Diffstat (limited to 'util.c')
-rw-r--r--util.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/util.c b/util.c
index 7b43ee2e..8ea30699 100644
--- a/util.c
+++ b/util.c
@@ -978,6 +978,29 @@ int open_container(int fd)
return -1;
}
+char *devnum2devname(int num)
+{
+ char name[100];
+ if (num > 0)
+ sprintf(name, "md%d", num);
+ else
+ sprintf(name, "md_d%d", -1-num);
+ return strdup(name);
+}
+
+int fd2devnum(int fd)
+{
+ struct stat stb;
+ if (fstat(fd, &stb) == 0 &&
+ (S_IFMT&stb.st_mode)==S_IFBLK) {
+ if (major(stb.st_rdev) == MD_MAJOR)
+ return minor(stb.st_rdev);
+ else
+ return -1- (minor(stb.st_rdev)>>6);
+ }
+ return -1;
+}
+
#ifdef __TINYC__
/* tinyc doesn't optimize this check in ioctl.h out ... */
unsigned int __invalid_size_argument_for_IOC = 0;