Whamcloud - gitweb
LU-6557 llite: remove unused ll_max_rw_chunk
[fs/lustre-release.git] / lustre / llite / llite_lib.c
index b48d027..381fdc4 100644 (file)
 #include <linux/types.h>
 #include <linux/version.h>
 #include <linux/mm.h>
+#include <linux/user_namespace.h>
+#ifdef HAVE_UIDGID_HEADER
+# include <linux/uidgid.h>
+#endif
 
 #include <lustre_ioctl.h>
 #include <lustre_ha.h>
@@ -317,7 +321,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
 
        size = sizeof(*data);
        err = obd_get_info(NULL, sbi->ll_md_exp, sizeof(KEY_CONN_DATA),
-                          KEY_CONN_DATA,  &size, data, NULL);
+                          KEY_CONN_DATA,  &size, data);
        if (err) {
                CERROR("%s: Get connect data failed: rc = %d\n",
                       sbi->ll_md_exp->exp_obd->obd_name, err);
@@ -330,7 +334,6 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
         sb->s_magic = LL_SUPER_MAGIC;
         sb->s_maxbytes = MAX_LFS_FILESIZE;
         sbi->ll_namelen = osfs->os_namelen;
-        sbi->ll_max_rw_chunk = LL_DEFAULT_MAX_RW_CHUNK;
 
         if ((sbi->ll_flags & LL_SBI_USER_XATTR) &&
             !(data->ocd_connect_flags & OBD_CONNECT_XATTR)) {
@@ -631,7 +634,7 @@ int ll_get_max_mdsize(struct ll_sb_info *sbi, int *lmmsize)
        *lmmsize = obd_size_diskmd(sbi->ll_dt_exp, NULL);
        size = sizeof(int);
        rc = obd_get_info(NULL, sbi->ll_md_exp, sizeof(KEY_MAX_EASIZE),
-                         KEY_MAX_EASIZE, &size, lmmsize, NULL);
+                         KEY_MAX_EASIZE, &size, lmmsize);
        if (rc)
                CERROR("Get max mdsize error rc %d\n", rc);
 
@@ -655,7 +658,7 @@ int ll_get_default_mdsize(struct ll_sb_info *sbi, int *lmmsize)
 
        size = sizeof(int);
        rc = obd_get_info(NULL, sbi->ll_md_exp, sizeof(KEY_DEFAULT_EASIZE),
-                        KEY_DEFAULT_EASIZE, &size, lmmsize, NULL);
+                        KEY_DEFAULT_EASIZE, &size, lmmsize);
        if (rc)
                CERROR("Get default mdsize error rc %d\n", rc);
 
@@ -688,32 +691,6 @@ int ll_set_default_mdsize(struct ll_sb_info *sbi, int lmmsize)
        RETURN(rc);
 }
 
-int ll_get_max_cookiesize(struct ll_sb_info *sbi, int *lmmsize)
-{
-       int size, rc;
-
-       size = sizeof(int);
-       rc = obd_get_info(NULL, sbi->ll_md_exp, sizeof(KEY_MAX_COOKIESIZE),
-                         KEY_MAX_COOKIESIZE, &size, lmmsize, NULL);
-       if (rc)
-               CERROR("Get max cookiesize error rc %d\n", rc);
-
-       RETURN(rc);
-}
-
-int ll_get_default_cookiesize(struct ll_sb_info *sbi, int *lmmsize)
-{
-       int size, rc;
-
-       size = sizeof(int);
-       rc = obd_get_info(NULL, sbi->ll_md_exp, sizeof(KEY_DEFAULT_COOKIESIZE),
-                         KEY_DEFAULT_COOKIESIZE, &size, lmmsize, NULL);
-       if (rc)
-               CERROR("Get default cookiesize error rc %d\n", rc);
-
-       RETURN(rc);
-}
-
 static void ll_dump_inode(struct inode *inode)
 {
        struct ll_d_hlist_node *tmp;
@@ -754,7 +731,7 @@ void lustre_dump_dentry(struct dentry *dentry, int recur)
                 return;
 
        list_for_each(tmp, &dentry->d_subdirs) {
-               struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child);
+               struct dentry *d = list_entry(tmp, struct dentry, d_child);
                lustre_dump_dentry(d, recur - 1);
        }
 }
