From b79080a0fc3056be14a2945b7293c56392a2ebb5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 19 Oct 2012 10:21:33 +0200 Subject: [PATCH] NEEDED??? s3:vfs: change update_write_time_triggered to update_write_time_at We should remember the time when will or have updated the write time. metze --- source3/include/vfs.h | 5 +++-- source3/smbd/fileio.c | 15 +++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source3/include/vfs.h b/source3/include/vfs.h index bb4a135e41e2..511aa22444fb 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -314,8 +314,9 @@ typedef struct files_struct { bool kernel_share_modes_taken; - bool update_write_time_triggered; - struct tevent_timer *update_write_time_event; + + struct timeval update_write_time_at; + struct timed_event *update_write_time_event; bool update_write_time_on_close; struct timespec close_write_time; bool write_time_forced; diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c index ec6333eaa10b..8ef36a553fbd 100644 --- a/source3/smbd/fileio.c +++ b/source3/smbd/fileio.c @@ -210,7 +210,7 @@ void trigger_write_time_update(struct files_struct *fsp) fsp->update_write_time_on_close = true; - if (fsp->update_write_time_triggered) { + if (!timeval_is_zero(fsp->update_write_time_at)) { /* * We only update the write time after 2 seconds * on the first normal write. After that @@ -218,11 +218,10 @@ void trigger_write_time_update(struct files_struct *fsp) */ return; } - fsp->update_write_time_triggered = true; - delay = lp_parm_int(SNUM(fsp->conn), "smbd", "writetimeupdatedelay", WRITE_TIME_UPDATE_USEC_DELAY); + fsp->update_write_time_at = timeval_current_ofs_usec(delay), DEBUG(5, ("Update write time %d usec later on %s\n", delay, fsp_str_dbg(fsp))); @@ -230,7 +229,7 @@ void trigger_write_time_update(struct files_struct *fsp) /* trigger the update 2 seconds later */ fsp->update_write_time_event = tevent_add_timer(fsp->conn->sconn->ev_ctx, NULL, - timeval_current_ofs_usec(delay), + fsp->update_write_time_at, update_write_time_handler, fsp); } @@ -255,13 +254,13 @@ void trigger_write_time_update_immediate(struct files_struct *fsp) DEBUG(5, ("Update write time immediate on %s\n", fsp_str_dbg(fsp))); - /* After an immediate update, reset the trigger. */ - fsp->update_write_time_triggered = true; - fsp->update_write_time_on_close = false; - ZERO_STRUCT(ft); ft.mtime = timespec_current(); + /* After an immediate update, reset the trigger. */ + fsp->update_write_time_at = convert_timespec_to_timeval(ft.mtime); + fsp->update_write_time_on_close = false; + /* Update the time in the open file db. */ (void)set_write_time(fsp->file_id, ft.mtime); -- 2.34.1