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.
next prev parent 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.