From 6e3cec6493243f4518d84f4e042b0e148e3e59b9 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 22 Apr 2009 12:10:24 -0700 Subject: [PATCH] kclient: some sparse fixes --- src/include/ceph_fs.h | 2 +- src/kernel/caps.c | 6 +++--- src/kernel/dir.c | 27 +++++++++++++++++---------- src/kernel/export.c | 2 +- src/kernel/inode.c | 6 +++--- src/kernel/mds_client.c | 10 +++++----- src/kernel/messenger.c | 2 +- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 98f95de0637..e8beda20623 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -797,7 +797,7 @@ struct ceph_mds_request_head { 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. */ diff --git a/src/kernel/caps.c b/src/kernel/caps.c index 1efb6265e84..05bd0ee439f 100644 --- a/src/kernel/caps.c +++ b/src/kernel/caps.c @@ -760,12 +760,12 @@ static void send_cap_msg(struct ceph_mds_client *mdsc, u64 ino, u64 cid, int op, 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); } @@ -914,7 +914,7 @@ static int __send_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap, 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; } diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 95ae0acf9c1..6a4579a98bc 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -60,6 +60,7 @@ static int __dcache_readdir(struct file *filp, last); spin_lock(&dcache_lock); + if (filp->f_pos == 2 || (last && filp->f_pos < ceph_dentry(last)->offset)) { if (list_empty(&parent->d_subdirs)) @@ -105,17 +106,21 @@ more: 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++; @@ -126,12 +131,13 @@ more: 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; } @@ -183,14 +189,15 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir) (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: @@ -220,7 +227,7 @@ 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) { @@ -237,7 +244,7 @@ more: 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; diff --git a/src/kernel/export.c b/src/kernel/export.c index 6e73db86f17..98d5d008d1f 100644 --- a/src/kernel/export.c +++ b/src/kernel/export.c @@ -53,7 +53,7 @@ static int ceph_encode_fh(struct dentry *dentry, u32 *rawfh, int *max_len, 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; diff --git a/src/kernel/inode.c b/src/kernel/inode.c index 0eb04c5c009..8fa6a1b4215 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -264,7 +264,7 @@ struct inode *ceph_alloc_inode(struct super_block *sb) 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; @@ -1464,7 +1464,7 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) 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); } @@ -1924,7 +1924,7 @@ bad: 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, diff --git a/src/kernel/mds_client.c b/src/kernel/mds_client.c index a96f6bf7cee..c180d3d18cd 100644 --- a/src/kernel/mds_client.c +++ b/src/kernel/mds_client.c @@ -868,7 +868,7 @@ out_unlocked: /* * 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; @@ -1099,7 +1099,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc, int pathlen1, pathlen2; int len; int freepath1, freepath2; - u32 releases; + u16 releases; void *p, *end; int ret; @@ -1169,7 +1169,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc, 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; @@ -1238,8 +1238,8 @@ static int __prepare_send_request(struct ceph_mds_client *mdsc, 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); diff --git a/src/kernel/messenger.c b/src/kernel/messenger.c index b5e414458d4..88501faf9fa 100644 --- a/src/kernel/messenger.c +++ b/src/kernel/messenger.c @@ -2303,7 +2303,7 @@ struct ceph_msg *ceph_msg_new(int type, int front_len, 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; -- 2.47.3