diff -Nur aufs-3.0.orig/fs/aufs/opts.c aufs-3.0/fs/aufs/opts.c --- aufs-3.0.orig/fs/aufs/opts.c 2011-10-27 00:25:47.000000000 +0200 +++ aufs-3.0/fs/aufs/opts.c 2011-10-27 12:00:10.077514722 +0200 @@ -453,8 +453,12 @@ } static match_table_t au_wbr_copyup_policy = { - {AuWbrCopyup_TDP, "tdp"}, - {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_TDP_B, "tdp:b"}, + {AuWbrCopyup_TDP_B, "top-down-parent:b"}, + {AuWbrCopyup_TDP_B, "tdp"}, + {AuWbrCopyup_TDP_B, "top-down-parent"}, + {AuWbrCopyup_TDP_T, "tdp:t"}, + {AuWbrCopyup_TDP_T, "top-down-parent:t"}, {AuWbrCopyup_BUP, "bup"}, {AuWbrCopyup_BUP, "bottom-up-parent"}, {AuWbrCopyup_BU, "bu"}, diff -Nur aufs-3.0.orig/fs/aufs/opts.h aufs-3.0/fs/aufs/opts.h --- aufs-3.0.orig/fs/aufs/opts.h 2011-10-27 00:25:47.000000000 +0200 +++ aufs-3.0/fs/aufs/opts.h 2011-10-27 12:02:19.303887540 +0200 @@ -109,11 +109,12 @@ }; enum { - AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_TDP_B, /* top down parent, fallback "buttom up" */ + AuWbrCopyup_TDP_T, /* top down parent, fallback "top down" */ AuWbrCopyup_BUP, /* bottom up parent */ AuWbrCopyup_BU, /* bottom up */ - AuWbrCopyup_Def = AuWbrCopyup_TDP + AuWbrCopyup_Def = AuWbrCopyup_TDP_B }; /* ---------------------------------------------------------------------- */ diff -Nur aufs-3.0.orig/fs/aufs/wbr_policy.c aufs-3.0/fs/aufs/wbr_policy.c --- aufs-3.0.orig/fs/aufs/wbr_policy.c 2011-10-27 00:25:47.000000000 +0200 +++ aufs-3.0/fs/aufs/wbr_policy.c 2011-10-27 12:17:49.928189182 +0200 @@ -630,12 +630,16 @@ /* policies for copyup */ /* top down parent */ -static int au_wbr_copyup_tdp(struct dentry *dentry) +static int au_wbr_copyup_tdp_b(struct dentry *dentry) { - /* should we support tdp_t too? */ return au_wbr_create_tdp_b(dentry, /*isdir, anything is ok*/0); } +static int au_wbr_copyup_tdp_t(struct dentry *dentry) +{ + return au_wbr_create_tdp_t(dentry, /*isdir, anything is ok*/0); +} + /* bottom up parent */ static int au_wbr_copyup_bup(struct dentry *dentry) { @@ -687,8 +691,11 @@ /* ---------------------------------------------------------------------- */ struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { - [AuWbrCopyup_TDP] = { - .copyup = au_wbr_copyup_tdp + [AuWbrCopyup_TDP_B] = { + .copyup = au_wbr_copyup_tdp_b + }, + [AuWbrCopyup_TDP_T] = { + .copyup = au_wbr_copyup_tdp_t }, [AuWbrCopyup_BUP] = { .copyup = au_wbr_copyup_bup