+
+ if (st.st_size) {
+ int32 read_size = MAX(s->blength * 3, MAX_MAP_SIZE);
+ mbuf = map_file(fd, st.st_size, read_size, s->blength);
+ } else
+ mbuf = NULL;
+
+ if (verbose > 2) {
+ rprintf(FINFO, "send_files mapped %s of size %.0f\n",
+ safe_fname(fname), (double)st.st_size);
+ }
+
+ write_int(f_out, i);
+ write_sum_head(f_out, s);
+
+ if (verbose > 2) {
+ rprintf(FINFO, "calling match_sums %s\n",
+ safe_fname(fname));
+ }
+
+ if (!am_server && verbose) /* log the transfer */
+ rprintf(FINFO, "%s\n", safe_fname(fname2));
+
+ set_compression(fname);
+
+ match_sums(f_out, s, mbuf, st.st_size);
+ log_send(file, &initial_stats);
+
+ if (mbuf) {
+ j = unmap_file(mbuf);
+ if (j) {
+ io_error |= IOERR_GENERAL;
+ rsyserr(FERROR, j,
+ "read errors mapping %s",
+ full_fname(fname));
+ }