git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 2.0 rc7
[linux-2.6.git]
/
drivers
/
block
/
aoe
/
aoedev.c
diff --git
a/drivers/block/aoe/aoedev.c
b/drivers/block/aoe/aoedev.c
index
240abae
..
6e231c5
100644
(file)
--- a/
drivers/block/aoe/aoedev.c
+++ b/
drivers/block/aoe/aoedev.c
@@
-13,7
+13,7
@@
static struct aoedev *devlist;
static spinlock_t devlist_lock;
struct aoedev *
static spinlock_t devlist_lock;
struct aoedev *
-aoedev_by
mac(unsigned char *macaddr
)
+aoedev_by
_aoeaddr(int maj, int min
)
{
struct aoedev *d;
ulong flags;
{
struct aoedev *d;
ulong flags;
@@
-21,7
+21,7
@@
aoedev_bymac(unsigned char *macaddr)
spin_lock_irqsave(&devlist_lock, flags);
for (d=devlist; d; d=d->next)
spin_lock_irqsave(&devlist_lock, flags);
for (d=devlist; d; d=d->next)
- if (
!memcmp(d->addr, macaddr, 6)
)
+ if (
d->aoemajor == maj && d->aoeminor == min
)
break;
spin_unlock_irqrestore(&devlist_lock, flags);
break;
spin_unlock_irqrestore(&devlist_lock, flags);
@@
-109,26
+109,22
@@
aoedev_set(ulong sysminor, unsigned char *addr, struct net_device *ifp, ulong bu
spin_lock_irqsave(&devlist_lock, flags);
for (d=devlist; d; d=d->next)
spin_lock_irqsave(&devlist_lock, flags);
for (d=devlist; d; d=d->next)
- if (d->sysminor == sysminor
- || memcmp(d->addr, addr, sizeof d->addr) == 0)
+ if (d->sysminor == sysminor)
break;
if (d == NULL && (d = aoedev_newdev(bufcnt)) == NULL) {
spin_unlock_irqrestore(&devlist_lock, flags);
printk(KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n");
return NULL;
break;
if (d == NULL && (d = aoedev_newdev(bufcnt)) == NULL) {
spin_unlock_irqrestore(&devlist_lock, flags);
printk(KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n");
return NULL;
- }
+ }
/* if newdev, (d->flags & DEVFL_UP) == 0 for below */
spin_unlock_irqrestore(&devlist_lock, flags);
spin_lock_irqsave(&d->lock, flags);
d->ifp = ifp;
spin_unlock_irqrestore(&devlist_lock, flags);
spin_lock_irqsave(&d->lock, flags);
d->ifp = ifp;
-
- if (d->sysminor != sysminor
- || memcmp(d->addr, addr, sizeof d->addr)
- || (d->flags & DEVFL_UP) == 0) {
+ memcpy(d->addr, addr, sizeof d->addr);
+ if ((d->flags & DEVFL_UP) == 0) {
aoedev_downdev(d); /* flushes outstanding frames */
aoedev_downdev(d); /* flushes outstanding frames */
- memcpy(d->addr, addr, sizeof d->addr);
d->sysminor = sysminor;
d->aoemajor = AOEMAJOR(sysminor);
d->aoeminor = AOEMINOR(sysminor);
d->sysminor = sysminor;
d->aoemajor = AOEMAJOR(sysminor);
d->aoeminor = AOEMINOR(sysminor);
@@
-147,7
+143,8
@@
aoedev_freedev(struct aoedev *d)
put_disk(d->gd);
}
kfree(d->frames);
put_disk(d->gd);
}
kfree(d->frames);
- mempool_destroy(d->bufpool);
+ if (d->bufpool)
+ mempool_destroy(d->bufpool);
kfree(d);
}
kfree(d);
}