- extensive changes to mds_open to call obd_create
- important changes to the client to avoid obd_create
- changes to intent locking to avoid giving a client a lock
- deficiencies:
- there is an open unlink problem (sanity 31). I think this was lurking and is now exposed
- lstripe needs some thought; doesn't work right now
- further refactoring of the object creation in mds_open desirable and forthcoming.
/* mds/mds_reint.c */
+int mds_osc_connect(struct obd_device *obd, struct mds_obd *mds);
void mds_commit_cb(struct obd_device *, __u64 last_rcvd, void *data, int error);
int mds_finish_transno(struct mds_obd *mds, struct inode *inode, void *handle,
struct ptlrpc_request *req, int rc, __u32 op_data);
/* Note that we can copy all of the fields, just some will not be "valid" */
void mds_pack_inode2body(struct mds_body *b, struct inode *inode)
{
- b->valid = OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID | OBD_MD_FLGID |
+ b->valid |= OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID | OBD_MD_FLGID |
OBD_MD_FLTYPE | OBD_MD_FLMODE | OBD_MD_FLNLINK | OBD_MD_FLGENER;
if (!S_ISREG(inode->i_mode))