X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fosd%2Fosd_handler.c;h=0f7713be1baccf87b9e503db84763ee83210b26f;hp=6be19ed20648fe476ff797aba5f6722b5d116a9d;hb=f77c50d8d1ee69dd605fcdac1388385218f43a65;hpb=fbfd488a2f87ea43332ae16341887f68c0ffbde5 diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c index 6be19ed..0f7713b 100644 --- a/lustre/osd/osd_handler.c +++ b/lustre/osd/osd_handler.c @@ -55,15 +55,6 @@ #include /* XATTR_{REPLACE,CREATE} */ #include -/* - * XXX temporary stuff: direct access to ldiskfs/jdb. Interface between osd - * and file system is not yet specified. - */ -/* handle_t, journal_start(), journal_stop() */ -#include -/* LDISKFS_SB() */ -#include -#include /* simple_mkdir() */ #include @@ -310,9 +301,16 @@ static struct inode *osd_iget(struct osd_thread_info *info, struct osd_device *dev, const struct osd_inode_id *id) { - struct inode *inode; + struct inode *inode = NULL; +#ifdef HAVE_EXT4_LDISKFS + inode = ldiskfs_iget(osd_sb(dev), id->oii_ino); + if (IS_ERR(inode)) + /* Newer kernels return an error instead of a NULL pointer */ + inode = NULL; +#else inode = iget(osd_sb(dev), id->oii_ino); +#endif if (inode == NULL) { CERROR("no inode\n"); inode = ERR_PTR(-EACCES); @@ -574,7 +572,7 @@ static struct thandle *osd_trans_start(const struct lu_env *env, * be used. */ - jh = journal_start(osd_journal(dev), p->tp_credits); + jh = ldiskfs_journal_start_sb(osd_sb(dev), p->tp_credits); if (!IS_ERR(jh)) { oh->ot_handle = jh; th = &oh->ot_super; @@ -588,8 +586,8 @@ static struct thandle *osd_trans_start(const struct lu_env *env, /* add commit callback */ lu_context_init(&th->th_ctx, LCT_TX_HANDLE); lu_context_enter(&th->th_ctx); - journal_callback_set(jh, osd_trans_commit_cb, - (struct journal_callback *)&oh->ot_jcb); + osd_journal_callback_set(jh, osd_trans_commit_cb, + (struct journal_callback *)&oh->ot_jcb); LASSERT(oti->oti_txns == 0); LASSERT(oti->oti_r_locks == 0); LASSERT(oti->oti_w_locks == 0); @@ -631,7 +629,7 @@ static void osd_trans_stop(const struct lu_env *env, struct thandle *th) if (result != 0) CERROR("Failure in transaction hook: %d\n", result); oh->ot_handle = NULL; - result = journal_stop(hdl); + result = ldiskfs_journal_stop(hdl); if (result != 0) CERROR("Failure to stop transaction: %d\n", result); } @@ -909,8 +907,8 @@ static const int osd_dto_credits_noquota[DTO_NR] = { /** * Xattr set. The same as xattr of EXT3. * DATA_TRANS_BLOCKS(14) - * XXX Note: in original MDS implmentation INDEX_EXTRA_TRANS_BLOCKS are - * also counted in. Do not know why? + * XXX Note: in original MDS implmentation INDEX_EXTRA_TRANS_BLOCKS + * are also counted in. Do not know why? */ [DTO_XATTR_SET] = 14, [DTO_LOG_REC] = 14, @@ -924,9 +922,9 @@ static const int osd_dto_credits_noquota[DTO_NR] = { [DTO_WRITE_BLOCK] = 14, /** * Attr set credits for chown. - * 3 (inode bit, group, GDT) + * This is extra credits for setattr, and it is null without quota */ - [DTO_ATTR_SET_CHOWN]= 3 + [DTO_ATTR_SET_CHOWN]= 0 }; /** @@ -989,11 +987,11 @@ static const int osd_dto_credits_quota[DTO_NR] = { [DTO_WRITE_BLOCK] = 16, /** * Attr set credits for chown. - * 3 (inode bit, group, GDT) + + * It is added to already set setattr credits * 2 * QUOTA_INIT_BLOCKS(25) + * 2 * QUOTA_DEL_BLOCKS(9) */ - [DTO_ATTR_SET_CHOWN]= 71 + [DTO_ATTR_SET_CHOWN]= 68, }; static int osd_credit_get(const struct lu_env *env, struct dt_device *d, @@ -3587,7 +3585,6 @@ static int osd_mount(const struct lu_env *env, struct lustre_sb_info *lsi; ENTRY; - if (o->od_mount != NULL) { CERROR("Already mounted (%s)\n", dev); RETURN(-EEXIST); @@ -3710,10 +3707,6 @@ static int osd_process_config(const struct lu_env *env, static int osd_recovery_complete(const struct lu_env *env, struct lu_device *d) { - struct osd_device *o = osd_dev(d); - ENTRY; - /* TODO: orphans handling */ - ldiskfs_orphan_cleanup(osd_sb(o), LDISKFS_SB(osd_sb(o))->s_es); RETURN(0); }