1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

s3:files: reorder file_free() a bit

Pair-Programmed-With: Volker Lendecke <vl@samba.org>
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
Michael Adam 2012-06-07 16:27:24 +02:00 committed by Stefan Metzmacher
parent 82a96d2432
commit 7aa9ad5bb9

View File

@ -502,18 +502,7 @@ void file_sync_all(connection_struct *conn)
void file_free(struct smb_request *req, files_struct *fsp)
{
struct smbd_server_connection *sconn = fsp->conn->sconn;
DLIST_REMOVE(sconn->files, fsp);
SMB_ASSERT(sconn->num_files > 0);
sconn->num_files--;
TALLOC_FREE(fsp->fake_file_handle);
if (fsp->fh->ref_count == 1) {
TALLOC_FREE(fsp->fh);
} else {
fsp->fh->ref_count--;
}
int fnum = fsp->fnum;
if (fsp->notify) {
struct notify_context *notify_ctx =
@ -528,10 +517,6 @@ void file_free(struct smb_request *req, files_struct *fsp)
if (sconn->file_bmap != NULL) {
bitmap_clear(sconn->file_bmap, fsp->fnum - FILE_HANDLE_OFFSET);
}
DEBUG(5,("freed files structure %d (%u used)\n",
fsp->fnum, (unsigned int)sconn->num_files));
fsp->conn->num_files_open--;
if ((req != NULL) && (fsp == req->chain_fsp)) {
req->chain_fsp = NULL;
@ -553,12 +538,29 @@ void file_free(struct smb_request *req, files_struct *fsp)
/* Drop all remaining extensions. */
vfs_remove_all_fsp_extensions(fsp);
DLIST_REMOVE(sconn->files, fsp);
SMB_ASSERT(sconn->num_files > 0);
sconn->num_files--;
TALLOC_FREE(fsp->fake_file_handle);
if (fsp->fh->ref_count == 1) {
TALLOC_FREE(fsp->fh);
} else {
fsp->fh->ref_count--;
}
fsp->conn->num_files_open--;
/* this is paranoia, just in case someone tries to reuse the
information */
ZERO_STRUCTP(fsp);
/* fsp->fsp_name is a talloc child and is free'd automatically. */
TALLOC_FREE(fsp);
DEBUG(5,("freed files structure %d (%u used)\n",
fnum, (unsigned int)sconn->num_files));
}
/****************************************************************************