nfsd: nfsd should drop CAP_MKNOD for non-root
[safe/jmp/linux-2.6] / drivers / block / aoe / aoeblk.c
index 0c39782..2307a27 100644 (file)
@@ -37,7 +37,7 @@ static ssize_t aoedisk_show_mac(struct device *dev,
 
        if (t == NULL)
                return snprintf(page, PAGE_SIZE, "none\n");
-       return snprintf(page, PAGE_SIZE, "%012llx\n", mac_addr(t->addr));
+       return snprintf(page, PAGE_SIZE, "%pm\n", t->addr);
 }
 static ssize_t aoedisk_show_netif(struct device *dev,
                                  struct device_attribute *attr, char *page)
@@ -90,7 +90,7 @@ static DEVICE_ATTR(state, S_IRUGO, aoedisk_show_state, NULL);
 static DEVICE_ATTR(mac, S_IRUGO, aoedisk_show_mac, NULL);
 static DEVICE_ATTR(netif, S_IRUGO, aoedisk_show_netif, NULL);
 static struct device_attribute dev_attr_firmware_version = {
-       .attr = { .name = "firmware-version", .mode = S_IRUGO, .owner = THIS_MODULE },
+       .attr = { .name = "firmware-version", .mode = S_IRUGO },
        .show = aoedisk_show_fwver,
 };
 
@@ -109,22 +109,20 @@ static const struct attribute_group attr_group = {
 static int
 aoedisk_add_sysfs(struct aoedev *d)
 {
-       return sysfs_create_group(&d->gd->dev.kobj, &attr_group);
+       return sysfs_create_group(&disk_to_dev(d->gd)->kobj, &attr_group);
 }
 void
 aoedisk_rm_sysfs(struct aoedev *d)
 {
-       sysfs_remove_group(&d->gd->dev.kobj, &attr_group);
+       sysfs_remove_group(&disk_to_dev(d->gd)->kobj, &attr_group);
 }
 
 static int
-aoeblk_open(struct inode *inode, struct file *filp)
+aoeblk_open(struct block_device *bdev, fmode_t mode)
 {
-       struct aoedev *d;
+       struct aoedev *d = bdev->bd_disk->private_data;
        ulong flags;
 
-       d = inode->i_bdev->bd_disk->private_data;
-
        spin_lock_irqsave(&d->lock, flags);
        if (d->flags & DEVFL_UP) {
                d->nopen++;
@@ -136,13 +134,11 @@ aoeblk_open(struct inode *inode, struct file *filp)
 }
 
 static int
-aoeblk_release(struct inode *inode, struct file *filp)
+aoeblk_release(struct gendisk *disk, fmode_t mode)
 {
-       struct aoedev *d;
+       struct aoedev *d = disk->private_data;
        ulong flags;
 
-       d = inode->i_bdev->bd_disk->private_data;
-
        spin_lock_irqsave(&d->lock, flags);
 
        if (--d->nopen == 0) {
@@ -158,9 +154,9 @@ aoeblk_release(struct inode *inode, struct file *filp)
 static int
 aoeblk_make_request(struct request_queue *q, struct bio *bio)
 {
+       struct sk_buff_head queue;
        struct aoedev *d;
        struct buf *buf;
-       struct sk_buff *sl;
        ulong flags;
 
        blk_queue_bounce(q, &bio);
@@ -213,11 +209,11 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio)
        list_add_tail(&buf->bufs, &d->bufq);
 
        aoecmd_work(d);
-       sl = d->sendq_hd;
-       d->sendq_hd = d->sendq_tl = NULL;
+       __skb_queue_head_init(&queue);
+       skb_queue_splice_init(&d->sendq, &queue);
 
        spin_unlock_irqrestore(&d->lock, flags);
-       aoenet_xmit(sl);
+       aoenet_xmit(&queue);
 
        return 0;
 }
@@ -276,7 +272,7 @@ aoeblk_gdalloc(void *vp)
        gd->first_minor = d->sysminor * AOE_PARTITIONS;
        gd->fops = &aoe_bdops;
        gd->private_data = d;
-       gd->capacity = d->ssize;
+       set_capacity(gd, d->ssize);
        snprintf(gd->disk_name, sizeof gd->disk_name, "etherd/e%ld.%d",
                d->aoemajor, d->aoeminor);