Hello,

write() from cifs kernel driver blocks when disconnecting the cifs server. The 
blocking call didn't return after 30 minutes. Client and server are connected 
via a switch and server's LAN cable is unplugged during the write call. I use 
kernel 3.11.8 and mounted without "hard" option.

Is there a possibility for an non-blocking write() without using O_SYNC or 
"directio" mount option?

Way to reproduce the scenario: Below is a sample program which calls write() in 
a loop. The error messages appear when unplugging the cable during this loop.

Kind regards,
Hagen

CIFS VFS: sends on sock ffff88003710c280 stuck for 15 seconds
CIFS VFS: Error -11 sending data on socket to server

#include <fstream>
#include <iostream>
int main () {
  const int size = 100000;
  char buffer[size];
  std::ofstream outfile("/mnt/new.bin",std::ofstream::binary);
  if (!outfile.is_open())
  {
    return 1;
  }
  for (int idx=0; idx<10000 && outfile.good(); idx++)
  {
    outfile.write(buffer,size);
    std::cout << "written, size=" << size << std::endl;
  }
  std::cout << "finished " << outfile.good() << std::endl;
  outfile.close();
  return 0;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to