]> git.pld-linux.org Git - packages/mdadm.git/blob - mdadm-BOOT.patch
This commit was manufactured by cvs2git to create branch 'RA-branch'.
[packages/mdadm.git] / mdadm-BOOT.patch
1 diff -u mdadm-1.2.0/mdadm.h mdadm-1.2.0-/mdadm.h
2 --- mdadm-1.2.0/mdadm.h Tue Mar 11 03:29:58 2003
3 +++ mdadm-1.2.0-/mdadm.h        Thu May 22 22:06:13 2003
4 @@ -29,7 +29,6 @@
5  
6  #define        __USE_LARGEFILE64
7  #include       <unistd.h>
8 -extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
9  
10  #include       <sys/types.h>
11  #include       <sys/stat.h>
12 @@ -41,6 +40,8 @@
13  #include       <errno.h>
14  #include       <string.h>
15  
16 +#define __KERNEL_STRICT_NAMES
17 +
18  #include       <linux/kdev_t.h>
19  /*#include     <linux/fs.h> */
20  #include       <sys/mount.h>
21 Only in mdadm-1.2.0-: mdadm.h.orig
22 diff -u mdadm-1.2.0/util.c mdadm-1.2.0-/util.c
23 --- mdadm-1.2.0/util.c  Tue Feb 11 23:50:49 2003
24 +++ mdadm-1.2.0-/util.c Thu May 22 22:09:03 2003
25 @@ -30,6 +30,7 @@
26  #include       "mdadm.h"
27  #include       "md_p.h"
28  #include       <sys/utsname.h>
29 +#include       <dirent.h>
30  
31  /*
32   * Parse a 128 bit uuid in 4 integers
33 @@ -369,62 +370,78 @@
34  /*
35   * convert a major/minor pair for a block device into a name in /dev, if possible.
36   * On the first call, walk /dev collecting name.
37 - * Put them in a simple linked listfor now.
38   */
39 -struct devmap {
40 -    int major, minor;
41 -    char *name;
42 -    struct devmap *next;
43 -} *devlist = NULL;
44 +
45  int devlist_ready = 0;
46 +char **devlist[256];
47  
48 -#ifdef UCLIBC
49 -char *map_dev(int major, int minor)
50 +void collect_devs(const char *name)
51  {
52 -#if 0
53 -       fprintf(stderr, "Warning - fail to map %d,%d to a device name\n",
54 -               major, minor);
55 -#endif
56 -       return NULL;
57 -}
58 -#else
59 -#define  __USE_XOPEN_EXTENDED
60 -#include <ftw.h>
61 -
62 -
63 -int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
64 -{
65 -    if ((stb->st_mode&S_IFMT)== S_IFBLK) {
66 -       char *n = strdup(name);
67 -       struct devmap *dm = malloc(sizeof(*dm));
68 -       if (dm) {
69 -           dm->major = MAJOR(stb->st_rdev);
70 -           dm->minor = MINOR(stb->st_rdev);
71 -           dm->name = n;
72 -           dm->next = devlist;
73 -           devlist = dm;
74 +       DIR *d;
75 +       struct dirent *e;
76 +       int n = strlen(name);
77 +       char *cur;
78 +       int major, minor;
79 +       struct stat st;
80 +       
81 +       chdir(name);
82 +       d = opendir(".");
83 +       if (d == NULL)
84 +               return;
85 +       
86 +       while ((e = readdir(d))) {
87 +               stat(e->d_name, &st);
88 +               if (strcmp(e->d_name, ".") == 0 || strcmp(e->d_name, "..") == 0)
89 +                       continue;
90 +               if (!S_ISDIR(st.st_mode) && !S_ISBLK(st.st_mode))
91 +                       continue;
92 +               cur = malloc(n + strlen(e->d_name) + 2);
93 +               strcpy(cur, name);
94 +               cur[n] = '/';
95 +               strcpy(cur + n + 1, e->d_name);
96 +               if (S_ISDIR(st.st_mode)) {
97 +                       lstat(name, &st);
98 +                       if (!S_ISLNK(st.st_mode))
99 +                               collect_devs(cur);
100 +                       free(cur);
101 +                       chdir(name);
102 +               } else {
103 +                       major = MAJOR(st.st_rdev) & 0xff;
104 +                       minor = MINOR(st.st_rdev) & 0xff;
105 +                       
106 +                       if (devlist[major] == NULL) 
107 +                               devlist[major] = calloc(sizeof(char*), 256);
108 +                       /* shortest name wins, this can be quite usable
109 +                        * with devfs and devfsd (/dev/hdaX links)
110 +                        */
111 +                       if (devlist[major][minor] &&
112 +                           strlen(devlist[major][minor]) < strlen(cur))
113 +                               free(cur);
114 +                       else {
115 +                               free(devlist[major][minor]);
116 +                               devlist[major][minor] = cur;
117 +                       }
118 +               }
119         }
120 -    }
121 -    return 0;
122 +       
123 +       closedir(d);
124  }
125  
126  char *map_dev(int major, int minor)
127  {
128 -    struct devmap *p;
129      if (!devlist_ready) {
130 -       nftw("/dev", add_dev, 10, FTW_PHYS);
131 +       collect_devs("/dev");
132         devlist_ready=1;
133      }
134  
135 -    for (p=devlist; p; p=p->next)
136 -       if (p->major == major &&
137 -           p->minor == minor)
138 -           return p->name;
139 -    return NULL;
140 +    major &= 0xff;
141 +    minor &= 0xff;
142 +    if (devlist[major])
143 +           return devlist[major][minor];
144 +    else
145 +           return NULL;
146  }
147  
148 -#endif
149 -
150  int calc_sb_csum(mdp_super_t *super)
151  {
152          unsigned int  oldcsum = super->sb_csum;
153 @@ -525,3 +542,14 @@
154         if (strncmp(name, "/dev/.tmp.md", 12)==0)
155                 unlink(name);
156  }
157 +
158 +#ifdef __UCLIBC__
159 +long long lseek64(int fd, long long off, int w)
160 +{
161 +       long long res;
162 +       
163 +       llseek(fd, off >> 32, off & 0xffffffff, &res, w);
164 +
165 +       return res;
166 +}
167 +#endif
168 Only in mdadm-1.2.0-: util.c.orig
169 Only in mdadm-1.2.0-: util.c.rej
This page took 0.08561 seconds and 3 git commands to generate.