Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 323253
b: refs/heads/master
c: cd58ad7
h: refs/heads/master
i:
  323251: db22ffe
v: v3
  • Loading branch information
Quoc-Son Anh authored and Matthew Wilcox committed Jul 31, 2012
1 parent 4bb547c commit da63c87
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0ac13140d796eb1e2f8956aea97a6e5e4ebcf981
refs/heads/master: cd58ad7d188c643cf572b038909c2f7dd96fdafe
31 changes: 26 additions & 5 deletions trunk/drivers/block/nvme.c
Original file line number Diff line number Diff line change
Expand Up @@ -1576,15 +1576,33 @@ static void nvme_release_prp_pools(struct nvme_dev *dev)
dma_pool_destroy(dev->prp_small_pool);
}

/* XXX: Use an ida or something to let remove / add work correctly */
static void nvme_set_instance(struct nvme_dev *dev)
static DEFINE_IDA(nvme_instance_ida);

static int nvme_set_instance(struct nvme_dev *dev)
{
static int instance;
dev->instance = instance++;
int instance, error;

do {
if (!ida_pre_get(&nvme_instance_ida, GFP_KERNEL))
return -ENODEV;

spin_lock(&dev_list_lock);
error = ida_get_new(&nvme_instance_ida, &instance);
spin_unlock(&dev_list_lock);
} while (error == -EAGAIN);

if (error)
return -ENODEV;

dev->instance = instance;
return 0;
}

static void nvme_release_instance(struct nvme_dev *dev)
{
spin_lock(&dev_list_lock);
ida_remove(&nvme_instance_ida, dev->instance);
spin_unlock(&dev_list_lock);
}

static int __devinit nvme_probe(struct pci_dev *pdev,
Expand Down Expand Up @@ -1617,7 +1635,10 @@ static int __devinit nvme_probe(struct pci_dev *pdev,
pci_set_drvdata(pdev, dev);
dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
nvme_set_instance(dev);
result = nvme_set_instance(dev);
if (result)
goto disable;

dev->entry[0].vector = pdev->irq;

result = nvme_setup_prp_pools(dev);
Expand Down

0 comments on commit da63c87

Please sign in to comment.