Jeremy Allison пишет:
On Wed, Jan 16, 2008 at 09:54:00AM -0600, Alexander Bokovoy wrote: This is bad code and needs fixing.
I'm deeply sorry for this. Thank you for fixing part of those issues.

int vfswrap_is_offline(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf, bool *offline)

Looks like a question for which the correct return is a bool. But it returns a tristate, 1, 0, -1. WHAT DO THESE THINGS MEAN ?
It returns offline status in the *offline and returns the status of
the whole operation (two-state, supported/non-supported on the system)
as 0/-1 much like we do with other system calls.

The problem here is that offline status could be non-existent on the
system (i.e. there is no backup and archiving integration with file
system in question). We return -1 in this case from a specialized module
and upper level then doesn't look into *offline. In default action
(vfs_default.c) we do so if there is no DMAPI enabled, this code path is
the same as was before, without VFS abstraction. MacOS X uses DMAPI to
communicate offline status, in vfs_tsmsm we do use DMAPI to get offline
status from GPFS too.

Had it be bool, it would be greater confusion because you'd have two
bools then.

--
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/

Reply via email to