code checked out prior to all of these changes.
int mds_capa_key_idx; /* the red key index */
struct file *mds_capa_keys_filp;
unsigned long mds_capa_key_timeout; /* sec */
int mds_capa_key_idx; /* the red key index */
struct file *mds_capa_keys_filp;
unsigned long mds_capa_key_timeout; /* sec */
- unsigned mds_config_generation;
struct ptlrpc_request *req, struct mds_body *body)
{
struct inode *inode = dentry->d_inode;
struct ptlrpc_request *req, struct mds_body *body)
{
struct inode *inode = dentry->d_inode;
- struct mds_obd *mds = &obd->u.mds;
ENTRY;
LASSERT(body != NULL);
ENTRY;
LASSERT(body != NULL);
- /*if (mds->mds_config_generation)
- return 0;*/
-
if (atomic_read(&inode->i_writecount)) {
/* some one has opened the file for write.
* mds doesn't know actual size */
if (atomic_read(&inode->i_writecount)) {
/* some one has opened the file for write.
* mds doesn't know actual size */
int mds_convert_lov_ea(struct obd_device *obd, struct inode *inode,
struct lov_mds_md *lmm, int lmm_size);
int mds_revalidate_lov_ea(struct obd_device *obd, struct dentry *dentry,
int mds_convert_lov_ea(struct obd_device *obd, struct inode *inode,
struct lov_mds_md *lmm, int lmm_size);
int mds_revalidate_lov_ea(struct obd_device *obd, struct dentry *dentry,
- struct lustre_msg *msg, int offset, int *changed);
+ struct lustre_msg *msg, int offset);
void mds_dt_update_objids(struct obd_device *obd, obd_id *ids);
void mds_dt_save_objids(struct obd_device *obd, obd_id *ids);
void mds_dt_update_objids(struct obd_device *obd, obd_id *ids);
void mds_dt_save_objids(struct obd_device *obd, obd_id *ids);
sprintf(name, "%s-%d", profile, version);
}
CWARN("Applying configuration log %s\n", name);
sprintf(name, "%s-%d", profile, version);
}
CWARN("Applying configuration log %s\n", name);
- mds->mds_config_generation++;
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
ctxt = llog_get_context(&obd->obd_llogs, LLOG_CONFIG_ORIG_CTXT);
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
ctxt = llog_get_context(&obd->obd_llogs, LLOG_CONFIG_ORIG_CTXT);
GOTO(exit, rc);
}
/* retrieve size of EA */
GOTO(exit, rc);
}
/* retrieve size of EA */
- if (mds->mds_md_exp) {
- rc = obd_get_info(mds->mds_md_exp, strlen("mdsize"),
- "mdsize", &valsize, &value);
-
- if (value > mds->mds_max_mdsize)
- mds->mds_max_mdsize = value;
+ rc = obd_get_info(mds->mds_md_exp, strlen("mdsize"),
+ "mdsize", &valsize, &value);
+
+ if (value > mds->mds_max_mdsize)
+ mds->mds_max_mdsize = value;
- CDEBUG(D_INFO, "mds max md size %d \n", mds->mds_max_mdsize);
- }
+ CDEBUG(D_INFO, "mds max md size %d \n", mds->mds_max_mdsize);
if (rc == 0)
mds->mds_config_version = version;
if (rc == 0)
mds->mds_config_version = version;
/* Must be called with i_sem held */
int mds_revalidate_lov_ea(struct obd_device *obd, struct dentry *dentry,
/* Must be called with i_sem held */
int mds_revalidate_lov_ea(struct obd_device *obd, struct dentry *dentry,
- struct lustre_msg *msg, int offset, int *changed)
+ struct lustre_msg *msg, int offset)
{
struct mds_obd *mds = &obd->u.mds;
struct obd_export *dt_exp = mds->mds_dt_exp;
{
struct mds_obd *mds = &obd->u.mds;
struct obd_export *dt_exp = mds->mds_dt_exp;
LASSERT(down_trylock(&inode->i_sem) != 0);
ll_id2str(idname, inode->i_ino, inode->i_generation);
LASSERT(down_trylock(&inode->i_sem) != 0);
ll_id2str(idname, inode->i_ino, inode->i_generation);
rc = obd_packmd(dt_exp, &lmm, lsm);
if (rc < 0)
GOTO(out_oa, rc);
rc = obd_packmd(dt_exp, &lmm, lsm);
if (rc < 0)
GOTO(out_oa, rc);
/* Handles object creation, actual opening, and I/O epoch */
static int mds_finish_open(struct ptlrpc_request *req, struct dentry *dchild,
struct mds_body *body, int flags, void **handle,
/* Handles object creation, actual opening, and I/O epoch */
static int mds_finish_open(struct ptlrpc_request *req, struct dentry *dchild,
struct mds_body *body, int flags, void **handle,
- struct mds_update_record *rec, struct ldlm_reply *rep,
- int *cancel_update_lock)
+ struct mds_update_record *rec, struct ldlm_reply *rep)
{
struct obd_device *obd = req->rq_export->exp_obd;
struct mds_obd *mds = mds_req2mds(req);
{
struct obd_device *obd = req->rq_export->exp_obd;
struct mds_obd *mds = mds_req2mds(req);
int rc = 0, reply_off;
ENTRY;
int rc = 0, reply_off;
ENTRY;
- *cancel_update_lock = 0;
-
/* atomically create objects if necessary */
down(&dchild->d_inode->i_sem);
mode = dchild->d_inode->i_mode;
/* atomically create objects if necessary */
down(&dchild->d_inode->i_sem);
mode = dchild->d_inode->i_mode;
if (S_ISREG(dchild->d_inode->i_mode) &&
(body->valid & OBD_MD_FLEASIZE)) {
if (S_ISREG(dchild->d_inode->i_mode) &&
(body->valid & OBD_MD_FLEASIZE)) {
- int changed;
- rc = mds_revalidate_lov_ea(obd, dchild,
- req->rq_repmsg, 2,
- &changed);
- if (!rc) {
+ rc = mds_revalidate_lov_ea(obd,dchild,req->rq_repmsg,2);
+ if (!rc)
rc = mds_pack_md(obd, req->rq_repmsg, 2, body,
dchild->d_inode, 0, 0);
rc = mds_pack_md(obd, req->rq_repmsg, 2, body,
dchild->d_inode, 0, 0);
- /* after ost add/delete, lov ea can change
- * along with size/blocks, which we have
- * to update as well */
- if (changed) {
- body->size = dchild->d_inode->i_size;
- body->blocks = dchild->d_inode->i_blocks;
- *cancel_update_lock = 1;
- }
- }
if (rc) {
up(&dchild->d_inode->i_sem);
RETURN(rc);
if (rc) {
up(&dchild->d_inode->i_sem);
RETURN(rc);
struct inode *pending_dir = mds->mds_pending_dir->d_inode;
struct dentry *dchild;
char idname[LL_ID_NAMELEN];
struct inode *pending_dir = mds->mds_pending_dir->d_inode;
struct dentry *dchild;
char idname[LL_ID_NAMELEN];
- int idlen = 0, rc, fake;
void *handle = NULL;
ENTRY;
void *handle = NULL;
ENTRY;
intent_set_disposition(rep, DISP_LOOKUP_POS);
open:
intent_set_disposition(rep, DISP_LOOKUP_POS);
open:
- rc = mds_finish_open(req, dchild, body, flags, &handle, rec, rep,&fake);
+ rc = mds_finish_open(req, dchild, body, flags, &handle, rec, rep);
rc = mds_finish_transno(mds, dchild ? dchild->d_inode : NULL, handle,
req, rc, rep ? rep->lock_policy_res1 : 0);
/* XXX what do we do here if mds_finish_transno itself failed? */
rc = mds_finish_transno(mds, dchild ? dchild->d_inode : NULL, handle,
req, rc, rep ? rep->lock_policy_res1 : 0);
/* XXX what do we do here if mds_finish_transno itself failed? */
int child_mode = LCK_PR;
struct lustre_id sid;
__u64 fid = 0;
int child_mode = LCK_PR;
struct lustre_id sid;
__u64 fid = 0;
- int cancel_update_lock;
ENTRY;
DEBUG_REQ(D_INODE, req, "parent "DLID4" name %*s mode %o",
ENTRY;
DEBUG_REQ(D_INODE, req, "parent "DLID4" name %*s mode %o",
/* Step 5: mds_open it */
rc = mds_finish_open(req, dchild, body, rec->ur_flags, &handle,
/* Step 5: mds_open it */
rc = mds_finish_open(req, dchild, body, rec->ur_flags, &handle,
- rec, rep, &cancel_update_lock);
if (rc)
GOTO(cleanup, rc);
if (rc)
GOTO(cleanup, rc);
* isize/iblocks from mds anymore.
* FIXME: can cause a deadlock, use mds_get_parent_child_locked()
* XXX: optimization is to do this for first writer only */
* isize/iblocks from mds anymore.
* FIXME: can cause a deadlock, use mds_get_parent_child_locked()
* XXX: optimization is to do this for first writer only */
- if ((accmode(rec->ur_flags) & MAY_WRITE) || cancel_update_lock) {
+ if (accmode(rec->ur_flags) & MAY_WRITE) {
struct ldlm_res_id child_res_id = { .name = {0}};
ldlm_policy_data_t sz_policy;
struct lustre_handle sz_lockh;
struct ldlm_res_id child_res_id = { .name = {0}};
ldlm_policy_data_t sz_policy;
struct lustre_handle sz_lockh;