[Nbd] [PATCH] nbd-server: Kill dead mainloop()
Unused since commit 6c2d8511. Be the chainsaw mentioned in the comment :)
Signed-off-by: Eric Blake <eblake@...696...>
---
Applies to the master branch; will cause a (trivial) merge conflict with
the extensions-write-zeroes branch.
nbd-server.c | 173 -----------------------------------------------------------
1 file changed, 173 deletions(-)
diff --git a/nbd-server.c b/nbd-server.c
index 3dcfadd..fec397b 100644
--- a/nbd-server.c
+++ b/nbd-server.c
@@ -2019,179 +2019,6 @@ static int mainloop_threaded(CLIENT* client) {
writeit(client->transactionlogfd, &reply, sizeof(reply)); }
/** error macro. */
#define ERROR(client,reply,errcode) { reply.error = nbd_errno(errcode); SEND(client,reply); reply.error = 0; }
-/**
- * Serve a file to a single client.
- *
- * @todo This beast needs to be split up in many tiny little manageable
- * pieces. Preferably with a chainsaw.
- *
- * @param client The client we're going to serve to.
- * @return when the client disconnects
- **/
-int mainloop(CLIENT *client) {
- struct nbd_request request;
- struct nbd_reply reply;
- gboolean go_on=TRUE;
-#ifdef DODBG
- int i = 0;
-#endif
- send_export_info(client);
- DEBUG("Entering request loop!\n");
- reply.magic = htonl(NBD_REPLY_MAGIC);
- reply.error = 0;
- while (go_on) {
- char buf[BUFSIZE];
- char* p;
- size_t len;
- size_t currlen;
- size_t writelen;
- uint16_t command;
-#ifdef DODBG
- i++;
- printf("%d: ", i);
-#endif
- socket_read(client, &request, sizeof(request));
- if (client->transactionlogfd != -1)
- writeit(client->transactionlogfd, &request, sizeof(request));
-
- request.from = ntohll(request.from);
- request.type = ntohl(request.type);
- command = request.type & NBD_CMD_MASK_COMMAND;
- len = ntohl(request.len);
-
- DEBUG("%s from %llu (%llu) len %u, ", getcommandname(command),
- (unsigned long long)request.from,
- (unsigned long long)request.from / 512, len);
-
- if (request.magic != htonl(NBD_REQUEST_MAGIC))
- err("Not enough magic.");
-
- memcpy(reply.handle, request.handle, sizeof(reply.handle));
-
- if ((command==NBD_CMD_WRITE) || (command==NBD_CMD_READ) ||
- (command==NBD_CMD_TRIM)) {
- if (request.from + len < request.from) { // 64 bit overflow!!
- DEBUG("[Number too large!]");
- ERROR(client, reply, EINVAL);
- continue;
- }
-
- if (((off_t)request.from + len) > client->exportsize) {
- DEBUG("[RANGE!]");
- ERROR(client, reply, (command==NBD_CMD_WRITE) ? ENOSPC : EINVAL);
- continue;
- }
-
- currlen = len;
- if (currlen > BUFSIZE - sizeof(struct nbd_reply)) {
- currlen = BUFSIZE - sizeof(struct nbd_reply);
- if(!logged_oversized) {
- msg(LOG_DEBUG, "oversized request (this is not a problem)");
- logged_oversized = true;
- }
- }
- }
-
- switch (command) {
-
- case NBD_CMD_DISC:
- msg(LOG_INFO, "Disconnect request received.");
- if (client->server->flags & F_COPYONWRITE) {
- if (client->difmap) g_free(client->difmap) ;
- close(client->difffile);
- unlink(client->difffilename);
- free(client->difffilename);
- }
- go_on=FALSE;
- continue;
-
- case NBD_CMD_WRITE:
- DEBUG("wr: net->buf, ");
- while(len > 0) {
- socket_read(client, buf, currlen);
- DEBUG("buf->exp, ");
- if ((client->server->flags & F_READONLY) ||
- (client->server->flags & F_AUTOREADONLY)) {
- DEBUG("[WRITE to READONLY!]");
- ERROR(client, reply, EPERM);
- consume(client, len-currlen, buf, BUFSIZE);
- continue;
- }
- if (expwrite(request.from, buf, currlen, client,
- request.type & NBD_CMD_FLAG_FUA)) {
- DEBUG("Write failed: %m" );
- ERROR(client, reply, errno);
- consume(client, len-currlen, buf, BUFSIZE);
- continue;
- }
- len -= currlen;
- request.from += currlen;
- currlen = (len < BUFSIZE) ? len : BUFSIZE;
- }
- SEND(client, reply);
- DEBUG("OK!\n");
- continue;
-
- case NBD_CMD_FLUSH:
- DEBUG("fl: ");
- if (expflush(client)) {
- DEBUG("Flush failed: %m");
- ERROR(client, reply, errno);
- continue;
- }
- SEND(client, reply);
- DEBUG("OK!\n");
- continue;
-
- case NBD_CMD_READ:
- DEBUG("exp->buf, ");
- if (client->transactionlogfd != -1)
- writeit(client->transactionlogfd, &reply, sizeof(reply));
- socket_write(client, &reply, sizeof(reply));
- p = buf;
- writelen = currlen;
- while(len > 0) {
- if (expread(request.from, p, currlen, client)) {
- DEBUG("Read failed: %m");
- ERROR(client, reply, errno);
- continue;
- }
-
- DEBUG("buf->net, ");
- socket_write(client, buf, writelen);
- len -= currlen;
- request.from += currlen;
- currlen = (len < BUFSIZE) ? len : BUFSIZE;
- p = buf;
- writelen = currlen;
- }
- DEBUG("OK!\n");
- continue;
-
- case NBD_CMD_TRIM:
- /* The kernel module sets discard_zeroes_data == 0,
- * so it is okay to do nothing. */
- if ((client->server->flags & F_READONLY) ||
- (client->server->flags & F_AUTOREADONLY)) {
- DEBUG("[TRIM to READONLY!]");
- ERROR(client, reply, EPERM);
- continue;
- }
- if (exptrim(&request, client)) {
- DEBUG("Trim failed: %m");
- ERROR(client, reply, errno);
- continue;
- }
- SEND(client, reply);
- continue;
-
- default:
- DEBUG ("Ignoring unknown command\n");
- continue;
- }
- }
- return 0;
-}
/**
* Set up client export array, which is an array of FILE_INFO.
--
2.9.3
Reply to: