diff options
| author | David Disseldorp <ddiss@samba.org> | 2015-02-16 19:26:24 +0100 |
|---|---|---|
| committer | Jeremy Allison <jra@samba.org> | 2015-02-17 05:37:20 +0100 |
| commit | 41c4666a726d3fbe234bcb8b38bd24c62799598f (patch) | |
| tree | e1592fcc63cdef1a9feb0b29e2ebb2dda15120e5 /source3/smbd | |
| parent | 4ab0e57f1073e776b8832f5edc3dca04ef903fef (diff) | |
| download | samba-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.c | 40 | ||||
| -rw-r--r-- | source3/smbd/proto.h | 5 | ||||
| -rw-r--r-- | source3/smbd/reply.c | 2 | ||||
| -rw-r--r-- | source3/smbd/trans2.c | 13 | ||||
| -rw-r--r-- | source3/smbd/vfs.c | 10 |
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, |
