if (fsid_fd < 0)
return 0; // no fsid, ok.
bool inuse = lock_fsid() < 0;
- ::close(fsid_fd);
+ TEMP_FAILURE_RETRY(::close(fsid_fd));
fsid_fd = -1;
return inuse;
}
btrfs = false;
}
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
return 0;
}
if (r < 0) {
int err = errno;
dout(0) << "transaction_start got " << cpp_strerror(err) << " from btrfs ioctl" << dendl;
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
return -err;
}
dout(10) << "transaction_start " << fd << dendl;
dout(10) << "transaction_finish " << fd << dendl;
::ioctl(fd, BTRFS_IOC_TRANS_END);
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
}
unsigned FileStore::_do_transaction(Transaction& t, uint64_t op_seq)
int fd = lfn_open(cid, oid, flags, 0644);
int r;
if (fd >= 0) {
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
r = 0;
} else
r = fd;
!queue_flusher(fd, offset, len)) {
if (m_filestore_sync_flush)
::sync_file_range(fd, offset, len, SYNC_FILE_RANGE_WRITE);
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
}
#else
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
#endif
out:
if (r < 0)
r = -errno;
- ::close(n);
+ TEMP_FAILURE_RETRY(::close(n));
out:
- ::close(o);
+ TEMP_FAILURE_RETRY(::close(o));
out2:
dout(10) << "clone " << cid << "/" << oldoid << " -> " << cid << "/" << newoid << " = " << r << dendl;
return 0;
goto out;
}
r = _do_clone_range(o, n, srcoff, len, dstoff);
- ::close(n);
+ TEMP_FAILURE_RETRY(::close(n));
out:
- ::close(o);
+ TEMP_FAILURE_RETRY(::close(o));
out2:
dout(10) << "clone_range " << cid << "/" << oldoid << " -> " << cid << "/" << newoid << " "
<< srcoff << "~" << len << " to " << dstoff << " = " << r << dendl;
} else
dout(10) << "flusher_entry JUST closing " << fd << " (stop=" << stop << ", ep=" << ep
<< ", sync_epoch=" << sync_epoch << ")" << dendl;
- ::close(fd);
+ TEMP_FAILURE_RETRY(::close(fd));
}
lock.Lock();
flusher_queue_len -= num; // they're definitely closed, forget