+#include <linux/lustre_mds.h>
+#include <linux/lustre_lite.h>
+
+void mds_pack_inode2fid(struct ll_fid *fid, struct inode *inode)
+{
+ fid->id = HTON__u64(inode->i_ino);
+ fid->generation = HTON__u32(inode->i_generation);
+ fid->f_type = HTON__u32(S_IFMT & inode->i_mode);
+}
+
+
+void mds_pack_inode2body(struct mds_body *b, struct inode *inode)
+{
+ b->valid = OBD_MD_FLID | OBD_MD_FLATIME | OBD_MD_FLMTIME |
+ OBD_MD_FLCTIME | OBD_MD_FLSIZE | OBD_MD_FLUID | OBD_MD_FLGID |
+ OBD_MD_FLTYPE | OBD_MD_FLMODE | OBD_MD_FLNLINK | OBD_MD_FLGENER;
+ b->ino = HTON__u32(inode->i_ino);
+ b->atime = HTON__u32(inode->i_atime);
+ b->mtime = HTON__u32(inode->i_mtime);
+ b->ctime = HTON__u32(inode->i_ctime);
+ b->mode = HTON__u32(inode->i_mode);
+ b->size = HTON__u64(inode->i_size);
+ b->uid = HTON__u32(inode->i_uid);
+ b->gid = HTON__u32(inode->i_gid);
+ b->flags = HTON__u32(inode->i_flags);
+ //b->major = HTON__u32(inode->i_major);
+ //b->minor = HTON__u32(inode->i_minor);
+ b->nlink = HTON__u32(inode->i_nlink);
+ b->generation = HTON__u32(inode->i_generation);
+}
+
+
+void mds_pack_fid(struct ll_fid *fid)
+{
+ fid->id = HTON__u64(fid->id);
+ fid->generation = HTON__u32(fid->generation);
+ fid->f_type = HTON__u32(fid->f_type);
+}
+
+static void mds_pack_body(struct mds_body *b)
+{
+ if (b == NULL)
+ LBUG();
+
+ b->fsuid = HTON__u32(current->fsuid);
+ b->fsgid = HTON__u32(current->fsgid);
+
+ mds_pack_fid(&b->fid1);
+ mds_pack_fid(&b->fid2);
+ b->size = HTON__u64(b->size);
+ b->ino = HTON__u32(b->ino);
+ b->valid = HTON__u32(b->valid);
+ b->mode = HTON__u32(b->mode);
+ b->uid = HTON__u32(b->uid);
+ b->gid = HTON__u32(b->gid);
+ b->mtime = HTON__u32(b->mtime);
+ b->ctime = HTON__u32(b->ctime);
+ b->atime = HTON__u32(b->atime);
+ b->flags = HTON__u32(b->flags);
+ b->rdev = HTON__u32(b->rdev);
+ b->nlink = HTON__u32(b->nlink);
+ b->generation = HTON__u32(b->generation);
+}
+
+void mds_getattr_pack(struct ptlrpc_request *req, int offset,
+ struct inode *inode,
+ const char *name, int namelen)
+{
+ struct mds_body *rec;
+ rec = lustre_msg_buf(req->rq_reqmsg, offset);
+
+ ll_inode2fid(&rec->fid1, inode);
+ if (name) {
+ char *tmp;
+ tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1);
+ LOGL0(name, namelen, tmp);
+ }
+}
+
+
+void mds_pack_req_body(struct ptlrpc_request *req)
+{
+ struct mds_body *b = lustre_msg_buf(req->rq_reqmsg, 0);
+ mds_pack_body(b);
+}
+
+void mds_pack_rep_body(struct ptlrpc_request *req)
+{
+ struct mds_body *b = lustre_msg_buf(req->rq_repmsg, 0);
+ mds_pack_body(b);
+}
+