mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
staging: lustre: llite: do post work for statahead in readdir case
Increase the post-work for the statahead thread in the readdir case since it can become very busy. Signed-off-by: wang di <di.wang@intel.com> Reviewed-on: http://review.whamcloud.com/10761 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4906 Reviewed-by: John L. Hammond <john.hammond@intel.com> Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
218ba48524
commit
2afad7fc9f
2 changed files with 9 additions and 1 deletions
|
@ -997,7 +997,8 @@ struct ll_statahead_info {
|
|||
unsigned int sai_ls_all:1, /* "ls -al", do stat-ahead for
|
||||
* hidden entries
|
||||
*/
|
||||
sai_agl_valid:1;/* AGL is valid for the dir */
|
||||
sai_agl_valid:1,/* AGL is valid for the dir */
|
||||
sai_in_readpage:1;/* statahead is in readdir() */
|
||||
wait_queue_head_t sai_waitq; /* stat-ahead wait queue */
|
||||
struct ptlrpc_thread sai_thread; /* stat-ahead thread */
|
||||
struct ptlrpc_thread sai_agl_thread; /* AGL thread */
|
||||
|
|
|
@ -1231,7 +1231,9 @@ static int ll_statahead_thread(void *arg)
|
|||
*/
|
||||
ll_release_page(page, le32_to_cpu(dp->ldp_flags) &
|
||||
LDF_COLLIDE);
|
||||
sai->sai_in_readpage = 1;
|
||||
page = ll_get_dir_page(dir, pos, &chain);
|
||||
sai->sai_in_readpage = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1550,6 +1552,11 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
|
|||
return entry ? 1 : -EAGAIN;
|
||||
}
|
||||
|
||||
/* if statahead is busy in readdir, help it do post-work */
|
||||
while (!ll_sa_entry_stated(entry) && sai->sai_in_readpage &&
|
||||
!sa_received_empty(sai))
|
||||
ll_post_statahead(sai);
|
||||
|
||||
if (!ll_sa_entry_stated(entry)) {
|
||||
sai->sai_index_wait = entry->se_index;
|
||||
lwi = LWI_TIMEOUT_INTR(cfs_time_seconds(30), NULL,
|
||||
|
|
Loading…
Reference in a new issue