diff --git a/lustre/include/dt_object.h b/lustre/include/dt_object.h
index 5eff04c4b25dfe9736dab6e4d25222bf12b7c369..563adc16ef057787d174195dbcf4f5942593d30a 100644
--- a/lustre/include/dt_object.h
+++ b/lustre/include/dt_object.h
@@ -71,6 +71,8 @@ enum dt_txn_op {
         DTO_ATTR_SET,
         DTO_XATTR_SET,
         DTO_LOG_REC, /* XXX temporary: dt layer knows nothing about llog. */
+        DTO_WRITE_BASE,
+        DTO_WRITE_BLOCK,
 
         DTO_NR
 };
diff --git a/lustre/mdd/mdd_trans.c b/lustre/mdd/mdd_trans.c
index 3c84ee706fd2072cfa7dd59031d9545f8ffabd7f..e1b1461fe62647980281fd0da9dbfc66af10109b 100644
--- a/lustre/mdd/mdd_trans.c
+++ b/lustre/mdd/mdd_trans.c
@@ -44,9 +44,23 @@
 
 #include "mdd_internal.h"
 
+static int dto_txn_credits[DTO_NR];
+
 int mdd_txn_start_cb(const struct lu_env *env, struct txn_param *param,
                      void *cookie)
 {
+        struct mdd_device *mdd = cookie;
+        struct obd_device *obd = mdd2obd_dev(mdd);
+        /* Each transaction updates lov objids, the credits should be added for
+         * this */
+        int blk, shift = mdd->mdd_dt_conf.ddp_block_shift;
+        blk = ((obd->u.mds.mds_lov_desc.ld_tgt_count * sizeof(obd_id) +
+               (1 << shift) - 1) >> shift) + 1;
+
+        /* add lov objids credits */
+        param->tp_credits += blk * dto_txn_credits[DTO_WRITE_BLOCK] +
+                             dto_txn_credits[DTO_WRITE_BASE];
+
         return 0;
 }
 
@@ -66,7 +80,6 @@ int mdd_txn_commit_cb(const struct lu_env *env, struct thandle *txn,
         return 0;
 }
 
-static int dto_txn_credits[DTO_NR];
 void mdd_txn_param_build(const struct lu_env *env, struct mdd_device *mdd,
                          enum mdd_txn_op op)
 {
diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c
index 8361deb4adefb87680b36f5fdd6dd25135bcab33..20965ee3a2a5898fb94ecd251595a379f8c7e60b 100644
--- a/lustre/osd/osd_handler.c
+++ b/lustre/osd/osd_handler.c
@@ -566,7 +566,7 @@ static int osd_statfs(const struct lu_env *env,
         spin_lock(&osd->od_osfs_lock);
         /* cache 1 second */
         if (cfs_time_before_64(osd->od_osfs_age, cfs_time_shift_64(-1))) {
-                result = sb->s_op->statfs(sb, &osd->od_kstatfs);
+                result = ll_do_statfs(sb, &osd->od_kstatfs);
                 if (likely(result == 0)) /* N.B. statfs can't really fail */
                         osd->od_osfs_age = cfs_time_current_64();
         }
@@ -811,7 +811,11 @@ static const int osd_dto_credits[DTO_NR] = {
          * also counted in. Do not know why?
          */
         [DTO_XATTR_SET]     = 16,
-        [DTO_LOG_REC]       = 16
+        [DTO_LOG_REC]       = 16,
+        /* creadits for inode change during write */
+        [DTO_WRITE_BASE]    = 3,
+        /* credits for single block write */
+        [DTO_WRITE_BLOCK]   = 12 
 };
 
 static int osd_credit_get(const struct lu_env *env, struct dt_device *d,
diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh
index a483e3a54faa5cc97f576248df96bf1467b698c4..75b36445c54cb281702355c021d1d315e5cccd8e 100644
--- a/lustre/tests/conf-sanity.sh
+++ b/lustre/tests/conf-sanity.sh
@@ -13,8 +13,8 @@ ONLY=${ONLY:-"$*"}
 
 # These tests don't apply to mountconf
 MOUNTCONFSKIP="10 11 12 13 13b 14 15"
-# bug number for skipped test: 13739   13710
-HEAD_EXCEPT="                  32a 32b 33"
+# bug number for skipped test: 13739 
+HEAD_EXCEPT="                  32a 32b "
 
 # bug number for skipped test:                                  13709 10510 12743
 ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT $MOUNTCONFSKIP $HEAD_EXCEPT 22    23    36"