Whamcloud - gitweb
b=19208 osd_inode_setattr : ldiskfs needs flags set in inode->i_flags
authorMikhail Pershin <tappro@sun.com>
Wed, 17 Mar 2010 07:06:25 +0000 (10:06 +0300)
committerMikhail Pershin <tappro@sun.com>
Wed, 17 Mar 2010 07:06:25 +0000 (10:06 +0300)
i=adilger
i=wangdi

lustre/osd/osd_handler.c
lustre/tests/sanity.sh

index 302923c..535d829 100644 (file)
@@ -1305,12 +1305,8 @@ static int osd_inode_setattr(const struct lu_env *env,
         if (bits & LA_RDEV)
                 inode->i_rdev   = attr->la_rdev;
 
         if (bits & LA_RDEV)
                 inode->i_rdev   = attr->la_rdev;
 
-        if (bits & LA_FLAGS) {
-                struct ldiskfs_inode_info *li = LDISKFS_I(inode);
-
-                li->i_flags = (li->i_flags & ~LDISKFS_FL_USER_MODIFIABLE) |
-                        (attr->la_flags & LDISKFS_FL_USER_MODIFIABLE);
-        }
+        if (bits & LA_FLAGS)
+                inode->i_flags = ll_ext_to_inode_flags(attr->la_flags);
         return 0;
 }
 
         return 0;
 }
 
index c93d168..88e73ff 100644 (file)
@@ -2564,7 +2564,7 @@ test_52a() {
        link $DIR/d52a/foo $DIR/d52a/foo_link 2>/dev/null && error "link worked"
        echo foo >> $DIR/d52a/foo || error "append foo failed"
        mrename $DIR/d52a/foo $DIR/d52a/foo_ren && error "rename worked"
        link $DIR/d52a/foo $DIR/d52a/foo_link 2>/dev/null && error "link worked"
        echo foo >> $DIR/d52a/foo || error "append foo failed"
        mrename $DIR/d52a/foo $DIR/d52a/foo_ren && error "rename worked"
-       lsattr $DIR/d52a/foo | egrep -q "^-+[ae]-+ $DIR/d52a/foo" || error "lsattr"
+       lsattr $DIR/d52a/foo | egrep -q "^-+a[-e]+ $DIR/d52a/foo" || error "lsattr"
        chattr -a $DIR/d52a/foo || error "chattr -a failed"
         cp -r $DIR/d52a /tmp/
        rm -fr $DIR/d52a || error "cleanup rm failed"
        chattr -a $DIR/d52a/foo || error "chattr -a failed"
         cp -r $DIR/d52a /tmp/
        rm -fr $DIR/d52a || error "cleanup rm failed"
@@ -2584,7 +2584,7 @@ test_52b() {
        mrename $DIR/d52b/foo $DIR/d52b/foo_ren && error "rename worked"
        [ -f $DIR/d52b/foo ] || error
        [ -f $DIR/d52b/foo_ren ] && error
        mrename $DIR/d52b/foo $DIR/d52b/foo_ren && error "rename worked"
        [ -f $DIR/d52b/foo ] || error
        [ -f $DIR/d52b/foo_ren ] && error
-       lsattr $DIR/d52b/foo | egrep -q "^-+[ie]-+ $DIR/d52b/foo" || error "lsattr"
+       lsattr $DIR/d52b/foo | egrep -q "^-+i[-e]+ $DIR/d52b/foo" || error "lsattr"
        chattr -i $DIR/d52b/foo || error "chattr failed"
 
        rm -fr $DIR/d52b || error
        chattr -i $DIR/d52b/foo || error "chattr failed"
 
        rm -fr $DIR/d52b || error