From f95e9fc45b1d34c55b04318b79928adabd8f09e2 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 25 Feb 2005 02:22:44 +0000 Subject: [PATCH] r5548: Stop lying about allocation sizes to Windows clients. It was a nice idea, and aparently improved performance in some circumstances, but it breaks the VC++ compiler :-(. Not cool. Fix bug #2146. Jeremy. (This used to be commit b9f147634df0126320ffe3b9a23068e76f6c1681) --- source3/include/local.h | 3 --- source3/include/smb_macros.h | 2 -- source3/smbd/nttrans.c | 8 ++++---- source3/smbd/trans2.c | 20 -------------------- 4 files changed, 4 insertions(+), 29 deletions(-) diff --git a/source3/include/local.h b/source3/include/local.h index 7ac2e256120..7d5baa21fa8 100644 --- a/source3/include/local.h +++ b/source3/include/local.h @@ -198,9 +198,6 @@ /* the maximum age in seconds of a password. Should be a lp_ parameter */ #define MAX_PASSWORD_AGE (21*24*60*60) -/* Allocation roundup. */ -#define SMB_ROUNDUP_ALLOCATION_SIZE 0x100000 - /* shall we deny oplocks to clients that get timeouts? */ #define FASCIST_OPLOCK_BACKOFF 1 diff --git a/source3/include/smb_macros.h b/source3/include/smb_macros.h index 4fa9ffa5ace..b1ac617f5cf 100644 --- a/source3/include/smb_macros.h +++ b/source3/include/smb_macros.h @@ -178,8 +178,6 @@ /* this is how errors are generated */ #define UNIXERROR(defclass,deferror) unix_error_packet(outbuf,defclass,deferror,__LINE__,__FILE__) -#define SMB_ROUNDUP(x,r) ( ((x)%(r)) ? ( (((x)+(r))/(r))*(r) ) : (x)) - /* Extra macros added by Ying Chen at IBM - speed increase by inlining. */ #define smb_buf(buf) (((char *)(buf)) + smb_size + CVAL(buf,smb_wct)*2) #define smb_buflen(buf) (SVAL(buf,smb_vwv0 + (int)CVAL(buf, smb_wct)*2)) diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index d0d5ddf8710..675da4c7478 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -929,7 +929,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib allocation_size |= (((SMB_BIG_UINT)IVAL(inbuf,smb_ntcreate_AllocationSize + 4)) << 32); #endif if (allocation_size && (allocation_size > (SMB_BIG_UINT)file_len)) { - fsp->initial_allocation_size = smb_roundup(allocation_size); + fsp->initial_allocation_size = allocation_size; if (fsp->is_directory) { close_file(fsp,False); END_PROFILE(SMBntcreateX); @@ -942,7 +942,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib return ERROR_NT(NT_STATUS_DISK_FULL); } } else { - fsp->initial_allocation_size = smb_roundup((SMB_BIG_UINT)file_len); + fsp->initial_allocation_size = (SMB_BIG_UINT)file_len; } /* @@ -1472,7 +1472,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o allocation_size |= (((SMB_BIG_UINT)IVAL(params,16)) << 32); #endif if (allocation_size && (allocation_size > file_len)) { - fsp->initial_allocation_size = smb_roundup(allocation_size); + fsp->initial_allocation_size = allocation_size; if (fsp->is_directory) { close_file(fsp,False); END_PROFILE(SMBntcreateX); @@ -1484,7 +1484,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o return ERROR_NT(NT_STATUS_DISK_FULL); } } else { - fsp->initial_allocation_size = smb_roundup((SMB_BIG_UINT)file_len); + fsp->initial_allocation_size = (SMB_BIG_UINT)file_len; } /* Realloc the size of parameters and data we will return */ diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index b241aa38f47..d22705214e4 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -32,21 +32,6 @@ extern struct current_user current_user; #define get_file_size(sbuf) ((sbuf).st_size) #define DIR_ENTRY_SAFETY_MARGIN 4096 -/******************************************************************** - Roundup a value to the nearest SMB_ROUNDUP_ALLOCATION_SIZE boundary. - Only do this for Windows clients. -********************************************************************/ - -SMB_BIG_UINT smb_roundup(SMB_BIG_UINT val) -{ - /* Only roundup for Windows clients. */ - enum remote_arch_types ra_type = get_remote_arch(); - if ((ra_type != RA_SAMBA) && (ra_type != RA_CIFSFS)) { - val = SMB_ROUNDUP(val,SMB_ROUNDUP_ALLOCATION_SIZE); - } - return val; -} - /******************************************************************** Given a stat buffer return the allocated size on disk, taking into account sparse files. @@ -65,8 +50,6 @@ SMB_BIG_UINT get_allocation_size(files_struct *fsp, SMB_STRUCT_STAT *sbuf) if (!ret && fsp && fsp->initial_allocation_size) ret = fsp->initial_allocation_size; - ret = smb_roundup(ret); - return ret; } @@ -3350,9 +3333,6 @@ static int call_trans2setfilepathinfo(connection_struct *conn, char *inbuf, char DEBUG(10,("call_trans2setfilepathinfo: Set file allocation info for file %s to %.0f\n", fname, (double)allocation_size )); - if (allocation_size) - allocation_size = smb_roundup(allocation_size); - if(allocation_size != get_file_size(sbuf)) { SMB_STRUCT_STAT new_sbuf;