EXIT;
}
-static int ll_intent_file_open(struct dentry *de, void *lmm, int lmmsize,
+static int ll_intent_file_open(struct dentry *de, void *lmm, ssize_t lmmsize,
struct lookup_intent *itp)
{
struct ll_sb_info *sbi = ll_i2sbi(de->d_inode);
#endif /* !HAVE_FILE_OPERATIONS_READ_WRITE_ITER */
int ll_lov_setstripe_ea_info(struct inode *inode, struct dentry *dentry,
- __u64 flags, struct lov_user_md *lum, int lum_size)
+ __u64 flags, struct lov_user_md *lum,
+ ssize_t lum_size)
{
struct lookup_intent oit = {
.it_op = IT_OPEN,
{
__u64 flags = MDS_OPEN_HAS_OBJS | FMODE_WRITE;
struct lov_user_md *lump;
- int lum_size = sizeof(*lump) + sizeof(struct lov_user_ost_data);
+ ssize_t lum_size = sizeof(*lump) + sizeof(struct lov_user_ost_data);
int rc;
ENTRY;
RETURN(rc);
}
-static int ll_lov_setstripe(struct inode *inode, struct file *file,
+static ssize_t ll_lov_setstripe(struct inode *inode, struct file *file,
void __user *arg)
{
struct lov_user_md __user *lum = arg;
struct lov_user_md *klum;
- int lum_size, rc;
+ ssize_t lum_size;
+ int rc;
__u64 flags = FMODE_WRITE;
ENTRY;
- rc = ll_copy_user_md(lum, &klum);
- if (rc < 0)
- RETURN(rc);
+ lum_size = ll_copy_user_md(lum, &klum);
+ if (lum_size < 0)
+ RETURN(lum_size);
- lum_size = rc;
rc = ll_lov_setstripe_ea_info(inode, file_dentry(file), flags, klum,
lum_size);
if (!rc) {
int ll_lov_setstripe_ea_info(struct inode *inode, struct dentry *dentry,
__u64 flags, struct lov_user_md *lum,
- int lum_size);
+ ssize_t lum_size);
int ll_lov_getstripe_ea_info(struct inode *inode, const char *filename,
struct lov_mds_md **lmm, int *lmm_size,
struct ptlrpc_request **request);
/* eadatasize from client includes NULL-terminator, so
* there is no need to read it
*/
- buffer->lb_len = reqbody->mbo_eadatasize - 1;
+ buffer->lb_len = 0;
+ if (reqbody->mbo_eadatasize > 0)
+ buffer->lb_len = reqbody->mbo_eadatasize - 1;
rc = mo_readlink(env, next, buffer);
if (unlikely(rc <= 0)) {
CERROR("%s: readlink failed for "DFID": rc = %d\n",