Commit 348ce85b authored by Linus Torvalds's avatar Linus Torvalds

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
parents 980221d1 0cbc72a1
...@@ -853,45 +853,6 @@ rqbiocnt(struct request *r) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment