summaryrefslogtreecommitdiffstats
path: root/source3/smbd
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2015-02-16 19:26:24 +0100
committerJeremy Allison <jra@samba.org>2015-02-17 05:37:20 +0100
commit41c4666a726d3fbe234bcb8b38bd24c62799598f (patch)
treee1592fcc63cdef1a9feb0b29e2ebb2dda15120e5 /source3/smbd
parent4ab0e57f1073e776b8832f5edc3dca04ef903fef (diff)
downloadsamba-41c4666a726d3fbe234bcb8b38bd24c62799598f.tar.gz
samba-41c4666a726d3fbe234bcb8b38bd24c62799598f.tar.xz
samba-41c4666a726d3fbe234bcb8b38bd24c62799598f.zip
s3/vfs: remove unused SMB_VFS_DISK_FREE() small_query parameter
The small_query parameter for SMB_VFS_DISK_FREE() was, prior to the previous commit, used to obtain 16-bit wide free-space information for the deprecated dskattr SMB_COM_QUERY_INFORMATION_DISK command. With the dskattr handler now performing the 16-bit collapse directly, the small_query parameter can be removed from the entire code path. Signed-off-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Tue Feb 17 05:37:20 CET 2015 on sn-devel-104
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/dfree.c40
-rw-r--r--source3/smbd/proto.h5
-rw-r--r--source3/smbd/reply.c2
-rw-r--r--source3/smbd/trans2.c13
-rw-r--r--source3/smbd/vfs.c10
5 files changed, 29 insertions, 41 deletions
diff --git a/source3/smbd/dfree.c b/source3/smbd/dfree.c
index d02c1bd66a..bcefea5b27 100644
--- a/source3/smbd/dfree.c
+++ b/source3/smbd/dfree.c
@@ -25,36 +25,21 @@
Normalise for DOS usage.
****************************************************************************/
-void disk_norm(bool small_query, uint64_t *bsize,uint64_t *dfree,uint64_t *dsize)
+void disk_norm(uint64_t *bsize, uint64_t *dfree, uint64_t *dsize)
{
/* check if the disk is beyond the max disk size */
uint64_t maxdisksize = lp_max_disk_size();
if (maxdisksize) {
/* convert to blocks - and don't overflow */
maxdisksize = ((maxdisksize*1024)/(*bsize))*1024;
- if (*dsize > maxdisksize) *dsize = maxdisksize;
- if (*dfree > maxdisksize) *dfree = maxdisksize-1;
+ if (*dsize > maxdisksize) {
+ *dsize = maxdisksize;
+ }
+ if (*dfree > maxdisksize) {
+ *dfree = maxdisksize - 1;
+ }
/* the -1 should stop applications getting div by 0
errors */
- }
-
- if(small_query) {
- while (*dfree > WORDMAX || *dsize > WORDMAX || *bsize < 512) {
- *dfree /= 2;
- *dsize /= 2;
- *bsize *= 2;
- /*
- * Force max to fit in 16 bit fields.
- */
- if (*bsize > (WORDMAX*512)) {
- *bsize = (WORDMAX*512);
- if (*dsize > WORDMAX)
- *dsize = WORDMAX;
- if (*dfree > WORDMAX)
- *dfree = WORDMAX;
- break;
- }
- }
}
}
@@ -64,8 +49,8 @@ void disk_norm(bool small_query, uint64_t *bsize,uint64_t *dfree,uint64_t *dsize
Return number of 1K blocks available on a path and total number.
****************************************************************************/
-uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_query,
- uint64_t *bsize,uint64_t *dfree,uint64_t *dsize)
+uint64_t sys_disk_free(connection_struct *conn, const char *path,
+ uint64_t *bsize, uint64_t *dfree, uint64_t *dsize)
{
uint64_t dfree_retval;
uint64_t dfree_q = 0;
@@ -161,7 +146,7 @@ uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_que
*dfree = MAX(1,*dfree);
}
- disk_norm(small_query,bsize,dfree,dsize);
+ disk_norm(bsize, dfree, dsize);
if ((*bsize) < 1024) {
dfree_retval = (*dfree)/(1024/(*bsize));
@@ -178,7 +163,6 @@ uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_que
uint64_t get_dfree_info(connection_struct *conn,
const char *path,
- bool small_query,
uint64_t *bsize,
uint64_t *dfree,
uint64_t *dsize)
@@ -188,7 +172,7 @@ uint64_t get_dfree_info(connection_struct *conn,
uint64_t dfree_ret;
if (!dfree_cache_time) {
- return SMB_VFS_DISK_FREE(conn,path,small_query,bsize,dfree,dsize);
+ return SMB_VFS_DISK_FREE(conn, path, bsize, dfree, dsize);
}
if (dfc && (conn->lastused - dfc->last_dfree_time < dfree_cache_time)) {
@@ -199,7 +183,7 @@ uint64_t get_dfree_info(connection_struct *conn,
return dfc->dfree_ret;
}
- dfree_ret = SMB_VFS_DISK_FREE(conn,path,small_query,bsize,dfree,dsize);
+ dfree_ret = SMB_VFS_DISK_FREE(conn, path, bsize, dfree, dsize);
if (dfree_ret == (uint64_t)-1) {
/* Don't cache bad data. */
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 26a199c0a6..f01bbbdfed 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -168,12 +168,11 @@ bool connections_snum_used(struct smbd_server_connection *unused, int snum);
/* The following definitions come from smbd/dfree.c */
-void disk_norm(bool small_query, uint64_t *bsize,uint64_t *dfree,uint64_t *dsize);
-uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_query,
+void disk_norm(uint64_t *bsize,uint64_t *dfree,uint64_t *dsize);
+uint64_t sys_disk_free(connection_struct *conn, const char *path,
uint64_t *bsize,uint64_t *dfree,uint64_t *dsize);
uint64_t get_dfree_info(connection_struct *conn,
const char *path,
- bool small_query,
uint64_t *bsize,
uint64_t *dfree,
uint64_t *dsize);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index b6199bbef2..5761d4278b 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1460,7 +1460,7 @@ void reply_dskattr(struct smb_request *req)
uint64_t dfree,dsize,bsize;
START_PROFILE(SMBdskattr);
- ret = get_dfree_info(conn, ".", false, &bsize, &dfree, &dsize);
+ ret = get_dfree_info(conn, ".", &bsize, &dfree, &dsize);
if (ret == (uint64_t)-1) {
reply_nterror(req, map_nt_error_from_unix(errno));
END_PROFILE(SMBdskattr);
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 16498b36e5..c70ca2c24a 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -3214,6 +3214,7 @@ NTSTATUS smbd_do_qfsinfo(struct smbXsrv_connection *xconn,
struct smb_filename smb_fname;
SMB_STRUCT_STAT st;
NTSTATUS status = NT_STATUS_OK;
+ uint64_t df_ret;
if (fname == NULL || fname->base_name == NULL) {
filename = ".";
@@ -3263,7 +3264,9 @@ NTSTATUS smbd_do_qfsinfo(struct smbXsrv_connection *xconn,
{
uint64_t dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
data_len = 18;
- if (get_dfree_info(conn,filename,False,&bsize,&dfree,&dsize) == (uint64_t)-1) {
+ df_ret = get_dfree_info(conn, filename, &bsize, &dfree,
+ &dsize);
+ if (df_ret == (uint64_t)-1) {
return map_nt_error_from_unix(errno);
}
@@ -3413,7 +3416,9 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_ex_dev, (u
{
uint64_t dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
data_len = 24;
- if (get_dfree_info(conn,filename,False,&bsize,&dfree,&dsize) == (uint64_t)-1) {
+ df_ret = get_dfree_info(conn, filename, &bsize, &dfree,
+ &dsize);
+ if (df_ret == (uint64_t)-1) {
return map_nt_error_from_unix(errno);
}
block_size = lp_block_size(snum);
@@ -3446,7 +3451,9 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
{
uint64_t dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
data_len = 32;
- if (get_dfree_info(conn,filename,False,&bsize,&dfree,&dsize) == (uint64_t)-1) {
+ df_ret = get_dfree_info(conn, filename, &bsize, &dfree,
+ &dsize);
+ if (df_ret == (uint64_t)-1) {
return map_nt_error_from_unix(errno);
}
block_size = lp_block_size(snum);
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index d10e0d67e9..381bb8d2af 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -592,7 +592,7 @@ int vfs_allocate_file_space(files_struct *fsp, uint64_t len)
len -= fsp->fsp_name->st.st_ex_size;
len /= 1024; /* Len is now number of 1k blocks needed. */
- space_avail = get_dfree_info(conn, fsp->fsp_name->base_name, false,
+ space_avail = get_dfree_info(conn, fsp->fsp_name->base_name,
&bsize, &dfree, &dsize);
if (space_avail == (uint64_t)-1) {
return -1;
@@ -1392,13 +1392,11 @@ void smb_vfs_call_disconnect(struct vfs_handle_struct *handle)
}
uint64_t smb_vfs_call_disk_free(struct vfs_handle_struct *handle,
- const char *path, bool small_query,
- uint64_t *bsize, uint64_t *dfree,
- uint64_t *dsize)
+ const char *path, uint64_t *bsize,
+ uint64_t *dfree, uint64_t *dsize)
{
VFS_FIND(disk_free);
- return handle->fns->disk_free_fn(handle, path, small_query, bsize,
- dfree, dsize);
+ return handle->fns->disk_free_fn(handle, path, bsize, dfree, dsize);
}
int smb_vfs_call_get_quota(struct vfs_handle_struct *handle,