Whamcloud - gitweb
b=6062
authorgreen <green>
Wed, 14 Jun 2006 20:57:09 +0000 (20:57 +0000)
committergreen <green>
Wed, 14 Jun 2006 20:57:09 +0000 (20:57 +0000)
r=adilger(original author)

SPEC SFS NFS v2 validation failure fix - make blocksize constant at 2*RPC size.

lustre/ChangeLog
lustre/include/obd.h
lustre/llite/llite_lib.c
lustre/lov/lov_ea.c
lustre/lov/lov_pack.c

index a628800..e7b2f25 100644 (file)
@@ -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.
        
        
        
index ac22989..73b765b 100644 (file)
@@ -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
index b1e41ee..2fcd45c 100644 (file)
@@ -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)
index de3dd8d..668a15c 100755 (executable)
@@ -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
index ec26535..7badc4f 100644 (file)
@@ -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);
 }