Lines Matching +full:- +full:d +full:-
9 #include <linux/blk-mq.h>
10 #include <linux/backing-dev.h>
37 struct aoedev *d = disk->private_data;
40 (d->flags & DEVFL_UP) ? "up" : "down",
41 (d->flags & DEVFL_KICKME) ? ",kickme" :
42 (d->nopen && !(d->flags & DEVFL_UP)) ? ",closewait" : "");
43 /* I'd rather see nopen exported so we can ditch closewait */
49 struct aoedev *d = disk->private_data;
50 struct aoetgt *t = d->targets[0];
54 return sysfs_emit(page, "%pm\n", t->addr);
60 struct aoedev *d = disk->private_data;
69 t = d->targets;
70 te = t + d->ntargets;
72 ifp = (*t)->ifs;
74 for (; ifp < e && ifp->nd; ifp++) {
76 if (*nnd == ifp->nd)
79 *nd++ = ifp->nd;
88 p += scnprintf(p, PAGE_SIZE - (p-page), "%s%s",
89 p == page ? "" : ",", (*nd)->name);
90 p += scnprintf(p, PAGE_SIZE - (p-page), "\n");
91 return p-page;
98 struct aoedev *d = disk->private_data;
100 return sysfs_emit(page, "0x%04x\n", (unsigned int) d->fw_ver);
106 struct aoedev *d = disk->private_data;
108 return sysfs_emit(page, "%lu\n", d->maxbcnt);
113 struct aoedev *d;
119 d = s->private;
120 seq_printf(s, "rttavg: %d rttdev: %d\n",
121 d->rttavg >> RTTSCALE,
122 d->rttdev >> RTTDSCALE);
123 seq_printf(s, "nskbpool: %d\n", skb_queue_len(&d->skbpool));
124 seq_printf(s, "kicked: %ld\n", d->kicked);
125 seq_printf(s, "maxbcnt: %ld\n", d->maxbcnt);
126 seq_printf(s, "ref: %ld\n", d->ref);
128 spin_lock_irqsave(&d->lock, flags);
129 t = d->targets;
130 te = t + d->ntargets;
133 seq_printf(s, "falloc: %ld\n", (*t)->falloc);
135 list_empty(&(*t)->ffree) ? NULL : (*t)->ffree.next);
136 seq_printf(s, "%pm:%d:%d:%d\n", (*t)->addr, (*t)->nout,
137 (*t)->maxout, (*t)->nframes);
138 seq_printf(s, "\tssthresh:%d\n", (*t)->ssthresh);
139 seq_printf(s, "\ttaint:%d\n", (*t)->taint);
140 seq_printf(s, "\tr:%d\n", (*t)->rpkts);
141 seq_printf(s, "\tw:%d\n", (*t)->wpkts);
142 ifp = (*t)->ifs;
143 ife = ifp + ARRAY_SIZE((*t)->ifs);
144 for (; ifp->nd && ifp < ife; ifp++) {
145 seq_printf(s, "%c%s", c, ifp->nd->name);
150 spin_unlock_irqrestore(&d->lock, flags);
160 .attr = { .name = "firmware-version", .mode = 0444 },
184 aoedisk_add_debugfs(struct aoedev *d)
190 p = strchr(d->gd->disk_name, '/');
192 p = d->gd->disk_name;
196 d->debugfs = debugfs_create_file(p, 0444, aoe_debugfs_dir, d,
200 aoedisk_rm_debugfs(struct aoedev *d)
202 debugfs_remove(d->debugfs);
203 d->debugfs = NULL;
209 struct aoedev *d = disk->private_data;
212 if (!virt_addr_valid(d)) {
216 return -ENODEV;
218 if (!(d->flags & DEVFL_UP) || d->flags & DEVFL_TKILL)
219 return -ENODEV;
222 spin_lock_irqsave(&d->lock, flags);
223 if (d->flags & DEVFL_UP && !(d->flags & DEVFL_TKILL)) {
224 d->nopen++;
225 spin_unlock_irqrestore(&d->lock, flags);
229 spin_unlock_irqrestore(&d->lock, flags);
231 return -ENODEV;
237 struct aoedev *d = disk->private_data;
240 spin_lock_irqsave(&d->lock, flags);
242 if (--d->nopen == 0) {
243 spin_unlock_irqrestore(&d->lock, flags);
244 aoecmd_cfg(d->aoemajor, d->aoeminor);
247 spin_unlock_irqrestore(&d->lock, flags);
253 struct aoedev *d = hctx->queue->queuedata;
255 spin_lock_irq(&d->lock);
257 if ((d->flags & DEVFL_UP) == 0) {
258 pr_info_ratelimited("aoe: device %ld.%d is not up\n",
259 d->aoemajor, d->aoeminor);
260 spin_unlock_irq(&d->lock);
261 blk_mq_start_request(bd->rq);
265 list_add_tail(&bd->rq->queuelist, &d->rq_list);
266 aoecmd_work(d);
267 spin_unlock_irq(&d->lock);
274 struct aoedev *d = bdev->bd_disk->private_data;
276 if ((d->flags & DEVFL_UP) == 0) {
278 return -ENODEV;
281 geo->cylinders = d->geo.cylinders;
282 geo->heads = d->geo.heads;
283 geo->sectors = d->geo.sectors;
290 struct aoedev *d;
293 return -EINVAL;
295 d = bdev->bd_disk->private_data;
296 if ((d->flags & DEVFL_UP) == 0) {
298 return -ENODEV;
302 if (!copy_to_user((void __user *) arg, &d->ident,
303 sizeof(d->ident)))
305 return -EFAULT;
312 return -ENOTTY;
332 struct aoedev *d = vp;
346 spin_lock_irqsave(&d->lock, flags);
347 if (d->flags & DEVFL_GDALLOC
348 && !(d->flags & DEVFL_TKILL)
349 && !(d->flags & DEVFL_GD_NOW))
350 d->flags |= DEVFL_GD_NOW;
353 spin_unlock_irqrestore(&d->lock, flags);
360 printk(KERN_ERR "aoe: cannot allocate bufpool for %ld.%d\n",
361 d->aoemajor, d->aoeminor);
365 set = &d->tag_set;
366 set->ops = &aoeblk_mq_ops;
367 set->cmd_size = sizeof(struct aoe_req);
368 set->nr_hw_queues = 1;
369 set->queue_depth = 128;
370 set->numa_node = NUMA_NO_NODE;
373 pr_err("aoe: cannot allocate tag set for %ld.%d\n",
374 d->aoemajor, d->aoeminor);
378 gd = blk_mq_alloc_disk(set, &lim, d);
380 pr_err("aoe: cannot allocate block queue for %ld.%d\n",
381 d->aoemajor, d->aoeminor);
385 spin_lock_irqsave(&d->lock, flags);
386 WARN_ON(!(d->flags & DEVFL_GD_NOW));
387 WARN_ON(!(d->flags & DEVFL_GDALLOC));
388 WARN_ON(d->flags & DEVFL_TKILL);
389 WARN_ON(d->gd);
390 WARN_ON(d->flags & DEVFL_UP);
391 d->bufpool = mp;
392 d->blkq = gd->queue;
393 d->gd = gd;
394 gd->major = AOE_MAJOR;
395 gd->first_minor = d->sysminor;
396 gd->minors = AOE_PARTITIONS;
397 gd->fops = &aoe_bdops;
398 gd->private_data = d;
399 ssize = d->ssize;
400 snprintf(gd->disk_name, sizeof gd->disk_name, "etherd/e%ld.%d",
401 d->aoemajor, d->aoeminor);
403 d->flags &= ~DEVFL_GDALLOC;
404 d->flags |= DEVFL_UP;
406 spin_unlock_irqrestore(&d->lock, flags);
413 aoedisk_add_debugfs(d);
415 spin_lock_irqsave(&d->lock, flags);
416 WARN_ON(!(d->flags & DEVFL_GD_NOW));
417 d->flags &= ~DEVFL_GD_NOW;
418 spin_unlock_irqrestore(&d->lock, flags);
428 spin_lock_irqsave(&d->lock, flags);
429 d->flags &= ~DEVFL_GD_NOW;
430 queue_work(aoe_wq, &d->work);
431 spin_unlock_irqrestore(&d->lock, flags);
449 return -ENOMEM;