[vdr] ScanVideoDir is holding back VDR for up to 15min at Startup using NFS-Devices

Volker Schierz schierz at vschierz.de
Sun Apr 16 12:20:08 CEST 2006


Hi!

I think there will be no problems on single disk systems cause of they
have enough speed, but I found a Problem with external NFS-Devices.
Beside my internal video-device I'm using one harddisk for Music, one
for all of my Image's and an additional 
Device for VDR-Recordings.
Cause of the slower network-access the initial scanning for recordings
and empty directories, VDR 
is scanning all that Sound and Image-Stuff for several minutes. If I
include my 4 GB cddb-archiv, it is about 20 minutes.

Therefor I changed the code of ScanVideoDir with a simple extension. It
now looks first wether a file ".vdrexclude" Exists. If so it skips the
entire directory-tree. This makes it easy to exclude a subdirectory tree
by simply touching ".vdrexclude" in a directory that will not contain
VDR-Recordings.


Might be, this could find a way into VDR sometimes.

Bye
Volker Schierz


And here is what I did:


void cRecordings::ScanVideoDir(const char *DirName, bool Foreground, int
LinkLevel) ... ... ...
  if (S_ISDIR(st.st_mode)) 
  {
// Start changes 1
    char *excludeFile;
    asprintf(&excludeFile, "%s/%s", buffer, ".vdrexclude");
    if( access( excludeFile,0) )
    {
// End changes 1
        if (endswith(buffer, deleted ? DELEXT : RECEXT))
        {
           cRecording *r = new cRecording(buffer);
           if (r->Name())
           {
              Lock();
              Add(r);
              ChangeState();
              Unlock();
              if (deleted)
              {
                 r->fileSizeMB = DirSizeMB(buffer);
                 r->deleted = time(NULL);
              }
           }
           else
              delete r;
        }
        else
           ScanVideoDir(buffer, Foreground, LinkLevel + Link);
// Start changes 2    
    }
    free(excludeFile);
// End Changes 2
  }
...
...




More information about the vdr mailing list