Merge changes I9e786c0a,Ibe6dc92b

* changes:
  Delete unused methods in SharedFD
  Delete unused functions in size_utils
diff --git a/common/libs/fs/shared_fd.cpp b/common/libs/fs/shared_fd.cpp
index b85cf7c..f3fff8a 100644
--- a/common/libs/fs/shared_fd.cpp
+++ b/common/libs/fs/shared_fd.cpp
@@ -86,26 +86,6 @@
 
 namespace cvd {
 
-bool FileInstance::CopyFrom(FileInstance& in) {
-  std::vector<char> buffer(8192);
-  while (true) {
-    ssize_t num_read = in.Read(buffer.data(), buffer.size());
-    if (!num_read) {
-      return true;
-    }
-    if (num_read == -1) {
-      return false;
-    }
-    if (num_read > 0) {
-      if (Write(buffer.data(), num_read) != num_read) {
-        // The caller will have to log an appropriate message.
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
 bool FileInstance::CopyFrom(FileInstance& in, size_t length) {
   std::vector<char> buffer(8192);
   while (length > 0) {
@@ -143,16 +123,6 @@
   fd_ = -1;
 }
 
-void FileInstance::Identify(const char* identity) {
-  std::stringstream identity_stream;
-  identity_stream << "fd=" << fd_ << " @" << this << " is " << identity;
-  identity_ = identity_stream.str();
-  std::stringstream message;
-  message << __FUNCTION__ << ": " << identity_;
-  std::string message_str = message.str();
-  Log(message_str.c_str());
-}
-
 bool FileInstance::IsSet(fd_set* in) const {
   if (IsOpen() && FD_ISSET(fd_, in)) {
     return true;
@@ -232,23 +202,6 @@
   *len = namelen + offsetof(struct sockaddr_un, sun_path) + 1;
 }
 
-SharedFD SharedFD::SocketSeqPacketServer(const char* name, mode_t mode) {
-  return SocketLocalServer(name, false, SOCK_SEQPACKET, mode);
-}
-
-SharedFD SharedFD::SocketSeqPacketClient(const char* name) {
-  return SocketLocalClient(name, false, SOCK_SEQPACKET);
-}
-
-SharedFD SharedFD::TimerFD(int clock, int flags) {
-  int fd = timerfd_create(clock, flags);
-  if (fd == -1) {
-    return SharedFD(std::shared_ptr<FileInstance>(new FileInstance(fd, errno)));
-  } else {
-    return SharedFD(std::shared_ptr<FileInstance>(new FileInstance(fd, 0)));
-  }
-}
-
 SharedFD SharedFD::Accept(const FileInstance& listener, struct sockaddr* addr,
                           socklen_t* addrlen) {
   return SharedFD(
@@ -281,11 +234,6 @@
   return std::shared_ptr<FileInstance>(new FileInstance(fd, errno));
 }
 
-SharedFD SharedFD::Epoll(int flags) {
-  int fd = epoll_create1(flags);
-  return std::shared_ptr<FileInstance>(new FileInstance(fd, errno));
-}
-
 SharedFD SharedFD::MemfdCreate(const char* name, unsigned int flags) {
   int fd = memfd_create_wrapper(name, flags);
   int error_num = errno;
diff --git a/common/libs/fs/shared_fd.h b/common/libs/fs/shared_fd.h
index 044c7cc..ef37d1f 100644
--- a/common/libs/fs/shared_fd.h
+++ b/common/libs/fs/shared_fd.h
@@ -66,26 +66,6 @@
 class FileInstance;
 
 /**
- * Describes the fields in msghdr that are honored by the *MsgAndFDs
- * calls.
- */
-struct InbandMessageHeader {
-  void* msg_name;
-  socklen_t msg_namelen;
-  struct iovec* msg_iov;
-  size_t msg_iovlen;
-  int msg_flags;
-
-  void Convert(struct msghdr* dest) const {
-    dest->msg_name = msg_name;
-    dest->msg_namelen = msg_namelen;
-    dest->msg_iov = msg_iov;
-    dest->msg_iovlen = msg_iovlen;
-    dest->msg_flags = msg_flags;
-  }
-};
-
-/**
  * Counted reference to a FileInstance.
  *
  * This is also the place where most new FileInstances are created. The creation
@@ -137,14 +117,12 @@
                          socklen_t* addrlen);
   static SharedFD Accept(const FileInstance& listener);
   static SharedFD Dup(int unmanaged_fd);
-  static SharedFD GetControlSocket(const char* name);
   // All SharedFDs have the O_CLOEXEC flag after creation. To remove use the
   // Fcntl or Dup functions.
   static SharedFD Open(const char* pathname, int flags, mode_t mode = 0);
   static SharedFD Creat(const char* pathname, mode_t mode);
   static bool Pipe(SharedFD* fd0, SharedFD* fd1);
   static SharedFD Event(int initval = 0, int flags = 0);
-  static SharedFD Epoll(int flags = 0);
   static SharedFD MemfdCreate(const char* name, unsigned int flags = 0);
   static bool SocketPair(int domain, int type, int protocol, SharedFD* fd0,
                          SharedFD* fd1);
@@ -155,12 +133,9 @@
   static SharedFD SocketLocalServer(const char* name, bool is_abstract,
                                     int in_type, mode_t mode);
   static SharedFD SocketLocalServer(int port, int type);
-  static SharedFD SocketSeqPacketServer(const char* name, mode_t mode);
-  static SharedFD SocketSeqPacketClient(const char* name);
   static SharedFD VsockServer(unsigned int port, int type);
   static SharedFD VsockServer(int type);
   static SharedFD VsockClient(unsigned int cid, unsigned int port, int type);
-  static SharedFD TimerFD(int clock, int flags);
 
   bool operator==(const SharedFD& rhs) const { return value_ == rhs.value_; }
 
@@ -231,7 +206,6 @@
   // Otherwise an error will be set either on this file or the input.
   // The non-const reference is needed to avoid binding this to a particular
   // reference type.
-  bool CopyFrom(FileInstance& in);
   bool CopyFrom(FileInstance& in, size_t length);
 
   int UNMANAGED_Dup() {
@@ -248,27 +222,6 @@
     return rval;
   }
 
-  int EpollCtl(int op, cvd::SharedFD new_fd, struct epoll_event* event) {
-    errno = 0;
-    int rval = TEMP_FAILURE_RETRY(epoll_ctl(fd_, op, new_fd->fd_, event));
-    errno_ = errno;
-    return rval;
-  }
-
-  int EpollWait(struct epoll_event* events, int maxevents, int timeout) {
-    errno = 0;
-    int rval = TEMP_FAILURE_RETRY(epoll_wait(fd_, events, maxevents, timeout));
-    errno_ = errno;
-    return rval;
-  }
-
-  int Fchown(uid_t owner, gid_t group) {
-    errno = 0;
-    int rval = TEMP_FAILURE_RETRY(fchown(fd_, owner, group));
-    errno_ = errno;
-    return rval;
-  }
-
   int Fcntl(int command, int value) {
     errno = 0;
     int rval = TEMP_FAILURE_RETRY(fcntl(fd_, command, value));
@@ -276,24 +229,8 @@
     return rval;
   }
 
-  int Fstat(struct stat* buf) {
-    errno = 0;
-    int rval = TEMP_FAILURE_RETRY(fstat(fd_, buf));
-    errno_ = errno;
-    return rval;
-  }
-
   int GetErrno() const { return errno_; }
 
-  int GetSockOpt(int level, int optname, void* optval, socklen_t* optlen) {
-    errno = 0;
-    int rval = getsockopt(fd_, level, optname, optval, optlen);
-    if (rval == -1) {
-      errno_ = errno;
-    }
-    return rval;
-  }
-
   int GetSockName(struct sockaddr* addr, socklen_t* addrlen) {
     errno = 0;
     int rval = TEMP_FAILURE_RETRY(getsockname(fd_, addr, addrlen));
@@ -310,8 +247,6 @@
     return vm_socket.svm_port;
   }
 
-  void Identify(const char* identity);
-
   int Ioctl(int request, void* val = nullptr) {
     errno = 0;
     int rval = TEMP_FAILURE_RETRY(ioctl(fd_, request, val));
@@ -340,20 +275,6 @@
     return rval;
   }
 
-  void* Mmap(void* addr, size_t length, int prot, int flags, off_t offset) {
-    errno = 0;
-    void* rval = mmap(addr, length, prot, flags, fd_, offset);
-    errno_ = errno;
-    return rval;
-  }
-
-  ssize_t Pread(void* buf, size_t count, off_t offset) {
-    errno = 0;
-    ssize_t rval = TEMP_FAILURE_RETRY(pread(fd_, buf, count, offset));
-    errno_ = errno;
-    return rval;
-  }
-
   ssize_t Recv(void* buf, size_t len, int flags) {
     errno = 0;
     ssize_t rval = TEMP_FAILURE_RETRY(recv(fd_, buf, len, flags));
@@ -361,15 +282,6 @@
     return rval;
   }
 
-  ssize_t RecvFrom(void* buf, size_t len, int flags, struct sockaddr* src_addr,
-                   socklen_t* addr_len) {
-    errno = 0;
-    ssize_t rval =
-        TEMP_FAILURE_RETRY(recvfrom(fd_, buf, len, flags, src_addr, addr_len));
-    errno_ = errno;
-    return rval;
-  }
-
   ssize_t RecvMsg(struct msghdr* msg, int flags) {
     errno = 0;
     ssize_t rval = TEMP_FAILURE_RETRY(recvmsg(fd_, msg, flags));
@@ -377,36 +289,6 @@
     return rval;
   }
 
-  template <size_t SZ>
-  ssize_t RecvMsgAndFDs(const struct InbandMessageHeader& msg_in, int flags,
-                        SharedFD (*new_fds)[SZ]) {
-    // We need to make some modifications to land the fds. Make it clear
-    // that there are no updates to the msg being passed in during this call.
-    struct msghdr msg;
-    msg_in.Convert(&msg);
-    union {
-      char buffer[CMSG_SPACE(SZ * sizeof(int))];
-      struct cmsghdr this_aligns_buffer;
-    } u;
-    msg.msg_control = u.buffer;
-    msg.msg_controllen = sizeof(u.buffer);
-
-    cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
-    cmsg->cmsg_len = CMSG_LEN(SZ * sizeof(int));
-    cmsg->cmsg_level = SOL_SOCKET;
-    cmsg->cmsg_type = SCM_RIGHTS;
-    int* fd_array = reinterpret_cast<int*>(CMSG_DATA(cmsg));
-    for (size_t i = 0; i < SZ; ++i) {
-      fd_array[i] = -1;
-    }
-    ssize_t rval = RecvMsg(&msg, flags);
-    for (size_t i = 0; i < SZ; ++i) {
-      (*new_fds)[i] =
-          std::shared_ptr<FileInstance>(new FileInstance(fd_array[i], errno));
-    }
-    return rval;
-  }
-
   ssize_t Read(void* buf, size_t count) {
     errno = 0;
     ssize_t rval = TEMP_FAILURE_RETRY(read(fd_, buf, count));
@@ -428,29 +310,6 @@
     return rval;
   }
 
-  template <size_t SZ>
-  ssize_t SendMsgAndFDs(const struct InbandMessageHeader& msg_in, int flags,
-                        const SharedFD (&fds)[SZ]) {
-    struct msghdr msg;
-    msg_in.Convert(&msg);
-    union {
-      char buffer[CMSG_SPACE(SZ * sizeof(int))];
-      struct cmsghdr this_aligns_buffer;
-    } u;
-    msg.msg_control = u.buffer;
-    msg.msg_controllen = sizeof(u.buffer);
-
-    cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
-    cmsg->cmsg_len = CMSG_LEN(SZ * sizeof(int));
-    cmsg->cmsg_level = SOL_SOCKET;
-    cmsg->cmsg_type = SCM_RIGHTS;
-    int* fd_array = reinterpret_cast<int*>(CMSG_DATA(cmsg));
-    for (size_t i = 0; i < SZ; ++i) {
-      fd_array[i] = fds[i]->fd_;
-    }
-    return SendMsg(&msg, flags);
-  }
-
   int Shutdown(int how) {
     errno = 0;
     int rval = shutdown(fd_, how);
@@ -458,15 +317,6 @@
     return rval;
   }
 
-  ssize_t SendTo(const void* buf, size_t len, int flags,
-                 const struct sockaddr* dest_addr, socklen_t addrlen) {
-    errno = 0;
-    ssize_t rval =
-        TEMP_FAILURE_RETRY(sendto(fd_, buf, len, flags, dest_addr, addrlen));
-    errno_ = errno;
-    return rval;
-  }
-
   void Set(fd_set* dest, int* max_index) const;
 
   int SetSockOpt(int level, int optname, const void* optval, socklen_t optlen) {
@@ -492,21 +342,6 @@
     return strerror_buf_;
   }
 
-  int TimerGet(struct itimerspec* curr_value) {
-    errno = 0;
-    int rval = timerfd_gettime(fd_, curr_value);
-    errno_ = errno;
-    return rval;
-  }
-
-  int TimerSet(int flags, const struct itimerspec* new_value,
-               struct itimerspec* old_value) {
-    errno = 0;
-    int rval = timerfd_settime(fd_, flags, new_value, old_value);
-    errno_ = errno;
-    return rval;
-  }
-
   ssize_t Truncate(off_t length) {
     errno = 0;
     ssize_t rval = TEMP_FAILURE_RETRY(ftruncate(fd_, length));
@@ -521,13 +356,6 @@
     return rval;
   }
 
-  ssize_t WriteV(struct iovec* iov, int iovcount) {
-    errno = 0;
-    ssize_t rval = TEMP_FAILURE_RETRY(writev(fd_, iov, iovcount));
-    errno_ = errno;
-    return rval;
-  }
-
  private:
   FileInstance(int fd, int in_errno) : fd_(fd), errno_(in_errno) {
     // Ensure every file descriptor managed by a FileInstance has the CLOEXEC
diff --git a/common/libs/fs/shared_fd_test.cpp b/common/libs/fs/shared_fd_test.cpp
index 3423619..7ca6204 100644
--- a/common/libs/fs/shared_fd_test.cpp
+++ b/common/libs/fs/shared_fd_test.cpp
@@ -23,48 +23,17 @@
 
 #include <string>
 
-using cvd::InbandMessageHeader;
 using cvd::SharedFD;
 
-char hello[] = "Hello, world!";
 char pipe_message[] = "Testing the pipe";
 
 TEST(SendFD, Basic) {
-  char dirname[] = "/tmp/sfdtestXXXXXX";
-  char* socket = mkdtemp(dirname);
-  EXPECT_TRUE(socket != NULL);
-  std::string path(dirname);
-  path += "/s";
-  SharedFD server = SharedFD::SocketSeqPacketServer(path.c_str(), 0700);
-  EXPECT_TRUE(server->IsOpen());
-  int rval = fork();
-  EXPECT_NE(-1, rval);
-  if (!rval) {
-    struct iovec iov { hello, sizeof(hello) };
-    SharedFD client = SharedFD::SocketSeqPacketClient(path.c_str());
-    InbandMessageHeader hdr{};
-    hdr.msg_iov = &iov;
-    hdr.msg_iovlen = 1;
-    SharedFD fds[2];
-    SharedFD::Pipe(fds, fds + 1);
-    ssize_t rval = client->SendMsgAndFDs(hdr, 0, fds);
-    printf("SendMsg sent %zd (%s)\n", rval, client->StrError());
-    exit(0);
-  }
-  server->Listen(2);
-  SharedFD peer = SharedFD::Accept(*server);
-  EXPECT_TRUE(peer->IsOpen());
-  char buf[80];
-  struct iovec iov { buf, sizeof(buf) };
-  InbandMessageHeader hdr{};
-  hdr.msg_iov = &iov;
-  hdr.msg_iovlen = 1;
   SharedFD fds[2];
-  peer->RecvMsgAndFDs(hdr, 0, &fds);
-  EXPECT_EQ(0, strcmp(buf, hello));
+  SharedFD::Pipe(fds, fds + 1);
   EXPECT_TRUE(fds[0]->IsOpen());
   EXPECT_TRUE(fds[1]->IsOpen());
   EXPECT_EQ(sizeof(pipe_message), fds[1]->Write(pipe_message, sizeof(pipe_message)));
+  char buf[80];
   EXPECT_EQ(sizeof(pipe_message), fds[0]->Read(buf, sizeof(buf)));
   EXPECT_EQ(0, strcmp(buf, pipe_message));
 }
diff --git a/common/libs/utils/size_utils.cpp b/common/libs/utils/size_utils.cpp
index c43bf96..0f7ed3c 100644
--- a/common/libs/utils/size_utils.cpp
+++ b/common/libs/utils/size_utils.cpp
@@ -20,19 +20,6 @@
 
 namespace cvd {
 
-uint32_t AlignToPageSize(uint32_t val) {
-  static uint32_t page_size = sysconf(_SC_PAGESIZE);
-  return ((val + (page_size - 1)) / page_size) * page_size;
-}
-
-uint32_t RoundUpToNextPowerOf2(uint32_t val) {
-  uint32_t power_of_2 = 1;
-  while (power_of_2 < val) {
-    power_of_2 *= 2;
-  }
-  return power_of_2;
-}
-
 uint32_t AlignToPowerOf2(uint32_t val, uint8_t align_log) {
   uint32_t align = 1 << align_log;
   return ((val + (align - 1)) / align) * align;
diff --git a/common/libs/utils/size_utils.h b/common/libs/utils/size_utils.h
index 1d34493..42044ec 100644
--- a/common/libs/utils/size_utils.h
+++ b/common/libs/utils/size_utils.h
@@ -19,12 +19,6 @@
 
 namespace cvd {
 
-// Returns the smallest multiple of PAGE_SIZE greater than or equal to val.
-uint32_t AlignToPageSize(uint32_t val);
-
-// Returns the smallest power of two greater than or equal to val.
-uint32_t RoundUpToNextPowerOf2(uint32_t val);
-
 // Returns the smallest multiple of 2^align_log greater than or equal to val.
 uint32_t AlignToPowerOf2(uint32_t val, uint8_t align_log);