From aa94f33bd092b797932d246174d0aded9c6f657f Mon Sep 17 00:00:00 2001 From: nikita Date: Wed, 12 Jul 2006 18:27:02 +0000 Subject: [PATCH] add explicit padding to struct osd_inode_id to work correctly on 64bits. Chnages to mount procedure are necessary, see a companion email message --- lustre/osd/osd_handler.c | 10 +++++----- lustre/osd/osd_oi.c | 4 ++-- lustre/osd/osd_oi.h | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c index de3135c..230a700 100644 --- a/lustre/osd/osd_handler.c +++ b/lustre/osd/osd_handler.c @@ -1351,7 +1351,7 @@ static int osd_fid_lookup(const struct lu_context *ctx, struct osd_thread_info *info; struct lu_device *ldev = obj->oo_dt.do_lu.lo_dev; struct osd_device *dev; - struct osd_inode_id id; + struct osd_inode_id *id; struct osd_oi *oi; struct inode *inode; int result; @@ -1365,16 +1365,16 @@ static int osd_fid_lookup(const struct lu_context *ctx, info = lu_context_key_get(ctx, &osd_key); dev = osd_dev(ldev); - - oi = &dev->od_oi; + id = &info->oti_id; + oi = &dev->od_oi; if (OBD_FAIL_CHECK(OBD_FAIL_OST_ENOENT)) RETURN(-ENOENT); osd_oi_read_lock(oi); - result = osd_oi_lookup(info, oi, fid, &id); + result = osd_oi_lookup(info, oi, fid, id); if (result == 0) { - inode = osd_iget(info, dev, &id); + inode = osd_iget(info, dev, id); if (!IS_ERR(inode)) { obj->oo_inode = inode; LASSERT(obj->oo_inode->i_sb == osd_sb(dev)); diff --git a/lustre/osd/osd_oi.c b/lustre/osd/osd_oi.c index 6253b06..8044091 100644 --- a/lustre/osd/osd_oi.c +++ b/lustre/osd/osd_oi.c @@ -60,8 +60,8 @@ static const struct dt_index_features oi_index_features = { .dif_flags = DT_IND_UPDATE, .dif_keysize_min = sizeof(struct lu_fid), .dif_keysize_max = sizeof(struct lu_fid), - .dif_recsize_min = sizeof(__u64) + sizeof(__u32), - .dif_recsize_max = sizeof(__u64) + sizeof(__u32) + .dif_recsize_min = sizeof(struct osd_inode_id), + .dif_recsize_max = sizeof(struct osd_inode_id) }; int osd_oi_init(struct osd_thread_info *info, diff --git a/lustre/osd/osd_oi.h b/lustre/osd/osd_oi.h index 939ee76..b7476eb 100644 --- a/lustre/osd/osd_oi.h +++ b/lustre/osd/osd_oi.h @@ -52,6 +52,7 @@ struct osd_oi { struct osd_inode_id { __u64 oii_ino; __u32 oii_gen; + __u32 oii_pad; }; enum { -- 1.8.3.1