Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: save dvr entry when the files were deleted (retention)
  • Loading branch information
perexg committed Dec 14, 2015
1 parent c1a0705 commit 07f77f6
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/dvr/dvr.h
Expand Up @@ -565,7 +565,7 @@ dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de, int rerecord);

void dvr_entry_dec_ref(dvr_entry_t *de);

void dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched);
int dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched);

void dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord);

Expand Down
12 changes: 9 additions & 3 deletions src/dvr/dvr_db.c
Expand Up @@ -393,19 +393,23 @@ dvr_entry_retention_timer(dvr_entry_t *de)
time_t stop = de->de_stop;
uint32_t removal = dvr_entry_get_removal_days(de);
uint32_t retention = dvr_entry_get_retention_days(de);
int save;

stop = de->de_stop + removal * (time_t)86400;
if ((removal > 0 || retention == 0) && removal < DVR_RET_SPACE) {
if (stop > dispatch_clock) {
dvr_entry_retention_arm(de, dvr_timer_remove_files, stop);
return;
}
save = 0;
if (dvr_get_filename(de))
dvr_entry_delete(de, 1); // delete actual file
save = dvr_entry_delete(de, 1); // delete actual file
if (retention == DVR_RET_ONREMOVE) {
dvr_entry_destroy(de, 1); // also remove database entry
return;
}
if (save)
dvr_entry_save(de);
}

if (retention < DVR_RET_ONREMOVE) {
Expand Down Expand Up @@ -3143,7 +3147,7 @@ dvr_val2pri(dvr_prio_t v)
/**
*
*/
void
int
dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched)
{
dvr_config_t *cfg = de->de_config;
Expand All @@ -3153,7 +3157,7 @@ dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched)
struct tm tm;
const char *filename;
char tbuf[64], ubuf[UUID_HEX_SIZE], *rdir, *postcmd;
int r;
int r, ret = 0;

t = dvr_entry_get_start_time(de, 1);
localtime_r(&t, &tm);
Expand Down Expand Up @@ -3191,12 +3195,14 @@ dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched)
if (postcmd && postcmd[0])
dvr_spawn_postcmd(de, postcmd, filename);
htsmsg_delete_field(m, "filename");
ret = 1;
}
}
if (no_missed_time_resched)
dvr_entry_set_state(de, DVR_MISSED_TIME, DVR_RS_PENDING, de->de_last_error);
else
dvr_entry_missed_time(de, de->de_last_error);
return ret;
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/dvr/dvr_vfsmgr.c
Expand Up @@ -265,7 +265,8 @@ dvr_disk_space_cleanup(dvr_config_t *cfg)
dvr_entry_delete(oldest, 1); // delete actual file
dvr_entry_destroy(oldest, 1); // also delete database entry
} else {
dvr_entry_delete(oldest, 0); // delete actual file
if (dvr_entry_delete(oldest, 0)) // delete actual file
dvr_entry_save(oldest);
}
} else {
tvhlog(LOG_WARNING, "dvr", "%s \"until space needed\" recordings found for config \"%s\", you are running out of disk space very soon!",
Expand Down

0 comments on commit 07f77f6

Please sign in to comment.