From 69594ef7cdbea81114901266ac5076923cb02bf8 Mon Sep 17 00:00:00 2001 From: Qian Yingjin Date: Fri, 8 Oct 2021 16:45:05 +0800 Subject: [PATCH] EX-4006 pcc: make "pccro=1" default To avoid a risk that users will accidentally configure PCC-RW and potentially lose data if those client nodes go offline, this patch makes "pccro=1" default for PCC backends. This patch adds a new option "--w|--write" for PCC-RW cache mode when attach a file. Also It makes "--r|--readonly" as a default option for PCC attach command. Signed-off-by: Qian Yingjin Change-Id: I56735b0ebe8f0d9ef22b3f7e39e8cccfa3aad443 Reviewed-on: https://review.whamcloud.com/45162 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/llite/pcc.c | 24 ++-- lustre/llite/pcc.h | 2 + lustre/tests/sanity-pcc.sh | 280 ++++++++++++++++++++++----------------------- lustre/utils/lfs.c | 30 +++-- 4 files changed, 170 insertions(+), 166 deletions(-) diff --git a/lustre/llite/pcc.c b/lustre/llite/pcc.c index 89a471f..e6c1e6b 100644 --- a/lustre/llite/pcc.c +++ b/lustre/llite/pcc.c @@ -984,23 +984,17 @@ pcc_dataset_flags_check(struct pcc_super *super, struct pcc_cmd *cmd) sbi = container_of(super, struct ll_sb_info, ll_pcc_super); - if (cmd->u.pccc_add.pccc_flags & PCC_DATASET_RWPCC && - cmd->u.pccc_add.pccc_flags & PCC_DATASET_ROPCC) - return -EINVAL; - - if (cmd->u.pccc_add.pccc_flags & PCC_DATASET_ROPCC && - !(exp_connect_flags2(sbi->ll_md_exp) & OBD_CONNECT2_PCCRO)) - return -EOPNOTSUPP; - /* - * By default, a PCC backend can provide caching service for - * both RW-PCC and RO-PCC. + * A PCC backend can provide caching service for both PCC-RW and PCC-RO. + * It defaults to readonly PCC as long as the server supports it. */ - if ((cmd->u.pccc_add.pccc_flags & PCC_DATASET_PCC_ALL) == 0) { - cmd->u.pccc_add.pccc_flags |= PCC_DATASET_RWPCC; - if (exp_connect_flags2(sbi->ll_md_exp) & OBD_CONNECT2_PCCRO) - cmd->u.pccc_add.pccc_flags |= PCC_DATASET_ROPCC; - } + if (!(exp_connect_flags2(sbi->ll_md_exp) & OBD_CONNECT2_PCCRO)) { + if (cmd->u.pccc_add.pccc_flags & PCC_DATASET_ROPCC || + !(cmd->u.pccc_add.pccc_flags & PCC_DATASET_RWPCC)) + return -EOPNOTSUPP; + } else if ((cmd->u.pccc_add.pccc_flags & PCC_DATASET_PCC_ALL) == 0) { + cmd->u.pccc_add.pccc_flags |= PCC_DATASET_PCC_DEFAULT; + } /* else RWPCC or ROPCC must have been given */ if (cmd->u.pccc_add.pccc_rwid == 0 && cmd->u.pccc_add.pccc_roid == 0) diff --git a/lustre/llite/pcc.h b/lustre/llite/pcc.h index c0a2cb0..308b180 100644 --- a/lustre/llite/pcc.h +++ b/lustre/llite/pcc.h @@ -133,6 +133,8 @@ enum pcc_dataset_flags { PCC_DATASET_ROPCC = 0x20, /* PCC backend provides caching services for both RW-PCC and RO-PCC */ PCC_DATASET_PCC_ALL = PCC_DATASET_RWPCC | PCC_DATASET_ROPCC, + /* Default PCC caching mode: PCC-RO mode */ + PCC_DATASET_PCC_DEFAULT = PCC_DATASET_ROPCC, /* Move pagecache from mapping of PCC copy to Lustre file for mmap */ PCC_DATASET_MMAP_CONV = 0x40, /* Set the project ID for the PCC copy */ diff --git a/lustre/tests/sanity-pcc.sh b/lustre/tests/sanity-pcc.sh index 5169a1d..572c3d6 100644 --- a/lustre/tests/sanity-pcc.sh +++ b/lustre/tests/sanity-pcc.sh @@ -261,14 +261,14 @@ lpcc_rw_test() { is_project_quota_supported || project=false do_facet $SINGLEAGT $LFS mkdir -i0 -c1 $DIR/$tdir - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" $project && lfs project -sp $project_id $DIR/$tdir do_facet $SINGLEAGT "echo -n attach_origin > $file" if ! $project; then check_lpcc_state $file "none" - do_facet $SINGLEAGT $LFS pcc attach -i \ - $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w \ + -i $HSM_ARCHIVE_NUMBER $file || error "pcc attach $file failed" fi @@ -318,8 +318,8 @@ lpcc_rw_test() { do_facet $SINGLEAGT "echo -n new_data2 > $file" if ! $project; then check_lpcc_state $file "none" - do_facet $SINGLEAGT $LFS pcc attach -i \ - $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w \ + -i $HSM_ARCHIVE_NUMBER $file || error "PCC attach $file failed" fi check_lpcc_state $file "readwrite" @@ -364,14 +364,14 @@ test_1e() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" $LCTL pcc list $MOUNT mkdir_on_mdt0 $DIR/$tdir || error "mkdir $DIR/$tdir failed" chmod 777 $DIR/$tdir || error "chmod 777 $DIR/$tdir failed" do_facet $SINGLEAGT $RUNAS dd if=/dev/zero of=$file bs=1024 count=1 || error "failed to dd write to $file" - do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $RUNAS $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $RUNAS dd if=$file of=/dev/null bs=1024 count=1 || @@ -401,7 +401,7 @@ test_1e() { [[ $perm == "0" ]] || error "PCC file permission ($perm) is not zero" - do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $RUNAS $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" @@ -426,7 +426,7 @@ test_1f() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=0\ stat_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=0\ stat_attach=0\ pccrw=1" do_facet $SINGLEAGT $LFS mkdir -i0 -c1 $DIR/$tdir chmod 777 $DIR/$tdir || error "chmod 0777 $DIR/$tdir failed" @@ -471,7 +471,7 @@ test_1g() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" dd if=/dev/zero of=$file bs=1024 count=1 || error "failed to dd write to $file" @@ -480,7 +480,7 @@ test_1g() { error "non-root user can dd write $file" do_facet $SINGLEAGT $RUNAS dd if=$file of=/dev/null bs=1024 count=1 && error "non-root user can dd read $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $RUNAS dd if=/dev/zero of=$file bs=1024 count=1 && @@ -520,7 +520,7 @@ test_2a() { enable_project_quota setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" file=$DIR/$tdir/multiop $LFS mkdir -i -1 -c $MDSCOUNT $DIR/$tdir rm -f $file @@ -577,13 +577,13 @@ test_2b() { enable_project_quota setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" file=$DIR/$tdir/multiop mkdir -p $DIR/$tdir rm -f $file do_facet $SINGLEAGT "echo -n file_data > $file" - do_facet $SINGLEAGT lfs pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT lfs pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "PCC attach $file failed" check_lpcc_state $file "readwrite" @@ -616,12 +616,12 @@ test_2c() { enable_project_quota setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" mkdir -p $DIR/$tdir rm -f $file do_facet $SINGLEAGT "echo -n file_data > $file" - do_facet $SINGLEAGT lfs pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT lfs pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "PCC attach $file failed" check_lpcc_state $file "readwrite" @@ -651,14 +651,14 @@ test_3a() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1\ pccro=1" mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir failed" dd if=/dev/zero of=$file2 bs=1024 count=1 || error "failed to dd write to $file" echo "Start to RW-PCC attach/detach the file: $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -666,7 +666,7 @@ test_3a() { check_lpcc_state $file "none" echo "Repeat to RW-PCC attach/detach the same file: $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -674,7 +674,7 @@ test_3a() { check_lpcc_state $file "none" rm -f $file || error "failed to remove $file" - echo "ropcc_data" > $file + echo "pccro_data" > $file echo "Start to RO-PCC attach/detach the file: $file" do_facet $SINGLEAGT $LFS pcc attach -r -i $HSM_ARCHIVE_NUMBER $file || @@ -703,7 +703,7 @@ test_3b() { # Start all of the copytools and setup PCC for n in $(seq $AGTCOUNT); do copytool setup -f agt$n -a $n -m $MOUNT -h $(hsm_root agt$n) - setup_pcc_mapping agt$n "projid={100}\ rwid=$n\ auto_attach=0" + setup_pcc_mapping agt$n "projid={100}\ rwid=$n\ auto_attach=0\ pccrw=1\ pccro=1" done mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir failed" @@ -711,7 +711,7 @@ test_3b() { error "failed to dd write to $file" echo "Start to RW-PCC attach/detach $file on $agt1_HOST" - do_facet agt1 $LFS pcc attach -i 1 $file || + do_facet agt1 $LFS pcc attach -w -i 1 $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" agt1 do_facet agt1 $LFS pcc detach -k $file || @@ -719,7 +719,7 @@ test_3b() { check_lpcc_state $file "none" agt1 echo "Repeat to RW-PCC attach/detach $file on $agt2_HOST" - do_facet agt2 $LFS pcc attach -i 2 $file || + do_facet agt2 $LFS pcc attach -w -i 2 $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" agt2 do_facet agt2 $LFS pcc detach -k $file || @@ -727,10 +727,10 @@ test_3b() { check_lpcc_state $file "none" agt2 echo "Try RW-PCC attach on two agents" - do_facet agt1 $LFS pcc attach -i 1 $file || + do_facet agt1 $LFS pcc attach -w -i 1 $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" agt1 - do_facet agt2 $LFS pcc attach -i 2 $file || + do_facet agt2 $LFS pcc attach -w -i 2 $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" agt2 # The later attach PCC agent should succeed, @@ -785,7 +785,7 @@ test_4() { enable_project_quota setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir failed" lfs project -sp $project_id $DIR/$tdir || @@ -821,12 +821,12 @@ test_5() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" do_facet $SINGLEAGT "echo -n attach_mmap_data > $file" || error "echo $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" @@ -854,10 +854,10 @@ test_6() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" echo -n mmap_write_data > $file || error "echo write $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" @@ -890,10 +890,10 @@ test_7a() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" echo "QQQQQ" > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" check_file_data $SINGLEAGT $file "QQQQQ" @@ -922,10 +922,10 @@ test_7b() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" echo "QQQQQ" > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" check_file_data $SINGLEAGT $file "QQQQQ" @@ -957,10 +957,10 @@ test_8() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" echo "QQQQQ" > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach file $file" check_lpcc_state $file "readwrite" check_file_data $SINGLEAGT $file "QQQQQ" @@ -984,11 +984,11 @@ test_9() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMVER" -h "$hsm_root" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT touch $file || error "touch $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "fail to attach $file" check_lpcc_state $file "readwrite" # write 60M data, it is larger than the capacity of PCC backend @@ -1003,13 +1003,13 @@ test_usrgrp_quota() { local loopfile="$TMP/$tfile" local mntpt="/mnt/pcc.$tdir" local hsm_root="$mntpt/$tdir" - local state="readwrite" + local state="readonly" local ug=$1 - local ro=$2 + local rw=$2 local id=$RUNAS_ID [[ $ug == "g" ]] && id=$RUNAS_GID - [[ -z $ro ]] || state="readonly" + [[ -z $rw ]] || state="readwrite" setup_loopdev $SINGLEAGT $loopfile $mntpt 50 do_facet $SINGLEAGT quotacheck -c$ug $mntpt || error "quotacheck -c$ug $mntpt failed" @@ -1020,7 +1020,7 @@ test_usrgrp_quota() { do_facet $SINGLEAGT repquota -${ug}vs $mntpt copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMVER" -h "$hsm_root" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed" @@ -1036,14 +1036,14 @@ test_usrgrp_quota() { error "chown $RUNAS_ID:$RUNAS_GID $file1 failed" chown $RUNAS_ID:$RUNAS_GID $file2 || error "chown $RUNAS_ID:$RUNAS_GID $file2 failed" - do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $ro \ + do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $rw \ $file1 || error "attach $file1 failed" - do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $ro \ + do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $rw \ $file2 && error "attach $file2 should fail due to quota limit" check_lpcc_state $file1 $state check_lpcc_state $file2 "none" - if [[ -n $ro ]]; then + if [[ -z $rw ]]; then do_facet $SINGLEAGT $LFS pcc detach $file1 || error "detach $file1 failed" return 0 @@ -1057,12 +1057,12 @@ test_usrgrp_quota() { } test_10a() { - test_usrgrp_quota "u" + test_usrgrp_quota "u" "-w" } run_test 10a "Test RW-PCC with user quota on loop PCC device" test_10b() { - test_usrgrp_quota "g" + test_usrgrp_quota "g" "-w" } run_test 10b "Test RW-PCC with group quota on loop PCC device" @@ -1070,7 +1070,7 @@ test_10c() { $LCTL get_param -n mdc.*.connect_flags | grep -q pcc_ro || skip "Server does not support PCC-RO" - test_usrgrp_quota "u" "-r" + test_usrgrp_quota "u" } run_test 10c "Test RO-PCC with user quota on loop PCC device" @@ -1078,7 +1078,7 @@ test_10d() { $LCTL get_param -n mdc.*.connect_flags | grep -q pcc_ro || skip "Server does not support PCC-RO" - test_usrgrp_quota "g" "-r" + test_usrgrp_quota "g" } run_test 10d "Test RO-PCC with group quota on loop PCC device" @@ -1104,7 +1104,7 @@ test_usrgrp_edquot() { do_facet $SINGLEAGT repquota -${ug}vs $mntpt do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "${ug}id={$id}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "${ug}id={$id}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT dd if=/dev/zero of=$file bs=1M count=2 || @@ -1148,7 +1148,7 @@ test_11() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" do_facet $SINGLEAGT "echo -n QQQQQ > $file" lpcc_path=$(lpcc_fid2path $hsm_root $file) @@ -1156,7 +1156,7 @@ test_11() { echo "Lustre file: $file LPCC dir: $lpcc_dir" do_facet $SINGLEAGT mkdir -p $lpcc_dir || error "mkdir -p $lpcc_dir failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach $file" check_lpcc_state $file "readwrite" check_file_data $SINGLEAGT $file "QQQQQ" @@ -1173,7 +1173,7 @@ test_11() { error "mkdir -p $lpcc_dir failed" do_facet $SINGLEAGT chattr +i $lpcc_dir || error "chattr +i $lpcc_dir failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file && + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file && error "attach $file with immutable directory should be failed" do_facet $SINGLEAGT chattr -i $lpcc_dir || error "chattr -i $lpcc_dir failed" @@ -1184,7 +1184,7 @@ test_11() { lpcc_path=$(lpcc_fid2path $hsm_root $file) do_facet $SINGLEAGT mkdir -p $lpcc_path || error "mkdir -p $lpcc_path failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file && + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file && error "attach $file should fail as PCC path is a directory" rm $file || error "rm $file failed" } @@ -1198,11 +1198,11 @@ test_12() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" echo -n race_rw_attach_hsmremove > $file lpcc_path=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file failed" do_facet $SINGLEAGT $LFS pcc detach -k $file || error "detach $file failed" @@ -1210,7 +1210,7 @@ test_12() { check_hsm_flags $file "0x0000000d" # define OBD_FAIL_LLITE_PCC_ATTACH_PAUSE 0x1414 do_facet $SINGLEAGT $LCTL set_param fail_loc=0x1414 fail_val=20 - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file & + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file & pid=$! $LFS hsm_state $file sleep 3 @@ -1231,7 +1231,7 @@ test_rule_id() { local file=$DIR/$tdir/$tfile setup_pcc_mapping $SINGLEAGT \ - "$rule\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "$rule\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" $LCTL pcc list $MOUNT do_facet $SINGLEAGT $LFS mkdir -i 0 $DIR/$tdir @@ -1271,7 +1271,7 @@ test_13b() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "fname={*.h5\ suffix.*\ Mid*dle}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "fname={*.h5\ suffix.*\ Mid*dle}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" $LCTL pcc list $MOUNT do_facet $SINGLEAGT mkdir -p $DIR/$tdir @@ -1325,7 +1325,7 @@ test_13c() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100\ 200}\&fname={*.h5},uid={500}\&gid={1000}\ rwid=$HSM_ARCHIVE_NUMBER" + "projid={100\ 200}\&fname={*.h5},uid={500}\&gid={1000}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" $LCTL pcc list $MOUNT do_facet $SINGLEAGT mkdir -p $DIR/$tdir chmod 777 $DIR/$tdir || error "chmod 0777 $DIR/$tdir failed" @@ -1384,11 +1384,11 @@ test_14() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1\ pccro=1" mkdir -p $DIR/$tdir || error "mkdir -p $DIR/$tdir failed" do_facet $SINGLEAGT "echo -n autodetach_data > $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "PCC attach $file failed" check_lpcc_state $file "readwrite" @@ -1425,7 +1425,7 @@ test_15() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1\ pccro=1" mkdir_on_mdt0 $DIR/$tdir || error "mkdir $DIR/$tdir failed" chmod 777 $DIR/$tdir || error "chmod 777 $DIR/$tdir failed" @@ -1433,7 +1433,7 @@ test_15() { echo "Verify open attach for non-root user" do_facet $SINGLEAGT $RUNAS dd if=/dev/zero of=$file bs=1024 count=1 || error "failed to dd write to $file" - do_facet $SINGLEAGT $RUNAS $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $RUNAS $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "failed to attach file $file" do_facet $SINGLEAGT $RUNAS $LFS pcc state $file check_lpcc_state $file "readwrite" $SINGLEAGT "$RUNAS" @@ -1454,7 +1454,7 @@ test_15() { echo "Verify auto attach at open for RW-PCC" do_facet $SINGLEAGT "echo -n autoattach_data > $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" @@ -1519,12 +1519,12 @@ test_16() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1\ pccro=1" echo "Test detach for RW-PCC" do_facet $SINGLEAGT "echo -n detach_data > $file" lpcc_path=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER \ + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER \ $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" # HSM released exists archived status @@ -1578,12 +1578,12 @@ test_17() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=0\ stat_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=0\ stat_attach=0\ pccrw=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT "echo -n layout_refresh_data > $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "PCC attach $file failed" check_lpcc_state $file "readwrite" @@ -1629,12 +1629,12 @@ test_18() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT dd if=/dev/urandom of=$file bs=1M count=4 || error "failed to write $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach $file" do_facet $SINGLEAGT $LFS pcc state $file check_lpcc_state $file "readwrite" @@ -1651,7 +1651,7 @@ test_18() { do_facet $SINGLEAGT $LFS pcc state $file check_file_size $SINGLEAGT $lpcc_path 4194304 - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "failed to attach $file" check_lpcc_sizes $SINGLEAGT $lpcc_path $file 1049600 newmd5=$(do_facet $SINGLEAGT md5sum $file | awk '{print $1}') @@ -1671,17 +1671,17 @@ test_19() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" do_facet $SINGLEAGT "echo -n QQQQQ > $file" || error "echo $file failed" lpcc_path=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "Failed to attach $file" check_lpcc_state $file "readwrite" check_lpcc_sizes $SINGLEAGT $file $lpcc_path 5 do_facet $SINGLEAGT $LFS pcc detach --keep $file || error "Failed to detach $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "Failed to attach $file" check_lpcc_sizes $SINGLEAGT $file $lpcc_path 5 do_facet $SINGLEAGT $LFS pcc detach --keep $file || @@ -1699,11 +1699,11 @@ test_20() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1" do_facet $SINGLEAGT "echo -n QQQQQ > $file" || error "echo $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "Failed to attach $file" do_facet $SINGLEAGT "echo 3 > /proc/sys/vm/drop_caches" check_lpcc_state $file "readwrite" @@ -2018,10 +2018,10 @@ test_21i() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccro=1\ pccrw=1" do_facet $SINGLEAGT "echo -n hsm_release_pcc_file > $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" # HSM released exists archived status @@ -2069,11 +2069,11 @@ test_22() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1\ pccro=1" do_facet $SINGLEAGT "echo -n roattach_data > $file" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" # HSM released exists archived status @@ -2141,17 +2141,17 @@ test_23() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping - echo "ropcc_data" > $file + echo "pccro_data" > $file lpcc_path=$(lpcc_fid2path $hsm_root $file) do_facet $SINGLEAGT $LFS pcc attach -r -i $HSM_ARCHIVE_NUMBER $file || error "failed to RO-PCC attach file $file" check_lpcc_state $file "readonly" - check_lpcc_data $SINGLEAGT $lpcc_path $file "ropcc_data" + check_lpcc_data $SINGLEAGT $lpcc_path $file "pccro_data" local content=$(do_facet $SINGLEAGT $MMAP_CAT $file) - [[ $content == "ropcc_data" ]] || + [[ $content == "pccro_data" ]] || error "mmap_cat data mismatch: $content" check_lpcc_state $file "readonly" @@ -2364,7 +2364,7 @@ test_26() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" -h "$hsm_root" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1\ pccro=1" echo -n attach_keep_open > $file do_facet $SINGLEAGT $LFS pcc attach -r -i $HSM_ARCHIVE_NUMBER $file || @@ -2412,7 +2412,7 @@ test_26() { do_facet $SINGLEAGT $LFS pcc detach $file || error "detach $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file failed" check_lpcc_state $file "readwrite" rmultiop_start $agt_host $file O_c || error "multiop $file failed" @@ -2431,7 +2431,7 @@ test_26() { rm $file || error "rm $file failed" echo -n attach_keep_open > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file failed" check_lpcc_state $file "readwrite" rmultiop_start $agt_host $file O_c || error "multiop $file failed" @@ -2463,10 +2463,10 @@ test_27() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" -h "$hsm_root" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=1" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ open_attach=1\ pccrw=1\ pccro=1" echo -n auto_attach_multi_open > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file failed" check_lpcc_state $file "readwrite" rmultiop_start $agt_host $file O_c || error "multiop $file failed" @@ -2483,7 +2483,7 @@ test_27() { rm $file || error "rm $file failed" echo -n auto_attach_multi_open > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file failed" check_lpcc_state $file "readwrite" rmultiop_start $agt_host $file O_c || error "multiop $file failed" @@ -2540,14 +2540,14 @@ test_28() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" -h "$hsm_root" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1" echo -n rw_attach_hasopen_fail > $file rmultiop_start $agt_host $file O_c || error "multiop $file failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file && + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file && error "attach $file should fail" rmultiop_stop $agt_host || error "multiop $file close failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file should fail" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -2556,11 +2556,11 @@ test_28() { multiop_bg_pause $file2 O_c || error "multiop $file2 failed" multipid=$! - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file && + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file && error "attach $file should fail" kill -USR1 $multipid wait $multipid || error "multiop $file2 close failed" - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "attach $file should fail" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -2587,7 +2587,7 @@ test_29a() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={$project_id}\ rwid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={$project_id}\ rwid=$HSM_ARCHIVE_NUMBER\ pccro=1" $LCTL pcc list $MOUNT do_facet $SINGLEAGT mkdir -p $DIR/$tdir || @@ -2624,7 +2624,7 @@ test_29b() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT dd if=/dev/zero of=$file bs=4k count=1 || @@ -2656,18 +2656,18 @@ test_30() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1\ pccro=1" mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed" file=$DIR/$tdir/rwattach echo -n backend_del_attach > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" file=$DIR/$tdir/rwattachrm echo -n backend_del_attach_rm > $file - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" rm $file || error "rm $file failed" @@ -2697,14 +2697,14 @@ test_31() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0" + "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ auto_attach=0\ pccrw=1\ pccro=1" mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed" file=$DIR/$tdir/rwattach echo -n backend_del_attach > $file lpcc_path1=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -2714,7 +2714,7 @@ test_31() { file=$DIR/$tdir/rwattachrm echo -n backend_del_attach_rm > $file lpcc_path2=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach -w -i $HSM_ARCHIVE_NUMBER $file || error "RW-PCC attach $file failed" check_lpcc_state $file "readwrite" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -2809,7 +2809,7 @@ test_33() { copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" setup_pcc_mapping $SINGLEAGT \ - "fname={*.doc}\&size\<{1M}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "fname={*.doc}\&size\<{1M}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT touch $file || error "touch $file failed" $TRUNCATE $file $((1048576 * 2)) || error "Truncate $file failed" @@ -2825,7 +2825,7 @@ test_33() { cleanup_pcc_mapping setup_pcc_mapping $SINGLEAGT \ - "fname={*.doc}\&size\<{5M}\&size\>{3M}\ roid=5\ ropcc=1" + "fname={*.doc}\&size\<{5M}\&size\>{3M}\ roid=5\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $MULTIOP $file oc || error "failed to readonly open $file" @@ -2841,7 +2841,7 @@ test_33() { cleanup_pcc_mapping setup_pcc_mapping $SINGLEAGT \ - "fname={*.doc}\&size={5M\ 3M}\ roid=5\ ropcc=1" + "fname={*.doc}\&size={5M\ 3M}\ roid=5\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $MULTIOP $file oc || error "failed to readonly open $file" @@ -2879,8 +2879,7 @@ test_34() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping $SINGLEAGT \ - "projid\>{100}\ roid=5\ ropcc=1" + setup_pcc_mapping $SINGLEAGT "projid\>{100}\ roid=5\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT "echo -n QQQQQ > $file" || error "failed to write $file" @@ -2899,8 +2898,7 @@ test_34() { check_lpcc_state $file "readonly" cleanup_pcc_mapping - setup_pcc_mapping $SINGLEAGT \ - "projid\<{100}\ roid=5\ ropcc=1" + setup_pcc_mapping $SINGLEAGT "projid\<{100}\ roid=5\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $MULTIOP $file oc || error "failed to readonly open $file" @@ -2918,7 +2916,7 @@ test_34() { cleanup_pcc_mapping setup_pcc_mapping $SINGLEAGT \ - "projid\<{120}\&projid\>{110}\ roid=5\ ropcc=1" + "projid\<{120}\&projid\>{110}\ roid=5\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $MULTIOP $file oc || error "failed to readonly open $file" @@ -2984,17 +2982,17 @@ test_36_base() { local hsm_root="$mntpt/$tdir" local file=$DIR/$tfile local -a lpcc_path - local state="readwrite" - local ro="$1" + local state="readonly" + local rw="$1" - [[ -z $ro ]] || state="readonly" + [[ -z $rw ]] || state="readwrite" setup_loopdev $SINGLEAGT $loopfile $mntpt 50 copytool setup -m "$MOUNT" -a "$HSM_ARCHIVE_NUMBER" - setup_pcc_mapping + setup_pcc_mapping $SINGLEAGT "projid={100}\ rwid=$HSM_ARCHIVE_NUMBER\ pccrw=1\ pccro=1" echo -n backend_clear_verify > $file lpcc_path=$(lpcc_fid2path $hsm_root $file) - do_facet $SINGLEAGT $LFS pcc attach $ro -i $HSM_ARCHIVE_NUMBER $file || + do_facet $SINGLEAGT $LFS pcc attach $rw -i $HSM_ARCHIVE_NUMBER $file || error "PCC attach $ro $file failed" check_lpcc_state $file "$state" do_facet $SINGLEAGT $LFS pcc detach -k $file || @@ -3009,7 +3007,7 @@ test_36_base() { } test_36a() { - test_36_base + test_36_base "-w" } run_test 36a "Stale RW-PCC copy should be deleted after remove the PCC backend" @@ -3017,7 +3015,7 @@ test_36b() { $LCTL get_param -n mdc.*.connect_flags | grep -q pcc_ro || skip "Server does not support PCC-RO" - test_36_base "-r" + test_36_base } run_test 36b "Stale RO-PCC copy should be deleted after remove the PCC backend" @@ -3038,10 +3036,10 @@ test_37() { setup_loopdev client $loopfile $mntpt 50 setup_loopdev client $loopfile2 $mntpt2 50 $LCTL pcc add $MOUNT $mntpt -p \ - "projid={2} roid=$HSM_ARCHIVE_NUMBER auto_attach=0 ropcc=1" || + "projid={2} roid=$HSM_ARCHIVE_NUMBER auto_attach=0 pccro=1" || error "failed to config PCC for $MOUNT $mntpt" $LCTL pcc add $MOUNT2 $mntpt2 -p \ - "projid={2} roid=$HSM_ARCHIVE_NUMBER auto_attach=0 ropcc=1" || + "projid={2} roid=$HSM_ARCHIVE_NUMBER auto_attach=0 pccro=1" || error "failed to config PCC for $MOUNT2 $mntpt2" $LCTL pcc list $MOUNT $LCTL pcc list $MOUNT2 @@ -3085,7 +3083,7 @@ test_38() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={100}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LFS pcc state $file || error "failed to get PCC state for $file" @@ -3124,7 +3122,7 @@ test_39() { do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={$id}\ roid=$HSM_ARCHIVE_NUMBER\ proj_quota=1\ ropcc=1" + "projid={$id}\ roid=$HSM_ARCHIVE_NUMBER\ proj_quota=1\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT mkdir -p $dir || error "mkdir $dir failed" @@ -3185,7 +3183,7 @@ test_40() { setup_loopdev $SINGLEAGT $loopfile $mntpt 200 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={$id}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={$id}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT mkdir -p $dir || error "mkdir $dir failed" @@ -3290,7 +3288,7 @@ test_41() { setup_loopdev $SINGLEAGT $loopfile $mntpt 50 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "mtime\>{1m}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "mtime\>{1m}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT echo "pcc_ro_data" > $file || error "echo $file failed" @@ -3315,7 +3313,7 @@ test_42() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={100}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={100}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT echo -n attach_id_not_specified > $file || @@ -3336,7 +3334,7 @@ test_43() { 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" + "size\<{100M}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT echo "attach_root_user_data" > $file || error "echo $file failed" @@ -3361,7 +3359,7 @@ test_44() { setup_loopdev client $loopfile $mntpt 60 mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping client \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" $LCTL pcc list $MOUNT stack_trap "$LCTL set_param llite.*.pcc_async_threshold=1G" $LCTL set_param llite.*.pcc_async_threshold=0 @@ -3432,11 +3430,11 @@ test_45() { setup_loopdev client $loopfile2 $mntpt2 60 stack_trap "$LCTL pcc clear $MOUNT" EXIT $LCTL pcc add $MOUNT $mntpt -p \ - "projid={0} roid=$HSM_ARCHIVE_NUMBER ropcc=1" || + "projid={0} roid=$HSM_ARCHIVE_NUMBER pccro=1" || error "failed to config PCC for $MOUNT $mntpt" stack_trap "$LCTL pcc clear $MOUNT2" EXIT $LCTL pcc add $MOUNT2 $mntpt2 -p \ - "projid={0} roid=$HSM_ARCHIVE_NUMBER ropcc=1" || + "projid={0} roid=$HSM_ARCHIVE_NUMBER pccro=1" || error "failed to config PCC for $MOUNT2 $mntpt2" $LCTL pcc list $MOUNT $LCTL pcc list $MOUNT2 @@ -3506,7 +3504,7 @@ test_46() { setup_loopdev client $loopfile $mntpt 60 mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping client \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" $LCTL pcc list $MOUNT local mode=$($LCTL get_param -n llite.$fsuuid.pcc_mode) @@ -3569,7 +3567,7 @@ test_47() { setup_loopdev client $loopfile $mntpt 60 mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping client \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" $LCTL pcc list $MOUNT local mtime0 @@ -3597,7 +3595,7 @@ test_48() { setup_loopdev client $loopfile $mntpt 60 mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping client \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" echo "QQQQQ" > $file || error "echo $file failed" lpcc_path=$(lpcc_fid2path $hsm_root $file) @@ -3610,7 +3608,7 @@ test_48() { check_lpcc_state $file "readonly" client $LFS pcc detach $file || error "detach '$file' failed" } -run_test 48 "PCC state should check whether the file in in local PCC cache" +run_test 48 "PCC state should check whether the file is in local PCC cache" test_96() { local loopfile="$TMP/$tfile" @@ -3622,7 +3620,7 @@ test_96() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $LCTL set_param llite.*.pcc_async_threshold=1G @@ -3729,7 +3727,7 @@ test_97() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $LCTL set_param llite.*.pcc_async_threshold=1G @@ -3789,7 +3787,7 @@ test_98() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1\ mmap_conv=0" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1\ mmap_conv=0" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT $LCTL set_param llite.*.pcc_async_threshold=0 @@ -3864,7 +3862,7 @@ test_99() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT dd if=/dev/zero of=$file bs=1M count=50 || @@ -3945,7 +3943,7 @@ test_100() { setup_loopdev $SINGLEAGT $loopfile $mntpt 60 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT do_facet $SINGLEAGT dd if=/dev/zero of=$file bs=1M count=50 || @@ -4034,7 +4032,7 @@ test_200() { setup_loopdev $SINGLEAGT $loopfile $mntpt 14 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT # create 100 data files @@ -4105,7 +4103,7 @@ test_201() { setup_loopdev $SINGLEAGT $loopfile $mntpt 14 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT # create 100 data files @@ -4177,7 +4175,7 @@ test_202() { setup_loopdev $SINGLEAGT $loopfile $mntpt 14 do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" setup_pcc_mapping $SINGLEAGT \ - "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + "fname={*.dat}\ roid=$HSM_ARCHIVE_NUMBER\ pccro=1" do_facet $SINGLEAGT $LCTL pcc list $MOUNT # create 100 data files diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 3491d6a..4b77cab 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -374,17 +374,19 @@ command_t mirror_cmdlist[] = { command_t pcc_cmdlist[] = { { .pc_name = "attach", .pc_func = lfs_pcc_attach, .pc_help = "Attach given files to the Persistent Client Cache.\n" - "usage: lfs pcc attach [--readonly|-r] [--id|-i NUM] " - " ...\n" + "usage: lfs pcc attach [--readonly|-r] [--write|-w] " + "[--id|-i NUM] ...\n" "\t-i: archive id for RW-PCC\n" - "\t-r: readonly attach\n" }, + "\t-r: readonly attach\n" + "\t-w: writeable attach\n" }, { .pc_name = "attach_fid", .pc_func = lfs_pcc_attach_fid, .pc_help = "Attach given files into PCC by FID(s).\n" - "usage: lfs pcc attach_id [--readonly|-r] [--id|-i NUM] " - "<--mnt|-m mnt> ...\n" + "usage: lfs pcc attach_id [--readonly|-r] [--write|-w] " + "[--id|-i NUM] <--mnt|-m mnt> ...\n" "\t-i: archive id for RW-PCC\n" "\t-m: Lustre mount point\n" - "\t-r: readonly attach\n" }, + "\t-r: readonly attach\n" + "\t-w: writeable attach\n" }, { .pc_name = "state", .pc_func = lfs_pcc_state, .pc_help = "Display the PCC state for given files.\n" "usage: lfs pcc state ...\n" }, @@ -11655,6 +11657,7 @@ static int lfs_pcc_attach(int argc, char **argv) struct option long_opts[] = { { .val = 'i', .name = "id", .has_arg = required_argument }, { .val = 'r', .name = "readonly", .has_arg = no_argument }, + { .val = 'w', .name = "write", .has_arg = no_argument }, { .name = NULL } }; int c; int rc = 0; @@ -11662,10 +11665,10 @@ static int lfs_pcc_attach(int argc, char **argv) const char *path; char *end; char fullpath[PATH_MAX]; - enum lu_pcc_type type = LU_PCC_READWRITE; + enum lu_pcc_type type = LU_PCC_READONLY; optind = 0; - while ((c = getopt_long(argc, argv, "i:r", + while ((c = getopt_long(argc, argv, "i:rw", long_opts, NULL)) != -1) { switch (c) { case 'i': @@ -11680,6 +11683,9 @@ static int lfs_pcc_attach(int argc, char **argv) case 'r': type = LU_PCC_READONLY; break; + case 'w': + type = LU_PCC_READWRITE; + break; case '?': return CMD_HELP; default: @@ -11724,16 +11730,17 @@ static int lfs_pcc_attach_fid(int argc, char **argv) struct option long_opts[] = { { .val = 'i', .name = "id", .has_arg = required_argument }, { .val = 'r', .name = "readonly", .has_arg = no_argument }, + { .val = 'w', .name = "write", .has_arg = no_argument }, { .val = 'm', .name = "mnt", .has_arg = required_argument }, { .name = NULL } }; - char short_opts[] = "i:m:r"; + char short_opts[] = "i:m:rw"; int c; int rc = 0; __u32 attach_id = 0; char *end; const char *mntpath = NULL; const char *fidstr; - enum lu_pcc_type type = LU_PCC_READWRITE; + enum lu_pcc_type type = LU_PCC_READONLY; optind = 0; while ((c = getopt_long(argc, argv, short_opts, @@ -11751,6 +11758,9 @@ static int lfs_pcc_attach_fid(int argc, char **argv) case 'r': type = LU_PCC_READONLY; break; + case 'w': + type = LU_PCC_READWRITE; + break; case 'm': mntpath = optarg; break; -- 1.8.3.1