void mds_pack_dentry2id(struct obd_device *obd,
struct lustre_id *id,
struct dentry *dentry,
- int read_fid)
+ int fid)
{
id_ino(id) = dentry->d_inum;
id_gen(id) = dentry->d_generation;
-
- if (read_fid) {
+
+ if (fid) {
id_fid(id) = dentry->d_fid;
id_group(id) = dentry->d_mdsnum;
}
void mds_pack_dentry2body(struct obd_device *obd,
struct mds_body *b,
struct dentry *dentry,
- int read_fid)
+ int fid)
{
b->valid |= OBD_MD_FLID | OBD_MD_FLGENER |
OBD_MD_MDS;
- mds_pack_dentry2id(obd, &b->id1, dentry,
- read_fid);
+ if (fid)
+ b->valid |= OBD_MD_FID;
+
+ mds_pack_dentry2id(obd, &b->id1, dentry, fid);
}
int mds_pack_inode2id(struct obd_device *obd,
struct lustre_id *id,
struct inode *inode,
- int read_fid)
+ int fid)
{
int rc = 0;
ENTRY;
-
- if (read_fid) {
+
+ if (fid) {
/* we have to avoid deadlock. */
if (!down_trylock(&inode->i_sem)) {
rc = mds_read_inode_sid(obd, inode, id);
rc = mds_read_inode_sid(obd, inode, id);
}
}
+
if (rc == 0) {
id_ino(id) = inode->i_ino;
id_gen(id) = inode->i_generation;
/* Note that we can copy all of the fields, just some will not be "valid" */
void mds_pack_inode2body(struct obd_device *obd, struct mds_body *b,
- struct inode *inode, int read_fid)
+ struct inode *inode, int fid)
{
b->valid |= OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID |
OBD_MD_FLGID | OBD_MD_FLFLAGS | OBD_MD_FLTYPE |
} else {
b->nlink = inode->i_nlink;
}
- mds_pack_inode2id(obd, &b->id1, inode, read_fid);
+
+ if (fid)
+ b->valid |= OBD_MD_FID;
+
+ mds_pack_inode2id(obd, &b->id1, inode, fid);
}
/* unpacking */