mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
s3: Convert cli_get_posix_fs_info() to cli_trans()
Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Sun Nov 14 10:24:02 UTC 2010 on sn-devel-104
This commit is contained in:
parent
52f2520648
commit
36637a7ced
@ -2168,15 +2168,15 @@ NTSTATUS cli_get_fs_full_size_info(struct cli_state *cli,
|
||||
uint64_t *actual_allocation_units,
|
||||
uint64_t *sectors_per_allocation_unit,
|
||||
uint64_t *bytes_per_sector);
|
||||
bool cli_get_posix_fs_info(struct cli_state *cli,
|
||||
uint32 *optimal_transfer_size,
|
||||
uint32 *block_size,
|
||||
uint64_t *total_blocks,
|
||||
uint64_t *blocks_available,
|
||||
uint64_t *user_blocks_available,
|
||||
uint64_t *total_file_nodes,
|
||||
uint64_t *free_file_nodes,
|
||||
uint64_t *fs_identifier);
|
||||
NTSTATUS cli_get_posix_fs_info(struct cli_state *cli,
|
||||
uint32 *optimal_transfer_size,
|
||||
uint32 *block_size,
|
||||
uint64_t *total_blocks,
|
||||
uint64_t *blocks_available,
|
||||
uint64_t *user_blocks_available,
|
||||
uint64_t *total_file_nodes,
|
||||
uint64_t *free_file_nodes,
|
||||
uint64_t *fs_identifier);
|
||||
NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli,
|
||||
const char *user,
|
||||
const char *pass,
|
||||
|
@ -455,50 +455,34 @@ fail:
|
||||
return status;
|
||||
}
|
||||
|
||||
bool cli_get_posix_fs_info(struct cli_state *cli,
|
||||
uint32 *optimal_transfer_size,
|
||||
uint32 *block_size,
|
||||
uint64_t *total_blocks,
|
||||
uint64_t *blocks_available,
|
||||
uint64_t *user_blocks_available,
|
||||
uint64_t *total_file_nodes,
|
||||
uint64_t *free_file_nodes,
|
||||
uint64_t *fs_identifier)
|
||||
NTSTATUS cli_get_posix_fs_info(struct cli_state *cli,
|
||||
uint32 *optimal_transfer_size,
|
||||
uint32 *block_size,
|
||||
uint64_t *total_blocks,
|
||||
uint64_t *blocks_available,
|
||||
uint64_t *user_blocks_available,
|
||||
uint64_t *total_file_nodes,
|
||||
uint64_t *free_file_nodes,
|
||||
uint64_t *fs_identifier)
|
||||
{
|
||||
bool ret = False;
|
||||
uint16 setup;
|
||||
char param[2];
|
||||
char *rparam=NULL, *rdata=NULL;
|
||||
unsigned int rparam_count=0, rdata_count=0;
|
||||
|
||||
setup = TRANSACT2_QFSINFO;
|
||||
uint16 setup[1];
|
||||
uint8_t param[2];
|
||||
uint8_t *rdata = NULL;
|
||||
NTSTATUS status;
|
||||
|
||||
SSVAL(setup, 0, TRANSACT2_QFSINFO);
|
||||
SSVAL(param,0,SMB_QUERY_POSIX_FS_INFO);
|
||||
|
||||
if (!cli_send_trans(cli, SMBtrans2,
|
||||
NULL,
|
||||
0, 0,
|
||||
&setup, 1, 0,
|
||||
param, 2, 0,
|
||||
NULL, 0, 560)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!cli_receive_trans(cli, SMBtrans2,
|
||||
&rparam, &rparam_count,
|
||||
&rdata, &rdata_count)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (cli_is_error(cli)) {
|
||||
ret = False;
|
||||
goto cleanup;
|
||||
} else {
|
||||
ret = True;
|
||||
}
|
||||
|
||||
if (rdata_count != 56) {
|
||||
goto cleanup;
|
||||
status = cli_trans(talloc_tos(), cli, SMBtrans2, NULL, 0, 0, 0,
|
||||
setup, 1, 0,
|
||||
param, 2, 0,
|
||||
NULL, 0, 560,
|
||||
NULL,
|
||||
NULL, 0, NULL, /* rsetup */
|
||||
NULL, 0, NULL, /* rparam */
|
||||
&rdata, 56, NULL);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
if (optimal_transfer_size) {
|
||||
@ -525,12 +509,7 @@ bool cli_get_posix_fs_info(struct cli_state *cli,
|
||||
if (fs_identifier) {
|
||||
*fs_identifier = BIG_UINT(rdata,48);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
SAFE_FREE(rparam);
|
||||
SAFE_FREE(rdata);
|
||||
|
||||
return ret;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -411,17 +411,19 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
|
||||
uint64_t total_file_nodes;
|
||||
uint64_t free_file_nodes;
|
||||
uint64_t fs_identifier;
|
||||
NTSTATUS status;
|
||||
|
||||
/* Has UNIXCIFS. If POSIX filesystem info is available... */
|
||||
if (cli_get_posix_fs_info(cli,
|
||||
&optimal_transfer_size,
|
||||
&block_size,
|
||||
&total_blocks,
|
||||
&blocks_available,
|
||||
&user_blocks_available,
|
||||
&total_file_nodes,
|
||||
&free_file_nodes,
|
||||
&fs_identifier)) {
|
||||
status = cli_get_posix_fs_info(cli,
|
||||
&optimal_transfer_size,
|
||||
&block_size,
|
||||
&total_blocks,
|
||||
&blocks_available,
|
||||
&user_blocks_available,
|
||||
&total_file_nodes,
|
||||
&free_file_nodes,
|
||||
&fs_identifier);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
|
||||
/* ... then what's provided here takes precedence. */
|
||||
st->f_bsize =
|
||||
|
Loading…
x
Reference in New Issue
Block a user