smbd: Remove "file_sync_all" function
[kai/samba-autobuild/.git] / source3 / smbd / files.c
index f211c17f5e9e63ab9142f9cd0bf1faf4d578d547..397baea84cbf01543ee6fb303daec94ee42cd091 100644 (file)
@@ -454,22 +454,6 @@ bool file_find_subpath(files_struct *dir_fsp)
        return false;
 }
 
-/****************************************************************************
- Sync open files on a connection.
-****************************************************************************/
-
-void file_sync_all(connection_struct *conn)
-{
-       files_struct *fsp, *next;
-
-       for (fsp=conn->sconn->files; fsp; fsp=next) {
-               next=fsp->next;
-               if ((conn == fsp->conn) && (fsp->fh->fd != -1)) {
-                       sync_file(conn, fsp, True /* write through */);
-               }
-       }
-}
-
 /****************************************************************************
  Free up a fsp.
 ****************************************************************************/
@@ -518,9 +502,21 @@ void file_free(struct smb_request *req, files_struct *fsp)
        uint64_t fnum = fsp->fnum;
 
        if (fsp->notify) {
-               struct notify_context *notify_ctx =
-                       fsp->conn->sconn->notify_ctx;
-               notify_remove(notify_ctx, fsp);
+               size_t len = fsp_fullbasepath(fsp, NULL, 0);
+               char fullpath[len+1];
+
+               fsp_fullbasepath(fsp, fullpath, sizeof(fullpath));
+
+               /*
+                * Avoid /. at the end of the path name. notify can't
+                * deal with it.
+                */
+               if (len > 1 && fullpath[len-1] == '.' &&
+                   fullpath[len-2] == '/') {
+                       fullpath[len-2] = '\0';
+               }
+
+               notify_remove(fsp->conn->sconn->notify_ctx, fsp, fullpath);
                TALLOC_FREE(fsp->notify);
        }
 
@@ -540,9 +536,7 @@ void file_free(struct smb_request *req, files_struct *fsp)
         * Clear all possible chained fsp
         * pointers in the SMB2 request queue.
         */
-       if (req != NULL && req->smb2req) {
-               remove_smb2_chained_fsp(fsp);
-       }
+       remove_smb2_chained_fsp(fsp);
 
        /* Drop all remaining extensions. */
        vfs_remove_all_fsp_extensions(fsp);
@@ -773,14 +767,6 @@ const struct GUID *fsp_client_guid(const files_struct *fsp)
        return &fsp->conn->sconn->client->connections->smb2.client.guid;
 }
 
-uint32_t fsp_lease_type(struct files_struct *fsp)
-{
-       if (fsp->oplock_type == LEASE_OPLOCK) {
-               return fsp->lease->lease.lease_state;
-       }
-       return map_oplock_to_lease_type(fsp->oplock_type);
-}
-
 size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen)
 {
        int len;