Commit fbedac04 authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds

[PATCH] md: the scheduled removal of the START_ARRAY ioctl for md

This patch contains the scheduled removal of the START_ARRAY ioctl for md.
Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 999d8168
...@@ -122,15 +122,6 @@ Who: Arjan van de Ven ...@@ -122,15 +122,6 @@ Who: Arjan van de Ven
--------------------------- ---------------------------
What: START_ARRAY ioctl for md
When: July 2006
Files: drivers/md/md.c
Why: Not reliable by design - can fail when most needed.
Alternatives exist
Who: NeilBrown <neilb@suse.de>
---------------------------
What: eepro100 network driver What: eepro100 network driver
When: January 2007 When: January 2007
Why: replaced by the e100 driver Why: replaced by the e100 driver
......
...@@ -3440,67 +3440,6 @@ static void autorun_devices(int part) ...@@ -3440,67 +3440,6 @@ static void autorun_devices(int part)
printk(KERN_INFO "md: ... autorun DONE.\n"); printk(KERN_INFO "md: ... autorun DONE.\n");
} }
/*
* import RAID devices based on one partition
* if possible, the array gets run as well.
*/
static int autostart_array(dev_t startdev)
{
char b[BDEVNAME_SIZE];
int err = -EINVAL, i;
mdp_super_t *sb = NULL;
mdk_rdev_t *start_rdev = NULL, *rdev;
start_rdev = md_import_device(startdev, 0, 0);
if (IS_ERR(start_rdev))
return err;
/* NOTE: this can only work for 0.90.0 superblocks */
sb = (mdp_super_t*)page_address(start_rdev->sb_page);
if (sb->major_version != 0 ||
sb->minor_version != 90 ) {
printk(KERN_WARNING "md: can only autostart 0.90.0 arrays\n");
export_rdev(start_rdev);
return err;
}
if (test_bit(Faulty, &start_rdev->flags)) {
printk(KERN_WARNING
"md: can not autostart based on faulty %s!\n",
bdevname(start_rdev->bdev,b));
export_rdev(start_rdev);
return err;
}
list_add(&start_rdev->same_set, &pending_raid_disks);
for (i = 0; i < MD_SB_DISKS; i++) {
mdp_disk_t *desc = sb->disks + i;
dev_t dev = MKDEV(desc->major, desc->minor);
if (!dev)
continue;
if (dev == startdev)
continue;
if (MAJOR(dev) != desc->major || MINOR(dev) != desc->minor)
continue;
rdev = md_import_device(dev, 0, 0);
if (IS_ERR(rdev))
continue;
list_add(&rdev->same_set, &pending_raid_disks);
}
/*
* possibly return codes
*/
autorun_devices(0);
return 0;
}
static int get_version(void __user * arg) static int get_version(void __user * arg)
{ {
mdu_version_t ver; mdu_version_t ver;
...@@ -4259,27 +4198,6 @@ static int md_ioctl(struct inode *inode, struct file *file, ...@@ -4259,27 +4198,6 @@ static int md_ioctl(struct inode *inode, struct file *file,
goto abort; goto abort;
} }
if (cmd == START_ARRAY) {
/* START_ARRAY doesn't need to lock the array as autostart_array
* does the locking, and it could even be a different array
*/
static int cnt = 3;
if (cnt > 0 ) {
printk(KERN_WARNING
"md: %s(pid %d) used deprecated START_ARRAY ioctl. "
"This will not be supported beyond July 2006\n",
current->comm, current->pid);
cnt--;
}
err = autostart_array(new_decode_dev(arg));
if (err) {
printk(KERN_WARNING "md: autostart failed!\n");
goto abort;
}
goto done;
}
err = mddev_lock(mddev); err = mddev_lock(mddev);
if (err) { if (err) {
printk(KERN_INFO printk(KERN_INFO
......
...@@ -122,7 +122,6 @@ COMPATIBLE_IOCTL(PROTECT_ARRAY) ...@@ -122,7 +122,6 @@ COMPATIBLE_IOCTL(PROTECT_ARRAY)
ULONG_IOCTL(HOT_ADD_DISK) ULONG_IOCTL(HOT_ADD_DISK)
ULONG_IOCTL(SET_DISK_FAULTY) ULONG_IOCTL(SET_DISK_FAULTY)
COMPATIBLE_IOCTL(RUN_ARRAY) COMPATIBLE_IOCTL(RUN_ARRAY)
ULONG_IOCTL(START_ARRAY)
COMPATIBLE_IOCTL(STOP_ARRAY) COMPATIBLE_IOCTL(STOP_ARRAY)
COMPATIBLE_IOCTL(STOP_ARRAY_RO) COMPATIBLE_IOCTL(STOP_ARRAY_RO)
COMPATIBLE_IOCTL(RESTART_ARRAY_RW) COMPATIBLE_IOCTL(RESTART_ARRAY_RW)
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
/* usage */ /* usage */
#define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t) #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t)
#define START_ARRAY _IO (MD_MAJOR, 0x31) /* 0x31 was START_ARRAY */
#define STOP_ARRAY _IO (MD_MAJOR, 0x32) #define STOP_ARRAY _IO (MD_MAJOR, 0x32)
#define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33) #define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33)
#define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34) #define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment