summaryrefslogtreecommitdiff
path: root/source3/modules/vfs_tsmsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/modules/vfs_tsmsm.c')
-rw-r--r--source3/modules/vfs_tsmsm.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/source3/modules/vfs_tsmsm.c b/source3/modules/vfs_tsmsm.c
index c2d826f818..c737032907 100644
--- a/source3/modules/vfs_tsmsm.c
+++ b/source3/modules/vfs_tsmsm.c
@@ -136,24 +136,23 @@ static int tsmsm_connect(struct vfs_handle_struct *handle,
return SMB_VFS_NEXT_CONNECT(handle, service, user);
}
-static int tsmsm_is_offline(struct vfs_handle_struct *handle,
+static bool tsmsm_is_offline(struct vfs_handle_struct *handle,
const char *path,
- SMB_STRUCT_STAT *stbuf,
- bool *offline) {
+ SMB_STRUCT_STAT *stbuf) {
struct tsmsm_struct *tsmd = (struct tsmsm_struct *) handle->data;
void *dmhandle = NULL;
size_t dmhandle_len = 0;
size_t rlen;
dm_attrname_t dmname;
int ret;
+ bool offline;
/* if the file has more than FILE_IS_ONLINE_RATIO of blocks available,
then assume it is not offline (it may not be 100%, as it could be sparse) */
if (512 * (off_t)stbuf->st_blocks >= stbuf->st_size * tsmd->online_ratio) {
- *offline = false;
DEBUG(10,("%s not offline: st_blocks=%ld st_size=%ld online_ratio=%.2f\n",
path, stbuf->st_blocks, stbuf->st_size, tsmd->online_ratio));
- return 0;
+ return false;
}
/* using POSIX capabilities does not work here. It's a slow path, so
@@ -167,10 +166,9 @@ static int tsmsm_is_offline(struct vfs_handle_struct *handle,
/* go the slow DMAPI route */
if (dm_path_to_handle((char*)path, &dmhandle, &dmhandle_len) != 0) {
- ret = -1;
DEBUG(2,("dm_path_to_handle failed - assuming offline (%s) - %s\n",
path, strerror(errno)));
- *offline = true;
+ offline = true;
goto done;
}
@@ -181,7 +179,7 @@ static int tsmsm_is_offline(struct vfs_handle_struct *handle,
DM_NO_TOKEN, &dmname, 0, NULL, &rlen);
/* its offline if the IBMObj attribute exists */
- *offline = (ret == 0 || (ret == -1 && errno == E2BIG));
+ offline = (ret == 0 || (ret == -1 && errno == E2BIG));
DEBUG(10,("dm_get_dmattr %s ret=%d (%s)\n", path, ret, strerror(errno)));
@@ -191,7 +189,7 @@ static int tsmsm_is_offline(struct vfs_handle_struct *handle,
done:
unbecome_root();
- return ret;
+ return offline;
}