Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-1247 obdfilter: fix invalid check of precrate objects
[fs/lustre-release.git]
/
lustre
/
obdfilter
/
filter.c
diff --git
a/lustre/obdfilter/filter.c
b/lustre/obdfilter/filter.c
index
17ace2e
..
75fd01b
100644
(file)
--- a/
lustre/obdfilter/filter.c
+++ b/
lustre/obdfilter/filter.c
@@
-1969,6
+1969,7
@@
int filter_common_setup(struct obd_device *obd, struct lustre_cfg* lcfg,
{
struct filter_obd *filter = &obd->u.filter;
struct vfsmount *mnt;
+ struct file_system_type *type;
struct lustre_mount_info *lmi;
struct obd_uuid uuid;
__u8 *uuid_ptr;
@@
-1993,9
+1994,14
@@
int filter_common_setup(struct obd_device *obd, struct lustre_cfg* lcfg,
} else {
/* old path - used by lctl */
CERROR("Using old MDS mount method\n");
- mnt = ll_kern_mount(lustre_cfg_string(lcfg, 2),
- MS_NOATIME|MS_NODIRATIME,
- lustre_cfg_string(lcfg, 1), option);
+ type = get_fs_type(lustre_cfg_string(lcfg, 2));
+ if (!type) {
+ CERROR("get_fs_type failed\n");
+ RETURN(-ENODEV);
+ }
+ mnt = vfs_kern_mount(type, MS_NOATIME|MS_NODIRATIME,
+ lustre_cfg_string(lcfg, 1), option);
+ cfs_module_put(type->owner);
if (IS_ERR(mnt)) {
rc = PTR_ERR(mnt);
LCONSOLE_ERROR_MSG(0x135, "Can't mount disk %s (%d)\n",
@@
-3181,7
+3187,7
@@
static int filter_getattr(struct obd_export *exp, struct obd_info *oinfo)
/* Limit the valid bits in the return data to what we actually use */
oinfo->oi_oa->o_valid = OBD_MD_FLID;
- obdo_from_inode(oinfo->oi_oa, dentry->d_inode,
NULL,
FILTER_VALID_FLAGS);
+ obdo_from_inode(oinfo->oi_oa, dentry->d_inode, FILTER_VALID_FLAGS);
/* Store inode version in reply */
curr_version = fsfilt_get_version(exp->exp_obd, dentry->d_inode);
@@
-3505,7
+3511,7
@@
int filter_setattr(struct obd_export *exp, struct obd_info *oinfo,
oa->o_valid = OBD_MD_FLID;
/* Quota release need uid/gid info */
- obdo_from_inode(oa, dentry->d_inode,
NULL,
+ obdo_from_inode(oa, dentry->d_inode,
FILTER_VALID_FLAGS | OBD_MD_FLUID | OBD_MD_FLGID);
EXIT;
@@
-3674,7
+3680,7
@@
static int filter_handle_precreate(struct obd_export *exp, struct obdo *oa,
CDEBUG(D_HA, "filter_last_id() = "LPU64" -> diff = %d\n",
last, diff);
- if (-diff >
OST_MAX_PRECREATE
) {
+ if (-diff >
(OST_MAX_PRECREATE * 3) / 2
) {
CERROR("%s: ignoring bogus orphan destroy request: "
"obdid "LPU64" last_id "LPU64"\n", obd->obd_name,
oa->o_id, last);
@@
-4268,7
+4274,7
@@
int filter_destroy(struct obd_export *exp, struct obdo *oa,
cleanup_phase = 4; /* fsfilt_commit */
/* Quota release need uid/gid of inode */
- obdo_from_inode(oa, dchild->d_inode,
NULL, OBD_MD_FLUID|
OBD_MD_FLGID);
+ obdo_from_inode(oa, dchild->d_inode,
OBD_MD_FLUID |
OBD_MD_FLGID);
filter_fmd_drop(exp, oa->o_id, oa->o_seq);
@@
-4400,8
+4406,7
@@
static int filter_sync(struct obd_export *exp, struct obd_info *oinfo,
UNLOCK_INODE_MUTEX(dentry->d_inode);
oinfo->oi_oa->o_valid = OBD_MD_FLID;
- obdo_from_inode(oinfo->oi_oa, dentry->d_inode, NULL,
- FILTER_VALID_FLAGS);
+ obdo_from_inode(oinfo->oi_oa, dentry->d_inode, FILTER_VALID_FLAGS);
pop_ctxt(&saved, &exp->exp_obd->obd_lvfs_ctxt, NULL);
@@
-4642,8
+4647,8
@@
int filter_iocontrol(unsigned int cmd, struct obd_export *exp,
CDEBUG(D_HA, "syncing ost %s\n", obd->obd_name);
rc = fsfilt_sync(obd, obd->u.obt.obt_sb);
- lvfs_set_rdonly(obd, obd->u.obt.obt_sb);
- RETURN(
0
);
+
rc =
lvfs_set_rdonly(obd, obd->u.obt.obt_sb);
+ RETURN(
rc
);
}
case OBD_IOC_CATLOGLIST: {
@@
-4764,7
+4769,6
@@
static struct obd_ops filter_obd_ops = {
.o_create = filter_create,
.o_setattr = filter_setattr,
.o_destroy = filter_destroy,
- .o_brw = filter_brw,
.o_punch = filter_truncate,
.o_sync = filter_sync,
.o_preprw = filter_preprw,