Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull more block fixes from Jens Axboe: "Since I mistakenly left out the lightnvm regression fix yesterday and the aoeblk seems adequately tested at this point, might as well send out another pull to make -rc5" * 'for-linus' of git://git.kernel.dk/linux-block: aoe: fix crash in page count manipulation lightnvm: invalid offset calculation for lba_shift
This commit is contained in:
commit
348ce85b0a
|
@ -853,45 +853,6 @@ rqbiocnt(struct request *r)
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This can be removed if we are certain that no users of the block
|
|
||||||
* layer will ever use zero-count pages in bios. Otherwise we have to
|
|
||||||
* protect against the put_page sometimes done by the network layer.
|
|
||||||
*
|
|
||||||
* See http://oss.sgi.com/archives/xfs/2007-01/msg00594.html for
|
|
||||||
* discussion.
|
|
||||||
*
|
|
||||||
* We cannot use get_page in the workaround, because it insists on a
|
|
||||||
* positive page count as a precondition. So we use _refcount directly.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
bio_pageinc(struct bio *bio)
|
|
||||||
{
|
|
||||||
struct bio_vec bv;
|
|
||||||
struct page *page;
|
|
||||||
struct bvec_iter iter;
|
|
||||||
|
|
||||||
bio_for_each_segment(bv, bio, iter) {
|
|
||||||
/* Non-zero page count for non-head members of
|
|
||||||
* compound pages is no longer allowed by the kernel.
|
|
||||||
*/
|
|
||||||
page = compound_head(bv.bv_page);
|
|
||||||
page_ref_inc(page);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
bio_pagedec(struct bio *bio)
|
|
||||||
{
|
|
||||||
struct page *page;
|
|
||||||
struct bio_vec bv;
|
|
||||||
struct bvec_iter iter;
|
|
||||||
|
|
||||||
bio_for_each_segment(bv, bio, iter) {
|
|
||||||
page = compound_head(bv.bv_page);
|
|
||||||
page_ref_dec(page);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bufinit(struct buf *buf, struct request *rq, struct bio *bio)
|
bufinit(struct buf *buf, struct request *rq, struct bio *bio)
|
||||||
{
|
{
|
||||||
|
@ -899,7 +860,6 @@ bufinit(struct buf *buf, struct request *rq, struct bio *bio)
|
||||||
buf->rq = rq;
|
buf->rq = rq;
|
||||||
buf->bio = bio;
|
buf->bio = bio;
|
||||||
buf->iter = bio->bi_iter;
|
buf->iter = bio->bi_iter;
|
||||||
bio_pageinc(bio);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct buf *
|
static struct buf *
|
||||||
|
@ -1127,7 +1087,6 @@ aoe_end_buf(struct aoedev *d, struct buf *buf)
|
||||||
if (buf == d->ip.buf)
|
if (buf == d->ip.buf)
|
||||||
d->ip.buf = NULL;
|
d->ip.buf = NULL;
|
||||||
rq = buf->rq;
|
rq = buf->rq;
|
||||||
bio_pagedec(buf->bio);
|
|
||||||
mempool_free(buf, d->bufpool);
|
mempool_free(buf, d->bufpool);
|
||||||
n = (unsigned long) rq->special;
|
n = (unsigned long) rq->special;
|
||||||
rq->special = (void *) --n;
|
rq->special = (void *) --n;
|
||||||
|
|
|
@ -612,7 +612,7 @@ int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node,
|
||||||
|
|
||||||
ret = nvm_register(dev);
|
ret = nvm_register(dev);
|
||||||
|
|
||||||
ns->lba_shift = ilog2(dev->sec_size) - 9;
|
ns->lba_shift = ilog2(dev->sec_size);
|
||||||
|
|
||||||
if (sysfs_create_group(&dev->dev.kobj, attrs))
|
if (sysfs_create_group(&dev->dev.kobj, attrs))
|
||||||
pr_warn("%s: failed to create sysfs group for identification\n",
|
pr_warn("%s: failed to create sysfs group for identification\n",
|
||||||
|
|
Loading…
Reference in a new issue