@ -853,45 +853,6 @@ rqbiocnt(struct request *r)
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
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 - > bio = bio ;
buf - > iter = bio - > bi_iter ;
bio_pageinc ( bio ) ;
}
static struct buf *
@ -1127,7 +1087,6 @@ aoe_end_buf(struct aoedev *d, struct buf *buf)
if ( buf = = d - > ip . buf )
d - > ip . buf = NULL ;
rq = buf - > rq ;
bio_pagedec ( buf - > bio ) ;
mempool_free ( buf , d - > bufpool ) ;
n = ( unsigned long ) rq - > special ;
rq - > special = ( void * ) - - n ;