@@ -806,9 +783,10 @@ void ll_kill_super(struct super_block *sb)
                sbi->ll_umounting = 1;
 
                /* wait running statahead threads to quit */
-               while (atomic_read(&sbi->ll_sa_running) > 0)
-                       schedule_timeout_and_set_state(TASK_UNINTERRUPTIBLE,
-                               msecs_to_jiffies(MSEC_PER_SEC >> 3));
+               while (atomic_read(&sbi->ll_sa_running) > 0) {
+                       set_current_state(TASK_UNINTERRUPTIBLE);
+                       schedule_timeout(msecs_to_jiffies(MSEC_PER_SEC >> 3));
+               }
        }
 
        EXIT;
@@ -945,7 +923,6 @@ void ll_lli_init(struct ll_inode_info *lli)
 {
        lli->lli_inode_magic = LLI_INODE_MAGIC;
        lli->lli_flags = 0;
-       lli->lli_maxbytes = MAX_LFS_FILESIZE;
        spin_lock_init(&lli->lli_lock);
        lli->lli_posix_acl = NULL;
        lli->lli_remote_perms = NULL;
@@ -964,9 +941,8 @@ void ll_lli_init(struct ll_inode_info *lli)
         lli->lli_open_fd_exec_count = 0;
        mutex_init(&lli->lli_och_mutex);
        spin_lock_init(&lli->lli_agl_lock);
-       lli->lli_has_smd = false;
        spin_lock_init(&lli->lli_layout_lock);
-       ll_layout_version_set(lli, LL_LAYOUT_GEN_NONE);
+       ll_layout_version_set(lli, CL_LAYOUT_GEN_NONE);
        lli->lli_clob = NULL;
 
        init_rwsem(&lli->lli_xattrs_list_rwsem);
@@ -1477,13 +1453,11 @@ void ll_clear_inode(struct inode *inode)
         * cl_object still uses inode lsm.
         */
        cl_inode_fini(inode);
-       lli->lli_has_smd = false;
 
        EXIT;
 }
 
