Whamcloud - gitweb
b: 1988
authorniu <niu>
Wed, 10 Dec 2003 01:51:01 +0000 (01:51 +0000)
committerniu <niu>
Wed, 10 Dec 2003 01:51:01 +0000 (01:51 +0000)
r: Andreas

Make log record alignment 8 bytes.

lustre/include/linux/lustre_idl.h
lustre/include/linux/lustre_log.h
lustre/obdclass/llog_lvfs.c
lustre/obdclass/llog_test.c

index e2e6846..368f35c 100644 (file)
@@ -878,7 +878,7 @@ struct llog_rec_tail {
 struct llog_logid_rec {
         struct llog_rec_hdr     lid_hdr;
         struct llog_logid       lid_id;
-        __u32                   padding[5];
+        __u32                   padding;
         struct llog_rec_tail    lid_tail;
 } __attribute__((packed));
 
@@ -887,7 +887,7 @@ struct llog_create_rec {
         struct ll_fid           lcr_fid;
         obd_id                  lcr_oid;
         obd_count               lcr_ogen;
-        __u32                   padding[3];
+        __u32                   padding;
         struct llog_rec_tail    lcr_tail;
 } __attribute__((packed));
 
@@ -895,7 +895,7 @@ struct llog_orphan_rec {
         struct llog_rec_hdr     lor_hdr;
         obd_id                  lor_oid;
         obd_count               lor_ogen;
-        __u32                   padding[7];
+        __u32                   padding;
         struct llog_rec_tail    lor_tail;
 } __attribute__((packed));
 
@@ -903,7 +903,7 @@ struct llog_unlink_rec {
         struct llog_rec_hdr     lur_hdr;
         obd_id                  lur_oid;
         obd_count               lur_ogen;
-        __u32                   padding[7];
+        __u32                   padding;
         struct llog_rec_tail    lur_tail;
 } __attribute__((packed));
 
@@ -911,7 +911,7 @@ struct llog_size_change_rec {
         struct llog_rec_hdr     lsc_hdr;
         struct ll_fid           lsc_fid;
         __u32                   lsc_io_epoch;
-        __u32                   padding[5];
+        __u32                   padding;
         struct llog_rec_tail    lsc_tail;
 } __attribute__((packed));
 
@@ -920,7 +920,7 @@ struct llog_size_change_rec {
 #define LLOG_HEADER_SIZE        (96)
 #define LLOG_BITMAP_BYTES       (LLOG_CHUNK_SIZE - LLOG_HEADER_SIZE)
 
-#define LLOG_MIN_REC_SIZE       (32) /* round(struct llog_rec_hdr+end_len) */
+#define LLOG_MIN_REC_SIZE       (24) /* round(llog_rec_hdr + llog_rec_tail) */
 
 /* flags for the logs */
 #define LLOG_F_ZAP_WHEN_EMPTY   0x1
index 4a7b124..ad60e1b 100644 (file)
@@ -231,12 +231,7 @@ static inline int llog_handle2ops(struct llog_handle *loghandle,
 
 static inline int llog_data_len(int len)
 {
-        int mask = LLOG_MIN_REC_SIZE - 1;
-        int remains = LLOG_MIN_REC_SIZE - sizeof(struct llog_rec_hdr) -
-                sizeof(struct llog_rec_tail); 
-        
-        return (len <= remains) ? 
-                remains : (((len + mask) & (~mask)) + remains);
+        return size_round(len);
 }
 
 static inline struct llog_ctxt *llog_get_context(struct obd_device *obd,
@@ -268,7 +263,7 @@ static inline int llog_write_rec(struct llog_handle *handle,
                                 + sizeof(struct llog_rec_tail);
         else
                 buflen = le32_to_cpu(rec->lrh_len);
-        LASSERT((buflen % LLOG_MIN_REC_SIZE) == 0);
+        LASSERT(size_round(buflen) == buflen);
 
         rc = lop->lop_write_rec(handle, rec, logcookies, numcookies, buf, idx);
         RETURN(rc);
index 2199299..a5a94eb 100644 (file)
@@ -57,7 +57,7 @@ static int llog_lvfs_pad(struct obd_device *obd, struct l_file *file,
         int rc;
         ENTRY;
 
-        LASSERT(len >= LLOG_MIN_REC_SIZE && (len & 0xf) == 0);
+        LASSERT(len >= LLOG_MIN_REC_SIZE && (len & 0x7) == 0);
 
         tail.lrt_len = rec.lrh_len = cpu_to_le32(len);
         tail.lrt_index = rec.lrh_index = cpu_to_le32(index);
@@ -247,7 +247,8 @@ static int llog_lvfs_write_rec(struct llog_handle *loghandle,
                         sizeof(struct llog_rec_tail);
 
         /* NOTE: padding is a record, but no bit is set */
-        if (left != 0 && left < reclen) {
+        if (left != 0 && left != reclen && 
+            left < (reclen + LLOG_MIN_REC_SIZE)) {
                 loghandle->lgh_last_idx++;
                 rc = llog_lvfs_pad(obd, file, left, loghandle->lgh_last_idx);
                 if (rc)
index 4f58a40..137b5b7 100644 (file)
@@ -40,7 +40,6 @@ static struct llog_logid cat_logid;
 
 struct llog_mini_rec {
         struct llog_rec_hdr     lmr_hdr;
-        __u32                   padding[2];
         struct llog_rec_tail    lmr_tail;
 } __attribute__((packed));