preallocated file size
David Collier-Brown
davecb at canada.sun.com
Mon Feb 7 16:00:00 GMT 2000
Andreas Abach wrote:
>
> There is still another bug in Samba. When writing a file to share that
> is larger than the free space on the disk the file is allocated with
> its full length. During the copy process you'll get an error, but the
> file will be left on the samba-share and it will be reported with it's
> original size. A full report can be read at
> www.lkt.uni-erlangen.de/samba-bug/. The same happens when quotas are
> used. I send this problem to this list some weeks ago, but it seams to
> unimportant to the mass.
It's being discussed, but Jeremy is away and many of the
other chaps are buried in work.
Thanks for the complete writeup: would you be kind
enough to put a log of the connection
up on the web site, so we can compare it with the
log from win95? I'm willing to try to fix it, with
a little help from real experts like Richard.
My initial thoughts go like this:
typedef struct file_fd_struct {
...
BOOL check_for_write_at_end;
} file_fd_struct;
in smbd/open.c open_file()
fds->check_for_write_at_end = True;
...
in <the initial write>
if ( fds->check_for_write_at_end == True
&& requested_position != 0) {
/* Then application was writing the last block */
/* of the file first to see if we have enough space.
*/
fds->check_for_write_at_end == False;
length = requested_position + len;
(void) fstatvfs(fds->fd, buf);
if (length >= (buf.f_bavail*buf.f_frsize)) {
/* Then the copy will fail eventually, so */
/* report it now. This will avoid NT (Win2K)
*/
/* assuming it can't fail, and then */
/* running out of space. The latter leaves */
/* files full of nulls as the result of a */
/* "successful" copy. */
--dave
--
David Collier-Brown, | Always do right. This will gratify some people
185 Ellerslie Ave., | and astonish the rest. -- Mark Twain
Willowdale, Ontario | //www.oreilly.com/catalog/samba/author.html
Work: (905) 415-2849 Home: (416) 223-8968 Email: davecb at canada.sun.com
More information about the samba-technical
mailing list