Commit 1c12cf63 authored by wang di's avatar wang di Committed by Greg Kroah-Hartman

staging: lustre: llite: cache directory striping information

Cache directory striping information that the clients receive
from the metadata servers.
Signed-off-by: default avatarwang di <di.wang@intel.com>
Reviewed-on: http://review.whamcloud.com/7043
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3531Reviewed-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Reviewed-by: default avatarJinshan Xiong <jinshan.xiong@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 c55459a2
...@@ -173,6 +173,8 @@ struct ll_inode_info { ...@@ -173,6 +173,8 @@ struct ll_inode_info {
* -- I am the owner of dir statahead. * -- I am the owner of dir statahead.
*/ */
pid_t d_opendir_pid; pid_t d_opendir_pid;
/* directory stripe information */
struct lmv_stripe_md *d_lmv_md;
} d; } d;
#define lli_readdir_mutex u.d.d_readdir_mutex #define lli_readdir_mutex u.d.d_readdir_mutex
...@@ -180,6 +182,7 @@ struct ll_inode_info { ...@@ -180,6 +182,7 @@ struct ll_inode_info {
#define lli_sai u.d.d_sai #define lli_sai u.d.d_sai
#define lli_sa_lock u.d.d_sa_lock #define lli_sa_lock u.d.d_sa_lock
#define lli_opendir_pid u.d.d_opendir_pid #define lli_opendir_pid u.d.d_opendir_pid
#define lli_lmv_md u.d.d_lmv_md
/* for non-directory */ /* for non-directory */
struct { struct {
......
...@@ -2090,11 +2090,22 @@ struct md_op_data *ll_prep_md_op_data(struct md_op_data *op_data, ...@@ -2090,11 +2090,22 @@ struct md_op_data *ll_prep_md_op_data(struct md_op_data *op_data,
ll_i2gids(op_data->op_suppgids, i1, i2); ll_i2gids(op_data->op_suppgids, i1, i2);
op_data->op_fid1 = *ll_inode2fid(i1); op_data->op_fid1 = *ll_inode2fid(i1);
if (S_ISDIR(i1->i_mode))
op_data->op_mea1 = ll_i2info(i1)->lli_lmv_md;
if (i2) if (i2) {
op_data->op_fid2 = *ll_inode2fid(i2); op_data->op_fid2 = *ll_inode2fid(i2);
else if (S_ISDIR(i2->i_mode))
op_data->op_mea2 = ll_i2info(i2)->lli_lmv_md;
} else {
fid_zero(&op_data->op_fid2); fid_zero(&op_data->op_fid2);
}
if (ll_i2sbi(i1)->ll_flags & LL_SBI_64BIT_HASH)
op_data->op_cli_flags |= CLI_HASH64;
if (ll_need_32bit_api(ll_i2sbi(i1)))
op_data->op_cli_flags |= CLI_API32;
op_data->op_name = name; op_data->op_name = name;
op_data->op_namelen = namelen; op_data->op_namelen = namelen;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment