extern const struct req_format RQF_MDS_CONNECT;
extern const struct req_format RQF_MDS_DISCONNECT;
extern const struct req_format RQF_MDS_READPAGE;
+extern const struct req_format RQF_MDS_DONE_WRITING;
/*
* This is format of direct (non-intent) MDS_GETATTR_NAME request.
class_handle_unhash(&mfd->mfd_handle);
list_del_init(&mfd->mfd_list);
spin_unlock(&med->med_open_lock);
-
- rc = mdt_mfd_close(&ctxt, mfd);
-
- if (rc)
- CDEBUG(D_INODE|D_IOCTL, "Error closing file: %d\n", rc);
+ mdt_mfd_close(&ctxt, mfd);
spin_lock(&med->med_open_lock);
}
spin_unlock(&med->med_open_lock);
int mdt_reint_open(struct mdt_thread_info *info);
-int mdt_mfd_close(const struct lu_context *ctxt,
- struct mdt_file_data *mfd);
+void mdt_mfd_close(const struct lu_context *ctxt,
+ struct mdt_file_data *mfd);
int mdt_close(struct mdt_thread_info *info);
o = mdt_object_find(info->mti_ctxt, info->mti_mdt, fid);
if (!IS_ERR(o)) {
- if (mdt_object_exists(info->mti_ctxt, &o->mot_obj.mo_lu)) {
+ if (mdt_object_exists(info->mti_ctxt, &o->mot_obj.mo_lu) > 0) {
if (la->la_flags & MDS_OPEN_EXCL &&
la->la_flags & MDS_OPEN_CREAT)
rc = -EEXIST;
return result;
}
-int mdt_mfd_close(const struct lu_context *ctxt,
- struct mdt_file_data *mfd)
+void mdt_mfd_close(const struct lu_context *ctxt,
+ struct mdt_file_data *mfd)
{
ENTRY;
mdt_object_put(ctxt, mfd->mfd_object);
mdt_mfd_free(mfd);
- RETURN(0);
+ EXIT;
}
int mdt_close(struct mdt_thread_info *info)
if (rc == 0)
rc = mdt_handle_last_unlink(info, o);
}
-
mdt_mfd_close(info->mti_ctxt, mfd);
}
mdt_shrink_reply(info);
int mdt_done_writing(struct mdt_thread_info *info)
{
+ int rc;
ENTRY;
+ req_capsule_set(&info->mti_pill, &RQF_MDS_DONE_WRITING);
+ rc = req_capsule_pack(&info->mti_pill);
+
RETURN(0);
}
&RQF_MDS_CLOSE,
&RQF_MDS_PIN,
&RQF_MDS_READPAGE,
+ &RQF_MDS_DONE_WRITING
};
struct req_msg_field {
const struct req_format RQF_MDS_CLOSE =
DEFINE_REQ_FMT0("MDS_CLOSE",
-// mdt_body_only, mdt_body_only);
mdt_body_only, mds_last_unlink_server);
EXPORT_SYMBOL(RQF_MDS_CLOSE);
mdt_body_only, mdt_body_only);
EXPORT_SYMBOL(RQF_MDS_PIN);
+const struct req_format RQF_MDS_DONE_WRITING =
+ DEFINE_REQ_FMT0("MDS_DONE_WRITING",
+ mdt_body_only, mdt_body_only);
+EXPORT_SYMBOL(RQF_MDS_DONE_WRITING);
+
const struct req_format RQF_MDS_READPAGE =
DEFINE_REQ_FMT0("MDS_READPAGE",
mdt_body_only, mdt_body_only);