Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / mdd / mdd_lov.c
index 6d62c7e..6044429 100644 (file)
@@ -77,6 +77,11 @@ static int mdd_notify(struct obd_device *host, struct obd_device *watched,
                 case OBD_NOTIFY_CONFIG:
                         rc = md_do_upcall(NULL, &mdd->mdd_md_dev, MD_LOV_CONFIG);
                         break;
+#ifdef HAVE_QUOTA_SUPPORT
+                case OBD_NOTIFY_QUOTA:
+                        rc = md_do_upcall(NULL, &mdd->mdd_md_dev, MD_LOV_QUOTA);
+                        break;
+#endif
                 default:
                         CDEBUG(D_INFO, "Unhandled notification %#x\n", ev);
         }
@@ -243,7 +248,7 @@ static int mdd_lov_set_stripe_md(const struct lu_env *env,
                 RETURN(rc);
         obd_free_memmd(lov_exp, &lsm);
 
-        rc = mdd_xattr_set_txn(env, obj, buf, MDS_LOV_MD_NAME, 0, handle);
+        rc = mdd_xattr_set_txn(env, obj, buf, XATTR_NAME_LOV, 0, handle);
 
         CDEBUG(D_INFO, "set lov ea of "DFID" rc %d \n", PFID(mdo2fid(obj)), rc);
         RETURN(rc);
@@ -270,7 +275,7 @@ static int mdd_lov_set_dir_md(const struct lu_env *env,
             lum->lmm_stripe_offset == (typeof(lum->lmm_stripe_offset))(-1) &&
             lum->lmm_magic != LOV_USER_MAGIC_V3) {
                 rc = mdd_xattr_set_txn(env, obj, &LU_BUF_NULL,
-                                       MDS_LOV_MD_NAME, 0, handle);
+                                       XATTR_NAME_LOV, 0, handle);
                 if (rc == -ENODATA)
                         rc = 0;
                 CDEBUG(D_INFO, "delete lov ea of "DFID" rc %d \n",
@@ -316,7 +321,7 @@ int mdd_lov_set_md(const struct lu_env *env, struct mdd_object *pobj,
                         rc = mdd_lov_set_stripe_md(env, child, buf, handle);
                 } else {
                         rc = mdd_xattr_set_txn(env, child, buf,
-                                               MDS_LOV_MD_NAME, 0, handle);
+                                               XATTR_NAME_LOV, 0, handle);
                 }
         } else if (S_ISDIR(mode)) {
                 if (lmmp == NULL && lmm_size == 0) {
@@ -327,11 +332,11 @@ int mdd_lov_set_md(const struct lu_env *env, struct mdd_object *pobj,
                         /* Get parent dir stripe and set */
                         if (pobj != NULL)
                                 rc = mdd_get_md_locked(env, pobj, lmm, &size,
-                                                       MDS_LOV_MD_NAME);
+                                                       XATTR_NAME_LOV);
                         if (rc > 0) {
                                 buf = mdd_buf_get(env, lmm, size);
                                 rc = mdd_xattr_set_txn(env, child, buf,
-                                               MDS_LOV_MD_NAME, 0, handle);
+                                               XATTR_NAME_LOV, 0, handle);
                                 if (rc)
                                         CERROR("error on copy stripe info: rc "
                                                 "= %d\n", rc);
@@ -392,9 +397,10 @@ int mdd_lov_create(const struct lu_env *env, struct mdd_device *mdd,
         int                    rc = 0;
         ENTRY;
 
-        if (!md_should_create(create_flags))
+        if (!md_should_create(create_flags)) {
+                *lmm_size = 0;
                 RETURN(0);
-
+        }
         oti_init(oti, NULL);
 
         /* replay case, has objects already, only get lov from eadata */
@@ -441,10 +447,12 @@ int mdd_lov_create(const struct lu_env *env, struct mdd_device *mdd,
 
                         rc = mdd_get_md_locked(env, parent, _lmm,
                                                &_lmm_size,
-                                               MDS_LOV_MD_NAME);
+                                               XATTR_NAME_LOV);
                         if (rc > 0)
                                 rc = obd_iocontrol(OBD_IOC_LOV_SETSTRIPE,
-                                                   lov_exp, 0, &lsm, _lmm);
+                                                   lov_exp, *lmm_size,
+                                                   &lsm, _lmm);
+
                         if (rc)
                                 GOTO(out_oti, rc);
                 }
@@ -617,7 +625,7 @@ int mdd_lov_destroy(const struct lu_env *env, struct mdd_device *mdd,
         /* get lov ea */
 
         rc = mdd_get_md_locked(env, obj, ma->ma_lmm, &ma->ma_lmm_size,
-                               MDS_LOV_MD_NAME);
+                               XATTR_NAME_LOV);
 
         if (rc <= 0) {
                 CWARN("Get lov ea failed for "DFID" rc = %d\n",
@@ -692,6 +700,8 @@ int mdd_unlink_log(const struct lu_env *env, struct mdd_device *mdd,
         if ((ma->ma_cookie_size > 0) &&
             (mdd_log_op_unlink(obd, ma->ma_lmm, ma->ma_lmm_size,
                                ma->ma_cookie, ma->ma_cookie_size) > 0)) {
+                CDEBUG(D_HA, "DEBUG: unlink log is added for object "DFID"\n",
+                       PFID(mdd_object_fid(mdd_cobj)));
                 ma->ma_valid |= MA_COOKIE;
         }
         return 0;