From: James Simmons Date: Thu, 19 Jun 2014 23:15:27 +0000 (-0400) Subject: LU-5234 llite: restore newer kernel support for ll_read_dir X-Git-Tag: 2.6.0-RC1~57 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=a708d1a6bd24e7c3b9f63cd63a73f91963992c4c LU-5234 llite: restore newer kernel support for ll_read_dir During the merger of the patch for LU-4906 the support for newer kernels was removed in the new code. This patch restores this functionality so RHEL7 and SuSE12 clients can function again. Change-Id: Ieea4fb23cd644b2d6ce998cfdba8e0e15e481fc5 Signed-off-by: James Simmons Reviewed-on: http://review.whamcloud.com/10761 Tested-by: Jenkins Reviewed-by: Bob Glossman Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Yang Sheng Reviewed-by: Oleg Drokin --- diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index 48f8be8..519e2dc 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -246,8 +246,14 @@ int ll_dir_read(struct inode *inode, __u64 *ppos, struct md_op_data *op_data, * to access the 'ent' through its 'lde_name', * so the parameter 'name' for 'filldir()' must * be part of the 'ent'. */ +#ifdef HAVE_DIR_CONTEXT + ctx->pos = lhash; + done = !dir_emit(ctx, ent->lde_name, namelen, ino, + type); +#else done = filldir(cookie, ent->lde_name, namelen, lhash, ino, type); +#endif } if (done) { @@ -277,8 +283,11 @@ int ll_dir_read(struct inode *inode, __u64 *ppos, struct md_op_data *op_data, &chain); } } - +#ifdef HAVE_DIR_CONTEXT + ctx->pos = pos; +#else *ppos = pos; +#endif ll_dir_chain_fini(&chain); RETURN(rc); }