Luminous uses C++11. These fixes correct compiler errors.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
uint64_t size = st.st_size;
dout(0) << "file " << filename << " size is " << size << dendl;
- inode_t inode;
+ inode_t<> inode;
memset(&inode, 0, sizeof(inode));
inode.ino = st.st_ino;
ret = client->fdescribe_layout(fd, &inode.layout);
{
std::string mytype(type);
if (mytype == "")
- mytype = default_type;
+ mytype = std::string(default_type);
if (mytype == "json")
return new JSONFormatter(false);
#ifndef CEPH_RGW_ESCAPE_H
#define CEPH_RGW_ESCAPE_H
+#include <stdlib.h>
+
#ifdef __cplusplus
extern "C" {
#endif
#include "include/unordered_map.h"
#include "include/unordered_set.h"
-#include "common/ceph_time.h"
#include "include/int_types.h"
}
void set_path(boost::string_view s, inodeno_t b) {
- path = s;
+ path = std::string(s);
ino = b;
}
void set_path(boost::string_view s) {
if (s[0] == '/') {
- path = s.substr(1);
+ path = std::string(s.substr(1));
ino = 1;
} else {
ino = 0;
- path = s;
+ path = std::string(s);
}
bits.clear();
}
parse_bits();
if (!bits.empty())
path += "/";
- path += s;
- bits.emplace_back(s);
+ path += std::string(s);
+ bits.emplace_back(std::string(s));
}
void push_dentry(const string& s) {
push_dentry(boost::string_view(s));
void CDentry::set_object_info(MDSCacheObjectInfo &info)
{
info.dirfrag = dir->dirfrag();
- info.dname = name;
+ info.dname = std::string(boost::string_view(name));
info.snapid = last;
}
fnode_t *CDir::project_fnode()
{
assert(get_version() != 0);
- auto &p = projected_fnode.emplace_back(*get_projected_fnode());
+ projected_fnode.emplace_back(*get_projected_fnode());
+ auto &p = projected_fnode.back();
if (scrub_infop && scrub_infop->last_scrub_dirty) {
p.localized_scrub_stamp = scrub_infop->last_local.time;
continue;
}
- if (dn && (wanted_items.count(mempool::mds_co::string(dname)) > 0 || !complete)) {
+ if (dn && (wanted_items.count(mempool::mds_co::string(boost::string_view(dname))) > 0 || !complete)) {
dout(10) << " touching wanted dn " << *dn << dendl;
inode->mdcache->touch_dentry(dn);
}
dout(10) << __func__ << " " << dname << dendl;
std::string path(get_path());
path += "/";
- path += dname;
+ path += std::string(dname);
const bool fatal = cache->mds->damage_table.notify_dentry(
inode->ino(), frag, last, dname, path);
if (fatal) {
if (!stale_items.empty()) {
for (const auto &p : stale_items) {
- to_remove.insert(std::string(p));
+ to_remove.insert(std::string(boost::string_view(p)));
write_size += p.length();
}
stale_items.clear();
CInode::projected_inode &CInode::project_inode(bool xattr, bool snap)
{
- auto &pi = projected_nodes.empty() ?
- projected_nodes.emplace_back(inode) :
+ if (projected_nodes.empty()) {
+ projected_nodes.emplace_back(inode);
+ } else {
projected_nodes.emplace_back(projected_nodes.back().inode);
+ }
+ auto &pi = projected_nodes.back();
if (scrub_infop && scrub_infop->last_scrub_dirty) {
pi.inode.last_scrub_stamp = scrub_infop->last_scrub_stamp;
::decode(inode, bl);
if (is_symlink()) {
std::string tmp;
- decode(tmp, bl);
- symlink = boost::string_view(tmp);
+ ::decode(tmp, bl);
+ symlink = mempool::mds_co::string(boost::string_view(tmp));
}
::decode(dirfragtree, bl);
::decode(xattrs, bl);
{
std::string tmp;
::decode(tmp, p);
- symlink = boost::string_view(tmp);
+ symlink = mempool::mds_co::string(boost::string_view(tmp));
}
::decode(dirfragtree, p);
::decode(xattrs, p);
}
sr_t *get_projected_srnode() {
if (num_projected_srnodes > 0) {
- for (std::list<projected_inode_t*>::reverse_iterator p = projected_nodes.rbegin();
- p != projected_nodes.rend();
- ++p)
- if ((*p)->snapnode)
- return (*p)->snapnode;
+ for (auto it = projected_nodes.rbegin(); it != projected_nodes.rend(); ++it)
+ if (it->snapnode)
+ return it->snapnode.get();
}
if (snaprealm)
return &snaprealm->srnode;
if (dentries.count(key) == 0) {
DamageEntryRef entry = std::make_shared<DentryDamage>(
ino, frag, dname, snap_id);
- entry->path = path;
+ entry->path = std::string(path);
dentries[key][DentryIdent(dname, snap_id)] = entry;
by_id[entry->id] = std::move(entry);
}
auto key = DirFragIdent(ino, frag);
if (dirfrags.count(key) == 0) {
DamageEntryRef entry = std::make_shared<DirFragDamage>(ino, frag);
- entry->path = path;
+ entry->path = std::string(path);
dirfrags[key] = entry;
by_id[entry->id] = std::move(entry);
}
if (remotes.count(ino) == 0) {
auto entry = std::make_shared<BacktraceDamage>(ino);
- entry->path = path;
+ entry->path = std::string(path);
remotes[ino] = entry;
by_id[entry->id] = std::move(entry);
}
uint64_t features)
{
auto fs = std::make_shared<Filesystem>();
- fs->mds_map.fs_name = name;
+ fs->mds_map.fs_name = std::string(name);
fs->mds_map.max_mds = 1;
fs->mds_map.data_pools.push_back(data_pool);
fs->mds_map.metadata_pool = metadata_pool;
if (dir) {
dir->get_inode()->make_path_string(path);
path += "/";
- path += dn->get_name();
+ path += std::string(dn->get_name());
}
bool fatal = mds->damage_table.notify_remote_damaged(ino, path);
// check xattrs kv pairs size
size_t cur_xattrs_size = 0;
for (const auto& p : *pxattrs) {
- if ((flags & CEPH_XATTR_REPLACE) && (name.compare(p.first) == 0)) {
+ if ((flags & CEPH_XATTR_REPLACE) && (name.compare(std::string(boost::string_view(p.first))) == 0)) {
continue;
}
cur_xattrs_size += p.first.length() + p.second.length();
return;
}
- if ((flags & CEPH_XATTR_CREATE) && pxattrs->count(mempool::mds_co::string(name))) {
+ if ((flags & CEPH_XATTR_CREATE) && pxattrs->count(mempool::mds_co::string(boost::string_view(name)))) {
dout(10) << "setxattr '" << name << "' XATTR_CREATE and EEXIST on " << *cur << dendl;
respond_to_request(mdr, -EEXIST);
return;
}
- if ((flags & CEPH_XATTR_REPLACE) && !pxattrs->count(mempool::mds_co::string(name))) {
+ if ((flags & CEPH_XATTR_REPLACE) && !pxattrs->count(mempool::mds_co::string(boost::string_view(name)))) {
dout(10) << "setxattr '" << name << "' XATTR_REPLACE and ENODATA on " << *cur << dendl;
respond_to_request(mdr, -ENODATA);
return;
pi.inode.xattr_version++;
auto &px = *pi.xattrs;
if ((flags & CEPH_XATTR_REMOVE)) {
- px.erase(mempool::mds_co::string(name));
+ px.erase(mempool::mds_co::string(boost::string_view(name)));
} else {
bufferptr b = buffer::create(len);
if (len)
req->get_data().copy(0, len, b.c_str());
- auto em = px.emplace(std::piecewise_construct, std::forward_as_tuple(mempool::mds_co::string(name)), std::forward_as_tuple(b));
+ auto em = px.emplace(std::piecewise_construct, std::forward_as_tuple(mempool::mds_co::string(boost::string_view(name))), std::forward_as_tuple(b));
if (!em.second)
em.first->second = b;
}
return;
auto pxattrs = cur->get_projected_xattrs();
- if (pxattrs->count(mempool::mds_co::string(name)) == 0) {
+ if (pxattrs->count(mempool::mds_co::string(boost::string_view(name))) == 0) {
dout(10) << "removexattr '" << name << "' and ENODATA on " << *cur << dendl;
respond_to_request(mdr, -ENODATA);
return;
pi.inode.ctime = mdr->get_op_stamp();
pi.inode.change_attr++;
pi.inode.xattr_version++;
- px.erase(mempool::mds_co::string(name));
+ px.erase(mempool::mds_co::string(boost::string_view(name)));
// log + wait
mdr->ls = mdlog->get_current_segment();
// it's a symlink
dn->push_projected_linkage(newi);
- newi->symlink = req->get_path2();
+ newi->symlink = mempool::mds_co::string(boost::string_view(req->get_path2()));
newi->inode.size = newi->symlink.length();
newi->inode.rstat.rbytes = newi->inode.size;
newi->inode.rstat.rfiles = 1;
{
std::string t;
dn->make_path_string(t, true);
- pi.inode.stray_prior_path = std::move(t);
+ pi.inode.stray_prior_path = mempool::mds_co::string(boost::string_view(t));
}
mdr->add_projected_inode(in); // do this _after_ my dn->pre_dirty().. we apply that one manually.
pi.inode.version = in->pre_dirty();
rmdir_rollback rollback;
rollback.reqid = mdr->reqid;
rollback.src_dir = dn->get_dir()->dirfrag();
- rollback.src_dname = dn->get_name();
+ rollback.src_dname = std::string(dn->get_name());
rollback.dest_dir = straydn->get_dir()->dirfrag();
- rollback.dest_dname = straydn->get_name();
+ rollback.dest_dname = std::string(straydn->get_name());
::encode(rollback, mdr->more()->rollback_bl);
dout(20) << " rollback is " << mdr->more()->rollback_bl.length() << " bytes" << dendl;
{
std::string t;
destdn->make_path_string(t, true);
- tpi->stray_prior_path = std::move(t);
+ tpi->stray_prior_path = mempool::mds_co::string(boost::string_view(t));
}
tpi->nlink--;
if (tpi->nlink == 0)
rollback.orig_src.dirfrag = srcdn->get_dir()->dirfrag();
rollback.orig_src.dirfrag_old_mtime = srcdn->get_dir()->get_projected_fnode()->fragstat.mtime;
rollback.orig_src.dirfrag_old_rctime = srcdn->get_dir()->get_projected_fnode()->rstat.rctime;
- rollback.orig_src.dname = srcdn->get_name();
+ rollback.orig_src.dname = std::string(srcdn->get_name());
if (srcdnl->is_primary())
rollback.orig_src.ino = srcdnl->get_inode()->ino();
else {
rollback.orig_dest.dirfrag = destdn->get_dir()->dirfrag();
rollback.orig_dest.dirfrag_old_mtime = destdn->get_dir()->get_projected_fnode()->fragstat.mtime;
rollback.orig_dest.dirfrag_old_rctime = destdn->get_dir()->get_projected_fnode()->rstat.rctime;
- rollback.orig_dest.dname = destdn->get_name();
+ rollback.orig_dest.dname = std::string(destdn->get_name());
if (destdnl->is_primary())
rollback.orig_dest.ino = destdnl->get_inode()->ino();
else if (destdnl->is_remote()) {
rollback.stray.dirfrag = straydn->get_dir()->dirfrag();
rollback.stray.dirfrag_old_mtime = straydn->get_dir()->get_projected_fnode()->fragstat.mtime;
rollback.stray.dirfrag_old_rctime = straydn->get_dir()->get_projected_fnode()->rstat.rctime;
- rollback.stray.dname = straydn->get_name();
+ rollback.stray.dname = std::string(straydn->get_name());
}
::encode(rollback, mdr->more()->rollback_bl);
dout(20) << " rollback is " << mdr->more()->rollback_bl.length() << " bytes" << dendl;
// actual
string snap_name;
if (p->second->ino == diri->ino())
- snap_name = p->second->name;
+ snap_name = std::string(p->second->name);
else
- snap_name = p->second->get_long_name();
+ snap_name = std::string(p->second->get_long_name());
unsigned start_len = dnbl.length();
if (int(start_len + snap_name.length() + sizeof(__u32) + sizeof(LeaseStat)) > max_bytes)
SnapInfo info;
info.ino = diri->ino();
info.snapid = snapid;
- info.name = snapname;
+ info.name = std::string(snapname);
info.stamp = mdr->get_op_stamp();
auto &pi = diri->project_inode(false, true);
auto &newsnap = *pi.snapnode;
auto it = newsnap.snaps.find(snapid);
assert(it != newsnap.snaps.end());
- it->second.name = dstname;
+ it->second.name = std::string(dstname);
// journal the inode changes
mdr->ls = mdlog->get_current_segment();
if (!in->is_base())
diri = in->get_projected_parent_dn()->get_dir()->get_inode();
if (diri && diri->is_stray()){
- path = in->get_projected_inode()->stray_prior_path;
+ path = std::string(boost::string_view(in->get_projected_inode()->stray_prior_path));
dout(20) << __func__ << " stray_prior_path " << path << dendl;
} else {
in->make_path_string(path, true);
n[0] != '_') return 0;
int next_ = n.find('_', 1);
if (next_ < 0) return 0;
- pname = n.substr(1, next_ - 1);
+ pname = std::string(n.substr(1, next_ - 1));
pino = atoll(n.data() + next_ + 1);
dout(10) << " " << n << " parses to name '" << pname << "' dirino " << pino << dendl;
}
oldest_snap(os), state(st)
{
if (i.is_symlink())
- symlink = sym;
+ symlink = std::string(sym);
if (i.is_dir())
dirfragtree = dft;
if (oi)
}
}
} else if (in->inode.is_symlink()) {
- in->symlink = symlink;
+ in->symlink = mempool::mds_co::string(boost::string_view(symlink));
}
in->old_inodes = old_inodes;
if (!in->old_inodes.empty()) {
iter = fb_list.begin(); iter != fb_list.end(); ++iter) {
boost::string_view dentry = (*iter)->dn;
children[dir_ino].emplace_back(dentry);
- ino_locations[(*iter)->inode.ino] = Location(dir_ino, dentry);
+ ino_locations[(*iter)->inode.ino] = Location(dir_ino, std::string(dentry));
}
for (list<nullbit>::const_iterator
iter = fb_list.begin(); iter != fb_list.end(); ++iter) {
std::string dentry((*iter)->dn);
children[dir_ino].push_back(dentry);
- ino_locations[(*iter)->inode.ino] = Location(dir_ino, dentry);
+ ino_locations[(*iter)->inode.ino] = Location(dir_ino, std::string(dentry));
if (children.find((*iter)->inode.ino) == children.end()) {
- leaf_locations.push_back(Location(dir_ino, dentry));
+ leaf_locations.push_back(Location(dir_ino, std::string(dentry)));
}
}
for (list<nullbit>::const_iterator
iter = nb_list.begin(); iter != nb_list.end(); ++iter) {
boost::string_view dentry = iter->dn;
- leaf_locations.push_back(Location(dir_ino, dentry));
+ leaf_locations.push_back(Location(dir_ino, std::string(dentry)));
}
list<remotebit> const &rb_list = dl.get_dremote();
for (list<remotebit>::const_iterator
iter = rb_list.begin(); iter != rb_list.end(); ++iter) {
boost::string_view dentry = iter->dn;
- leaf_locations.push_back(Location(dir_ino, dentry));
+ leaf_locations.push_back(Location(dir_ino, std::string(dentry)));
}
}
if (struct_v >= 12) {
std::string tmp;
::decode(tmp, p);
- stray_prior_path = boost::string_view(tmp);
+ stray_prior_path = std::basic_string<char,std::char_traits<char>,Allocator<char>>(boost::string_view(tmp));
}
if (struct_v >= 13) {
realms[r].dirs[df] = nonce;
}
void add_dentry(dirfrag_t r, dirfrag_t df, boost::string_view dn, snapid_t last, unsigned nonce) {
- realms[r].dentries[df][pair<string,snapid_t>(dn,last)] = nonce;
+ realms[r].dentries[df][pair<string,snapid_t>(std::string(dn),last)] = nonce;
}
void add_realm(dirfrag_t df, realm& r) {
// void set_flag_forward() { flag_forward = true; }
void set_flag_error_dn(boost::string_view dn) {
flag_error_dn = true;
- error_dentry = dn;
+ error_dentry = std::string(dn);
}
void set_flag_error_dir() {
flag_error_dir = true;
dir_auth_hint = a;
}
void set_error_dentry(boost::string_view dn) {
- error_dentry = dn;
+ error_dentry = std::string(dn);
}
return -ENOENT;
}
std::map<string, cmd_vartype> modified = cmdmap;
- modified["fs_name"] = fs->mds_map.get_fs_name();
+ modified["fs_name"] = std::string(fs->mds_map.get_fs_name());
return T::handle(mon, fsmap, op, modified, ss);
}
};
TEST(inode_t, compare_equal)
{
- inode_t foo;
- inode_t bar;
+ inode_t<> foo;
+ inode_t<> bar;
int compare_r;
bool divergent;
compare_r = foo.compare(bar, &divergent);
TEST(inode_t, compare_aged)
{
- inode_t foo;
- inode_t bar;
+ inode_t<> foo;
+ inode_t<> bar;
foo.ino = 1234;
foo.ctime.set_from_double(10.0);
TEST(inode_t, compare_divergent)
{
- inode_t foo;
- inode_t bar;
+ inode_t<> foo;
+ inode_t<> bar;
foo.ino = 1234;
foo.ctime.set_from_double(10.0);
new_inode.xattrs = fb.xattrs;
new_inode.dirfragtree = fb.dirfragtree;
new_inode.snap_blob = fb.snapbl;
- new_inode.symlink = fb.symlink;
+ new_inode.symlink = mempool::mds_co::string(boost::string_view(fb.symlink));
new_inode.old_inodes = fb.old_inodes;
// Serialize InodeStore