From a8660d57483ddce0e0d5145425b709e64f2ae8ac Mon Sep 17 00:00:00 2001 From: green Date: Wed, 14 Jun 2006 20:57:09 +0000 Subject: [PATCH] b=6062 r=adilger(original author) SPEC SFS NFS v2 validation failure fix - make blocksize constant at 2*RPC size. --- lustre/ChangeLog | 5 +++++ lustre/include/obd.h | 2 -- lustre/llite/llite_lib.c | 10 ++++------ lustre/lov/lov_ea.c | 1 - lustre/lov/lov_pack.c | 2 -- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index a628800..e7b2f25 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -53,6 +53,11 @@ Description: client OST exclusion list Details : Clients can be started with a list of OSTs that should be declared "inactive" for known non-responsive OSTs. +Severity : minor +Bugzilla : 6062 +Description: SPEC SFS validation failure on NFS v2 over lustre. +Details : Changes the blocksize for regular files to be 2x RPC size, + and not depend on stripe size. diff --git a/lustre/include/obd.h b/lustre/include/obd.h index ac22989..73b765b 100644 --- a/lustre/include/obd.h +++ b/lustre/include/obd.h @@ -103,7 +103,6 @@ struct lov_stripe_md { __u64 lw_object_id; /* lov object id */ __u64 lw_object_gr; /* lov object group */ __u64 lw_maxbytes; /* maximum possible file size */ - unsigned long lw_xfersize; /* optimal transfer size */ /* LOV-private members start here -- only for use in lov/. */ __u32 lw_magic; @@ -119,7 +118,6 @@ struct lov_stripe_md { #define lsm_object_id lsm_wire.lw_object_id #define lsm_object_gr lsm_wire.lw_object_gr #define lsm_maxbytes lsm_wire.lw_maxbytes -#define lsm_xfersize lsm_wire.lw_xfersize #define lsm_magic lsm_wire.lw_magic #define lsm_stripe_size lsm_wire.lw_stripe_size #define lsm_pattern lsm_wire.lw_pattern diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index b1e41ee..2fcd45c 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -1504,14 +1504,8 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md) } else ll_replace_lsm(inode, lsm); } - /* bug 2844 - limit i_blksize for broken user-space apps */ - LASSERTF(lsm->lsm_xfersize != 0, "%lu\n", lsm->lsm_xfersize); - inode->i_blksize = min(lsm->lsm_xfersize, LL_MAX_BLKSIZE); if (lli->lli_smd != lsm) obd_free_memmd(ll_i2obdexp(inode), &lsm); - } else { - inode->i_blksize = max(inode->i_blksize, - inode->i_sb->s_blocksize); } #ifdef CONFIG_FS_POSIX_ACL @@ -1543,6 +1537,10 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md) inode->i_mode = (inode->i_mode & S_IFMT)|(body->mode & ~S_IFMT); if (body->valid & OBD_MD_FLTYPE) inode->i_mode = (inode->i_mode & ~S_IFMT)|(body->mode & S_IFMT); + if (S_ISREG(inode->i_mode)) + inode->i_blksize = min(2UL*PTLRPC_MAX_BRW_SIZE, LL_MAX_BLKSIZE); + else + inode->i_blksize = inode->i_sb->s_blocksize; if (body->valid & OBD_MD_FLUID) inode->i_uid = body->uid; if (body->valid & OBD_MD_FLGID) diff --git a/lustre/lov/lov_ea.c b/lustre/lov/lov_ea.c index de3dd8d..668a15c 100755 --- a/lustre/lov/lov_ea.c +++ b/lustre/lov/lov_ea.c @@ -86,7 +86,6 @@ static void lsm_unpackmd_common(struct lov_stripe_md *lsm, lsm->lsm_object_gr = le64_to_cpu(lmm->lmm_object_gr); lsm->lsm_stripe_size = le32_to_cpu(lmm->lmm_stripe_size); lsm->lsm_pattern = le32_to_cpu(lmm->lmm_pattern); - lsm->lsm_xfersize = lsm->lsm_stripe_size * lsm->lsm_stripe_count; } static void diff --git a/lustre/lov/lov_pack.c b/lustre/lov/lov_pack.c index ec26535..7badc4f 100644 --- a/lustre/lov/lov_pack.c +++ b/lustre/lov/lov_pack.c @@ -204,7 +204,6 @@ int lov_alloc_memmd(struct lov_stripe_md **lsmp, int stripe_count, (*lsmp)->lsm_magic = magic; (*lsmp)->lsm_stripe_count = stripe_count; (*lsmp)->lsm_maxbytes = LUSTRE_STRIPE_MAXBYTES * stripe_count; - (*lsmp)->lsm_xfersize = PTLRPC_MAX_BRW_SIZE * stripe_count; (*lsmp)->lsm_pattern = pattern; (*lsmp)->lsm_oinfo[0].loi_ost_idx = ~0; @@ -350,7 +349,6 @@ int lov_setstripe(struct obd_export *exp, struct lov_stripe_md **lsmp, (*lsmp)->lsm_oinfo[0].loi_ost_idx = lum.lmm_stripe_offset; (*lsmp)->lsm_stripe_size = lum.lmm_stripe_size; - (*lsmp)->lsm_xfersize = lum.lmm_stripe_size * stripe_count; RETURN(0); } -- 1.8.3.1