summaryrefslogtreecommitdiff
path: root/src/mds/CInode.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mds/CInode.cc')
-rw-r--r--src/mds/CInode.cc46
1 files changed, 15 insertions, 31 deletions
diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc
index 528d1f8b970..33e9a026e77 100644
--- a/src/mds/CInode.cc
+++ b/src/mds/CInode.cc
@@ -310,14 +310,11 @@ inode_t *CInode::project_inode(map<string,bufferptr> *px)
projected_nodes.push_back(new projected_inode_t(new inode_t(inode)));
if (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;
@@ -338,11 +335,6 @@ void CInode::pop_and_dirty_projected_inode(LogSegment *ls)
delete px;
}
- if (projected_nodes.front()->dir_layout != default_layout) {
- delete default_layout;
- default_layout = projected_nodes.front()->dir_layout;
- }
-
if (projected_nodes.front()->snapnode)
pop_projected_snaprealm(projected_nodes.front()->snapnode);
@@ -1106,12 +1098,14 @@ void CInode::encode_lock_state(int type, bufferlist& bl)
case CEPH_LOCK_IFILE:
if (is_auth()) {
- ::encode(inode.layout, bl);
- ::encode(inode.size, bl);
::encode(inode.mtime, bl);
::encode(inode.atime, bl);
::encode(inode.time_warp_seq, bl);
- ::encode(inode.client_ranges, bl);
+ if (!is_dir()) {
+ ::encode(inode.layout, bl);
+ ::encode(inode.size, bl);
+ ::encode(inode.client_ranges, bl);
+ }
} else {
bool dirty = filelock.is_dirty();
::encode(dirty, bl);
@@ -1193,9 +1187,7 @@ void CInode::encode_lock_state(int type, bufferlist& bl)
case CEPH_LOCK_IPOLICY:
if (inode.is_dir()) {
- ::encode((default_layout ? true : false), bl);
- if (default_layout)
- encode(*default_layout, bl);
+ ::encode(inode.layout, bl);
}
break;
@@ -1289,12 +1281,14 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
case CEPH_LOCK_IFILE:
if (!is_auth()) {
- ::decode(inode.layout, p);
- ::decode(inode.size, p);
::decode(inode.mtime, p);
::decode(inode.atime, p);
::decode(inode.time_warp_seq, p);
- ::decode(inode.client_ranges, p);
+ if (!is_dir()) {
+ ::decode(inode.layout, p);
+ ::decode(inode.size, p);
+ ::decode(inode.client_ranges, p);
+ }
} else {
bool replica_dirty;
::decode(replica_dirty, p);
@@ -1436,12 +1430,7 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
case CEPH_LOCK_IPOLICY:
if (inode.is_dir()) {
- bool default_layout_exists;
- ::decode(default_layout_exists, p);
- if (default_layout_exists) {
- default_layout = new default_file_layout;
- decode(*default_layout, p);
- }
+ ::decode(inode.layout, p);
}
break;
@@ -2627,15 +2616,10 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
// file
i = pfile ? pi:oi;
- if (is_file()) {
- e.layout = i->layout;
+ if (is_dir()) {
+ e.layout = (ppolicy ? pi : oi)->layout;
} else {
- if (ppolicy && get_projected_dir_layout())
- e.layout = *get_projected_dir_layout();
- else if (default_layout)
- e.layout = default_layout->layout;
- else
- memset(&e.layout, 0, sizeof(e.layout));
+ e.layout = i->layout;
}
e.size = i->size;
e.truncate_seq = i->truncate_seq;