uint64_t time_warp_seq; // count of (potential) mtime/atime timewarps (i.e., utimes())
// dirfrag, recursive accounting
+ uint64_t nfiles, nsubdirs;
nested_info_t accounted_nested; // what dirfrag has seen
nested_info_t nested; // inline summation for child dirfrags.
/*
::encode(i.max_size, bl);
::encode(i.mtime, bl);
::encode(i.atime, bl);
+ ::encode(i.nfiles, bl);
+ ::encode(i.nsubdirs, bl);
::encode(i.nested, bl);
+ ::encode(i.accounted_nested, bl);
::encode(i.version, bl);
::encode(i.file_data_version, bl);
}
::decode(i.max_size, p);
::decode(i.mtime, p);
::decode(i.atime, p);
+ ::decode(i.nfiles, p);
+ ::decode(i.nsubdirs, p);
::decode(i.nested, p);
+ ::decode(i.accounted_nested, p);
::decode(i.version, p);
::decode(i.file_data_version, p);
}
return -ENOMEM;
cf->dir_info_len =
sprintf(cf->dir_info,
- "entries: %20lld\n"
- "files: %20lld\n"
- "subdirs: %20lld\n"
- "rentries: %20lld\n"
- "rfiles: %20lld\n"
- "rsubdirs: %20lld\n"
- "rbytes: %20lld\n"
- "rctime: %10ld.%09ld\n",
+ "entries: %20lld\n"
+ " files: %20lld\n"
+ " subdirs: %20lld\n"
+ "rentries: %20lld\n"
+ " rfiles: %20lld\n"
+ " rsubdirs: %20lld\n"
+ "rbytes: %20lld\n"
+ "rctime: %10ld.%09ld\n",
ci->i_files + ci->i_subdirs,
ci->i_files,
ci->i_subdirs,
dout(10) << "predirty_nested updating size/mtime on " << *pin << dendl;
if (pf->fraginfo.mtime > pi->mtime)
pi->mtime = pf->fraginfo.mtime;
+ pi->nfiles += pf->fraginfo.nfiles - pf->accounted_fraginfo.nfiles;
+ pi->nsubdirs += pf->fraginfo.nsubdirs - pf->accounted_fraginfo.nsubdirs;
pi->size += pf->fraginfo.size() - pf->accounted_fraginfo.size();
pf->accounted_fraginfo = pf->fraginfo;
}
inodeno_t ino;
version_t version;
ceph_file_layout layout;
- utime_t ctime, mtime, atime, rctime;
+ utime_t ctime, mtime, atime;
unsigned mode, uid, gid, nlink, rdev;
loff_t size, max_size, nested_size;
version_t time_warp_seq;
- nested_info_t nested;
+ uint64_t nfiles, nsubdirs;
+ nested_info_t nested;
+
string symlink; // symlink content (if symlink)
fragtree_t dirfragtree;
map<string, bufferptr> xattrs;
max_size = e.max_size;
rdev = e.rdev;
+ nfiles = e.files;
+ nsubdirs = e.subdirs;
nested.rctime.decode_timeval(&e.rctime);
nested.rbytes = e.rbytes;
nested.rfiles = e.rfiles;
e.size = in->inode.size;
e.max_size = in->inode.max_size;
+ e.files = in->inode.nfiles;
+ e.subdirs = in->inode.nsubdirs;
in->inode.nested.rctime.encode_timeval(&e.rctime);
e.rbytes = in->inode.nested.rbytes;
e.rfiles = in->inode.nested.rfiles;