Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-2089 ofd: do not pin pages provided by osd
[fs/lustre-release.git]
/
lustre
/
ptlrpc
/
client.c
diff --git
a/lustre/ptlrpc/client.c
b/lustre/ptlrpc/client.c
index
727425a
..
a41cd32
100644
(file)
--- a/
lustre/ptlrpc/client.c
+++ b/
lustre/ptlrpc/client.c
@@
-155,8
+155,8
@@
EXPORT_SYMBOL(ptlrpc_prep_bulk_imp);
* Data to transfer in the page starts at offset \a pageoffset and
* amount of data to transfer from the page is \a len
*/
* Data to transfer in the page starts at offset \a pageoffset and
* amount of data to transfer from the page is \a len
*/
-void ptlrpc_prep_bulk_page(struct ptlrpc_bulk_desc *desc,
-
cfs_page_t *page, int pageoffset, int le
n)
+void
__
ptlrpc_prep_bulk_page(struct ptlrpc_bulk_desc *desc,
+
cfs_page_t *page, int pageoffset, int len, int pi
n)
{
LASSERT(desc->bd_iov_count < desc->bd_max_iov);
LASSERT(page != NULL);
{
LASSERT(desc->bd_iov_count < desc->bd_max_iov);
LASSERT(page != NULL);
@@
-166,16
+166,18
@@
void ptlrpc_prep_bulk_page(struct ptlrpc_bulk_desc *desc,
desc->bd_nob += len;
desc->bd_nob += len;
- cfs_page_pin(page);
+ if (pin)
+ cfs_page_pin(page);
+
ptlrpc_add_bulk_page(desc, page, pageoffset, len);
}
ptlrpc_add_bulk_page(desc, page, pageoffset, len);
}
-EXPORT_SYMBOL(ptlrpc_prep_bulk_page);
+EXPORT_SYMBOL(
__
ptlrpc_prep_bulk_page);
/**
* Uninitialize and free bulk descriptor \a desc.
* Works on bulk descriptors both from server and client side.
*/
/**
* Uninitialize and free bulk descriptor \a desc.
* Works on bulk descriptors both from server and client side.
*/
-void
ptlrpc_free_bulk(struct ptlrpc_bulk_desc *desc
)
+void
__ptlrpc_free_bulk(struct ptlrpc_bulk_desc *desc, int unpin
)
{
int i;
ENTRY;
{
int i;
ENTRY;
@@
-192,14
+194,16
@@
void ptlrpc_free_bulk(struct ptlrpc_bulk_desc *desc)
else
class_import_put(desc->bd_import);
else
class_import_put(desc->bd_import);
- for (i = 0; i < desc->bd_iov_count ; i++)
- cfs_page_unpin(desc->bd_iov[i].kiov_page);
+ if (unpin) {
+ for (i = 0; i < desc->bd_iov_count ; i++)
+ cfs_page_unpin(desc->bd_iov[i].kiov_page);
+ }
OBD_FREE(desc, offsetof(struct ptlrpc_bulk_desc,
bd_iov[desc->bd_max_iov]));
EXIT;
}
OBD_FREE(desc, offsetof(struct ptlrpc_bulk_desc,
bd_iov[desc->bd_max_iov]));
EXIT;
}
-EXPORT_SYMBOL(ptlrpc_free_bulk);
+EXPORT_SYMBOL(
__
ptlrpc_free_bulk);
/**
* Set server timelimit for this req, i.e. how long are we willing to wait
/**
* Set server timelimit for this req, i.e. how long are we willing to wait