int mpi_size[4];
int mpi_total_size;
};
-typedef int (*smfs_hook_func)(struct inode *inode, void *dentry,
- void *data1, void *data2, int op, void *handle);
-struct smfs_hook_ops {
- struct list_head smh_list;
- char * smh_name;
- smfs_hook_func smh_post_op;
- smfs_hook_func smh_pre_op;
-};
struct smfs_super_info {
struct super_block *smsi_sb;
#define SIZE2BLKS(size, inode) ((size + (I2CI(inode)->i_blksize)) >> (I2CI(inode)->i_blkbits))
#define OFF2BLKS(off, inode) (off >> (I2CI(inode)->i_blkbits))
+/* SMFS external flags and methods */
+#define SM_ALL_PLG 0x80L
+#define SM_PRECREATE 0x100L
+
#define SM_DO_REC 0x1
#define SM_INIT_REC 0x2
#define SM_CACHE_HOOK 0x4
}
-/*FIXME there should be more conditions in this check*/
-static inline int smfs_do_rec(struct inode *inode)
-{
- struct super_block *sb = inode->i_sb;
- struct smfs_super_info *smfs_info = S2SMI(sb);
-
- if (SMFS_DO_REC(smfs_info) && SMFS_INIT_REC(smfs_info) &&
- SMFS_DO_INODE_REC(inode))
- return 1;
- return 0;
-}
-
-static inline int smfs_cache_hook(struct inode *inode)
-{
- struct smfs_super_info *smfs_info = I2CSB(inode);
-
- if (SMFS_CACHE_HOOK(smfs_info) && SMFS_INIT_REC(smfs_info) &&
- SMFS_INODE_CACHE_HOOK(inode))
- return 1;
- else
- return 0;
-}
-
static inline int smfs_do_cow(struct inode *inode)
{
struct super_block *sb = inode->i_sb;
}
-/* XXX BUG 3188 -- must return to one set of opcodes */
-#define SMFS_TRANS_OP(inode, op) \
-{ \
- if (smfs_do_rec(inode)) \
- op = op | 0x10; \
- if (smfs_cache_hook(inode)) \
- op = op | 0x20; \
-}
-
-extern int smfs_start_rec(struct super_block *sb, struct vfsmount *mnt);
-extern int smfs_stop_rec(struct super_block *sb);
extern int smfs_write_extents(struct inode *dir, struct dentry *dentry,
unsigned long from, unsigned long num);
-extern int smfs_rec_setattr(struct inode *dir, struct dentry *dentry,
- struct iattr *attr);
extern int smfs_rec_precreate(struct dentry *dentry, int *num, struct obdo *oa);
-extern int smfs_rec_md(struct inode *inode, void * lmm, int lmm_size);
extern int smfs_rec_unpack(struct smfs_proc_args *args, char *record,
char **pbuf, int *opcode);
#endif /* _LUSTRE_SMFS_H */
goto journal_start;
}
- /* XXX BUG 3188 -- must return to one set of opcodes */
- /* FIXME - cache hook */
- if (op & 0x20) {
- nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS+EXT3_DATA_TRANS_BLOCKS;
- op = op & ~0x20;
- }
-
- /* FIXME - kml */
- if (op & 0x10) {
- nblocks += EXT3_INDEX_EXTRA_TRANS_BLOCKS+EXT3_DATA_TRANS_BLOCKS;
- op = op & ~0x10;
- }
-
+ if (logs)
+ nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ EXT3_SINGLEDATA_TRANS_BLOCKS) * logs;
+
switch(op) {
case FSFILT_OP_RMDIR:
case FSFILT_OP_UNLINK:
/* delete one file + create/update logs for each stripe */
nblocks += EXT3_DELETE_TRANS_BLOCKS;
- nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
- EXT3_SINGLEDATA_TRANS_BLOCKS) * logs;
+ /*nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ EXT3_SINGLEDATA_TRANS_BLOCKS) * logs;*/
break;
case FSFILT_OP_RENAME:
/* modify additional directory */
/* no break */
case FSFILT_OP_CREATE:
/* create/update logs for each stripe */
- nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
- EXT3_SINGLEDATA_TRANS_BLOCKS) * logs;
+ /*nblocks += (EXT3_INDEX_EXTRA_TRANS_BLOCKS +
+ EXT3_SINGLEDATA_TRANS_BLOCKS) * logs;*/
/* no break */
case FSFILT_OP_MKDIR:
case FSFILT_OP_MKNOD:
}
rc = fsfilt_post_setup(obd, dentry);
- if (rc)
- goto out_dentry;
-
- LASSERT(dentry->d_inode != NULL);
-
- fsfilt_set_fs_flags(obd, dentry->d_inode,
- SM_DO_REC | SM_DO_COW);
-
- fsfilt_set_fs_flags(obd, mds->mds_pending_dir->d_inode,
- SM_DO_REC | SM_DO_COW);
-
- fsfilt_set_mds_flags(obd, mds->mds_sb);
-out_dentry:
l_dput(dentry);
RETURN(rc);
}
RETURN(rc);
}
-
+#if 0
static int filter_group_set_fs_flags(struct obd_device *obd, int group)
{
struct filter_obd *filter = &obd->u.filter;
}
RETURN(rc);
}
+#endif
static int filter_post_fs_setup(struct obd_device *obd)
{
struct filter_obd *filter = &obd->u.filter;
- int rc = 0, j = 0;
- struct llog_ctxt *ctxt = NULL;
-
- rc = fsfilt_post_setup(obd, filter->fo_dentry_O);
- if (rc)
- RETURN(rc);
+ int rc = 0;
- for (j = 0; j < filter->fo_group_count; j++) {
- rc = filter_group_set_fs_flags(obd, j);
- if (rc)
- return rc;
- }
+ rc = fsfilt_post_setup(obd, filter->fo_dentry_O);
- fsfilt_get_reint_log_ctxt(obd, filter->fo_sb, &ctxt);
- if (ctxt) {
- ctxt->loc_obd = obd;
- ctxt->loc_idx = LLOG_REINT_ORIG_CTXT;
- obd->obd_llog_ctxt[LLOG_REINT_ORIG_CTXT] = ctxt;
- }
- fsfilt_set_ost_flags(obd, filter->fo_sb);
return rc;
}
CERROR("can't read group %u\n", group);
GOTO(cleanup, rc);
}
+#if 0
rc = filter_group_set_fs_flags(obd, group);
if (rc != 0) {
CERROR("can't set kml flags %u\n", group);
GOTO(cleanup, rc);
}
-
+#endif
cleanup:
if (rc) {
if (fcd)
GOTO(cleanup, rc = PTR_ERR(dparent));
cleanup_phase = 1;
- /*only do precreate rec record. so clean kml flags here*/
- fsfilt_clear_fs_flags(obd, dparent->d_inode, SM_DO_REC);
+ /* precreate objects are not logged */
+ fsfilt_set_fs_flags(obd, dparent->d_inode, SM_PRECREATE);
dchild = filter_id2dentry(obd, dparent, group, next_id);
if (IS_ERR(dchild))