uint64_t *dsize)
{
const struct smb_filename *smb_fname = fsp->fsp_name;
+ struct vfs_statvfs_struct statvfsbuf;
+ int ret;
- if (sys_fsusage(smb_fname->base_name, dfree, dsize) != 0) {
+ ret = sys_statvfs(smb_fname->base_name, &statvfsbuf);
+ if (ret != 0) {
return (uint64_t)-1;
}
+ statvfs2fsusage(&statvfsbuf, dfree, dsize);
*bsize = 512;
return *dfree / 2;
#include "lib/util/tevent_unix.h"
#include "lib/pthreadpool/pthreadpool_tevent.h"
#include "lib/util/gpfswrap.h"
+#include "lib/util/statvfs.h"
#include <gnutls/gnutls.h>
#include <gnutls/crypto.h>
struct security_unix_token *utok;
struct gpfs_quotaInfo qi_user = { 0 }, qi_group = { 0 };
struct gpfs_config_data *config;
+ struct vfs_statvfs_struct statvfsbuf;
int err;
time_t cur_time;
handle, fsp, bsize, dfree, dsize);
}
- err = sys_fsusage(smb_fname->base_name, dfree, dsize);
+ err = sys_statvfs(smb_fname->base_name, &statvfsbuf);
if (err) {
DEBUG (0, ("Could not get fs usage, errno %d\n", errno));
return SMB_VFS_NEXT_DISK_FREE(
handle, fsp, bsize, dfree, dsize);
}
- /* sys_fsusage returns units of 512 bytes */
+ statvfs2fsusage(&statvfsbuf, dfree, dsize);
+
+ /* statvfs2fsusage returns units of 512 bytes */
*bsize = 512;
DEBUG(10, ("fs dfree %llu, dsize %llu\n",
#include "lib/global_contexts.h"
#include "source3/printing/rap_jobid.h"
#include "source3/lib/substitute.h"
+#include "lib/util/statvfs.h"
#define CACHE_LAST_SCAN_TIME "CACHE"
#define MSG_PENDING_TIME "MSG_PENDING"
const char *sharename = lp_const_servicename(snum);
const struct loadparm_substitution *lp_sub =
loadparm_s3_global_substitution();
- uint64_t dspace, dsize;
- uint64_t minspace;
int ret;
if (!W_ERROR_IS_OK(print_access_check(server_info, msg_ctx, snum,
/* see if we have sufficient disk space */
if (lp_min_print_space(snum)) {
- minspace = lp_min_print_space(snum);
- ret = sys_fsusage(lp_path(talloc_tos(), lp_sub, snum), &dspace, &dsize);
- if (ret == 0 && dspace < 2*minspace) {
- DEBUG(3, ("print_job_checks: "
- "disk space check failed.\n"));
- return WERR_NO_SPOOL_SPACE;
+ struct vfs_statvfs_struct buf;
+ uint64_t minspace = lp_min_print_space(snum);
+
+ ret = sys_statvfs(lp_path(talloc_tos(), lp_sub, snum), &buf);
+ if (ret == 0) {
+ uint64_t dspace, dsize;
+
+ statvfs2fsusage(&buf, &dspace, &dsize);
+
+ if (dspace < 2 * minspace) {
+ DBG_NOTICE("disk space check failed.\n");
+ return WERR_NO_SPOOL_SPACE;
+ }
}
}
#include "vfs_posix.h"
#include "librpc/gen_ndr/xattr.h"
#include "librpc/ndr/libndr.h"
+#include "lib/util/statvfs.h"
/* We use libblkid out of e2fsprogs to identify UUID of a volume */
#ifdef HAVE_LIBBLKID
struct stat st;
const uint16_t block_size = 512;
- /* only some levels need the expensive sys_fsusage() call */
+ /* only some levels need the expensive sys_statvfs() call */
switch (fs->generic.level) {
case RAW_QFS_DSKATTR:
case RAW_QFS_ALLOCATION:
case RAW_QFS_SIZE_INFO:
case RAW_QFS_SIZE_INFORMATION:
- case RAW_QFS_FULL_SIZE_INFORMATION:
- if (sys_fsusage(pvfs->base_directory, &blocks_free, &blocks_total) == -1) {
+ case RAW_QFS_FULL_SIZE_INFORMATION: {
+ struct vfs_statvfs_struct statvfsbuf;
+ int ret;
+
+ ret = sys_statvfs(pvfs->base_directory, &statvfsbuf);
+ if (ret == -1) {
return pvfs_map_errno(pvfs, errno);
}
+ statvfs2fsusage(&statvfsbuf, &blocks_free, &blocks_total);
+
break;
+ }
default:
break;
}
#include "../lib/util/dlinklist.h"
#include "ntvfs/ntvfs.h"
#include "ntvfs/simple/proto.h"
+#include "lib/util/statvfs.h"
#ifndef O_DIRECTORY
#define O_DIRECTORY 0
struct ntvfs_request *req, union smb_fsinfo *fs)
{
struct svfs_private *p = ntvfs->private_data;
+ struct vfs_statvfs_struct statvfsbuf;
struct stat st;
+ int ret;
if (fs->generic.level != RAW_QFS_GENERIC) {
return ntvfs_map_fsinfo(ntvfs, req, fs);
}
- if (sys_fsusage(p->connectpath,
- &fs->generic.out.blocks_free,
- &fs->generic.out.blocks_total) == -1) {
+ ret = sys_statvfs(p->connectpath, &statvfsbuf);
+ if (ret == -1) {
return map_nt_error_from_unix_common(errno);
}
+ statvfs2fsusage(&statvfsbuf,
+ &fs->generic.out.blocks_free,
+ &fs->generic.out.blocks_total);
+
fs->generic.out.block_size = 512;
if (stat(p->connectpath, &st) != 0) {