| .. | .. |
|---|
| 98 | 98 | return oe; |
|---|
| 99 | 99 | } |
|---|
| 100 | 100 | |
|---|
| 101 | +#define OVL_D_REVALIDATE (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE) |
|---|
| 102 | + |
|---|
| 101 | 103 | bool ovl_dentry_remote(struct dentry *dentry) |
|---|
| 102 | 104 | { |
|---|
| 103 | | - return dentry->d_flags & |
|---|
| 104 | | - (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE); |
|---|
| 105 | + return dentry->d_flags & OVL_D_REVALIDATE; |
|---|
| 105 | 106 | } |
|---|
| 106 | 107 | |
|---|
| 107 | | -void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *upperdentry, |
|---|
| 108 | | - unsigned int mask) |
|---|
| 108 | +void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *realdentry) |
|---|
| 109 | +{ |
|---|
| 110 | + if (!ovl_dentry_remote(realdentry)) |
|---|
| 111 | + return; |
|---|
| 112 | + |
|---|
| 113 | + spin_lock(&dentry->d_lock); |
|---|
| 114 | + dentry->d_flags |= realdentry->d_flags & OVL_D_REVALIDATE; |
|---|
| 115 | + spin_unlock(&dentry->d_lock); |
|---|
| 116 | +} |
|---|
| 117 | + |
|---|
| 118 | +void ovl_dentry_init_reval(struct dentry *dentry, struct dentry *upperdentry) |
|---|
| 119 | +{ |
|---|
| 120 | + return ovl_dentry_init_flags(dentry, upperdentry, OVL_D_REVALIDATE); |
|---|
| 121 | +} |
|---|
| 122 | + |
|---|
| 123 | +void ovl_dentry_init_flags(struct dentry *dentry, struct dentry *upperdentry, |
|---|
| 124 | + unsigned int mask) |
|---|
| 109 | 125 | { |
|---|
| 110 | 126 | struct ovl_entry *oe = OVL_E(dentry); |
|---|
| 111 | 127 | unsigned int i, flags = 0; |
|---|