all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Jack Holloway <forum2@sprucehead.com>
Cc: 6237@debbugs.gnu.org
Subject: bug#6237: 23.2; INSUFFICIENT RESOURCES writing file via CIFS
Date: Sat, 22 May 2010 11:38:35 +0300	[thread overview]
Message-ID: <83bpc8pbzo.fsf@gnu.org> (raw)
In-Reply-To: <4BF78CA4.2090209@sprucehead.com>

> Date: Sat, 22 May 2010 00:49:56 -0700
> From: Jack Holloway <forum2@sprucehead.com>
> CC: 6237@debbugs.gnu.org
> 
> Written 16384K
> Written 24576K
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-032768: Invalid argument)
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-049152: Invalid argument)
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-065536: Invalid argument)
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-098304: Invalid argument)
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-131072: Invalid argument)
> !!! Unable to append - (error IO error writing 
> z:/Temp/test/temp-write-once-196608: Invalid argument)
> 
> The would-be 32MB file exists, with zero length.

So 24MB succeeds, but 32MB and all sizes above it fail?

But why does the error message say "Unable to append"?  Why "append"?

> I was referring to DEFUN ("copy-file",...) in fileio.c which writes in 
> 16K blocks,
> ...
> while ((n = emacs_read (ifd, buf, sizeof buf)) > 0)
>      if (emacs_write (ofd, buf, n) != n)
>        report_file_error ("I/O error", Fcons (newname, Qnil));

This is not the code that runs on Windows.  That one is a little ways
earlier in the body of copy-file:

  #ifdef WINDOWSNT
    if (!CopyFile (SDATA (encoded_file),
		   SDATA (encoded_newname),
		   FALSE))
      report_file_error ("Copying file", Fcons (file, Fcons (newname, Qnil)));
    /* CopyFile retains the timestamp by default.  */
    else if (NILP (keep_time))
      {
	EMACS_TIME now;
	DWORD attributes;
	char * filename;

	EMACS_GET_TIME (now);
	filename = SDATA (encoded_newname);

	/* Ensure file is writable while its modified time is set.  */
	attributes = GetFileAttributes (filename);
	SetFileAttributes (filename, attributes & ~FILE_ATTRIBUTE_READONLY);
	if (set_file_times (filename, now, now))
	  {
	    /* Restore original attributes.  */
	    SetFileAttributes (filename, attributes);
	    xsignal2 (Qfile_date_error,
		      build_string ("Cannot set file date"), newname);
	  }
	/* Restore original attributes.  */
	SetFileAttributes (filename, attributes);
      }
  #else /* not WINDOWSNT */

> I know nothing about Windows internals, but it would seem that some
> downstream WinNT I/O routine can't handle 32MB or larger writes, so
> perhaps write-region could segment the write?  The annotations hair
> makes it hard for me to see if this is easy.

The breaking of writes into smaller chunks should be in Windows
specific code, i.e. in w32.c:sys_write.  And that is very easy.





  reply	other threads:[~2010-05-22  8:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-21  2:57 bug#6237: 23.2; INSUFFICIENT RESOURCES writing file via CIFS Jack Holloway
2010-05-22  1:51 ` Stefan Monnier
2010-05-22  2:12   ` Jack Holloway
2010-05-22  6:31     ` Eli Zaretskii
2010-05-22  7:49       ` Jack Holloway
2010-05-22  8:38         ` Eli Zaretskii [this message]
2010-05-22  9:39           ` Eli Zaretskii
2010-05-22 19:13             ` Eli Zaretskii
2010-05-22  8:08     ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83bpc8pbzo.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=6237@debbugs.gnu.org \
    --cc=forum2@sprucehead.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.