- /* clear group lock, if present */
- if (fd->fd_flags & LL_FILE_GROUP_LOCKED) {
- struct lov_stripe_md *lsm = llu_i2info(inode)->lli_smd;
- fd->fd_flags &= ~(LL_FILE_GROUP_LOCKED|LL_FILE_IGNORE_LOCK);
- rc = llu_extent_unlock(fd, inode, lsm, LCK_GROUP,
- &fd->fd_cwlockh);
- }
+ op_data->op_fid1 = lli->lli_fid;
+ op_data->op_attr.ia_atime = st->st_atime;
+ op_data->op_attr.ia_mtime = st->st_mtime;
+ op_data->op_attr.ia_ctime = st->st_ctime;
+ op_data->op_attr.ia_size = st->st_size;
+ op_data->op_attr_blocks = st->st_blocks;
+ op_data->op_attr.ia_attr_flags = lli->lli_st_flags;
+ op_data->op_ioepoch = lli->lli_ioepoch;
+ if (fh)
+ op_data->op_handle = *fh;
+ EXIT;
+}
+
+/** Pack SOM attributes info @opdata for CLOSE, DONE_WRITING rpc. */
+void llu_done_writing_attr(struct inode *inode, struct md_op_data *op_data)
+{
+ struct llu_inode_info *lli = llu_i2info(inode);
+ ENTRY;
+
+ op_data->op_flags |= MF_SOM_CHANGE;
+
+ /* Pack Size-on-MDS attributes if we are in IO
+ * epoch and attributes are valid. */
+ LASSERT(!(lli->lli_flags & LLIF_MDS_SIZE_LOCK));
+ if (!cl_local_size(inode))
+ op_data->op_attr.ia_valid |= ATTR_MTIME_SET | ATTR_CTIME_SET |
+ ATTR_ATIME_SET | ATTR_SIZE | ATTR_BLOCKS;