dir_result_t::dir_result_t(Inode *in)
: inode(in), owner_uid(-1), owner_gid(-1), offset(0), this_offset(2),
- next_offset(2), release_count(0), ordered_count(0), start_shared_gen(0),
- buffer(0) {
-}
+ next_offset(2), release_count(0), ordered_count(0), start_shared_gen(0)
+ { }
void Client::_reset_faked_inos()
{
void Client::_readdir_drop_dirp_buffer(dir_result_t *dirp)
{
ldout(cct, 10) << "_readdir_drop_dirp_buffer " << dirp << dendl;
- if (dirp->buffer) {
- delete dirp->buffer;
- dirp->buffer = NULL;
- }
+ dirp->buffer.clear();
}
int Client::_readdir_get_frag(dir_result_t *dirp)
_readdir_drop_dirp_buffer(dirp);
- dirp->buffer = new vector<pair<string,InodeRef> >;
- dirp->buffer->swap(req->readdir_result);
+ dirp->buffer.swap(req->readdir_result);
if (fg != req->readdir_reply_frag) {
fg = req->readdir_reply_frag;
dirp->this_offset = dirp->next_offset;
ldout(cct, 10) << "_readdir_get_frag " << dirp << " got frag " << dirp->buffer_frag
<< " this_offset " << dirp->this_offset
- << " size " << dirp->buffer->size() << dendl;
+ << " size " << dirp->buffer.size() << dendl;
if (req->readdir_end) {
dirp->last_name.clear();
if (dirp->at_end())
return 0;
- if (dirp->buffer_frag != dirp->frag() || dirp->buffer == NULL) {
+ if (dirp->buffer_frag != dirp->frag() || dirp->buffer.empty()) {
int r = _readdir_get_frag(dirp);
if (r)
return r;
off = dirp->fragpos();
}
- ldout(cct, 10) << "off " << off << " this_offset " << hex << dirp->this_offset << dec << " size " << dirp->buffer->size()
+ ldout(cct, 10) << "off " << off << " this_offset " << hex << dirp->this_offset << dec << " size " << dirp->buffer.size()
<< " frag " << fg << dendl;
dirp->offset = dir_result_t::make_fpos(fg, off);
while (off >= dirp->this_offset &&
- off - dirp->this_offset < dirp->buffer->size()) {
- pair<string,InodeRef>& ent = (*dirp->buffer)[off - dirp->this_offset];
+ off - dirp->this_offset < dirp->buffer.size()) {
+ pair<string,InodeRef>& ent = dirp->buffer[off - dirp->this_offset];
int stmask = fill_stat(ent.second, &st);
fill_dirent(&de, ent.first.c_str(), st.st_mode, st.st_ino, dirp->offset + 1);