given that we don't bother to do anything to return value, we can ack
the fssync op earlier and not tie up the volserver unnecessarily
found due to comments from brent.johnson@jpl.nasa.gov
(cherry picked from commit
d7e3e249cbb4ebe0f1d3be3d02b5b593e576cfa0)
int fd;
{
byte rc = FSYNC_OK;
- int n, i;
+ int n, i, ack = 1;
Error error;
struct command command;
int leaveonline;
vp->specialStatus = VMOVED;
VPutVolume_r(vp);
}
+#ifdef AFS_NT40_ENV
+ send(fd, &rc, 1, 0);
+#else
+ write(fd, &rc, 1);
+#endif
+ ack = 0;
if (V_BreakVolumeCallbacks) {
Log("fssync: volume %u moved to %x; breaking all call backs\n",
command.volume, command.reason);
break;
case FSYNC_RESTOREVOLUME:
/* if the volume is being restored, break all callbacks on it*/
+#ifdef AFS_NT40_ENV
+ send(fd, &rc, 1, 0);
+#else
+ write(fd, &rc, 1);
+#endif
+ ack = 0;
if (V_BreakVolumeCallbacks) {
VOL_UNLOCK
VATTACH_UNLOCK
}
VOL_UNLOCK
VATTACH_UNLOCK
+ if (ack) {
#ifdef AFS_NT40_ENV
- send(fd, &rc, 1, 0);
+ send(fd, &rc, 1, 0);
#else
- write(fd, &rc, 1);
+ write(fd, &rc, 1);
#endif
+ }
}
static void FSYNC_Drop(fd)