-void Client::_readdir_add_dirent(DirResult *dirp, const string& name, Inode *in)
-{
- struct stat st;
- int stmask = fill_stat(in, &st);
- dirp->buffer->push_back(DirEntry(name, st, stmask));
- dout(10) << "_readdir_add_dirent " << dirp << " added '" << name << "' -> " << in->ino
- << ", size now " << dirp->buffer->size() << dendl;
-}
-
//struct dirent {
// ino_t d_ino; /* inode number */
// off_t d_off; /* offset to the next dirent */
Inode *in = _ll_get_inode(ist.vino);
dout(15) << "_readdir_get_frag " << dirp << " " << dname << " to " << in->ino << dendl;
- _readdir_add_dirent(dirp, dname, in);
+
+ // add to cached result list
+ struct stat st;
+ int stmask = fill_stat(in, &st);
+ dirp->buffer->push_back(DirEntry(dname, st, stmask));
}
dirp->this_offset = dirp->next_offset;
// some helpers
int _opendir(Inode *in, DirResult **dirpp, int uid=-1, int gid=-1);
- void _readdir_add_dirent(DirResult *dirp, const string& name, Inode *in);
bool _readdir_have_frag(DirResult *dirp);
void _readdir_next_frag(DirResult *dirp);
void _readdir_rechoose_frag(DirResult *dirp);