Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2afad7fc authored by wang di's avatar wang di Committed by Greg Kroah-Hartman
Browse files

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: default avatarwang 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: default avatarJohn L. Hammond <john.hammond@intel.com>
Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 218ba485
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -997,7 +997,8 @@ struct ll_statahead_info {
	unsigned int	    sai_ls_all:1,   /* "ls -al", do stat-ahead for
	unsigned int	    sai_ls_all:1,   /* "ls -al", do stat-ahead for
					     * hidden entries
					     * 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 */
	wait_queue_head_t	sai_waitq;      /* stat-ahead wait queue */
	struct ptlrpc_thread    sai_thread;     /* stat-ahead thread */
	struct ptlrpc_thread    sai_thread;     /* stat-ahead thread */
	struct ptlrpc_thread    sai_agl_thread; /* AGL thread */
	struct ptlrpc_thread    sai_agl_thread; /* AGL thread */
+7 −0
Original line number Original line Diff line number Diff line
@@ -1231,7 +1231,9 @@ static int ll_statahead_thread(void *arg)
			 */
			 */
			ll_release_page(page, le32_to_cpu(dp->ldp_flags) &
			ll_release_page(page, le32_to_cpu(dp->ldp_flags) &
					      LDF_COLLIDE);
					      LDF_COLLIDE);
			sai->sai_in_readpage = 1;
			page = ll_get_dir_page(dir, pos, &chain);
			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;
			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)) {
		if (!ll_sa_entry_stated(entry)) {
			sai->sai_index_wait = entry->se_index;
			sai->sai_index_wait = entry->se_index;
			lwi = LWI_TIMEOUT_INTR(cfs_time_seconds(30), NULL,
			lwi = LWI_TIMEOUT_INTR(cfs_time_seconds(30), NULL,