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));
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));
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));
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));
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));
#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
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,
+ 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);
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);
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)
struct llog_mini_rec {
struct llog_rec_hdr lmr_hdr;
- __u32 padding[2];
struct llog_rec_tail lmr_tail;
} __attribute__((packed));