ceph_epoch_t mdsmap_epoch; /* on client */
__le32 flags;
__u8 num_retry, num_fwd;
- __u16 num_releases;
+ __le16 num_releases;
__le32 op;
__le32 caller_uid, caller_gid;
__le64 ino; /* use this ino for openc, mkdir, mknod, etc. */
fc->gid = cpu_to_le32(gid);
fc->mode = cpu_to_le32(mode);
- fc->xattr_version = xattr_version;
+ fc->xattr_version = cpu_to_le64(xattr_version);
if (xattrs_blob) {
char *dst = (char *)fc;
dst += sizeof(*fc);
- fc->xattr_len = xattrs_blob_size;
+ fc->xattr_len = cpu_to_le32(xattrs_blob_size);
memcpy(dst, xattrs_blob, xattrs_blob_size);
}
if (dropping & CEPH_CAP_XATTR_EXCL) {
__ceph_build_xattrs_blob(ci, &xattrs_blob, &xattrs_blob_size);
- ci->i_xattrs.prealloc_blob = 0;
+ ci->i_xattrs.prealloc_blob = NULL;
ci->i_xattrs.prealloc_size = 0;
xattr_version = ci->i_xattrs.version + 1;
}
last);
spin_lock(&dcache_lock);
+
if (filp->f_pos == 2 || (last &&
filp->f_pos < ceph_dentry(last)->offset)) {
if (list_empty(&parent->d_subdirs))
dout(10, " %llu (%llu) dentry %p %.*s %p\n", di->offset, filp->f_pos,
dentry, dentry->d_name.len, dentry->d_name.name, dentry->d_inode);
filp->f_pos = di->offset;
- if (filldir(dirent, dentry->d_name.name,
+ err = filldir(dirent, dentry->d_name.name,
dentry->d_name.len, di->offset,
dentry->d_inode->i_ino,
- dentry->d_inode->i_mode >> 12) < 0) {
+ dentry->d_inode->i_mode >> 12);
+
+ spin_lock(&inode->i_lock);
+ spin_lock(&dcache_lock);
+
+ if (err < 0) {
fi->dentry = dentry;
goto out_unlock;
}
last = dentry;
- spin_lock(&inode->i_lock);
- spin_lock(&dcache_lock);
+
p = p->prev;
filp->f_pos++;
err = -EAGAIN;
out_unlock:
- spin_unlock(&dcache_lock);
if (last) {
spin_unlock(&inode->i_lock);
dput(last);
spin_lock(&inode->i_lock);
}
+
+ spin_unlock(&dcache_lock);
return err;
}
(ci->i_ceph_flags & CEPH_I_COMPLETE) &&
(__ceph_caps_issued(ci, NULL) & CEPH_CAP_FILE_RDCACHE)) {
err = __dcache_readdir(filp, dirent, filldir);
- spin_unlock(&inode->i_lock);
- if (err != -EAGAIN)
+ if (err != -EAGAIN) {
+ spin_unlock(&inode->i_lock);
return err;
+ }
}
spin_unlock(&inode->i_lock);
if (fi->dentry) {
dput(fi->dentry);
- fi->dentry = 0;
+ fi->dentry = NULL;
}
more:
req->r_direct_is_hash = true;
req->r_path2 = fi->last_name;
req->r_args.readdir.frag = cpu_to_le32(frag);
- req->r_args.readdir.max_entries = max_entries;
+ req->r_args.readdir.max_entries = cpu_to_le32(max_entries);
req->r_num_caps = max_entries;
err = ceph_mdsc_do_request(mdsc, NULL, req);
if (err < 0) {
fi->off = fi->next_off;
kfree(fi->last_name);
- fi->last_name = 0;
+ fi->last_name = NULL;
if (req->r_reply_info.dir_end) {
fi->next_off = 0;
d_parent = dentry->d_parent;
fh[len].ino = ceph_vino(dentry->d_inode);
fh[len].parent_ino = ceph_vino(d_parent->d_inode);
- fh[len].parent_name_hash = cpu_to_le32(dentry->d_parent->d_name.hash);
+ fh[len].parent_name_hash = dentry->d_parent->d_name.hash;
if (IS_ROOT(dentry))
break;
ci->i_xattrs.count = 0;
ci->i_xattrs.names_size = 0;
ci->i_xattrs.vals_size = 0;
- ci->i_xattrs.prealloc_blob = 0;
+ ci->i_xattrs.prealloc_blob = NULL;
ci->i_xattrs.prealloc_size = 0;
ci->i_xattrs.dirty = 0;
if (mask) {
req->r_inode = igrab(inode);
req->r_inode_drop = release;
- req->r_args.setattr.mask = mask;
+ req->r_args.setattr.mask = cpu_to_le32(mask);
req->r_num_caps = 1;
err = ceph_mdsc_do_request(mdsc, parent_inode, req);
}
return err;
}
-int __get_required_blob_size(struct ceph_inode_info *ci, int name_size, int val_size)
+static int __get_required_blob_size(struct ceph_inode_info *ci, int name_size, int val_size)
{
/*
* 4 bytes for the length, and additional 4 bytes per each xattr name,
/*
* called under s_mutex
*/
-void send_cap_releases(struct ceph_mds_client *mdsc,
+static void send_cap_releases(struct ceph_mds_client *mdsc,
struct ceph_mds_session *session)
{
struct ceph_msg *msg;
int pathlen1, pathlen2;
int len;
int freepath1, freepath2;
- u32 releases;
+ u16 releases;
void *p, *end;
int ret;
releases += ceph_encode_inode_release(&p,
req->r_old_dentry->d_inode,
mds, req->r_old_inode_drop, req->r_old_inode_unless);
- head->num_releases = cpu_to_le32(releases);
+ head->num_releases = cpu_to_le16(releases);
BUG_ON(p > end);
msg->front.iov_len = p - msg->front.iov_base;
if (req->r_locked_dir)
flags |= CEPH_MDS_FLAG_WANT_DENTRY;
rhead->flags = cpu_to_le32(flags);
- rhead->num_fwd = cpu_to_le32(req->r_num_fwd);
- rhead->num_retry = cpu_to_le32(req->r_attempts - 1);
+ rhead->num_fwd = req->r_num_fwd;
+ rhead->num_retry = req->r_attempts - 1;
dout(20, " r_locked_dir = %p\n", req->r_locked_dir);
m->hdr.front_len = cpu_to_le32(front_len);
m->hdr.data_len = cpu_to_le32(page_len);
m->hdr.data_off = cpu_to_le16(page_off);
- m->hdr.priority = CEPH_MSG_PRIO_DEFAULT;
+ m->hdr.priority = cpu_to_le16(CEPH_MSG_PRIO_DEFAULT);
m->hdr.mon_protocol = CEPH_MON_PROTOCOL;
m->hdr.monc_protocol = CEPH_MONC_PROTOCOL;
m->hdr.osd_protocol = CEPH_OSD_PROTOCOL;