Whamcloud - gitweb
Branch: b_new_cmd
authorwangdi <wangdi>
Thu, 28 Sep 2006 07:58:28 +0000 (07:58 +0000)
committerwangdi <wangdi>
Thu, 28 Sep 2006 07:58:28 +0000 (07:58 +0000)
refine the credits computation in mdd layer

lustre/mdd/mdd_handler.c

index cc262ab..f5b736d 100644 (file)
@@ -96,18 +96,102 @@ struct mdd_txn_op_descr {
         unsigned int    mod_credits;
 };
 
+/* Calculate the credits of each transaction here */
+/* Note: we did not count into QUOTA here, If we mount with --data_journal
+ * we may need more*/
+
+/* Insert/Delete IAM  
+ * EXT3_INDEX_EXTRA_TRANS_BLOCKS(8) + EXT3_SINGLEDATA_TRANS_BLOCKS 8
+ * XXX Note: maybe iam need more,since iam have more level than Ext3 htree
+ */
+#define INSERT_IAM_CREDITS 16 
+
+/* Insert/Delete Oi
+ * same as IAM insert/delete 16 
+ * */
+#define INSERT_OI_CREDITS 16 
+
+/* Create a object 
+ * Same as create object in Ext3 filesystem, but did not count QUOTA i
+ * EXT3_DATA_TRANS_BLOCKS(12) + INDEX_EXTRA_BLOCKS(8) + 
+ * 3(inode bits,groups, GDT)*/
+#define CREATE_OBJECT_CREDITS 23
+
+/* OBJECT CREATE
+ * OI_INSERT + CREATE 
+ */
+#define TXN_OBJECT_CREATE_CREDITS (INSERT_OI_CREDITS + CREATE_OBJECT_CREDITS)
+
+/* CREATE 
+ * IAM_INSERT + OI_INSERT + CREATE_OBJECT_CREDITS 
+ * SET_MD CREDITS is already counted in CREATE_OBJECT CREDITS */
+#define TXN_CREATE_CREDITS (INSERT_IAM_CREDITS + INSERT_OI_CREDITS \
+                            + CREATE_OBJECT_CREDITS)
+
+/* XATTR_SET
+ * SAME AS XATTR of EXT3 EXT3_DATA_TRANS_BLOCKS
+ * XXX Note: in original MDS implmentation EXT3_INDEX_EXTRA_TRANS_BLOCKS are 
+ * also counted in. Do not know why? */
+#define TXN_XATTR_SET_CREDITS 12
+
+/* ATTR SET
+ * XATTR_SET + ATTR set(3)
+ * */
+#define TXN_ATTR_SET_CREDITS (TXN_XATTR_SET_CREDITS + 3)
+
+/* INDEX_INSERT
+ * Same as IAM_INSERT */
+
+#define TXN_INDEX_INSERT_CREDITS INSERT_IAM_CREDITS
+
+/* INDEX DELETE
+ * same as IAM_INSERT */
+#define TXN_INDEX_DELETE_CREDITS INSERT_IAM_CREDITS
+
+/* LINK CREDIT
+ * IAM_INSERT 
+ */
+#define TXN_LINK_CREDITS INSERT_IAM_CREDITS
+
+/* UNLINK CREDITS
+ * IAM_INSERT_CREDITS + UNLINK log
+ * Unlink log = ((EXT3_INDEX_EXTRA_TRANS_BLOCKS(8) +
+ *                        EXT3_SINGLEDATA_TRANS_BLOCKS(8)) * lsm stripe count
+ * XXX we should know the ost count to calculate the llog */ 
+#define DEFAULT_LSM_COUNT 4  /* FIXME later */
+#define LOG_REC_CREDIT  (8 + 8)
+
+#define TXN_UNLINK_CREDITS (INSERT_IAM_CREDITS + LOG_REC_CREDIT*DEFAULT_LSM_COUNT)
+
+/* RENAME CREDITS 
+ * 2 IAM_INSERT + 1 IAM_DELETE + UNLINK LOG
+ */
+
+#define TXN_RENAME_CREDITS (3 * INSERT_IAM_CREDITS + \
+                            LOG_REC_CREDIT * DEFAULT_LSM_COUNT)
+
+/* CREATE_DATA CREDITS
+ * SET_XATTR  
+ * */
+#define TXN_CREATE_DATA_CREDITS TXN_XATTR_SET_CREDITS 
+
+/* MKDIR CREDITS == CREATE CREDITS
+ * Although mkdir did not include the set lov EA, but which is
+ * actually be already counted in CREATE_DATA_CREDITS */
+#define TXN_MKDIR_CREDITS TXN_CREATE_CREDITS
+
 enum {
         MDD_TXN_OBJECT_DESTROY_CREDITS = 20,
-        MDD_TXN_OBJECT_CREATE_CREDITS  = 20,
-        MDD_TXN_ATTR_SET_CREDITS       = 20,
-        MDD_TXN_XATTR_SET_CREDITS      = 20,
-        MDD_TXN_INDEX_INSERT_CREDITS   = 20,
-        MDD_TXN_INDEX_DELETE_CREDITS   = 20,
-        MDD_TXN_LINK_CREDITS           = 20,
-        MDD_TXN_UNLINK_CREDITS         = 20,
-        MDD_TXN_RENAME_CREDITS         = 20,
-        MDD_TXN_CREATE_DATA_CREDITS    = 20,
-        MDD_TXN_MKDIR_CREDITS          = 20
+        MDD_TXN_OBJECT_CREATE_CREDITS  = TXN_OBJECT_CREATE_CREDITS,
+        MDD_TXN_ATTR_SET_CREDITS       = TXN_ATTR_SET_CREDITS,
+        MDD_TXN_XATTR_SET_CREDITS      = TXN_XATTR_SET_CREDITS,
+        MDD_TXN_INDEX_INSERT_CREDITS   = TXN_INDEX_INSERT_CREDITS,
+        MDD_TXN_INDEX_DELETE_CREDITS   = TXN_INDEX_INSERT_CREDITS,
+        MDD_TXN_LINK_CREDITS           = TXN_LINK_CREDITS,
+        MDD_TXN_UNLINK_CREDITS         = TXN_UNLINK_CREDITS,
+        MDD_TXN_RENAME_CREDITS         = TXN_RENAME_CREDITS,
+        MDD_TXN_CREATE_DATA_CREDITS    = TXN_CREATE_DATA_CREDITS,
+        MDD_TXN_MKDIR_CREDITS          = TXN_MKDIR_CREDITS 
 };
 
 #define DEFINE_MDD_TXN_OP_DESC(opname)          \