Whamcloud - gitweb
LU-1518 mdd: Fixup mdd_{obf,dot_lustre}_obj_ops.
[fs/lustre-release.git] / lustre / mdd / mdd_device.c
index 47eab65..45ed842 100644 (file)
@@ -487,21 +487,6 @@ static int dot_lustre_mdd_permission(const struct lu_env *env,
                 return 0;
 }
 
-static int dot_lustre_mdd_attr_get(const struct lu_env *env,
-                                   struct md_object *obj, struct md_attr *ma)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        return mdd_attr_get_internal_locked(env, mdd_obj, ma);
-}
-
-static int dot_lustre_mdd_attr_set(const struct lu_env *env,
-                                   struct md_object *obj,
-                                   const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
 static int dot_lustre_mdd_xattr_get(const struct lu_env *env,
                                     struct md_object *obj, struct lu_buf *buf,
                                     const char *name)
@@ -609,8 +594,8 @@ static int dot_file_unlock(const struct lu_env *env, struct md_object *obj,
 
 static struct md_object_operations mdd_dot_lustre_obj_ops = {
         .moo_permission    = dot_lustre_mdd_permission,
-        .moo_attr_get      = dot_lustre_mdd_attr_get,
-        .moo_attr_set      = dot_lustre_mdd_attr_set,
+       .moo_attr_get      = mdd_attr_get,
+       .moo_attr_set      = mdd_attr_set,
         .moo_xattr_get     = dot_lustre_mdd_xattr_get,
         .moo_xattr_list    = dot_lustre_mdd_xattr_list,
         .moo_xattr_set     = dot_lustre_mdd_xattr_set,
@@ -751,8 +736,7 @@ static int obf_attr_get(const struct lu_env *env, struct md_object *obj,
                 /* "fid" is a virtual object and hence does not have any "real"
                  * attributes. So we reuse attributes of .lustre for "fid" dir */
                 ma->ma_need |= MA_INODE;
-                rc = dot_lustre_mdd_attr_get(env, &mdd->mdd_dot_lustre->mod_obj,
-                                             ma);
+               rc = mdd_attr_get(env, &mdd->mdd_dot_lustre->mod_obj, ma);
                 if (rc)
                         return rc;
                 ma->ma_valid |= MA_INODE;
@@ -788,6 +772,12 @@ static int obf_attr_set(const struct lu_env *env, struct md_object *obj,
         return -EPERM;
 }
 
+static int obf_xattr_list(const struct lu_env *env,
+                         struct md_object *obj, struct lu_buf *buf)
+{
+       return 0;
+}
+
 static int obf_xattr_get(const struct lu_env *env,
                          struct md_object *obj, struct lu_buf *buf,
                          const char *name)
@@ -795,6 +785,21 @@ static int obf_xattr_get(const struct lu_env *env,
         return 0;
 }
 
+static int obf_xattr_set(const struct lu_env *env,
+                        struct md_object *obj,
+                        const struct lu_buf *buf, const char *name,
+                        int fl)
+{
+       return -EPERM;
+}
+
+static int obf_xattr_del(const struct lu_env *env,
+                        struct md_object *obj,
+                        const char *name)
+{
+       return -EPERM;
+}
+
 static int obf_mdd_open(const struct lu_env *env, struct md_object *obj,
                         int flags)
 {
@@ -833,13 +838,16 @@ static int obf_path(const struct lu_env *env, struct md_object *obj,
 }
 
 static struct md_object_operations mdd_obf_obj_ops = {
-        .moo_attr_get   = obf_attr_get,
-        .moo_attr_set   = obf_attr_set,
-        .moo_xattr_get  = obf_xattr_get,
-        .moo_open       = obf_mdd_open,
-        .moo_close      = obf_mdd_close,
-        .moo_readpage   = obf_mdd_readpage,
-        .moo_path       = obf_path
+       .moo_attr_get    = obf_attr_get,
+       .moo_attr_set    = obf_attr_set,
+       .moo_xattr_list  = obf_xattr_list,
+       .moo_xattr_get   = obf_xattr_get,
+       .moo_xattr_set   = obf_xattr_set,
+       .moo_xattr_del   = obf_xattr_del,
+       .moo_open        = obf_mdd_open,
+       .moo_close       = obf_mdd_close,
+       .moo_readpage    = obf_mdd_readpage,
+       .moo_path        = obf_path
 };
 
 /**
@@ -860,11 +868,19 @@ static int obf_lookup(const struct lu_env *env, struct md_object *p,
 
         sscanf(name, SFID, RFID(f));
         if (!fid_is_sane(f)) {
-                CWARN("bad FID format [%s], should be "DFID"\n", lname->ln_name,
-                      (__u64)1, 2, 0);
+               CWARN("%s: bad FID format [%s], should be "DFID"\n",
+                     mdd->mdd_obd_dev->obd_name, lname->ln_name,
+                     (__u64)FID_SEQ_NORMAL, 1, 0);
                 GOTO(out, rc = -EINVAL);
         }
 
+       if (!fid_is_norm(f)) {
+               CWARN("%s: "DFID" is invalid, sequence should be "
+                     ">= "LPX64"\n", mdd->mdd_obd_dev->obd_name, PFID(f),
+                     (__u64)FID_SEQ_NORMAL);
+               GOTO(out, rc = -EINVAL);
+       }
+
         /* Check if object with this fid exists */
         child = mdd_object_find(env, mdd, f);
         if (child == NULL)