bool nojournal = false;
int op = req->get_op();
- if (op == MDS_OP_STAT ||
- op == MDS_OP_LSTAT ||
- op == MDS_OP_READDIR ||
- op == MDS_OP_OPEN)
+ if (op == CEPH_MDS_OP_STAT ||
+ op == CEPH_MDS_OP_LSTAT ||
+ op == CEPH_MDS_OP_READDIR ||
+ op == CEPH_MDS_OP_OPEN)
nojournal = true;
client_logger->inc("lwnum");
}
- if (op == MDS_OP_STAT) {
+ if (op == CEPH_MDS_OP_STAT) {
client_logger->finc("lstatsum",(double)lat);
client_logger->inc("lstatnum");
}
- else if (op == MDS_OP_READDIR) {
+ else if (op == CEPH_MDS_OP_READDIR) {
client_logger->finc("ldirsum",(double)lat);
client_logger->inc("ldirnum");
}
// main path arg is new link name
// sarg is target (existing file)
- MClientRequest *req = new MClientRequest(MDS_OP_LINK, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LINK, messenger->get_myinst());
req->set_path(newname);
req->set_path2(existing);
int Client::_unlink(const char *path)
{
- MClientRequest *req = new MClientRequest(MDS_OP_UNLINK, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_UNLINK, messenger->get_myinst());
req->set_path(path);
// FIXME where does FUSE maintain user information
int Client::_rename(const char *from, const char *to)
{
- MClientRequest *req = new MClientRequest(MDS_OP_RENAME, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, messenger->get_myinst());
req->set_path(from);
req->set_path2(to);
int Client::_mkdir(const char *path, mode_t mode)
{
- MClientRequest *req = new MClientRequest(MDS_OP_MKDIR, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKDIR, messenger->get_myinst());
req->set_path(path);
req->head.args.mkdir.mode = mode;
int Client::_rmdir(const char *path)
{
- MClientRequest *req = new MClientRequest(MDS_OP_RMDIR, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RMDIR, messenger->get_myinst());
req->set_path(path);
// FIXME where does FUSE maintain user information
int Client::_symlink(const char *target, const char *link)
{
- MClientRequest *req = new MClientRequest(MDS_OP_SYMLINK, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_SYMLINK, messenger->get_myinst());
req->set_path(link);
req->set_path2(target);
//req->set_caller_uid(fc->uid);
//req->set_caller_gid(fc->gid);
- req = new MClientRequest(MDS_OP_LSTAT, messenger->get_myinst());
+ req = new MClientRequest(CEPH_MDS_OP_LSTAT, messenger->get_myinst());
req->head.args.stat.mask = mask;
req->set_filepath(fpath);
int Client::_chmod(const char *path, mode_t mode)
{
dout(3) << "_chmod(" << path << ", 0" << oct << mode << dec << ")" << dendl;
- MClientRequest *req = new MClientRequest(MDS_OP_CHMOD, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_CHMOD, messenger->get_myinst());
req->set_path(path);
req->head.args.chmod.mode = mode;
int Client::_chown(const char *path, uid_t uid, gid_t gid)
{
dout(3) << "_chown(" << path << ", " << uid << ", " << gid << ")" << dendl;
- MClientRequest *req = new MClientRequest(MDS_OP_CHOWN, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_CHOWN, messenger->get_myinst());
req->set_path(path);
req->head.args.chown.uid = uid;
req->head.args.chown.gid = gid;
int Client::_utimes(const char *path, utime_t mtime, utime_t atime)
{
dout(3) << "_utimes(" << path << ", " << mtime << ", " << atime << ")" << dendl;
- MClientRequest *req = new MClientRequest(MDS_OP_UTIME, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_UTIME, messenger->get_myinst());
req->set_path(path);
req->head.args.utime.mtime = mtime.tv_ref();
req->head.args.utime.atime = atime.tv_ref();
{
dout(3) << "_mknod(" << path << ", 0" << oct << mode << dec << ", " << rdev << ")" << dendl;
- MClientRequest *req = new MClientRequest(MDS_OP_MKNOD, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKNOD, messenger->get_myinst());
req->set_path(path);
req->head.args.mknod.mode = mode;
req->head.args.mknod.rdev = rdev;
dout(10) << "_readdir_get_frag " << dirp << " on " << dirp->path << " fg " << fg << dendl;
- MClientRequest *req = new MClientRequest(MDS_OP_READDIR, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_READDIR, messenger->get_myinst());
req->set_filepath(dirp->path);
req->head.args.readdir.frag = fg;
int Client::_open(const char *path, int flags, mode_t mode, Fh **fhp)
{
// go
- MClientRequest *req = new MClientRequest(MDS_OP_OPEN, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_OPEN, messenger->get_myinst());
req->set_path(path);
req->head.args.open.flags = flags;
req->head.args.open.mode = mode;
int Client::_truncate(const char *file, off_t length)
{
- MClientRequest *req = new MClientRequest(MDS_OP_TRUNCATE, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_TRUNCATE, messenger->get_myinst());
req->set_path(file);
req->head.args.truncate.length = length;
int Client::_ftruncate(Fh *fh, off_t length)
{
- MClientRequest *req = new MClientRequest(MDS_OP_TRUNCATE, messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_TRUNCATE, messenger->get_myinst());
req->head.args.truncate.ino = fh->inode->inode.ino;
req->head.args.truncate.length = length;
void SyntheticClient::init_op_dist()
{
op_dist.clear();
- op_dist.add( MDS_OP_STAT, g_conf.fakeclient_op_stat );
- op_dist.add( MDS_OP_UTIME, g_conf.fakeclient_op_utime );
- op_dist.add( MDS_OP_CHMOD, g_conf.fakeclient_op_chmod );
- op_dist.add( MDS_OP_CHOWN, g_conf.fakeclient_op_chown );
-
- op_dist.add( MDS_OP_READDIR, g_conf.fakeclient_op_readdir );
- op_dist.add( MDS_OP_MKNOD, g_conf.fakeclient_op_mknod );
- op_dist.add( MDS_OP_LINK, g_conf.fakeclient_op_link );
- op_dist.add( MDS_OP_UNLINK, g_conf.fakeclient_op_unlink );
- op_dist.add( MDS_OP_RENAME, g_conf.fakeclient_op_rename );
-
- op_dist.add( MDS_OP_MKDIR, g_conf.fakeclient_op_mkdir );
- op_dist.add( MDS_OP_RMDIR, g_conf.fakeclient_op_rmdir );
- op_dist.add( MDS_OP_SYMLINK, g_conf.fakeclient_op_symlink );
-
- op_dist.add( MDS_OP_OPEN, g_conf.fakeclient_op_openrd );
- //op_dist.add( MDS_OP_READ, g_conf.fakeclient_op_read );
- //op_dist.add( MDS_OP_WRITE, g_conf.fakeclient_op_write );
- op_dist.add( MDS_OP_TRUNCATE, g_conf.fakeclient_op_truncate );
- op_dist.add( MDS_OP_FSYNC, g_conf.fakeclient_op_fsync );
- op_dist.add( MDS_OP_RELEASE, g_conf.fakeclient_op_close ); // actually, close()
+ op_dist.add( CEPH_MDS_OP_STAT, g_conf.fakeclient_op_stat );
+ op_dist.add( CEPH_MDS_OP_UTIME, g_conf.fakeclient_op_utime );
+ op_dist.add( CEPH_MDS_OP_CHMOD, g_conf.fakeclient_op_chmod );
+ op_dist.add( CEPH_MDS_OP_CHOWN, g_conf.fakeclient_op_chown );
+
+ op_dist.add( CEPH_MDS_OP_READDIR, g_conf.fakeclient_op_readdir );
+ op_dist.add( CEPH_MDS_OP_MKNOD, g_conf.fakeclient_op_mknod );
+ op_dist.add( CEPH_MDS_OP_LINK, g_conf.fakeclient_op_link );
+ op_dist.add( CEPH_MDS_OP_UNLINK, g_conf.fakeclient_op_unlink );
+ op_dist.add( CEPH_MDS_OP_RENAME, g_conf.fakeclient_op_rename );
+
+ op_dist.add( CEPH_MDS_OP_MKDIR, g_conf.fakeclient_op_mkdir );
+ op_dist.add( CEPH_MDS_OP_RMDIR, g_conf.fakeclient_op_rmdir );
+ op_dist.add( CEPH_MDS_OP_SYMLINK, g_conf.fakeclient_op_symlink );
+
+ op_dist.add( CEPH_MDS_OP_OPEN, g_conf.fakeclient_op_openrd );
+ //op_dist.add( CEPH_MDS_OP_READ, g_conf.fakeclient_op_read );
+ //op_dist.add( CEPH_MDS_OP_WRITE, g_conf.fakeclient_op_write );
+ op_dist.add( CEPH_MDS_OP_TRUNCATE, g_conf.fakeclient_op_truncate );
+ op_dist.add( CEPH_MDS_OP_FSYNC, g_conf.fakeclient_op_fsync );
+ //op_dist.add( CEPH_MDS_OP_RELEASE, g_conf.fakeclient_op_close ); // actually, close()
op_dist.normalize();
}
dout(DBL) << "empty dir, up" << dendl;
up();
} else
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
} else {
op = op_dist.sample();
}
int r = 0;
// do op
- if (op == MDS_OP_UNLINK) {
+ if (op == CEPH_MDS_OP_UNLINK) {
if (contents.empty())
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
else
r = client->unlink( get_random_sub() ); // will fail on dirs
}
- if (op == MDS_OP_RENAME) {
+ if (op == CEPH_MDS_OP_RENAME) {
if (contents.empty())
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
else {
r = client->rename( get_random_sub(), make_sub("ren") );
}
}
- if (op == MDS_OP_MKDIR) {
+ if (op == CEPH_MDS_OP_MKDIR) {
r = client->mkdir( make_sub("mkdir"), 0755);
}
- if (op == MDS_OP_RMDIR) {
+ if (op == CEPH_MDS_OP_RMDIR) {
if (!subdirs.empty())
r = client->rmdir( get_random_subdir() );
else
r = client->rmdir( cwd.c_str() ); // will pbly fail
}
- if (op == MDS_OP_SYMLINK) {
+ if (op == CEPH_MDS_OP_SYMLINK) {
}
- if (op == MDS_OP_CHMOD) {
+ if (op == CEPH_MDS_OP_CHMOD) {
if (contents.empty())
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
else
r = client->chmod( get_random_sub(), rand() & 0755 );
}
- if (op == MDS_OP_CHOWN) {
+ if (op == CEPH_MDS_OP_CHOWN) {
if (contents.empty()) r = client->chown( cwd.c_str(), rand(), rand() );
else
r = client->chown( get_random_sub(), rand(), rand() );
}
- if (op == MDS_OP_LINK) {
+ if (op == CEPH_MDS_OP_LINK) {
}
- if (op == MDS_OP_UTIME) {
+ if (op == CEPH_MDS_OP_UTIME) {
struct utimbuf b;
memset(&b, 1, sizeof(b));
if (contents.empty())
r = client->utime( get_random_sub(), &b );
}
- if (op == MDS_OP_MKNOD) {
+ if (op == CEPH_MDS_OP_MKNOD) {
r = client->mknod( make_sub("mknod"), 0644);
}
- if (op == MDS_OP_OPEN) {
+ if (op == CEPH_MDS_OP_OPEN) {
if (contents.empty())
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
else {
r = client->open( get_random_sub(), O_RDONLY );
if (r > 0) {
}
}
- if (op == MDS_OP_RELEASE) { // actually, close
+ /*if (op == CEPH_MDS_OP_RELEASE) { // actually, close
if (open_files.empty())
- op = MDS_OP_STAT;
+ op = CEPH_MDS_OP_STAT;
else {
int fh = get_random_fh();
r = client->close( fh );
if (r == 0) open_files.erase(fh);
}
}
+ */
- if (op == MDS_OP_STAT) {
+ if (op == CEPH_MDS_OP_STAT) {
struct stat st;
if (contents.empty()) {
if (did_readdir) {
dout(DBL) << "stat in empty dir, up" << dendl;
up();
} else {
- op = MDS_OP_MKNOD;
+ op = CEPH_MDS_OP_MKNOD;
}
} else
- op = MDS_OP_READDIR;
+ op = CEPH_MDS_OP_READDIR;
} else
r = client->lstat(get_random_sub(), &st);
}
- if (op == MDS_OP_READDIR) {
+ if (op == CEPH_MDS_OP_READDIR) {
clear_dir();
list<string> c;
CEPH_SESSION_CLOSE
};
+enum {
+ CEPH_MDS_OP_STAT = 100,
+ CEPH_MDS_OP_LSTAT = 101,
+ CEPH_MDS_OP_FSTAT = 102,
+ CEPH_MDS_OP_UTIME = 1103,
+ CEPH_MDS_OP_CHMOD = 1104,
+ CEPH_MDS_OP_CHOWN = 1105,
+
+ CEPH_MDS_OP_READDIR = 200,
+ CEPH_MDS_OP_MKNOD = 1201,
+ CEPH_MDS_OP_LINK = 1202,
+ CEPH_MDS_OP_UNLINK = 1203,
+ CEPH_MDS_OP_RENAME = 1204,
+
+ CEPH_MDS_OP_MKDIR = 1220,
+ CEPH_MDS_OP_RMDIR = 1221,
+ CEPH_MDS_OP_SYMLINK = 1222,
+
+ CEPH_MDS_OP_OPEN = 301,
+ CEPH_MDS_OP_TRUNCATE = 1303,
+ CEPH_MDS_OP_FSYNC = 303
+};
+
+
/* client_request */
struct ceph_client_request_head {
filepath dst;
rdn->make_path(dst);
- MClientRequest *req = new MClientRequest(MDS_OP_RENAME, mds->messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, mds->messenger->get_myinst());
req->set_filepath(src);
req->set_filepath2(dst);
req->set_tid(mds->issue_tid());
filepath src(dname, MDS_INO_STRAY(from));
filepath dst(dname, MDS_INO_STRAY(to));
- MClientRequest *req = new MClientRequest(MDS_OP_RENAME, mds->messenger->get_myinst());
+ MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, mds->messenger->get_myinst());
req->set_filepath(src);
req->set_filepath2(dst);
req->set_tid(mds->issue_tid());
// -----
// some ops are on ino's
switch (req->get_op()) {
- case MDS_OP_FSTAT:
+ case CEPH_MDS_OP_FSTAT:
ref = mdcache->get_inode(req->head.args.fstat.ino);
assert(ref);
break;
- case MDS_OP_TRUNCATE:
+ case CEPH_MDS_OP_TRUNCATE:
if (!req->head.args.truncate.ino)
break; // can be called w/ either fh OR path
ref = mdcache->get_inode(req->head.args.truncate.ino);
assert(ref);
break;
- case MDS_OP_FSYNC:
+ case CEPH_MDS_OP_FSYNC:
ref = mdcache->get_inode(req->head.args.fsync.ino); // fixme someday no ino needed?
assert(ref);
break;
switch (req->get_op()) {
// inodes ops.
- case MDS_OP_STAT:
- case MDS_OP_LSTAT:
+ case CEPH_MDS_OP_STAT:
+ case CEPH_MDS_OP_LSTAT:
handle_client_stat(mdr);
break;
- case MDS_OP_UTIME:
+ case CEPH_MDS_OP_UTIME:
handle_client_utime(mdr);
break;
- case MDS_OP_CHMOD:
+ case CEPH_MDS_OP_CHMOD:
handle_client_chmod(mdr);
break;
- case MDS_OP_CHOWN:
+ case CEPH_MDS_OP_CHOWN:
handle_client_chown(mdr);
break;
- case MDS_OP_TRUNCATE:
+ case CEPH_MDS_OP_TRUNCATE:
handle_client_truncate(mdr);
break;
- case MDS_OP_READDIR:
+ case CEPH_MDS_OP_READDIR:
handle_client_readdir(mdr);
break;
- case MDS_OP_FSYNC:
+ case CEPH_MDS_OP_FSYNC:
//handle_client_fsync(req, ref);
break;
// funky.
- case MDS_OP_OPEN:
+ case CEPH_MDS_OP_OPEN:
if (req->head.args.open.flags & O_CREAT)
handle_client_openc(mdr);
else
// namespace.
// no prior locks.
- case MDS_OP_MKNOD:
+ case CEPH_MDS_OP_MKNOD:
handle_client_mknod(mdr);
break;
- case MDS_OP_LINK:
+ case CEPH_MDS_OP_LINK:
handle_client_link(mdr);
break;
- case MDS_OP_UNLINK:
- case MDS_OP_RMDIR:
+ case CEPH_MDS_OP_UNLINK:
+ case CEPH_MDS_OP_RMDIR:
handle_client_unlink(mdr);
break;
- case MDS_OP_RENAME:
+ case CEPH_MDS_OP_RENAME:
handle_client_rename(mdr);
break;
- case MDS_OP_MKDIR:
+ case CEPH_MDS_OP_MKDIR:
handle_client_mkdir(mdr);
break;
- case MDS_OP_SYMLINK:
+ case CEPH_MDS_OP_SYMLINK:
handle_client_symlink(mdr);
break;
// rmdir or unlink?
bool rmdir = false;
- if (req->get_op() == MDS_OP_RMDIR) rmdir = true;
+ if (req->get_op() == CEPH_MDS_OP_RMDIR) rmdir = true;
if (rmdir) {
dout(7) << "handle_client_rmdir on " << *dn << dendl;
// metadata ops.
// >=1000 --> an update, non-idempotent (i.e. an update)
-#define MDS_OP_STATFS 1
-
-#define MDS_OP_STAT 100
-#define MDS_OP_LSTAT 101
-#define MDS_OP_FSTAT 102
-#define MDS_OP_UTIME 1102
-#define MDS_OP_CHMOD 1104
-#define MDS_OP_CHOWN 1105
-
-#define MDS_OP_READDIR 200
-#define MDS_OP_MKNOD 1201
-#define MDS_OP_LINK 1202
-#define MDS_OP_UNLINK 1203
-#define MDS_OP_RENAME 1204
-
-#define MDS_OP_MKDIR 1220
-#define MDS_OP_RMDIR 1221
-#define MDS_OP_SYMLINK 1222
-
-#define MDS_OP_OPEN 301
-#define MDS_OP_TRUNCATE 1306
-#define MDS_OP_FSYNC 307
-
-#define MDS_OP_RELEASE 308 // used only by SyntheticClient op_dist thinger
-
class MClientRequest : public Message {
public:
return get_open_file_mode() == FILE_MODE_R;
}
bool is_idempotent() {
- if (head.op == MDS_OP_OPEN)
+ if (head.op == CEPH_MDS_OP_OPEN)
return open_file_mode_is_readonly();
return (head.op < 1000);
}
bool auth_is_best() {
if (!is_idempotent()) return true;
- if (head.op == MDS_OP_READDIR) return true;
+ if (head.op == CEPH_MDS_OP_READDIR) return true;
return false;
}
bool follow_trailing_symlink() {
switch (head.op) {
- case MDS_OP_LSTAT:
- case MDS_OP_FSTAT:
- case MDS_OP_LINK:
- case MDS_OP_UNLINK:
- case MDS_OP_RENAME:
+ case CEPH_MDS_OP_LSTAT:
+ case CEPH_MDS_OP_FSTAT:
+ case CEPH_MDS_OP_LINK:
+ case CEPH_MDS_OP_UNLINK:
+ case CEPH_MDS_OP_RENAME:
return false;
- case MDS_OP_STAT:
- case MDS_OP_UTIME:
- case MDS_OP_CHMOD:
- case MDS_OP_CHOWN:
- case MDS_OP_READDIR:
- case MDS_OP_OPEN:
- case MDS_OP_TRUNCATE:
-
- case MDS_OP_FSYNC:
- case MDS_OP_MKNOD:
- case MDS_OP_MKDIR:
- case MDS_OP_RMDIR:
- case MDS_OP_SYMLINK:
+ case CEPH_MDS_OP_STAT:
+ case CEPH_MDS_OP_UTIME:
+ case CEPH_MDS_OP_CHMOD:
+ case CEPH_MDS_OP_CHOWN:
+ case CEPH_MDS_OP_READDIR:
+ case CEPH_MDS_OP_OPEN:
+ case CEPH_MDS_OP_TRUNCATE:
+
+ case CEPH_MDS_OP_FSYNC:
+ case CEPH_MDS_OP_MKNOD:
+ case CEPH_MDS_OP_MKDIR:
+ case CEPH_MDS_OP_RMDIR:
+ case CEPH_MDS_OP_SYMLINK:
return true;
default:
<< "." << get_tid()
<< " ";
switch(get_op()) {
- case MDS_OP_STATFS:
- out << "statfs"; break;
-
- case MDS_OP_STAT:
+ case CEPH_MDS_OP_STAT:
out << "stat"; break;
- case MDS_OP_LSTAT:
+ case CEPH_MDS_OP_LSTAT:
out << "lstat"; break;
- case MDS_OP_FSTAT:
+ case CEPH_MDS_OP_FSTAT:
out << "fstat"; break;
- case MDS_OP_UTIME:
+ case CEPH_MDS_OP_UTIME:
out << "utime"; break;
- case MDS_OP_CHMOD:
+ case CEPH_MDS_OP_CHMOD:
out << "chmod"; break;
- case MDS_OP_CHOWN:
+ case CEPH_MDS_OP_CHOWN:
out << "chown"; break;
- case MDS_OP_READDIR:
+ case CEPH_MDS_OP_READDIR:
out << "readdir"; break;
- case MDS_OP_MKNOD:
+ case CEPH_MDS_OP_MKNOD:
out << "mknod"; break;
- case MDS_OP_LINK:
+ case CEPH_MDS_OP_LINK:
out << "link"; break;
- case MDS_OP_UNLINK:
+ case CEPH_MDS_OP_UNLINK:
out << "unlink"; break;
- case MDS_OP_RENAME:
+ case CEPH_MDS_OP_RENAME:
out << "rename"; break;
- case MDS_OP_MKDIR:
+ case CEPH_MDS_OP_MKDIR:
out << "mkdir"; break;
- case MDS_OP_RMDIR:
+ case CEPH_MDS_OP_RMDIR:
out << "rmdir"; break;
- case MDS_OP_SYMLINK:
+ case CEPH_MDS_OP_SYMLINK:
out << "symlink"; break;
- case MDS_OP_OPEN:
+ case CEPH_MDS_OP_OPEN:
out << "open"; break;
- case MDS_OP_TRUNCATE:
+ case CEPH_MDS_OP_TRUNCATE:
out << "truncate"; break;
- case MDS_OP_FSYNC:
+ case CEPH_MDS_OP_FSYNC:
out << "fsync"; break;
- // case MDS_OP_RELEASE:
+ // case CEPH_MDS_OP_RELEASE:
//out << "release"; break;
default:
out << "unknown=" << get_op();