diff options
author | Michael Adam <obnox@samba.org> | 2008-01-11 12:18:33 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-04-21 00:21:23 +0200 |
commit | 3756467db6a661be91f4aeb484000e993e4a9a4c (patch) | |
tree | 11c9030a4b2bd83a9716529e9bffa8e7f9900592 /source3/smbd | |
parent | 00210d773b64578992ed936290cc7ab9a6d4d187 (diff) | |
download | samba-3756467db6a661be91f4aeb484000e993e4a9a4c.tar.gz samba-3756467db6a661be91f4aeb484000e993e4a9a4c.tar.bz2 samba-3756467db6a661be91f4aeb484000e993e4a9a4c.zip |
Move the posix pending close functionality down into the VFS layer.
This hides the pending close fds from the outside. Call order
of SMB_VFS_CLOSE is reversed. Originally, it was:
fd_close -> fd_close_posix -> SMB_VFS_CLOSE -> close
And now it is:
fd_close -> SMB_VFS_CLOSE -> fd_close_posix -> close
This is in preparation of removing the fd parameter
from the SMB_VFS_CLOSE function. But it is also the right
place for the pending close calls anyways.
Michael
(This used to be commit 3cf56b124a2886c6260455bba4bf77d08e9a4f77)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/open.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c index f3ed234c87..7a13b3ae38 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -72,13 +72,21 @@ static NTSTATUS fd_open(struct connection_struct *conn, NTSTATUS fd_close(files_struct *fsp) { + int ret; + if (fsp->fh->fd == -1) { return NT_STATUS_OK; /* What we used to call a stat open. */ } if (fsp->fh->ref_count > 1) { return NT_STATUS_OK; /* Shared handle. Only close last reference. */ } - return fd_close_posix(fsp); + + ret = SMB_VFS_CLOSE(fsp, fsp->fh->fd); + fsp->fh->fd = -1; + if (ret == -1) { + return map_nt_error_from_unix(errno); + } + return NT_STATUS_OK; } /**************************************************************************** |