/* this is anonymous page allocated for copy-write */
lnb[i].page->mapping = NULL;
__free_page(lnb[i].page);
/* this is anonymous page allocated for copy-write */
lnb[i].page->mapping = NULL;
__free_page(lnb[i].page);
} else {
/* see comment in osd_bufs_get_read() */
ptr = (unsigned long)lnb[i].dentry;
if (ptr & 1UL) {
ptr &= ~1UL;
dmu_buf_rele((void *)ptr, osd_zerocopy_tag);
} else {
/* see comment in osd_bufs_get_read() */
ptr = (unsigned long)lnb[i].dentry;
if (ptr & 1UL) {
ptr &= ~1UL;
dmu_buf_rele((void *)ptr, osd_zerocopy_tag);
bufoff = off - dbp[i]->db_offset;
tocpy = min_t(int, dbp[i]->db_size - bufoff, len);
bufoff = off - dbp[i]->db_offset;
tocpy = min_t(int, dbp[i]->db_size - bufoff, len);
if (unlikely(abuf == NULL))
GOTO(out_err, rc = -ENOMEM);
if (unlikely(abuf == NULL))
GOTO(out_err, rc = -ENOMEM);
/* go over pages arcbuf contains, put them as
* local niobufs for ptlrpc's bulks */
/* go over pages arcbuf contains, put them as
* local niobufs for ptlrpc's bulks */
/* drop the reference, otherwise osd_put_bufs()
* will be releasing it - bad! */
lnb[i].dentry = NULL;
/* drop the reference, otherwise osd_put_bufs()
* will be releasing it - bad! */
lnb[i].dentry = NULL;