Support replication of recursive directory removal.
i=nathan.rutman
i=robert.read
}
run_test 8 "Replicate multiple file/directory moves"
+test_9() {
+ init_src
+ init_changelog
+
+ mkdir $DIR/$tdir/foo
+ touch $DIR/$tdir/foo/a1
+
+ $LRSYNC -s $DIR -t $TGT -m $MDT0 -u $CL_USER -l $LREPL_LOG
+
+ check_diff ${DIR}/$tdir $TGT/$tdir
+
+ rm -rf $DIR/$tdir/foo
+
+ $LRSYNC -s $DIR -t $TGT -m $MDT0 -u $CL_USER -l $LREPL_LOG
+
+ check_diff ${DIR}/$tdir $TGT/$tdir
+
+ fini_changelog
+ cleanup_src_tgt
+ return 0
+}
+run_test 9 "Replicate recursive directory removal"
+
log "cleanup: ======================================================"
cd $ORIG_PWD
check_and_cleanup_lustre
return rc;
}
+/* Recursively remove directory and its contents */
+int lr_rm_recursive(struct lr_info *info)
+{
+ int rc;
+
+ snprintf(info->cmd, PATH_MAX, "rm -rf %s", info->dest);
+ rc = system(info->cmd);
+ if (rc == -1)
+ rc = -errno;
+
+ return rc;
+}
+
/* Remove a file under SPECIAL_DIR with its tfid as its name. */
int lr_rm_special(struct lr_info *info)
{
rc1 = lr_rmfile(info);
lr_debug(DINFO, "remove: %s; rc1=%d, errno=%d\n",
info->dest, rc1, errno);
+ if (rc1 == -ENOTEMPTY)
+ rc1 = lr_rm_recursive(info);
+
if (rc1) {
rc = rc1;
continue;