Return number of 1K blocks available on a path and total number.
****************************************************************************/
-uint64_t sys_disk_free(connection_struct *conn, const char *path,
+uint64_t sys_disk_free(connection_struct *conn, struct smb_filename *fname,
uint64_t *bsize, uint64_t *dfree, uint64_t *dsize)
{
uint64_t dfree_retval;
uint64_t dsize_q = 0;
const char *dfree_command;
static bool dfree_broken = false;
+ const char *path = fname->base_name;
(*dfree) = (*dsize) = 0;
(*bsize) = 512;
return (uint64_t)-1;
}
- if (disk_quotas(conn, path, &bsize_q, &dfree_q, &dsize_q)) {
+ if (disk_quotas(conn, fname, &bsize_q, &dfree_q, &dsize_q)) {
uint64_t min_bsize = MIN(*bsize, bsize_q);
(*dfree) = (*dfree) * (*bsize) / min_bsize;
Potentially returned cached dfree info.
****************************************************************************/
-uint64_t get_dfree_info(connection_struct *conn,
- const char *path,
- uint64_t *bsize,
- uint64_t *dfree,
- uint64_t *dsize)
+uint64_t get_dfree_info(connection_struct *conn, struct smb_filename *fname,
+ uint64_t *bsize, uint64_t *dfree, uint64_t *dsize)
{
int dfree_cache_time = lp_dfree_cache_time(SNUM(conn));
struct dfree_cached_info *dfc = conn->dfree_info;
uint64_t dfree_ret;
if (!dfree_cache_time) {
- return sys_disk_free(conn, path, bsize, dfree, dsize);
+ return sys_disk_free(conn, fname, bsize, dfree, dsize);
}
if (dfc && (conn->lastused - dfc->last_dfree_time < dfree_cache_time)) {
return dfc->dfree_ret;
}
- dfree_ret = sys_disk_free(conn, path, bsize, dfree, dsize);
+ dfree_ret = sys_disk_free(conn, fname, bsize, dfree, dsize);
if (dfree_ret == (uint64_t)-1) {
/* Don't cache bad data. */