X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fobdclass%2Fllog_lvfs.c;h=a01582bef4bc29c26f1cf6a40a729aa7549fcc01;hb=2d617260aaa5f778ab8dcb006e2a827f4b8f8567;hp=e30d678a45d12e20892bb34322104b37f91554af;hpb=4c01e64e0a72c1682ebf0a8bd4cccf99fd04cd88;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/llog_lvfs.c b/lustre/obdclass/llog_lvfs.c index e30d678..a01582b 100644 --- a/lustre/obdclass/llog_lvfs.c +++ b/lustre/obdclass/llog_lvfs.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -26,7 +24,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -45,10 +43,6 @@ #define DEBUG_SUBSYSTEM S_LOG -#ifndef EXPORT_SYMTAB -#define EXPORT_SYMTAB -#endif - #ifndef __KERNEL__ #include #endif @@ -165,7 +159,8 @@ static int llog_lvfs_read_blob(struct obd_device *obd, struct l_file *file, RETURN(0); } -static int llog_lvfs_read_header(struct llog_handle *handle) +static int llog_lvfs_read_header(const struct lu_env *env, + struct llog_handle *handle) { struct obd_device *obd; int rc; @@ -217,10 +212,11 @@ static int llog_lvfs_read_header(struct llog_handle *handle) /* returns negative in on error; 0 if success && reccookie == 0; 1 otherwise */ /* appends if idx == -1, otherwise overwrites record idx. */ -static int llog_lvfs_write_rec(struct llog_handle *loghandle, - struct llog_rec_hdr *rec, - struct llog_cookie *reccookie, int cookiecount, - void *buf, int idx) +static int llog_lvfs_write_rec(const struct lu_env *env, + struct llog_handle *loghandle, + struct llog_rec_hdr *rec, + struct llog_cookie *reccookie, int cookiecount, + void *buf, int idx) { struct llog_log_hdr *llh; int reclen = rec->lrh_len, index, rc; @@ -367,13 +363,10 @@ static int llog_lvfs_write_rec(struct llog_handle *loghandle, reccookie->lgc_lgl = loghandle->lgh_id; reccookie->lgc_index = index; if ((rec->lrh_type == MDS_UNLINK_REC) || - (rec->lrh_type == MDS_SETATTR_REC) || (rec->lrh_type == MDS_SETATTR64_REC)) reccookie->lgc_subsys = LLOG_MDS_OST_ORIG_CTXT; else if (rec->lrh_type == OST_SZ_REC) reccookie->lgc_subsys = LLOG_SIZE_ORIG_CTXT; - else if (rec->lrh_type == OST_RAID1_REC) - reccookie->lgc_subsys = LLOG_RD1_ORIG_CTXT; else reccookie->lgc_subsys = -1; rc = 1; @@ -404,9 +397,10 @@ static void llog_skip_over(__u64 *off, int curr, int goal) * - cur_idx to the log index preceeding cur_offset * returns -EIO/-EINVAL on error */ -static int llog_lvfs_next_block(struct llog_handle *loghandle, int *cur_idx, - int next_idx, __u64 *cur_offset, void *buf, - int len) +static int llog_lvfs_next_block(const struct lu_env *env, + struct llog_handle *loghandle, int *cur_idx, + int next_idx, __u64 *cur_offset, void *buf, + int len) { int rc; ENTRY; @@ -460,9 +454,8 @@ static int llog_lvfs_next_block(struct llog_handle *loghandle, int *cur_idx, tail = (struct llog_rec_tail *)((char *)buf + rc - sizeof(struct llog_rec_tail)); - if (LLOG_REC_HDR_NEEDS_SWABBING(rec)) { - lustre_swab_llog_rec(rec, tail); - } + if (LLOG_REC_HDR_NEEDS_SWABBING(rec)) + lustre_swab_llog_rec(rec); *cur_idx = tail->lrt_index; @@ -488,8 +481,9 @@ static int llog_lvfs_next_block(struct llog_handle *loghandle, int *cur_idx, RETURN(-EIO); } -static int llog_lvfs_prev_block(struct llog_handle *loghandle, - int prev_idx, void *buf, int len) +static int llog_lvfs_prev_block(const struct lu_env *env, + struct llog_handle *loghandle, + int prev_idx, void *buf, int len) { __u64 cur_offset; int rc; @@ -586,8 +580,9 @@ static struct file *llog_filp_open(char *dir, char *name, int flags, int mode) /* This is a callback from the llog_* functions. * Assumes caller has already pushed us into the kernel context. */ -static int llog_lvfs_create(struct llog_ctxt *ctxt, struct llog_handle **res, - struct llog_logid *logid, char *name) +static int llog_lvfs_create(const struct lu_env *env, + struct llog_ctxt *ctxt, struct llog_handle **res, + struct llog_logid *logid, char *name) { struct llog_handle *handle; struct obd_device *obd; @@ -657,7 +652,7 @@ static int llog_lvfs_create(struct llog_ctxt *ctxt, struct llog_handle **res, oa->o_seq = FID_SEQ_LLOG; oa->o_valid = OBD_MD_FLGENER | OBD_MD_FLGROUP; - rc = obd_create(ctxt->loc_exp, oa, NULL, NULL); + rc = obd_create(NULL, ctxt->loc_exp, oa, NULL, NULL); if (rc) GOTO(out, rc); @@ -691,7 +686,8 @@ out: RETURN(rc); } -static int llog_lvfs_close(struct llog_handle *handle) +static int llog_lvfs_close(const struct lu_env *env, + struct llog_handle *handle) { int rc; ENTRY; @@ -702,7 +698,8 @@ static int llog_lvfs_close(struct llog_handle *handle) RETURN(rc); } -static int llog_lvfs_destroy(struct llog_handle *handle) +static int llog_lvfs_destroy(const struct lu_env *env, + struct llog_handle *handle) { struct dentry *fdentry; struct obdo *oa; @@ -723,14 +720,13 @@ static int llog_lvfs_destroy(struct llog_handle *handle) push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); dget(fdentry); - rc = llog_lvfs_close(handle); - - if (rc == 0) { - LOCK_INODE_MUTEX_PARENT(inode); - rc = ll_vfs_unlink(inode, fdentry, mnt); - UNLOCK_INODE_MUTEX(inode); - } - mntput(mnt); + rc = llog_lvfs_close(env, handle); + if (rc == 0) { + mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT); + rc = ll_vfs_unlink(inode, fdentry, mnt); + mutex_unlock(&inode->i_mutex); + } + mntput(mnt); dput(fdentry); pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL); @@ -747,7 +743,7 @@ static int llog_lvfs_destroy(struct llog_handle *handle) #undef o_generation oa->o_valid = OBD_MD_FLID | OBD_MD_FLGROUP | OBD_MD_FLGENER; - rc = llog_lvfs_close(handle); + rc = llog_lvfs_close(env, handle); if (rc) GOTO(out, rc); @@ -757,7 +753,8 @@ static int llog_lvfs_destroy(struct llog_handle *handle) GOTO(out, rc = PTR_ERR(th)); } - rc = obd_destroy(handle->lgh_ctxt->loc_exp, oa, NULL, NULL, NULL, NULL); + rc = obd_destroy(NULL, handle->lgh_ctxt->loc_exp, oa, + NULL, NULL, NULL, NULL); rc1 = fsfilt_commit(obd, inode, th, 0); if (rc == 0 && rc1 != 0) @@ -883,50 +880,57 @@ EXPORT_SYMBOL(llog_lvfs_ops); #else /* !__KERNEL__ */ -static int llog_lvfs_read_header(struct llog_handle *handle) +static int llog_lvfs_read_header(const struct lu_env *env, + struct llog_handle *handle) { LBUG(); return 0; } -static int llog_lvfs_write_rec(struct llog_handle *loghandle, - struct llog_rec_hdr *rec, - struct llog_cookie *reccookie, int cookiecount, - void *buf, int idx) +static int llog_lvfs_write_rec(const struct lu_env *env, + struct llog_handle *loghandle, + struct llog_rec_hdr *rec, + struct llog_cookie *reccookie, int cookiecount, + void *buf, int idx) { LBUG(); return 0; } -static int llog_lvfs_next_block(struct llog_handle *loghandle, int *cur_idx, - int next_idx, __u64 *cur_offset, void *buf, - int len) +static int llog_lvfs_next_block(const struct lu_env *env, + struct llog_handle *loghandle, int *cur_idx, + int next_idx, __u64 *cur_offset, void *buf, + int len) { LBUG(); return 0; } -static int llog_lvfs_prev_block(struct llog_handle *loghandle, - int prev_idx, void *buf, int len) +static int llog_lvfs_prev_block(const struct lu_env *env, + struct llog_handle *loghandle, + int prev_idx, void *buf, int len) { LBUG(); return 0; } -static int llog_lvfs_create(struct llog_ctxt *ctxt, struct llog_handle **res, - struct llog_logid *logid, char *name) +static int llog_lvfs_create(const struct lu_env *env, + struct llog_ctxt *ctxt, struct llog_handle **res, + struct llog_logid *logid, char *name) { LBUG(); return 0; } -static int llog_lvfs_close(struct llog_handle *handle) +static int llog_lvfs_close(const struct lu_env *env, + struct llog_handle *handle) { LBUG(); return 0; } -static int llog_lvfs_destroy(struct llog_handle *handle) +static int llog_lvfs_destroy(const struct lu_env *env, + struct llog_handle *handle) { LBUG(); return 0;