performance/io-cache: store op_errno in page.
This will enable us to pass appropriate op_errno indicating EOF even during cache-hits. Signed-off-by: Raghavendra G <raghavendra@gluster.com> Change-Id: Ib239b5de9b8fca2bd8eb5ec87c93f2cb1c11a99c BUG: 795789 Signed-off-by: Raghavendra G <raghavendra@gluster.com> Reviewed-on: http://review.gluster.com/2939 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amarts@redhat.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
This commit is contained in:
parent
c0b3ba9b3b
commit
eae8a469e7
@ -999,7 +999,8 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd,
|
||||
"cache hit for trav_offset=%"
|
||||
PRId64"/local_offset=%"PRId64"",
|
||||
trav_offset, local_offset);
|
||||
waitq = __ioc_page_wakeup (trav, 0);
|
||||
waitq = __ioc_page_wakeup (trav,
|
||||
trav->op_errno);
|
||||
} else {
|
||||
/* if waitq already exists, fstat
|
||||
* revalidate is
|
||||
@ -1017,7 +1018,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd,
|
||||
need_validate = 0;
|
||||
|
||||
waitq = __ioc_page_wakeup (trav,
|
||||
0);
|
||||
trav->op_errno);
|
||||
ioc_inode_unlock (ioc_inode);
|
||||
|
||||
ioc_waitq_return (waitq);
|
||||
@ -1049,7 +1050,8 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd,
|
||||
if (ret == -1) {
|
||||
ioc_inode_lock (ioc_inode);
|
||||
{
|
||||
waitq = __ioc_page_wakeup (trav, 0);
|
||||
waitq = __ioc_page_wakeup (trav,
|
||||
trav->op_errno);
|
||||
}
|
||||
ioc_inode_unlock (ioc_inode);
|
||||
|
||||
|
@ -126,6 +126,7 @@ struct ioc_page {
|
||||
struct ioc_waitq *waitq;
|
||||
struct iobref *iobref;
|
||||
pthread_mutex_t page_lock;
|
||||
int32_t op_errno;
|
||||
};
|
||||
|
||||
struct ioc_cache {
|
||||
|
@ -124,7 +124,7 @@ ioc_inode_wakeup (call_frame_t *frame, ioc_inode_t *ioc_inode,
|
||||
{
|
||||
page_waitq =
|
||||
__ioc_page_wakeup (waiter_page,
|
||||
0);
|
||||
waiter_page->op_errno);
|
||||
}
|
||||
ioc_inode_unlock (ioc_inode);
|
||||
if (page_waitq)
|
||||
|
@ -517,6 +517,7 @@ ioc_fault_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
* byte replies */
|
||||
page_size = iov_length(vector, count);
|
||||
page->size = page_size;
|
||||
page->op_errno = op_errno;
|
||||
|
||||
iobref_page_size = iobref_size (page->iobref);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user