Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
b=22507 rm -rf not replicated
[fs/lustre-release.git]
/
lustre
/
utils
/
lustre_rsync.c
diff --git
a/lustre/utils/lustre_rsync.c
b/lustre/utils/lustre_rsync.c
index
0f3d6de
..
ffe297f
100644
(file)
--- a/
lustre/utils/lustre_rsync.c
+++ b/
lustre/utils/lustre_rsync.c
@@
-708,6
+708,19
@@
int lr_rmfile(struct lr_info *info)
return rc;
}
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)
{
/* Remove a file under SPECIAL_DIR with its tfid as its name. */
int lr_rm_special(struct lr_info *info)
{
@@
-825,6
+838,9
@@
int lr_remove(struct lr_info *info)
rc1 = lr_rmfile(info);
lr_debug(DINFO, "remove: %s; rc1=%d, errno=%d\n",
info->dest, rc1, errno);
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;
if (rc1) {
rc = rc1;
continue;