git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tree-wide: fix typos "aquire" -> "acquire", "cumsumed" -> "consumed"
[safe/jmp/linux-2.6]
/
drivers
/
md
/
faulty.c
diff --git
a/drivers/md/faulty.c
b/drivers/md/faulty.c
index
7b66b9f
..
87d88db
100644
(file)
--- a/
drivers/md/faulty.c
+++ b/
drivers/md/faulty.c
@@
-255,14
+255,14
@@
static void status(struct seq_file *seq, mddev_t *mddev)
}
}
-static int re
config(mddev_t *mddev, int layout, int chunk_size
)
+static int re
shape(mddev_t *mddev
)
{
{
- int mode = layout & ModeMask;
- int count = layout >> ModeShift;
+ int mode =
mddev->new_
layout & ModeMask;
+ int count =
mddev->new_
layout >> ModeShift;
conf_t *conf = mddev->private;
conf_t *conf = mddev->private;
- if (
chunk_size != -1
)
- return
-EINVAL
;
+ if (
mddev->new_layout < 0
)
+ return
0
;
/* new layout */
if (mode == ClearFaults)
/* new layout */
if (mode == ClearFaults)
@@
-279,16
+279,32
@@
static int reconfig(mddev_t *mddev, int layout, int chunk_size)
atomic_set(&conf->counters[mode], count);
} else
return -EINVAL;
atomic_set(&conf->counters[mode], count);
} else
return -EINVAL;
+ mddev->new_layout = -1;
mddev->layout = -1; /* makes sure further changes come through */
return 0;
}
mddev->layout = -1; /* makes sure further changes come through */
return 0;
}
+static sector_t faulty_size(mddev_t *mddev, sector_t sectors, int raid_disks)
+{
+ WARN_ONCE(raid_disks,
+ "%s does not support generic reshape\n", __func__);
+
+ if (sectors == 0)
+ return mddev->dev_sectors;
+
+ return sectors;
+}
+
static int run(mddev_t *mddev)
{
mdk_rdev_t *rdev;
int i;
static int run(mddev_t *mddev)
{
mdk_rdev_t *rdev;
int i;
+ conf_t *conf;
+
+ if (md_check_no_bitmap(mddev))
+ return -EINVAL;
- conf
_t *conf
= kmalloc(sizeof(*conf), GFP_KERNEL);
+ conf = kmalloc(sizeof(*conf), GFP_KERNEL);
if (!conf)
return -ENOMEM;
if (!conf)
return -ENOMEM;
@@
-301,10
+317,10
@@
static int run(mddev_t *mddev)
list_for_each_entry(rdev, &mddev->disks, same_set)
conf->rdev = rdev;
list_for_each_entry(rdev, &mddev->disks, same_set)
conf->rdev = rdev;
- md
dev->array_sectors = mddev->size * 2
;
+ md
_set_array_sectors(mddev, faulty_size(mddev, 0, 0))
;
mddev->private = conf;
mddev->private = conf;
- re
config(mddev, mddev->layout, -1
);
+ re
shape(mddev
);
return 0;
}
return 0;
}
@@
-327,7
+343,8
@@
static struct mdk_personality faulty_personality =
.run = run,
.stop = stop,
.status = status,
.run = run,
.stop = stop,
.status = status,
- .reconfig = reconfig,
+ .check_reshape = reshape,
+ .size = faulty_size,
};
static int __init raid_init(void)
};
static int __init raid_init(void)