b=12829
i=adilger
i=bobijam
When CRAY_XT3 is defined, the fsgid supplied by the client is
overridden with the primary group provided by the group upcall,
whereas the supplied fsgid can be trusted if it is in the list of
supplementary groups returned by the group upcall.
Details : Instead of sending blocking and completion callbacks as separated
requests, adding them to a set and sending in parallel.
Details : Instead of sending blocking and completion callbacks as separated
requests, adding them to a set and sending in parallel.
+Severity : normal
+Frequency : only for Cray XT3
+Bugzilla : 12829/13455
+Description: Changing primary group doesn't change the group lustre assigns to
+ a file
+Details : When CRAY_XT3 is defined, the fsgid supplied by the client is
+ overridden with the primary group provided by the group upcall,
+ whereas the supplied fsgid can be trusted if it is in the list of
+ supplementary groups returned by the group upcall.
+
--------------------------------------------------------------------------------
2007-08-10 Cluster File Systems, Inc. <info@clusterfs.com>
--------------------------------------------------------------------------------
2007-08-10 Cluster File Systems, Inc. <info@clusterfs.com>
struct obd_device *obd = req->rq_export->exp_obd;
#if 0
struct mds_obd *mds = &obd->u.mds;
struct obd_device *obd = req->rq_export->exp_obd;
#if 0
struct mds_obd *mds = &obd->u.mds;
+#ifdef CRAY_XT3
+ gid_t fsgid = rec->ur_uc.luc_fsgid;
+#endif
#endif
struct lvfs_run_ctxt saved;
int rc;
#endif
struct lvfs_run_ctxt saved;
int rc;
#endif
push_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc);
#endif
push_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc);
+
+#if 0
+#ifdef CRAY_XT3
+ if (rec->ur_uc.luc_uce && fsgid != rec->ur_uc.luc_fsgid &&
+ in_group_p(fsgid)) {
+ rec->ur_uc.luc_fsgid = fsgid;
+ current->fsgid = saved.luc.luc_fsgid = fsgid;
+ }
+#endif
+#endif
+
rc = reinters[rec->ur_opcode] (rec, offset, req, lockh);
pop_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc);
rc = reinters[rec->ur_opcode] (rec, offset, req, lockh);
pop_ctxt(&saved, &obd->obd_lvfs_ctxt, &rec->ur_uc);
}
run_test 125 "don't return EPROTO when a dir has a non-default striping and ACLs"
}
run_test 125 "don't return EPROTO when a dir has a non-default striping and ACLs"
+test_126() { # bug 12829/13455
+ [ "$UID" != 0 ] && echo "skipping $TESTNAME (must run as root)" && return
+ $RUNAS -u 0 -g 1 touch $DIR/$tfile || error "touch failed"
+ gid=`ls -n $DIR/$tfile | awk '{print $4}'`
+ rm -f $DIR/$tfile
+ [ $gid -eq "1" ] || error "gid is set to" $gid "instead of 1"
+}
+run_test 126 "check that the fsgid provided by the client is taken into account"
+
TMPDIR=$OLDTMPDIR
TMP=$OLDTMP
HOME=$OLDHOME
TMPDIR=$OLDTMPDIR
TMP=$OLDTMP
HOME=$OLDHOME