]> git.pld-linux.org Git - packages/mdadm.git/commitdiff
- mdctl-BOOT.patch with Makefile part (LDFLAGS alread added) and
authorMichal Moskal <michal@moskal.me>
Fri, 10 May 2002 12:34:40 +0000 (12:34 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
  with s/mdctl.h/mdadm.h/

Changed files:
    mdadm-BOOT.patch -> 1.1

mdadm-BOOT.patch [new file with mode: 0644]

diff --git a/mdadm-BOOT.patch b/mdadm-BOOT.patch
new file mode 100644 (file)
index 0000000..f499374
--- /dev/null
@@ -0,0 +1,155 @@
+diff -ur mdctl/util.c mdctl-/util.c
+--- mdctl/util.c       Thu Jul 26 07:30:28 2001
++++ mdctl-/util.c      Mon Aug  6 19:01:03 2001
+@@ -30,6 +30,7 @@
+ #include      "mdctl.h"
+ #include      "md_p.h"
+ #include      <sys/utsname.h>
++#include      <dirent.h>
+ /*
+  * Parse a 128 bit uuid in 4 integers
+@@ -364,51 +365,78 @@
+ /*
+  * convert a major/minor pair for a block device into a name in /dev, if possible.
+  * On the first call, walk /dev collecting name.
+- * Put them in a simple linked listfor now.
+  */
+-struct devmap {
+-    int major, minor;
+-    char *name;
+-    struct devmap *next;
+-} *devlist = NULL;
+-int devlist_ready = 0;
+-
+-#define  __USE_XOPEN_EXTENDED
+-#include <ftw.h>
++int devlist_ready = 0;
++char **devlist[256];
+-int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
++void collect_devs(const char *name)
+ {
+-    if ((stb->st_mode&S_IFMT)== S_IFBLK) {
+-      char *n = strdup(name);
+-      struct devmap *dm = malloc(sizeof(*dm));
+-      if (dm) {
+-          dm->major = MAJOR(stb->st_rdev);
+-          dm->minor = MINOR(stb->st_rdev);
+-          dm->name = n;
+-          dm->next = devlist;
+-          devlist = dm;
++      DIR *d;
++      struct dirent *e;
++      int n = strlen(name);
++      char *cur;
++      int major, minor;
++      struct stat st;
++      
++      chdir(name);
++      d = opendir(".");
++      if (d == NULL)
++              return;
++      
++      while ((e = readdir(d))) {
++              stat(e->d_name, &st);
++              if (strcmp(e->d_name, ".") == 0 || strcmp(e->d_name, "..") == 0)
++                      continue;
++              if (!S_ISDIR(st.st_mode) && !S_ISBLK(st.st_mode))
++                      continue;
++              cur = malloc(n + strlen(e->d_name) + 2);
++              strcpy(cur, name);
++              cur[n] = '/';
++              strcpy(cur + n + 1, e->d_name);
++              if (S_ISDIR(st.st_mode)) {
++                      lstat(name, &st);
++                      if (!S_ISLNK(st.st_mode))
++                              collect_devs(cur);
++                      free(cur);
++                      chdir(name);
++              } else {
++                      major = MAJOR(st.st_rdev) & 0xff;
++                      minor = MINOR(st.st_rdev) & 0xff;
++                      
++                      if (devlist[major] == NULL) 
++                              devlist[major] = calloc(sizeof(char*), 256);
++                      /* shortest name wins, this can be quite usable
++                       * with devfs and devfsd (/dev/hdaX links)
++                       */
++                      if (devlist[major][minor] &&
++                          strlen(devlist[major][minor]) < strlen(cur))
++                              free(cur);
++                      else {
++                              free(devlist[major][minor]);
++                              devlist[major][minor] = cur;
++                      }
++              }
+       }
+-    }
+-    return 0;
++      
++      closedir(d);
+ }
+ char *map_dev(int major, int minor)
+ {
+-    struct devmap *p;
+     if (!devlist_ready) {
+-      nftw("/dev", add_dev, 10, FTW_PHYS);
++      collect_devs("/dev");
+       devlist_ready=1;
+     }
+-    for (p=devlist; p; p=p->next)
+-      if (p->major == major &&
+-          p->minor == minor)
+-          return p->name;
+-    return NULL;
++    major &= 0xff;
++    minor &= 0xff;
++    if (devlist[major])
++          return devlist[major][minor];
++    else
++          return NULL;
+ }
+-
+ int calc_sb_csum(mdp_super_t *super)
+ {
+         unsigned int  oldcsum = super->sb_csum;
+@@ -424,3 +452,14 @@
+       super->sb_csum = oldcsum;
+       return csum;
+ }
++
++#ifdef __UCLIBC__
++long long lseek64(int fd, long long off, int w)
++{
++      long long res;
++      
++      llseek(fd, off >> 32, off & 0xffffffff, &res, w);
++
++      return res;
++}
++#endif
+diff -ur mdctl/mdctl.h mdctl-/mdctl.h
+--- mdctl/mdadm.h      Tue Jun 19 01:56:53 2001
++++ mdctl-/mdadm.h     Fri Mar 15 14:01:40 2002
+@@ -29,7 +29,6 @@
+ #define       __USE_LARGEFILE64
+ #include      <unistd.h>
+-extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
+ #include      <sys/types.h>
+ #include      <sys/stat.h>
+@@ -41,6 +40,8 @@
+ #include      <errno.h>
+ #include      <string.h>
++#define __KERNEL_STRICT_NAMES
++
+ #include      <linux/kdev_t.h>
+ #include      <linux/fs.h>
+ #include      <sys/ioctl.h>
This page took 0.139931 seconds and 4 git commands to generate.