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
b=21499 check stale object before version checks
[fs/lustre-release.git]
/
lustre
/
lov
/
lov_pack.c
diff --git
a/lustre/lov/lov_pack.c
b/lustre/lov/lov_pack.c
index
4163434
..
ca92e35
100644
(file)
--- a/
lustre/lov/lov_pack.c
+++ b/
lustre/lov/lov_pack.c
@@
-388,14
+388,15
@@
static int __lov_setstripe(struct obd_export *exp, int max_lmm_size,
{
struct obd_device *obd = class_exp2obd(exp);
struct lov_obd *lov = &obd->u.lov;
- struct lov_user_md_v3 lumv3;
- struct lov_user_md_v1 *lumv1 = (struct lov_user_md_v1 *)&lumv3;
+ char buffer[sizeof(struct lov_user_md_v3)];
+ struct lov_user_md_v3 *lumv3 = (struct lov_user_md_v3 *)&buffer[0];
+ struct lov_user_md_v1 *lumv1 = (struct lov_user_md_v1 *)&buffer[0];
int lmm_magic;
int stripe_count;
int rc;
ENTRY;
- if (cfs_copy_from_user(
&
lumv3, lump, sizeof(struct lov_user_md_v1)))
+ if (cfs_copy_from_user(lumv3, lump, sizeof(struct lov_user_md_v1)))
RETURN(-EFAULT);
lmm_magic = lumv1->lmm_magic;
@@
-404,12
+405,12
@@
static int __lov_setstripe(struct obd_export *exp, int max_lmm_size,
lustre_swab_lov_user_md_v1(lumv1);
lmm_magic = LOV_USER_MAGIC_V1;
} else if (lmm_magic == LOV_USER_MAGIC_V3) {
- if (cfs_copy_from_user(
&lumv3, lump, sizeof(
lumv3)))
+ if (cfs_copy_from_user(
lumv3, lump, sizeof(*
lumv3)))
RETURN(-EFAULT);
} else if (lmm_magic == __swab32(LOV_USER_MAGIC_V3)) {
- if (cfs_copy_from_user(
&lumv3, lump, sizeof(
lumv3)))
+ if (cfs_copy_from_user(
lumv3, lump, sizeof(*
lumv3)))
RETURN(-EFAULT);
- lustre_swab_lov_user_md_v3(
&
lumv3);
+ lustre_swab_lov_user_md_v3(lumv3);
lmm_magic = LOV_USER_MAGIC_V3;
} else if (lmm_magic != LOV_USER_MAGIC_V1) {
CDEBUG(D_IOCTL,
@@
-463,12
+464,12
@@
static int __lov_setstripe(struct obd_export *exp, int max_lmm_size,
if (lmm_magic == LOV_USER_MAGIC_V3) {
struct pool_desc *pool;
- pool = lov_find_pool(lov, lumv3
.
lmm_pool_name);
+ pool = lov_find_pool(lov, lumv3
->
lmm_pool_name);
if (pool != NULL) {
- if (lumv3
.
lmm_stripe_offset !=
- (typeof(lumv3
.
lmm_stripe_offset))(-1)) {
+ if (lumv3
->
lmm_stripe_offset !=
+ (typeof(lumv3
->
lmm_stripe_offset))(-1)) {
rc = lov_check_index_in_pool(
- lumv3
.
lmm_stripe_offset, pool);
+ lumv3
->
lmm_stripe_offset, pool);
if (rc < 0) {
lov_pool_putref(pool);
RETURN(-EINVAL);
@@
-488,7
+489,7
@@
static int __lov_setstripe(struct obd_export *exp, int max_lmm_size,
(*lsmp)->lsm_oinfo[0]->loi_ost_idx = lumv1->lmm_stripe_offset;
(*lsmp)->lsm_stripe_size = lumv1->lmm_stripe_size;
if (lmm_magic == LOV_USER_MAGIC_V3)
- strncpy((*lsmp)->lsm_pool_name, lumv3
.
lmm_pool_name,
+ strncpy((*lsmp)->lsm_pool_name, lumv3
->
lmm_pool_name,
LOV_MAXPOOLNAME);
rc = 0;
}