it seems that branch manipulation and unionfs_file_revalidate can race

from unionfs_file_revalidate
-----------
        if (!unionfs_d_revalidate(dentry, 0) && !d_deleted(dentry)) {
                err = -ESTALE;
                goto out;
        }
        fist_print_dentry("file revalidate in", dentry);

        sb = dentry->d_sb;
        PASSERT(sb);
        sbgen = atomic_read(&stopd(sb)->usi_generation);
        dgen = atomic_read(&dtopd(dentry)->udi_generation);
        fgen = atomic_read(&ftopd(file)->ufi_generation);
        if (sbgen > dgen) {
                FISTBUG("The dentry is not up to date!\n");
        }
------------

if the branch structure would change somewhere between udi_generation
being set and usi_generation being read, one would hit this FISTBUG
(which I just did).

_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to