MINOR_ERR = 2,
MINOR_DISCOVER,
MINOR_INTERFACES,
- MINOR_REVALIDATE,
MSGSZ = 2048,
NARGS = 10,
NMSG = 100, /* message backlog to retain */
{ MINOR_ERR, "err" },
{ MINOR_DISCOVER, "discover" },
{ MINOR_INTERFACES, "interfaces" },
- { MINOR_REVALIDATE, "revalidate" },
};
static int
return 0;
}
-static int
-revalidate(const char __user *str, size_t size)
-{
- int major, minor, n;
- ulong flags;
- struct aoedev *d;
- char buf[16];
-
- if (size >= sizeof buf)
- return -EINVAL;
- buf[sizeof buf - 1] = '\0';
- if (copy_from_user(buf, str, size))
- return -EFAULT;
-
- /* should be e%d.%d format */
- n = sscanf(buf, "e%d.%d", &major, &minor);
- if (n != 2) {
- printk(KERN_ERR "aoe: %s: invalid device specification\n",
- __FUNCTION__);
- return -EINVAL;
- }
- d = aoedev_by_aoeaddr(major, minor);
- if (!d)
- return -EINVAL;
-
- spin_lock_irqsave(&d->lock, flags);
- d->flags |= DEVFL_PAUSE;
- spin_unlock_irqrestore(&d->lock, flags);
- aoecmd_cfg(major, minor);
-
- return 0;
-}
-
void
aoechr_error(char *msg)
{
case MINOR_INTERFACES:
ret = interfaces(buf, cnt);
break;
- case MINOR_REVALIDATE:
- ret = revalidate(buf, cnt);
}
if (ret == 0)
ret = cnt;
{
int n, i;
- n = iminor(inode);
+ n = MINOR(inode->i_rdev);
filp->private_data = (void *) (unsigned long) n;
for (i = 0; i < ARRAY_SIZE(chardevs); ++i)