if (pcc_may_auto_attach(inode, PIT_OPEN))
rc = pcc_try_auto_attach(inode, &cached, PIT_OPEN);
- if (rc == 0 && !cached)
+ if (rc == 0 && !cached && inode_owner_or_capable(inode))
rc = pcc_try_readonly_open_attach(inode, file, &cached);
if (rc < 0 || !cached)
}
run_test 42 "PCC attach without attach ID specified"
+test_43() {
+ local loopfile="$TMP/$tfile"
+ local mntpt="/mnt/pcc.$tdir"
+ local hsm_root="$mntpt/$tdir"
+ local file=$DIR/$tfile
+
+ setup_loopdev $SINGLEAGT $loopfile $mntpt 60
+ do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed"
+ setup_pcc_mapping $SINGLEAGT \
+ "size\<{100M}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1"
+ do_facet $SINGLEAGT $LCTL pcc list $MOUNT
+
+ echo "attach_root_user_data" > $file || error "echo $file failed"
+
+ do_facet $SINGLEAGT $LFS pcc state $file
+ # Attach by non-root user should fail.
+ do_facet $SINGLEAGT $RUNAS $LFS pcc attach -r $file &&
+ error "PCC attach -r $file should fail for non-root user"
+ do_facet $SINGLEAGT $RUNAS $LFS pcc state $file
+ check_lpcc_state $file "none"
+}
+run_test 43 "Auto attach at open() should add capacity owner check"
+
test_99() {
local loopfile="$TMP/$tfile"
local mntpt="/mnt/pcc.$tdir"
}
if (!mntpath) {
- fprintf(stderr, "%s: must specify Lustre mount point\n",
- argv[0]);
- return CMD_HELP;
+ if (argc <= optind) {
+ fprintf(stderr, "%s: must specify Lustre mount point\n",
+ argv[0]);
+ return CMD_HELP;
+ }
+ mntpath = argv[optind++];
}
if (argc <= optind) {