-static int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data,
-                        struct md_open_data **mod)
+static int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data)
 {
         struct lustre_md md;
         struct inode *inode = dentry->d_inode;
@@ -1497,8 +1471,7 @@ static int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data,
         if (IS_ERR(op_data))
                 RETURN(PTR_ERR(op_data));
 
-        rc = md_setattr(sbi->ll_md_exp, op_data, NULL, 0, NULL, 0,
-                        &request, mod);
+       rc = md_setattr(sbi->ll_md_exp, op_data, NULL, 0, &request);
        if (rc) {
                ptlrpc_req_finished(request);
                if (rc == -ENOENT) {
@@ -1548,7 +1521,7 @@ static int ll_setattr_ost(struct inode *inode, struct iattr *attr)
         else
                 capa = ll_mdscapa_get(inode);
 
-        rc = cl_setattr_ost(inode, attr, capa);
+       rc = cl_setattr_ost(ll_i2info(inode)->lli_clob, attr, 0, capa);
 
         if (attr->ia_valid & ATTR_SIZE)
                 ll_truncate_free_capa(capa);
@@ -1578,7 +1551,6 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import)
         struct inode *inode = dentry->d_inode;
         struct ll_inode_info *lli = ll_i2info(inode);
         struct md_op_data *op_data = NULL;
-        struct md_open_data *mod = NULL;
        bool file_is_released = false;
        int rc = 0;
        ENTRY;
@@ -1654,14 +1626,29 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import)
         * but other attributes must be set
         */
        if (S_ISREG(inode->i_mode)) {
-               struct lov_stripe_md *lsm;
+               struct cl_layout cl = {
+                       .cl_is_released = false,
+               };
+               struct lu_env *env;
+               int refcheck;
                __u32 gen;
 
-               ll_layout_refresh(inode, &gen);
-               lsm = ccc_inode_lsm_get(inode);
-               if (lsm && lsm->lsm_pattern & LOV_PATTERN_F_RELEASED)
-                       file_is_released = true;
-               ccc_inode_lsm_put(inode, lsm);
+               rc = ll_layout_refresh(inode, &gen);
+               if (rc < 0)
+                       GOTO(out, rc);
+
+               /* XXX: the only place we need to know the layout type,
+                * this will be removed by a later patch. -Jinshan */
+               env = cl_env_get(&refcheck);
+               if (IS_ERR(env))
+                       GOTO(out, rc = PTR_ERR(env));
+
+               rc = cl_object_layout_get(env, lli->lli_clob, &cl);
+               cl_env_put(env, &refcheck);
+               if (rc < 0)
+                       GOTO(out, rc);
+
+               file_is_released = cl.cl_is_released;
 
                if (!hsm_import && attr->ia_valid & ATTR_SIZE) {
                        if (file_is_released) {
@@ -1685,7 +1672,7 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import)
 
        memcpy(&op_data->op_attr, attr, sizeof(*attr));
 
-       rc = ll_md_setattr(dentry, op_data, &mod);
+       rc = ll_md_setattr(dentry, op_data);
        if (rc)
                GOTO(out, rc);
 
@@ -1877,15 +1864,8 @@ int ll_update_inode(struct inode *inode, struct lustre_md *md)
        struct ll_sb_info *sbi = ll_i2sbi(inode);
 
        LASSERT((lsm != NULL) == ((body->mbo_valid & OBD_MD_FLEASIZE) != 0));
-       if (lsm != NULL) {
-               if (!lli->lli_has_smd &&
-                   !(sbi->ll_flags & LL_SBI_LAYOUT_LOCK))
-                       cl_file_inode_init(inode, md);
-
-               lli->lli_maxbytes = lsm->lsm_maxbytes;
-               if (lli->lli_maxbytes > MAX_LFS_FILESIZE)
-                       lli->lli_maxbytes = MAX_LFS_FILESIZE;
-       }
+       if (lsm != NULL)
+               cl_file_inode_init(inode, md);
 
        if (S_ISDIR(inode->i_mode)) {
                int     rc;
@@ -2014,8 +1994,6 @@ int ll_read_inode2(struct inode *inode, void *opaque)
         CDEBUG(D_VFSTRACE, "VFS Op:inode="DFID"(%p)\n",
                PFID(&lli->lli_fid), inode);
 
-       LASSERT(!lli->lli_has_smd);
-
         /* Core attributes from the MDS first.  This is a new inode, and
          * the VFS doesn't zero times in the core inode so we have to do
          * it ourselves.  They will be overwritten by either MDS or OST
@@ -2121,9 +2099,10 @@ int ll_iocontrol(struct inode *inode, struct file *file,
                RETURN(put_user(flags, (int __user *)arg));
         }
         case FSFILT_IOC_SETFLAGS: {
-               struct lov_stripe_md *lsm;
-                struct obd_info oinfo = { { { 0 } } };
-                struct md_op_data *op_data;
+               struct iattr *attr;
+               struct md_op_data *op_data;
+               struct cl_object *obj;
+               struct obd_capa *capa;
 
                if (get_user(flags, (int __user *)arg))
                        RETURN(-EFAULT);
@@ -2135,8 +2114,7 @@ int ll_iocontrol(struct inode *inode, struct file *file,
 
                op_data->op_attr_flags = flags;
                 op_data->op_attr.ia_valid |= ATTR_ATTR_FLAG;
-                rc = md_setattr(sbi->ll_md_exp, op_data,
-                                NULL, 0, NULL, 0, &req, NULL);
+               rc = md_setattr(sbi->ll_md_exp, op_data, NULL, 0, &req);
                 ll_finish_md_op_data(op_data);
                 ptlrpc_req_finished(req);
                if (rc)
@@ -2144,32 +2122,21 @@ int ll_iocontrol(struct inode *inode, struct file *file,
 
                inode->i_flags = ll_ext_to_inode_flags(flags);
 
-               lsm = ccc_inode_lsm_get(inode);
-               if (!lsm_has_objects(lsm)) {
-                       ccc_inode_lsm_put(inode, lsm);
+               obj = ll_i2info(inode)->lli_clob;
+               if (obj == NULL)
                        RETURN(0);
-               }
 
-               OBDO_ALLOC(oinfo.oi_oa);
-               if (!oinfo.oi_oa) {
-                       ccc_inode_lsm_put(inode, lsm);
+               OBD_ALLOC_PTR(attr);
+               if (attr == NULL)
                        RETURN(-ENOMEM);
-               }
-               oinfo.oi_md = lsm;
-               oinfo.oi_oa->o_oi = lsm->lsm_oi;
-                oinfo.oi_oa->o_flags = flags;
-                oinfo.oi_oa->o_valid = OBD_MD_FLID | OBD_MD_FLFLAGS |
-                                       OBD_MD_FLGROUP;
-                oinfo.oi_capa = ll_mdscapa_get(inode);
-                obdo_set_parent_fid(oinfo.oi_oa, &ll_i2info(inode)->lli_fid);
-                rc = obd_setattr_rqset(sbi->ll_dt_exp, &oinfo, NULL);
-                capa_put(oinfo.oi_capa);
-                OBDO_FREE(oinfo.oi_oa);
-               ccc_inode_lsm_put(inode, lsm);
-
-               if (rc && rc != -EPERM && rc != -EACCES)
-                       CERROR("osc_setattr_async fails: rc = %d\n", rc);
 
+               attr->ia_valid = ATTR_ATTR_FLAG;
+
+               capa = ll_mdscapa_get(inode);
+               rc = cl_setattr_ost(obj, attr, flags, capa);
+               capa_put(capa);
+
+               OBD_FREE_PTR(attr);
                RETURN(rc);
         }
         default:
@@ -2509,8 +2476,9 @@ struct md_op_data * ll_prep_md_op_data(struct md_op_data *op_data,
        op_data->op_default_stripe_offset = -1;
        if (S_ISDIR(i1->i_mode)) {
                op_data->op_mea1 = ll_i2info(i1)->lli_lsm_md;
-               op_data->op_default_stripe_offset =
-                          ll_i2info(i1)->lli_def_stripe_offset;
+               if (opc == LUSTRE_OPC_MKDIR)
+                       op_data->op_default_stripe_offset =
+                                  ll_i2info(i1)->lli_def_stripe_offset;
        }
 
        if (i2) {
@@ -2674,7 +2642,7 @@ void ll_dirty_page_discard_warn(struct page *page, int ioret)
 {
        char *buf, *path = NULL;
        struct dentry *dentry = NULL;
-       struct vvp_object *obj = cl_inode2vvp(page->mapping->host);
+       struct inode *inode = page->mapping->host;
 
        /* this can be called inside spin lock so use GFP_ATOMIC. */
        buf = (char *)__get_free_page(GFP_ATOMIC);
@@ -2688,7 +2656,7 @@ void ll_dirty_page_discard_warn(struct page *page, int ioret)
               "%s: dirty page discard: %s/fid: "DFID"/%s may get corrupted "
               "(rc %d)\n", ll_get_fsname(page->mapping->host->i_sb, NULL, 0),
               s2lsi(page->mapping->host->i_sb)->lsi_lmd->lmd_dev,
-              PFID(&obj->vob_header.coh_lu.loh_fid),
+              PFID(ll_inode2fid(inode)),
               (path && !IS_ERR(path)) ? path : "", ioret);
 
        if (dentry != NULL)