• Boaz Harrosh's avatar
    exofs: Error recovery if object is missing from storage · 96391e2b
    Boaz Harrosh authored
    If an object is referenced by a directory but does not
    exist on a target, it is a very serious corruption that
    means:
    1. Either a power failure with very slim chance of it
      happening. Because the directory update is always submitted
      much after object creation, but if a directory is written
      to one device and the object creation to another it might
      theoretically happen.
    2. It only ever happened to me while developing with BUGs
      causing file corruption. Crashes could also cause it but
      they are more like case 1.
    
    In any way the object does not exist, so data is surely lost.
    If there is a mix-up in the obj-id or data-map, then lost objects
    can be salvaged by off-line fsck. The only recoverable information
    is the directory name. By letting it appear as a regular empty file,
    with date==0 (1970 Jan 1st) ownership to root, we enable recovery
    of the only useful information. And also enable deletion or over-write.
    I can see how this can hurt.
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    96391e2b
inode.c 32.6 KB