*
*/
unsigned char sb[1024];
- int size;
+ unsigned long size;
if (lseek(fd, 64*1024, 0) != 64*1024)
return 0;
if (read(fd, sb, 1024) != 1024)
return 0;
fprintf(stderr, Name ": %s appears to contain a reiserfs file system\n",name);
size = sb[0]|(sb[1]|(sb[2]|sb[3]<<8)<<8)<<8;
- fprintf(stderr, " size = %dK\n", size*4);
+ fprintf(stderr, " size = %luK\n", size*4);
return 1;
}
{
void *super;
struct mdinfo info;
- struct mddev_ident_s ident;
time_t crtime;
char *level;
struct supertype *st = guess_super(fd);
/* Looks like a raid array .. */
fprintf(stderr, Name ": %s appears to be part of a raid array:\n",
name);
- st->ss->getinfo_super(&info, &ident, super);
+ st->ss->getinfo_super(&info, super);
free(super);
crtime = info.array.ctime;
level = map_num(pers, info.array.level);
if ((stb->st_mode&S_IFMT)== S_IFBLK) {
char *n = strdup(name);
struct devmap *dm = malloc(sizeof(*dm));
+ if (strncmp(n, "/dev/.", 6)==0)
+ strcpy(n+4, name+6);
if (dm) {
dm->major = major(stb->st_rdev);
dm->minor = minor(stb->st_rdev);
struct devmap *p;
char *std = NULL, *nonstd=NULL;
if (!devlist_ready) {
- nftw("/dev", add_dev, 10, FTW_PHYS);
+ char *dev = "/dev";
+ struct stat stb;
+ if (lstat(dev, &stb)==0 &&
+ S_ISLNK(stb.st_mode))
+ dev = "/dev/.";
+ nftw(dev, add_dev, 10, FTW_PHYS);
devlist_ready=1;
}
rv = ss->load_super(st, fd, &sbp, NULL);
if (rv == 0) {
struct mdinfo info;
- struct mddev_ident_s ident;
- ss->getinfo_super(&info, &ident, sbp);
+ ss->getinfo_super(&info, sbp);
if (bestsuper == -1 ||
besttime < info.array.ctime) {
bestsuper = i;
return NULL;
}
-unsigned long long get_component_size(int fd)
-{
- /* Find out the component size of the array.
- * We cannot trust GET_ARRAY_INFO ioctl as it's
- * size field is only 32bits.
- * So look in /sys/block/mdXXX/md/component_size
- */
- struct stat stb;
- char fname[50];
- int n;
- if (fstat(fd, &stb)) return 0;
- if (major(stb.st_rdev) == 9)
- sprintf(fname, "/sys/block/md%d/md/component_size",
- minor(stb.st_rdev));
- else
- sprintf(fname, "/sys/block/md_d%d/md/component_size",
- minor(stb.st_rdev)/16);
- fd = open(fname, O_RDONLY);
- if (fd < 0)
- return 0;
- n = read(fd, fname, sizeof(fname));
- close(fd);
- if (n == sizeof(fname))
- return 0;
- fname[n] = 0;
- return strtoull(fname, NULL, 10);
-}
-
#ifdef __TINYC__
/* tinyc doesn't optimize this check in ioctl.h out ... */