Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make sure that the hlink node->data allocation doesn't fail.
[rsync/rsync.git]
/
generator.c
diff --git
a/generator.c
b/generator.c
index
58ae82f
..
8290e60
100644
(file)
--- a/
generator.c
+++ b/
generator.c
@@
-86,6
+86,7
@@
extern int unsort_ndx;
extern int max_delete;
extern int force_delete;
extern int one_file_system;
extern int max_delete;
extern int force_delete;
extern int one_file_system;
+extern int check_for_io_err;
extern struct stats stats;
extern dev_t filesystem_dev;
extern mode_t orig_umask;
extern struct stats stats;
extern dev_t filesystem_dev;
extern mode_t orig_umask;
@@
-2236,6
+2237,10
@@
void generate_files(int f_out, const char *local_name)
dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
} else
dirdev = MAKEDEV(0, 0);
dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
} else
dirdev = MAKEDEV(0, 0);
+ /* We must be sure we've had a chance to receive an I/O
+ * error for this directory before we delete in it. */
+ while (check_for_io_err && !cur_flist->next)
+ wait_for_receiver();
delete_in_dir(fbuf, fp, &dirdev);
} else
change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
delete_in_dir(fbuf, fp, &dirdev);
} else
change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
@@
-2336,7
+2341,7
@@
void generate_files(int f_out, const char *local_name)
touch_up_dirs(dir_flist, -1);
if (max_delete >= 0 && deletion_count > max_delete) {
touch_up_dirs(dir_flist, -1);
if (max_delete >= 0 && deletion_count > max_delete) {
- rprintf(F
INFO
,
+ rprintf(F
WARNING
,
"Deletions stopped due to --max-delete limit (%d skipped)\n",
deletion_count - max_delete);
io_error |= IOERR_DEL_LIMIT;
"Deletions stopped due to --max-delete limit (%d skipped)\n",
deletion_count - max_delete);
io_error |= IOERR_DEL_LIMIT;