(phys.) Löschen gelöschter Aufnahmen beim Schneiden

  • Hi,

    Ich war mir nicht sicher ob das hierher gehört, ich verwende extrecmenu. Aber der Schnitt selbst ict doch VDR core Funktion, oder?

    Jedenfalls, gestern ist mir das Schneiden einer Aufnahme fehlgeschlagen. Nach etwas Suchen hab ich rausgefunden dass die Platte voll war: Ich hatte ca. 33GB an alten Sachen gelöscht bzw. auf eine andere Platte verschoben, aber VDR benennt die ja erstmal nur um.... Jedenfalls waren also nicht - wie von VDR im Menü angezeigt - 10 Stunden frei, sondern nur ene halbe :(, und der Schneidevorgang kam nicht auf die Idee mal eben den Lösch-Thread anzuwerfen, um auch wirkich physikalisch Platz für die geschnittene Aufnahme zu machen...

    Ich weiss nicht ob's wirklich ein Bug ist - aber auf jeden Fall ist's sehr irritierend....

    VDR2: ASRock J4105-ITX, DVBSky S952, openSUSE Tumbleweed, VDR 2.4.7

    softhddevice/vaapidevice, DFAtmo, xmltv2vdr, tvscraper, tvguideng, VDRAdmin-AM (alles git, aber alt)

  • Hi,

    Ich war mir nicht sicher ob das hierher gehört, ich verwende extrecmenu. Aber der Schnitt selbst ict doch VDR core Funktion, oder?

    Jedenfalls, gestern ist mir das Schneiden einer Aufnahme fehlgeschlagen. Nach etwas Suchen hab ich rausgefunden dass die Platte voll war: Ich hatte ca. 33GB an alten Sachen gelöscht bzw. auf eine andere Platte verschoben, aber VDR benennt die ja erstmal nur um.... Jedenfalls waren also nicht - wie von VDR im Menü angezeigt - 10 Stunden frei, sondern nur ene halbe :(, und der Schneidevorgang kam nicht auf die Idee mal eben den Lösch-Thread anzuwerfen, um auch wirkich physikalisch Platz für die geschnittene Aufnahme zu machen...

    Ich weiss nicht ob's wirklich ein Bug ist - aber auf jeden Fall ist's sehr irritierend....


    VDR sollte eigentlich beim Schneiden schon Plattenplatz freischaufeln, wenn möglich.
    Teste doch bitte mal, ob das Problem auch auftritt, wenn du mit der VDR-internen Schnittfunktion arbeitest (also nicht mit extrecmenu).

    Klaus

  • VDR sollte eigentlich beim Schneiden schon Plattenplatz freischaufeln, wenn möglich.


    Jo, dachte ich auch, deswegen die Frage...

    Quote

    Teste doch bitte mal, ob das Problem auch auftritt, wenn du mit der VDR-internen Schnittfunktion arbeitest (also nicht mit extrecmenu).


    Mach ich. Kann aber u.U. ein paar Tage dauern. Ich meld mich dann wieder.

    VDR2: ASRock J4105-ITX, DVBSky S952, openSUSE Tumbleweed, VDR 2.4.7

    softhddevice/vaapidevice, DFAtmo, xmltv2vdr, tvscraper, tvguideng, VDRAdmin-AM (alles git, aber alt)

  • Sorry - hat leider deutlich länger gedauert bis ich zum testen gekommen (und jetzt zum schreiben) bin....

    Also, es is definitiv ein Problem von extrecmenu alleine. Beim Schneiden aus dem VDR-eigenen Menue wurden brav die zum Löschen vorgemerkten Aufnahmen weggeputzt, wenn es eng wurde.
    Ich stell das dann mal neu in Plugins ein....

    VDR2: ASRock J4105-ITX, DVBSky S952, openSUSE Tumbleweed, VDR 2.4.7

    softhddevice/vaapidevice, DFAtmo, xmltv2vdr, tvscraper, tvguideng, VDRAdmin-AM (alles git, aber alt)

  • Hallo,

    bei mir ist das Problem gestern Abend auch aufgetreten und zwar ohne extrecmenu (aber zugegebenermaßen mit ein/zwei Patches ;D).

    Ich habe mehrfach versucht, eine Aufnahme zu schneiden, und es ist immer wieder gescheitert. Dabei habe ich einige interessante Effekte beobachtet:
    * Die Freespace-Anzeige im Skin wechselte manchmal von 13,1GB schlagartig auf 5,5 GB sobald der Schnitt gestartet war ( 5,5 GB waren real frei, 13,1 GB inkl. der gelöschten Aufnahmen). Nachdem der Schnitt gescheitert war, blieb sie manchmal auf 5,5 GB, manchmal sprang sie auf 13,1 GB zurück. Wann die beiden Fälle autraten war nicht reproduzierbar.
    * Im Log erscheinen keine Meldungen, dass er nichts zum Löschen findet, er löscht aber auch nichts.

    Wo kann man da ansetzen?
    Sollte in cCuttingThread::Action() beim AssertFreeDiskSpace(-1) nicht besser ein Force dabei sein? Denn dass er in DISKCHECKDELTA = 100 Sek. die letzten MINDISKSPACE = 1024 MB voll schreibt ist ja recht wahrscheinlich bei den heutigen Plattengeschwindigkeiten.
    Wird bei der Berechnung des Freiplatzes manchmal die Liste der gelöschten Aufnahmen nicht einbezogen? Der Skin nutzt zur Anzeige cVideoDiskUsage::FreeMB()
    [Edit]Gut möglich, dass das am fehlenden cVideoDiskUsage::HasChanged(lastDiskUsageState); liegt [/Edit]

    Grüße
    FireFly

  • Interessant - würde dazu passen daß extrecmenu ja auch (nur) die VDR-interne Schnittfunktion nutzt (wenn ich die Kommentare im anderen Thread recht verstanden hab). Dann liegt das vermehrte Auftreten unter extrecmenu vielleicht nur daran, daß durch die Schnittwarteschlange direkt ein weiterer Schnitt gestartet wird und dadurch das überlaufproblem leichter getriggert wird?
    Kann man das DISKCHECKDELTA einfach runtersetzen, bzw. den MINDISKSPACE hoch? Oder bringt das doch auch nix?

    VDR2: ASRock J4105-ITX, DVBSky S952, openSUSE Tumbleweed, VDR 2.4.7

    softhddevice/vaapidevice, DFAtmo, xmltv2vdr, tvscraper, tvguideng, VDRAdmin-AM (alles git, aber alt)

  • Beim Durchlesen von AssertFreeDiskSpace() (in recording.c) ist mir zunächst mal aufgefallen, daß man sich die Suche nach einer "alten" Aufnahme zum Löschen komplett sparen kann, wenn Priority <= 0 ist, denn in dem Fall wird man nie eine Aufnahme mit noch kleinerer Priorität finden. Ich werde daher folgendes einbauen:


    (Der Übersichtlichkeit halber habe ich den Diff mit -ubw gemacht, da sonst der eingerückte Block die egentliche Änderung "zugekleistert" hätte).


    Aber nun zum eigentlichen Thema des Threads.
    In cCuttingThread::Action() wird AssertFreeDiskSpace(-1) seit Version 1.7.32 nur noch einmal für jede Schnittmarke aufgerufen, während es vorher einmal pro Frame aufgerufen wurde. Wenn man also bei einer langen Aufnahme nur den Anfang und das Ende wegschneidet, dann wird AssertFreeDiskSpace(-1) nur einmal am Anfang aufgerufen und das wars.
    Folgende Änderung sollte den vorherigen Zustand wieder herstellen:


    Falls das nicht hilft (oder das Problem auch bei VDR Versionen vor 1.7.32 auftritt) sagt bitte Bescheid.

    Klaus

  • Danke Klaus. Ich hatte mich schon gewundert, dass AssertFreeDiskSpace() nur einmal pro Schnitt aufgerufen wurde. Bin mir aber recht sicher, dass Dein diff den Fehler behebt.
    Testen ist momentan nicht so einfach bei mir weil ich mittlerweile meinen Devel-VDR, auf dem ich auch kompiliere, auf openSuse 12.3 upgegraded habe und der produktive noch auf 12.1 ist.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!