oinfo.oi_md = lsm;
oinfo.oi_oa = obdo;
- oinfo.oi_oa->o_id = lsm->lsm_object_id;
- oinfo.oi_oa->o_seq = lsm->lsm_object_seq;
+ oinfo.oi_oa->o_oi = lsm->lsm_oi;
oinfo.oi_oa->o_mode = S_IFREG;
oinfo.oi_oa->o_ioepoch = ioepoch;
oinfo.oi_oa->o_valid = OBD_MD_FLID | OBD_MD_FLTYPE |
capa, obdo, ioepoch, sync);
capa_put(capa);
if (rc == 0) {
+ struct ost_id *oi = lsm ? &lsm->lsm_oi : &obdo->o_oi;
+
obdo_refresh_inode(inode, obdo, obdo->o_valid);
- CDEBUG(D_INODE,
- "objid "LPX64" size %llu, blocks %llu, blksize %lu\n",
- lsm ? lsm->lsm_object_id : 0, i_size_read(inode),
+ CDEBUG(D_INODE, "objid "DOSTID" size %llu, blocks %llu,"
+ " blksize %lu\n", POSTID(oi), i_size_read(inode),
(unsigned long long)inode->i_blocks,
(unsigned long)ll_inode_blksize(inode));
}
!(fiemap->fm_flags & FIEMAP_FLAG_DEVICE_ORDER))
GOTO(out, rc = -EOPNOTSUPP);
- fm_key.oa.o_id = lsm->lsm_object_id;
- fm_key.oa.o_seq = lsm->lsm_object_seq;
+ fm_key.oa.o_oi = lsm->lsm_oi;
fm_key.oa.o_valid = OBD_MD_FLID | OBD_MD_FLGROUP;
obdo_from_inode(&fm_key.oa, inode, OBD_MD_FLSIZE);
RETURN(result);
}
+/*
+ * When dentry is provided (the 'else' case), *file->f_dentry may be
+ * null and dentry must be used directly rather than pulled from
+ * *file->f_dentry as is done otherwise.
+ */
+
#ifdef HAVE_FILE_FSYNC_4ARGS
int ll_fsync(struct file *file, loff_t start, loff_t end, int data)
+{
+ struct dentry *dentry = file->f_dentry;
#elif defined(HAVE_FILE_FSYNC_2ARGS)
int ll_fsync(struct file *file, int data)
+{
+ struct dentry *dentry = file->f_dentry;
#else
int ll_fsync(struct file *file, struct dentry *dentry, int data)
-#endif
{
- struct inode *inode = file->f_dentry->d_inode;
+#endif
+ struct inode *inode = dentry->d_inode;
struct ll_inode_info *lli = ll_i2info(inode);
struct ptlrpc_request *req;
struct obd_capa *oc;