staging: lustre: llite: cache directory striping information

Cache directory striping information that the clients receive
from the metadata servers.

Signed-off-by: wang di <di.wang@intel.com>
Reviewed-on: http://review.whamcloud.com/7043
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3531
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@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:
wang di 2016-07-21 22:43:57 -04:00 коммит произвёл Greg Kroah-Hartman
Родитель c55459a276
Коммит 1c12cf634e
2 изменённых файлов: 16 добавлений и 2 удалений

Просмотреть файл

@ -173,6 +173,8 @@ struct ll_inode_info {
* -- I am the owner of dir statahead.
*/
pid_t d_opendir_pid;
/* directory stripe information */
struct lmv_stripe_md *d_lmv_md;
} d;
#define lli_readdir_mutex u.d.d_readdir_mutex
@ -180,6 +182,7 @@ struct ll_inode_info {
#define lli_sai u.d.d_sai
#define lli_sa_lock u.d.d_sa_lock
#define lli_opendir_pid u.d.d_opendir_pid
#define lli_lmv_md u.d.d_lmv_md
/* for non-directory */
struct {

Просмотреть файл

@ -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);
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);
else
if (S_ISDIR(i2->i_mode))
op_data->op_mea2 = ll_i2info(i2)->lli_lmv_md;
} else {
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_namelen = namelen;