mirror of
https://github.com/ceph/ceph
synced 2025-04-01 23:02:17 +00:00
mds: misc fixes for dir default layout projection
This commit is contained in:
parent
2d194c67f1
commit
cb7b360159
src/mds
@ -229,10 +229,12 @@ inode_t *CInode::project_inode(map<string,bufferptr> *px)
|
||||
*px = xattrs;
|
||||
projected_nodes.back()->dir_layout = default_layout;
|
||||
} else {
|
||||
default_file_layout *last_dl = projected_nodes.back()->dir_layout;
|
||||
projected_nodes.push_back(new projected_inode_t(
|
||||
new inode_t(*projected_nodes.back()->inode)));
|
||||
if (px)
|
||||
*px = *get_projected_xattrs();
|
||||
projected_nodes.back()->dir_layout = last_dl;
|
||||
}
|
||||
projected_nodes.back()->xattrs = px;
|
||||
dout(15) << "project_inode " << projected_nodes.back()->inode << dendl;
|
||||
|
@ -234,10 +234,12 @@ public:
|
||||
sr_t *snapnode;
|
||||
default_file_layout *dir_layout;
|
||||
|
||||
projected_inode_t() : inode(NULL), xattrs(NULL), snapnode(NULL) {}
|
||||
projected_inode_t(inode_t *in, sr_t *sn) : inode(in), xattrs(NULL), snapnode(sn) {}
|
||||
projected_inode_t(inode_t *in, map<string, bufferptr> *xp = NULL, sr_t *sn = NULL) :
|
||||
inode(in), xattrs(xp), snapnode(sn) {}
|
||||
projected_inode_t() : inode(NULL), xattrs(NULL), snapnode(NULL), dir_layout(NULL) {}
|
||||
projected_inode_t(inode_t *in, sr_t *sn) : inode(in), xattrs(NULL), snapnode(sn),
|
||||
dir_layout(NULL) {}
|
||||
projected_inode_t(inode_t *in, map<string, bufferptr> *xp = NULL, sr_t *sn = NULL,
|
||||
default_file_layout *dl = NULL) :
|
||||
inode(in), xattrs(xp), snapnode(sn), dir_layout(dl) {}
|
||||
};
|
||||
list<projected_inode_t*> projected_nodes; // projected values (only defined while dirty)
|
||||
|
||||
|
@ -545,7 +545,9 @@ private:
|
||||
inode_t *pi = in->get_projected_inode();
|
||||
default_file_layout *default_layout = NULL;
|
||||
if (in->is_dir())
|
||||
default_layout = in->get_projected_node()->dir_layout;
|
||||
default_layout = (in->get_projected_node() ?
|
||||
in->get_projected_node()->dir_layout :
|
||||
in->default_layout);
|
||||
|
||||
if (!pdft)
|
||||
pdft = &in->dirfragtree;
|
||||
|
Loading…
Reference in New Issue
Block a user