[PATCH 2/2] cli: reset db directory mtime upon directory removal

Tomi Ollila tomi.ollila at iki.fi
Sun Sep 6 03:00:42 PDT 2015


On Sat, Sep 05 2015, Jani Nikula <jani at nikula.org> wrote:

> The library does not have a function to remove a directory document
> for a path. Usually this doesn't matter except for a slight waste of
> space. However, if the same directory gets added to the filesystem
> again, the old directory document is found with the old mtime. Reset
> the directory mtime on removal to avoid problems.
>
> The corner case that can hit this problem is renaming directories back
> and forth. Renaming does not change the mtime of the directory in the
> filesystem, and thus the old db directory document mtime may match the
> fs mtime of the directory.
>
> The long term fix might be to add a library function to remove a
> directory document, however this is a much simpler and faster fix for
> the time being.
> ---

LGTM.

Tomi


>  notmuch-new.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/notmuch-new.c b/notmuch-new.c
> index 514e06a4d1f3..33645349cd5f 100644
> --- a/notmuch-new.c
> +++ b/notmuch-new.c
> @@ -878,6 +878,15 @@ _remove_directory (void *ctx,
>  	    goto DONE;
>      }
>  
> +    /*
> +     * XXX: The library does not have a function to remove a directory
> +     * document for a path. Usually this doesn't matter except for a
> +     * slight waste of space. However, if the directory gets added to
> +     * the filesystem again, the old directory document is found with
> +     * the old mtime. Reset the directory mtime to avoid problems.
> +     */
> +    notmuch_directory_set_mtime (directory, 0);
> +
>    DONE:
>      notmuch_directory_destroy (directory);
>      return status;
> -- 
> 2.1.4
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list