Backport upstream commit
c139f3cef36291902d7a29a334acd25a1251cd9d
Change-Id: I3a7ddf9a2abed8692a203c4d88b9a8ecdaeb9a1a
Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-on: https://review.whamcloud.com/25893
Tested-by: Jenkins
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
-static int ll_intent_file_open(struct file *file, void *lmm, int lmmsize,
+static int ll_intent_file_open(struct dentry *de, void *lmm, int lmmsize,
struct lookup_intent *itp)
{
struct lookup_intent *itp)
{
- struct dentry *de = file_dentry(file);
struct ll_sb_info *sbi = ll_i2sbi(de->d_inode);
struct dentry *parent = de->d_parent;
const char *name = NULL;
struct ll_sb_info *sbi = ll_i2sbi(de->d_inode);
struct dentry *parent = de->d_parent;
const char *name = NULL;
* to get file with different fid.
*/
it->it_flags |= MDS_OPEN_BY_FID;
* to get file with different fid.
*/
it->it_flags |= MDS_OPEN_BY_FID;
- rc = ll_intent_file_open(file, NULL, 0, it);
+ rc = ll_intent_file_open(file_dentry(file), NULL, 0,
+ it);
if (rc)
GOTO(out_openerr, rc);
if (rc)
GOTO(out_openerr, rc);
-int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
- __u64 flags, struct lov_user_md *lum,
- int lum_size)
+int ll_lov_setstripe_ea_info(struct inode *inode, struct dentry *dentry,
+ __u64 flags, struct lov_user_md *lum, int lum_size)
{
struct lookup_intent oit = {
.it_op = IT_OPEN,
{
struct lookup_intent oit = {
.it_op = IT_OPEN,
ENTRY;
ll_inode_size_lock(inode);
ENTRY;
ll_inode_size_lock(inode);
- rc = ll_intent_file_open(file, lum, lum_size, &oit);
+ rc = ll_intent_file_open(dentry, lum, lum_size, &oit);
if (rc < 0)
GOTO(out_unlock, rc);
if (rc < 0)
GOTO(out_unlock, rc);
- ll_release_openhandle(file_dentry(file), &oit);
+ ll_release_openhandle(dentry, &oit);
out_unlock:
ll_inode_size_unlock(inode);
ll_intent_release(&oit);
out_unlock:
ll_inode_size_unlock(inode);
ll_intent_release(&oit);
- cl_lov_delay_create_clear(&file->f_flags);
if (copy_from_user(lump, (struct lov_user_md __user *)arg, lum_size))
GOTO(out_lump, rc = -EFAULT);
if (copy_from_user(lump, (struct lov_user_md __user *)arg, lum_size))
GOTO(out_lump, rc = -EFAULT);
- rc = ll_lov_setstripe_ea_info(inode, file, flags, lump, lum_size);
+ rc = ll_lov_setstripe_ea_info(inode, file_dentry(file), flags, lump,
+ lum_size);
+ cl_lov_delay_create_clear(&file->f_flags);
out_lump:
OBD_FREE_LARGE(lump, lum_size);
out_lump:
OBD_FREE_LARGE(lump, lum_size);
RETURN(rc);
lum_size = rc;
RETURN(rc);
lum_size = rc;
- rc = ll_lov_setstripe_ea_info(inode, file, flags, klum, lum_size);
-
+ rc = ll_lov_setstripe_ea_info(inode, file_dentry(file), flags, klum,
+ lum_size);
+ cl_lov_delay_create_clear(&file->f_flags);
OBD_FREE(klum, lum_size);
RETURN(rc);
}
OBD_FREE(klum, lum_size);
RETURN(rc);
}
int ll_ioctl_fssetxattr(struct inode *inode, unsigned int cmd,
unsigned long arg);
int ll_ioctl_fssetxattr(struct inode *inode, unsigned int cmd,
unsigned long arg);
-int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
- __u64 flags, struct lov_user_md *lum,
+int ll_lov_setstripe_ea_info(struct inode *inode, struct dentry *dentry,
+ __u64 flags, struct lov_user_md *lum,
int lum_size);
int ll_lov_getstripe_ea_info(struct inode *inode, const char *filename,
struct lov_mds_md **lmm, int *lmm_size,
int lum_size);
int ll_lov_getstripe_ea_info(struct inode *inode, const char *filename,
struct lov_mds_md **lmm, int *lmm_size,
setstripe:
if (lump != NULL && S_ISREG(inode->i_mode)) {
setstripe:
if (lump != NULL && S_ISREG(inode->i_mode)) {
- struct file f;
- __u64 it_flags = FMODE_WRITE;
- int lum_size;
+ __u64 it_flags = FMODE_WRITE;
+ int lum_size;
lum_size = ll_lov_user_md_size(lump);
/**
lum_size = ll_lov_user_md_size(lump);
/**
if (lum_size < 0 || size < lum_size)
return return_err ? -ERANGE : 0;
if (lum_size < 0 || size < lum_size)
return return_err ? -ERANGE : 0;
- memset(&f, 0, sizeof(f)); /* f.f_flags is used below */
- f.f_path.dentry = dentry;
- rc = ll_lov_setstripe_ea_info(inode, &f, it_flags, lump,
+ rc = ll_lov_setstripe_ea_info(inode, dentry, it_flags, lump,
lum_size);
/* b=10667 */
if (!return_err)
lum_size);
/* b=10667 */
if (!return_err)